Isi kandungan:

Stesen Cuaca Pintar Yang Lain, Tetapi : 6 Langkah (dengan Gambar)
Stesen Cuaca Pintar Yang Lain, Tetapi : 6 Langkah (dengan Gambar)

Video: Stesen Cuaca Pintar Yang Lain, Tetapi : 6 Langkah (dengan Gambar)

Video: Stesen Cuaca Pintar Yang Lain, Tetapi : 6 Langkah (dengan Gambar)
Video: Viral! Anak dan ibu diusir dari KRL?? 2024, Jun
Anonim
Image
Image
Stesen Cuaca Pintar Yang Lain, Tetapi…
Stesen Cuaca Pintar Yang Lain, Tetapi…
Stesen Cuaca Pintar Yang Lain, Tetapi…
Stesen Cuaca Pintar Yang Lain, Tetapi…
Stesen Cuaca Pintar Yang Lain, Tetapi…
Stesen Cuaca Pintar Yang Lain, Tetapi…

OK, saya tahu terdapat begitu banyak stesen cuaca seperti itu di mana-mana, tetapi luangkan masa beberapa minit untuk melihat perbezaannya…

  • Kuasa rendah
  • 2 paparan e-kertas…
  • tetapi 10 skrin berbeza!
  • Berasaskan ESP32
  • pecutan dan sensor suhu / kelembapan
  • Kemas kini Wifi
  • Sarung bercetak 3D

dan banyak helah berguna lain …

Idea utama adalah untuk memaparkan pelbagai maklumat pada kedua paparan bergantung pada orientasi kotak. Sarungnya berbentuk kotak parallelepipedic, batu lorong, dengan sejenis tali pinggang yang berfungsi sebagai kaki.

Bekalan

Seperti yang anda lihat, sistem ini terdiri daripada 2 skrin e-kertas dan kotak cetak 3D. Tetapi terdapat banyak perkara di dalamnya:

  • ESP32
  • Satu pecutan MPU6050
  • Sensor DHT22
  • Bateri LiPo
  • PCB untuk menghubungkan semuanya
  • Benang duPont buatan sendiri

dan sambungan Wi-Fi. Sebenarnya 3 rangkaian diisytiharkan, sistem mengujinya satu persatu sehingga berjaya disambungkan.

Langkah 1: Mengapa Stesen Cuaca Lain?

Mengapa Stesen Cuaca Lain?
Mengapa Stesen Cuaca Lain?
Mengapa Stesen Cuaca Lain?
Mengapa Stesen Cuaca Lain?
Mengapa Stesen Cuaca Lain?
Mengapa Stesen Cuaca Lain?
Mengapa Stesen Cuaca Lain?
Mengapa Stesen Cuaca Lain?

Ideanya adalah untuk memaparkan pelbagai jenis maklumat pada kedua skrin bergantung pada orientasi kotak. Sarungnya berbentuk kotak parallelepipedic, batu lorong, dengan sejenis tali pinggang yang berfungsi sebagai penyokong untuk membuatnya berdiri.

Accelerometer mengesan pergerakan dan orientasi dan mencetuskan paparan.

Untuk menjimatkan tenaga, saya memilih skrin e-kertas (lihat rujukan di bawah) yang menyimpan paparan walaupun tidak lagi dihidupkan. Begitu juga untuk ESP32, saya memilih modul Lolin32 (terkenal kerana hematnya) dan saya harus belajar bagaimana mengurus tidur nyenyak, dan bangun dari gangguan yang dihasilkan oleh pecutan.

Skrin dihubungkan melalui SPI, saya mencari sedikit sebelum menemui pin yang tepat untuk menghubungkannya ke ESP32, mengetahui bahawa saya juga memerlukan I2C untuk accelerometer, pin untuk membaca DHT22 dan 2 yang lain untuk pengukuran voltan bateri. ESP32 hampir dicas sepenuhnya! Mengetahui bahawa beberapa pin hanya boleh dibaca (saya menggunakannya untuk sensor DHT), yang lain tidak dapat digunakan bersama dengan Wifi, agak rumit untuk mencari konfigurasi yang betul.

Kotak boleh berorientasi dalam 4 arah, ditambah rata. Semua itu menjadikan 4 * 2 + 2 = 10 jenis maklumat yang mungkin untuk dipaparkan dengan hanya 2 skrin. Oleh itu, ia membolehkan anda memaparkan banyak perkara:

  • Tarikh, dan orang suci hari itu
  • Masa sekarang
  • Ramalan cuaca hari ini
  • Ramalan cuaca untuk beberapa jam akan datang
  • Ramalan cuaca untuk beberapa hari akan datang
  • Tahap pengecasan bateri
  • Dan kerana saya masih mempunyai ruang, petikan rawak dari laman web khusus.

Langkah 2: Apa Yang Anda Perlu?

Apa Yang Anda Perlu?
Apa Yang Anda Perlu?
Apa Yang Anda Perlu?
Apa Yang Anda Perlu?
Apa Yang Anda Perlu?
Apa Yang Anda Perlu?
  • ESP32: Modul Lolin32 (kuasa yang sangat rendah, dilengkapi dengan penyambung bateri, boleh mengecas bateri melalui USB plus)
  • 2 paparan kertas kerja: 4.2 inci dan 2.9 inci. Saya memilih model dari kedai Good Display.
  • Sensor DHT22
  • Accelerometer MCU6050 - sensor gyrometer I2C
  • Bateri LiPo
  • Untuk pengukuran voltan bateri: 2 perintang 10k, 1 perintang 100k, 1 kapasitor 100nF, 1 transistor MOSFET
  • Pateri dan besi pematerian, papan litar bercetak
  • Akses ke pencetak 3D untuk kes itu

Gambar yang dilampirkan menunjukkan kedudukan semua komponen pada PCB: Saya harus menjimatkan ruang untuk muat dalam casing ini, yang seharusnya tidak terlalu besar.

Untuk mendapatkan data cuaca, anda juga perlu mendaftar pada API cuaca dan meletakkan kunci anda di tempat yang betul dalam fail 'Variables.h' (lihat di bawah).

Laman web cuaca:

  • apixu
  • accuweather

Langkah 3: Projek ini Membuat Saya Berfikir dan Belajar Banyak …

Projek ini Membuat Saya Berfikir dan Belajar Banyak …
Projek ini Membuat Saya Berfikir dan Belajar Banyak …
Projek ini Membuat Saya Berfikir dan Belajar Banyak …
Projek ini Membuat Saya Berfikir dan Belajar Banyak …
Projek ini Membuat Saya Berfikir dan Belajar Banyak …
Projek ini Membuat Saya Berfikir dan Belajar Banyak …

Sistem ini seharusnya bertenaga rendah, sehingga Anda tidak perlu mengisi bateri setiap malam… Untuk menjimatkan tenaga, saya memilih skrin e-kertas yang menyimpan paparan walaupun tidak lagi dihidupkan. Begitu juga untuk ESP32, saya memilih modul Lolin32 (terkenal kerana hematnya) dan saya harus belajar bagaimana menguruskan tidur nyenyak, dan panggilan bangun dari gangguan yang dihasilkan oleh pecutan.

Kotak boleh berorientasi dalam 4 arah, lebih rata. Semua itu menjadikan 4 * 2 + 2 = 10 jenis maklumat yang mungkin untuk dipaparkan. Oleh itu, ini membolehkan anda melakukan banyak perkara: tarikh, dan suci hari, waktu, ramalan cuaca hari ini, ramalan cuaca untuk beberapa jam atau hari akan datang, tahap pengecasan bateri dan petikan rawak dari laman web khusus.

Banyak yang perlu dicari di Internet, dan seperti yang anda ketahui: WiFi adalah musuh penjimatan tenaga…

Oleh itu, kita harus menguruskan sambungan, untuk memaparkan maklumat terkini tetapi tanpa menghabiskan terlalu banyak masa untuk menyambung. Masalah lain yang agak rumit: menjaga masa yang cukup tepat. Saya tidak memerlukan RTC kerana saya dapat mencari masa di internet, tetapi jam dalaman ESP32 bergerak sedikit, terutamanya semasa waktu tidur. Saya terpaksa mencari jalan untuk tetap cukup tepat, sementara menunggu untuk mengatur semula jam melalui internet. Saya menyegerakkannya semula di internet setiap jam.

Oleh itu, terdapat pertukaran antara autonomi (kekerapan sambungan Internet) dan ketepatan maklumat yang dipaparkan.

Masalah lain yang harus diselesaikan ialah ingatan. Ketika ESP32 dalam tidur nyenyak, ingatan hilang, kecuali yang disebut RTC RAM. Memori ini selebar 4MB, hanya 2 yang dapat digunakan untuk program ini. Dalam ingatan ini, saya mesti menyimpan pelbagai pemboleh ubah program yang mesti dijaga dari satu pelaksanaan hingga yang berikutnya, selepas fasa tidur: ramalan cuaca, masa dan tarikh, nama fail ikon, petikan, dll. Saya harus belajar menghadapinya.

Bercakap tentang ikon, ikon tersebut disimpan dalam SPIFFS, sistem fail ESP32. Setelah penutupan API cuaca Wunderground percuma, saya terpaksa mencari penyedia data cuaca percuma yang lain. Saya memilih dua: satu untuk cuaca hari ini, dengan ramalan 12 jam, dan satu lagi untuk ramalan pelbagai hari. Ikonnya tidak sama, jadi ini menimbulkan dua masalah baru kepada saya:

  • Pilih satu set ikon
  • Padankan ikon ini dengan kod ramalan dari 2 laman web

Surat-menyurat ini juga telah disimpan dalam RAM RTC sehingga tidak perlu dimuat semula setiap kali.

Masalah terakhir dengan ikon. Mustahil untuk menyimpan semuanya dalam SPIFFS. Ruangnya terlalu kecil untuk semua fail saya. Ia perlu dilakukan pemampatan gambar. Saya menulis skrip di Python yang membaca fail ikon saya dan memampatkannya menjadi RLE, dan kemudian menyimpan fail yang dimampatkan dalam SPIFFS. Di sana diadakan.

Tetapi pustaka paparan e-kertas hanya mengambil fail jenis BMP, bukan gambar yang dimampatkan. Jadi saya harus menulis fungsi tambahan untuk dapat memaparkan ikon saya dari fail yang dimampatkan ini.

Data yang dibaca di internet selalunya dalam format json: data cuaca, Saint of the day. Saya menggunakan perpustakaan arduinoJson (hebat) untuk ini. Tetapi petikan tidak seperti itu. Saya mengambilnya dari laman web khusus, jadi saya harus membacanya dengan melihat secara langsung kandungan laman web. Saya terpaksa menulis kod khusus untuk itu. Setiap hari, sekitar tengah malam, program ini pergi ke laman web ini dan membaca sekitar sepuluh petikan rawak, dan menyimpannya dalam RAM RTC. Satu dipaparkan secara rawak di antara mereka ketika perumahan berorientasikan skrin besar ke atas.

Saya menyampaikan masalah paparan watak beraksen (maaf, tetapi petikan ada dalam bahasa Perancis)….

Apabila skrin kecil naik, voltan bateri dipaparkan, dengan gambar untuk melihat tahap yang lebih baik. Adalah perlu untuk membuat pemasangan elektronik untuk membaca voltan bateri. Oleh kerana pengukuran tidak boleh menghabiskan bateri, saya menggunakan gambar rajah yang terdapat di internet, yang menggunakan transistor MOSFET sebagai suis untuk menggunakan arus hanya ketika pengukuran dibuat.

Agar dapat membuat litar ini dan memasukkan semuanya ke dalam kotak, yang saya mahukan sekecil mungkin, saya harus membuat PCB untuk menghubungkan semua komponen sistem. Ini adalah PCB pertama saya. Saya bernasib baik kerana semuanya berfungsi dengan baik pada kali pertama di pihak ini …

Lihat peta implantasi: "zon terlarang" adalah kawasan yang dikhaskan untuk menyambungkan kabel USB. Modul Lolin32 membolehkan anda mengisi semula bateri melalui USB: bateri dicas jika kabel USB disambungkan, dan modul berfungsi pada masa yang sama.

Perkara terakhir: fon. Dengan saiz yang berbeza, tebal atau tidak, ia mesti dibuat dan disimpan. Perpustakaan Adafruit GFX mengurusnya dengan sangat baik, setelah anda memasang fail fon di direktori yang betul. Untuk membuat fail, saya menggunakan laman Font Converter, sangat mudah!

Pastikan anda memilih:

  • Paparan pratonton: TFT 2.4"
  • Versi perpustakaan: Adafruit GFX Font

Jadi untuk meringkaskan: projek besar, yang membolehkan saya belajar banyak perkara

Langkah 4: Menggunakan Paparan E-kertas

Menggunakan Paparan E-kertas
Menggunakan Paparan E-kertas

Kelemahan utama skrin ini dapat dilihat dengan jelas pada video: kemas kini paparan mengambil masa satu atau dua saat dan dilakukan dengan berkelip (paparan alternatif dari versi normal dan terbalik dari kedua skrin). Ini boleh diterima untuk maklumat cuaca kerana saya tidak sering mengemasinya (setiap jam kecuali perubahan orientasi kotak). Tetapi tidak buat masa ini. Itulah sebabnya (dan untuk mengehadkan penggunaan) saya masih menggunakan paparan HH: MM (bukan detik).

Jadi saya terpaksa mencari cara lain untuk mengemas kini paparan. Skrin ini (sebahagian daripadanya) menyokong kemas kini separa (diterapkan sama ada di kawasan layar, atau ke seluruh layar …) tetapi itu tidak baik untuk saya kerana skrin besar saya (yang memaparkan waktu) menyimpan hantu piksel yang diganti. Sebagai contoh, ketika melewati 10:12 hingga 10:13, '2' sedikit kelihatan di dalam '3', dan ia menjadi lebih kelihatan lagi setelah '4', '5', dll. Saya ingin untuk menunjukkan bahawa ini adalah kes untuk skrin saya: Saya membincangkannya dengan pengarang perpustakaan paparan e-kertas GxEPD2 yang memberitahu saya bahawa dia tidak memerhatikan fenomena ini dengan skrinnya sendiri. Kami cuba mengubah parameter tanpa berjaya memburu hantu.

Oleh itu, kami harus mencari jalan penyelesaian lain: Saya mencadangkan untuk melakukan penyegaran separa berganda, yang dapat menyelesaikan masalah (sekurang-kurangnya ia memuaskan bagi saya). Jam berlalu tanpa skrin berkelip dan tidak ada hantu. Walau bagaimanapun, pertukaran tidak segera: memerlukan sedikit lebih daripada satu saat untuk mengubah masa.

Langkah 5: Membuatnya

Menjadikannya
Menjadikannya
Menjadikannya
Menjadikannya
Menjadikannya
Menjadikannya
Menjadikannya
Menjadikannya

Untuk memastikan bahawa tidak ada yang bergerak ke dalam ketika orientasi berubah, komponen yang berbeza (paparan, modul elektronik, PCB, bateri) dilekatkan dengan pistol gam. Untuk mengarahkan wayar di bawah PCB, saya memasangnya pada kaki yang dibuat dengan spacer, yang sama berlaku untuk bateri.

Tidak lama lagi saya akan memasang penyambung mikrofon USB luaran jadi saya tidak perlu membuka casing untuk mengisi semula bateri.

Mungkin saya juga berminat untuk mengemas kini oleh OTA untuk menyempurnakan semuanya….

Langkah 6: Kod dan Fail

Image
Image

Tiga fail arkib disediakan:

  • Weather station.zip: kod Arduino, untuk memuat naik menggunakan Arduino IDE
  • Boite ecran.zip: fail pencetak CAD dan 3D untuk kes itu
  • data.zip: fail yang akan dimuat dalam SPIFFS ESP32.

Sekiranya anda tidak tahu bagaimana memuat naik fail ke SPIFFS ESP32, baca saja tutorial ini, yang menyajikan plugin yang sangat berguna dan cara menggunakannya di Arduino IDE.

Pengaturcaraan tidur nyenyak sangat berbeza dengan pengaturcaraan standard Arduino. Untuk ESP32, ini bermaksud bahawa ESP32 bangun dan melaksanakan persediaan, kemudian tidur. Jadi, fungsi gelung kosong, dan tidak pernah dilaksanakan.

Beberapa fasa inisialisasi mesti dijalankan hanya sekali pada pelaksanaan pertama (seperti mendapatkan waktu, data cuaca, petikan, dan lain-lain), jadi ESP32 perlu mengetahui sama ada bangun sekarang adalah yang pertama atau tidak: untuk itu, penyelesaiannya adalah dengan menyimpan pemboleh ubah dalam RAM RTC (yang tetap aktif walaupun semasa fasa tidur nyenyak) yang ditingkatkan pada setiap bangun tidur. Sekiranya sama dengan 1 maka ini adalah pelaksanaan pertama dan ESP32 menjalankan fasa inisialisasi, jika tidak, fasa ini dilangkau.

Untuk membangunkan ESP32, terdapat beberapa kemungkinan:

  • Pemasa bangun: kod menghitung jangka waktu tidur nyenyak sebelum tidur. Ini digunakan untuk mengemas kini waktu (setiap 1, 2, 3, atau 5 minit) atau data cuaca (setiap 3 atau 4 jam) petikan dan santo hari itu (setiap 24 jam)
  • Ganggu bangun: pecutan menghantar isyarat yang digunakan untuk membangunkan ESP32. Ini digunakan untuk mengesan perubahan orientasi dan mengemas kini paparan
  • Bangunkan sensor sentuh: ESP32 dilengkapi dengan beberapa pin yang berfungsi sebagai sensor sentuh, tetapi ia tidak dapat digunakan dengan bangun pemasa, jadi saya tidak menggunakannya.

Terdapat trik pengaturcaraan lain di tempat lain dalam kod tersebut, untuk memastikan masa tetap tepat sambil menjimatkan tenaga (iaitu tidak menyambungkan pelayan NTP setiap minit), untuk menghapus aksen yang tidak disokong oleh perpustakaan Adafruit GFX, untuk mengelakkan kemas kini paparan jika tidak perlu, untuk menetapkan parameter akselerometer terutama untuk gangguan bangun tidur, hitung waktu tidur dengan tepat sekiranya pemasa bangun, elakkan penggunaan konsol Serial jika tidak disambungkan ke IDE (untuk menjimatkan tenaga lagi), putuskan sambungan wifi apabila tidak diperlukan, dll … dan kodnya penuh dengan komen yang membantu memahami fungsinya.

Terima kasih kerana membaca Instructable ini (yang pertama saya). Saya harap anda menyukainya dan menikmati pembuatan stesen cuaca ini

Peraduan Sensor
Peraduan Sensor

Naib Johan dalam Peraduan Sensor

Disyorkan: