Jam Pasang surut dan Cuaca: 9 Langkah (dengan Gambar)
Jam Pasang surut dan Cuaca: 9 Langkah (dengan Gambar)
Anonim
Jam Air Pasang dan Cuaca
Jam Air Pasang dan Cuaca

Walaupun anda boleh membeli jam pasang analog yang mempunyai satu tangan yang menunjukkan sama ada air pasang tinggi atau rendah atau di suatu tempat di antara, apa yang saya mahukan adalah sesuatu yang akan memberitahu saya pada pukul berapa arus surut. Saya mahukan sesuatu yang dapat saya lihat dengan pantas tanpa perlu menghidupkannya, atau menekan butang apa pun, atau tunggu. Dan saya mahukan sesuatu dengan jangka hayat bateri yang panjang. Oleh itu, saya menggunakan papan TTGO T5, yang merupakan papan berasaskan ESP32 dengan paparan e-kertas 2.13 , disambungkan ke cip TTL5110. TPL5110 menghidupkan T5 setiap 2.5 jam, dan sekali sehari T5 memuat turun data pasang surut dari NOAA dan data cuaca dari OpenWeatherMap, memaparkan data pada e-kertas, kemudian memberitahu TPL5110 untuk mematikan T5.

UPDATE (25 Feb 2020) Jam Pasang telah berjalan selama satu tahun sekarang, dan baterinya berada pada 4.00 volt, sehingga jam dapat dibayangkan selama bertahun-tahun.

Langkah 1: Senarai Perkakasan

Papan TTGO T5 $ 17

Papan Adafruit TPL5110 $ 5

Papan ukuran Perempat-Proto Adafruit (pilihan) $ 0.71 (minimum pesanan $ 8.50)

Li-Poly bateri 1200 mAh $ 10 (atau sumber kuasa lain yang sesuai)

Kabel 2-Pin JST PH - Header Lelaki $ 0.75

Kapasitor 220 uF

Langkah 2: Alat

Besi pematerian

Pelucut wayar

Pengecas bateri Li-Po, seperti ini.

Langkah 3: Pasang Perkakasan

Pasang Perkakasan
Pasang Perkakasan
Pasang Perkakasan
Pasang Perkakasan
Pasang Perkakasan
Pasang Perkakasan

Pemasangan perkakasan cukup mudah seperti yang ditunjukkan oleh skematik. Saya menggunakan papan Adfaruit Perma-proto yang seperti protoboard biasa kecuali dibentangkan seperti papan roti, dengan sambungan elektrik yang sama dengan papan roti, yang bagus. Oleh kerana saya hanya memerlukan beberapa sambungan, dan mahu memasukkan keseluruhan unit ke dalam kotak kecil, saya memotong salah satu papan menjadi keempat dengan roda pemotong Dremel.

Kapasitor 220 uF sangat penting. Tanpa itu, TPL5110 tidak akan menghidupkan T5. Agak tidak jelas mengapa, tetapi orang lain yang menggunakan TPL5110 mengalami masalah yang sama. Mungkin pengambilan ESP32 lebih banyak semasa permulaan daripada yang dapat dibekalkan oleh TTL5110?

Jangan habiskan bateri. Gunakan kabel JST-PH sehingga anda dapat melepaskan bateri untuk mengecasnya. Mungkin ada cara untuk mengecas bateri dari T5 kembali melalui TPL5110 jika TPL5110 "hidup", tetapi saya tidak dapat menjamin teknik itu.

Saya membuat kotak kayu sebagai kandang, tetapi apa-apa dengan dimensi dalaman minimum 1.5 "x 2.75" x 1 "akan berfungsi.

Langkah 4: Tentukan Masa

Papan TPL5110 mempunyai potensiometer trim yang menetapkan selang waktu ketika TPL5110 bangun. Gunakan pemutar skru kecil untuk membalikkannya ke arah lawan jam. Di papan saya, ini menetapkan selang menjadi 145 minit, yang sebenarnya lebih daripada 120 minit maksimum, tetapi ia berfungsi dan konsisten dan akan menjimatkan lebih banyak kuasa daripada bangun setiap 120 minit, jadi saya menggunakannya. Anda tidak perlu mengetahui selang waktu dengan tepat, kerana tujuannya hanya untuk memuat turun data kira-kira sekali sehari kira-kira jam 4 pagi. Anda boleh menentukan selang waktu (mis., 145 minit) dan masa bangun (mis., 4 pagi) di env_config.h.

(Sekiranya anda mahukan kawalan masa yang lebih baik untuk beberapa projek lain, papan TPL5110 mempunyai jejak di bahagian belakang yang dapat anda potong untuk mematikan potensiometer. Kemudian anda pasangkan perintang ke pin Delay, dan rintangan menentukan selang, menurut carta ini.)

Langkah 5: Perisian

Anda memerlukan Arduino IDE dengan pakej ESP32. Di IDE, tetapkan papan anda ke "Modul Dev ESP32".

Sketsa boleh didapati di https://github.com/jasonful/Tides dan memerlukan 3 perpustakaan:

  1. "ESP8266 Weather Station", tersedia dari Pengurus Perpustakaan Arduino (atau di sini). Anda hanya memerlukan 6 fail ini: ESPHTTPClient.h, ESPWiFi.h, OpenWeatherMapCurrent.cpp, OpenWeatherMapCurrent.h, OpenWeatherMapForecast.cpp, OpenWeatherMapForecast.h dan boleh menghapus yang lain.
  2. "Json Streaming Parser" tersedia dari Pengurus Perpustakaan Arduino (atau di sini)
  3. https://github.com/LilyGO/TTGO-Epape-T5-V1.8/tree/master/epa2in13-demo Walaupun kod tersebut tidak dikemas sebagai perpustakaan yang benar, anda boleh menyalinnya di bawah direktori perpustakaan anda dan memasukkannya ia.

Langkah 6: Konfigurasikan Perisian

Terdapat beberapa parameter yang perlu anda tetapkan (dan beberapa yang mungkin anda mahu tetapkan) dalam fail env_config.h, termasuk:

  • SSID dan kata laluan WiFi
  • Id stesen NOAA (dengan kata lain, di mana anda)
  • OpenWeatherMap AppID, yang perlu anda daftarkan (senang dan percuma)
  • OpenWeatherMap LocationID (sekali lagi, di mana anda)
  • CONFIG_USE_TPL5110, yang membolehkan anda menggunakan T5 tanpa TPL5110. Sebaliknya, perisian akan memasuki mod tidur dalam. Papan T5 menarik sekitar 8 ma dalam tidur nyenyak, jadi saya hanya mengharapkan bateri akan bertahan beberapa hari.

Langkah 7: Bagaimana Perisian Berfungsi

(Anda boleh melangkau bahagian ini jika anda tidak peduli.)

Tujuannya adalah untuk bangun sekali sehari, tetapi kerana selang maksimum TPL5110 hanya 2 jam atau lebih, T5 harus bangun lebih kerap. Oleh itu, setelah memuat turun data air pasang dan cuaca, ia mengira berapa selang waktu 2 jam ini antara sekarang hingga 4:00 pagi esok. Ini sedikit rumit oleh fakta bahawa TPL5110 benar-benar memotong kuasa ke T5, yang baik untuk bateri, tetapi ini bermakna kita kehilangan RAM dan jam masa nyata. Ia seperti bangun setiap pagi dengan amnesia. Oleh itu, untuk mengetahui jam berapa sekarang, ia mengekstraknya dari tajuk HTTP NOAA. Dan untuk mengingat berapa selang masa 2 jam yang tersisa, ia menulis bahawa berlawanan dengan penyimpanan yang tidak mudah berubah (flash). Setiap kali bangun, ia memeriksa kaunter, menurunkannya, menyimpannya, dan jika lebih besar daripada sifar, ia akan segera menghantar isyarat ke TPL51110 ("Selesai") yang menyuruhnya mematikannya. Apabila kaunter mencapai sifar, kod memuat turun data baru, dan mengira semula dan menetapkan semula kaunter.

Langkah 8: Jalankan

Jalankannya
Jalankannya

Pastikan suis di sebelah kiri T5 berada di posisi atas (aktif), muat naik lakaran ke T5, dan dalam beberapa detik layar akan diperbarui dengan info pasang surut dan cuaca.

Sekiranya anda perlu men-debug perisian, ubah "#define DEBUG 0" di bahagian atas Tides.ino menjadi "#define DEBUG 1". Ini akan menghidupkan output debug bersiri, dan juga memaparkan di bahagian bawah e-kertas jumlah restart yang tersisa sebelum memuat turun data baru, dan masa terakhir memuat turun data.

Langkah 9: Arah Masa Depan

  1. Penggunaan TPL5110 yang digabungkan dengan paparan e-kertas adalah cara terbaik untuk memaparkan data yang tidak sering berubah, dengan jangka hayat bateri yang sangat baik.
  2. Semasa saya merancang ini, saya mempertimbangkan untuk menggunakan TrigBoard, yang merupakan papan ESP8266 dengan papan TPL5111. Ia memerlukan mendapatkan paparan e-kertas yang terpisah dan papan pemacu e-kertas seperti ini atau ini. Atau kombo pemandu + papan seperti ini atau ini. Untuk mengangkut kod ke ESP8266, saya rasa kod SSL harus menggunakan cap jari dan bukannya sijil, dan kod penyimpanan yang tidak mudah berubah harus menggunakan memori EEPROM atau RTC.
  3. Saya baru-baru ini mendengar bahawa papan Lolin32 cukup baik dalam mod tidur nyenyak: kira-kira 100uA. Tidak sehebat papan TPL51110 (20uA mengikut Adafruit) tetapi cukup bagus.
  4. OpenWeatherMap mengembalikan lebih banyak data cuaca daripada yang saya paparkan. Termasuk id ikon, yang memerlukan mencari ikon monokrom di suatu tempat.

Disyorkan: