Pernalh lihat laporan cuaca di televisi atau di internet? Laporan cuaca ini sebenarnya dibuat dari gabungan beberapa sensor, ditambahkan dengan analisa dan prediksi yang dibuat berdasarkan data tersebut. Untuk analisa dan prediksi mungkin memerlukan ilmu pengetahuan tentang cuaca dan pengalaman. Tetapi, untuk membuat stasiun cuaca yang hanya mengumpulkan data hanya membutuhkan pengetahuan elektronika dan komputer.
Di Amerika banyak warga yang membuat stasiun cuaca sendiri, yang tergabung dalam program Citizen Weather Observation Program (CWOP). Data dari CWOP ini digunakan oleh NOAA (Badan cuaca Amerika) untuk penelitian, analisa dan prediksi cuaca. Alangkah baiknya juga apabila CWOP ini bisa di adopsi di Indonesia, dan datanya juga dimanfaatkan oleh BMKG.
Somebody has to start, right? Oleh karena itu saya memulai stasiun cuaca kerakyatan ini dengan membuat stasiun cuaca sendiri di rumah.
Kontroler: Antara Raspberry Pi, Arduino dan NodeMCU
Untuk project stasiun cuaca ini awalnya saya mempertimbangkan antara Raspberry Pi, Arduino dan NodeMCU.Raspberry Pi memiliki keuntungan karena berjalan dengan sistem operasi Linux. Sistem operasi Linux menyediakan level networking yang baik, dan pilihan bahasa pemrograman untuk memproses data sensor. Akan tetapi sistem operasi Linux membutuhkan daya listrik yang cukup besar, sehingga membutuhkan batere yang besar pula apabila dijalankan dengan panel surya.
Arduino dan NodeMCU memiliki kebutuhan daya yang lebih kecil. Kedua modul ini juga sudah memiliki regulator yang bisa menerima tegangan lebih besar dari 5v, sehingga bisa dihubungkan langsung batere. Arduino menggunakan mikrokontroler ATmega sedangkan NodeMCU menggunakan kontroler ESP8266. Apabila keduanya dibandingkan, ESP8266 memiliki keuntungan dengan ketersediaan WiFi dan konsumsi daya yang lebih rendah dengan kemampuan deep sleep. Sementara Arduino masih membutuhkan WiFi shield tambahan.
Sedikit catatan tentang konsumsi listrik. Stasiun cuaca ini akan memberikan pengukuran setiap 5-15 menit sekali. Di antara pengukuran, stasiun cuaca akan memasukin sleep mode untuk mengurangi penggunaan listrik, terutama apabila menggunakan panel surya. Arduino memang memiliki sleep mode. Tetapi, pengkabelan dan pemrograman sleep mode di Arduino lebih rumit, dibandingkan NodeMCU. Untuk NodeMCU, deep sleep hanya membutuhkan kabel dari pin D0 ke RST, dan dalam pemrograman cukup memanggil fungsin ESP.deepSleep.
Sensor Pengukuran Stasiun Cuaca
Selanjutnya, sampai stasiun cuaca bisa mengukur data-data cuaca, seperti suhu, kelembaban, tekanan udara, dan lain-lain, dibutuhkan beberapa sensor. Pemasangan sensor ini dilakukan secara beberapa tahap supaya kalau ada kendala bisa dengan mudah diperbaiki. Berikut daftar pengukuran, sensor dan tahapan pemasangan yang direncanakan:
- Suhu dan Kelembaban: DHT22. Sebaiknya menggunakan paketan sensor DHT22 yang sudah menempel di PCB dengan 3 kaki untuk menghindari kebutuhan komponen tambahan
- Tekanan udara: BMP280. Terdapan 2 jenis BMP280, dengan 4 kaki atau dengan 6 kaki. Sensor BMP280 dan DHT22 bisa digabung dengan menggunakan sensor BME280 denga harga yang lebih mahal.
- Arah dan kecepatan angin. Sensor ini sebenarnya terdiri dari 2 bagian, untuk mengukur kecepatan angin dan arah angin.
- Jumlah hujan. Saat ini saya masih mencari sensor yang tepat untuk mengukur jumlah hujan.
Catu Daya Stasiun Cuaca Mandiri
Setelah menentukan mikrokontroler dan sensor, untuk menjalankan stasiun cuaca dibutuhkan catu daya listrik. ESP8266 bekerja di tegangan 3.3v. Di dalam board NodeMCU v3 yang saya gunakan terdapat konektor micro USB dan DC converter sehingga tegangan 5v dari micro USB bisa digunakan untuk sumber daya ESP8266. Hal ini mempermudah sumber catu daya NodeMCU, dengan menggunakan charger telepon genggam dengan konektor micro USB.
Akan tetapi, tujuan akhir dalam stasiun cuaca ini adalah untuk memiliki catu daya sendiri. Meskipun dalam tahap pertama sumber catu daya yang digunakan masih berasal dari PLN, pada tahap akhir saya akan menggunakan panel surya dan batere rechargeable sebagai sumber catu daya. Untuk itu komponen yang sedang direncanakan:
- Panel surya dengan tegangan antara 5-6v, dan arus maksimum sekitar 400mA. Artinya saya membutuhkan panel surya sekitar 2.4 watt.
- Batere rechargeable. Pilihan sementara jatuh pada batere Lithium Ion (LiIon) atau yang lebih mahal Lithium Polymer (LiPo). Kedua batere ini memiliki tegangan keluaran 3.7v yang masih bisa diterima oleh NodeMCU. Kapasitas batere sendiri tidak terlalu penting, karena saya akan memanfaatkan kemampuan deep sleep NodeMCU yang hanya mengkonsumsi listrik sangat sedikit diantara pengukuran
- Solar Charge Controller. Komponen ini berfungsi untuk mengatur pengisian batere rechargeable dari panel surya, dan memindahkan sumber daya dari panel surya ke batere di malam hari. Beberapa pilihan adalah WEMOS Lithium Charge Controller atau kontroller berbasis TP4056. Kontroler WEMOS memiliki kelebihan karena bisa dihubungkan ke NodeMCU untuk memberikan pembacaan tegangan batere, tapi memiliki harga yang lebih mahal.
[Update 23 Desember 2018] Stasiun cuaca saat ini sudah menggunakan batere 18650 sebagai sumber daya pada poin 2, dan TP4056 sebagai charge controller pada poin 3. Detail penggunaan batere 18650 dan TP4056 bisa dilihat di tulisan ini.
Komunikasi Stasiun Cuaca Mandiri: Internet & Radio Amatir
Stasiun cuaca akan jauh lebih berguna apabila hasil pengukurannya bisa dikirimkan ke internet. Untuk menghubungkan stasiun cuaca dengan internet, saya memanfaatkan kemampuan WiFi dari NodeMCU untuk menghubungkan stasiun cuaca dengan WiFi di rumah, dan lalu ke internet. Sebagai protokol komunikasi, pilihan jatuh kepada format Automatic Packet Reporting System (APRS). Alasannya supaya data yang dihasilkan bisa terbaca oleh situs CWOP, sehingga saya tidak perlu membuat program web khusus untuk menampilkan hasil pengukuran.
Penggunaan komunikasi APRS ini juga membuka kemungkinan untuk mengirimkan hasil pengukuran melalui stasiun radio amatir. Hal ini akan membuat stasiun cuaca yang benar-benar mandiri.
Salah satu pilihan komunikasi yang cukup menarik adalah dengan menggunakan jaringan telepon seluler GSM. Ada beberapa modul yang tersedia untuk Arduino yang juga bisa digunakan oleh NodeMCU. Akan tetapi pilihan ini cukup mahal oleh karena biaya berlangganan paket data dari operator seluler. Kendala lainnya adalah daya yang dibutuhkan oleh modem GSM, sehingga membutuhkan panel surya dan batere yang lebih banyak.
Kotak Pelindung: Stevenson Screen
Terakhir, untuk melengkapi sebuah stasiun cuaca, dibutuhkan kotak untuk melindungi komponen-komponen dari cuaca itu sendiri. Standar dunia untuk stasiun cuaca adalah menggunakan Stevenson Screen, sebuah kotak dengan beberapa lubang sehingga angin bisa berhembus dengan bebas. Banyak instruksi untuk bikin sendiri Stevenson Screen.
Demikian ringkasan dari rencana stasiun cuaca dengan NodeMCU. Untuk memulai pembuatan stasiun cuaca mandiri dengan NodeMCU, silahkan melihat artikel berikutnya.