Stasiun cuaca di Arduino dari A hingga Z. Bagian 1

Daftar isi:



Stasiun cuaca. Arduino, ESP8266, nRF24L01, DHT22


"Jadi, mari kita langsung setuju: Anda tidak akan membuat film untuk Hollywood. Bahkan di Wonderland, tidak lebih dari lima persen dari semua skenario disetujui, dan hanya satu persen yang kemudian diproduksi ... Jadi, alih-alih semua ini, Anda akan membuat Hollywood Anda sendiri. ”
Ed Gaskell "Membuat Bioskop Digital, atau Hollywood di Rumah"


Kata Pengantar


Apa, stasiun cuaca lain di Arduino ?! Ya, satu hal lagi, dan sesuatu memberi tahu saya, bukan yang terakhir di internet.


Sama seperti setiap programmer diharuskan untuk menulis program "Hello World!", Jadi setiap Arduino harus memiliki pengalaman membangun stasiun cuaca yang sederhana atau tidak terlalu cuaca.
Sejumlah besar proyek stasiun cuaca yang sudah dibuat di Internet dijelaskan, pembaca dapat memilih salah satu dari mereka untuk implementasi. Saya tidak akan bersembunyi, saya hati-hati mempelajari sekitar selusin proyek semacam itu dan banyak yang terkait. Karena itu, tidak dapat dikatakan bahwa saya menciptakan semuanya dari awal, tentu saja saya "berdiri di atas bahu raksasa."


Saya harus segera mengatakan bahwa rencana saya tidak termasuk penggunaan layanan pihak ketiga untuk menyimpan dan menampilkan data. Saya ingin merasakan dan memahami secara pribadi bagaimana semua ini bekerja dari dalam dari awal hingga akhir, dari A hingga Z.


Jadi bagi mereka yang ingin cepat memukau sesuatu dari ketiadaan, seri artikel ini kemungkinan besar tidak cocok. Lebih mudah untuk pergi dan membeli desainer yang sudah jadi dengan instruksi perakitan. Profesional mikroelektronika tidak ada hubungannya sama sekali di sini, mungkin meringkik dan mengingat diri mereka sendiri di awal perjalanan.
Tetapi bagi mereka yang benar-benar ingin mengetahuinya, saya pikir mereka akan menyukainya. Mungkin materinya bermanfaat sebagai alat pelatihan.


Penulis akan memandu Anda melalui labirin rumit teknologi modern Internet of things. Apalagi mata seorang pemula, karena dia sendiri.


Proyek ini dilaksanakan kembali pada tahun 2016, tetapi saya harap ini masih relevan.


Perangkat teknologi


Kami akan belajar dan bekerja dengan hal-hal sederhana dan kompleks:


  • sensor suhu dan kelembaban tipe DHT22, DHT11
  • sensor tekanan barometrik tipe BMP180
  • Modul WiFi ESP8266
  • Modul radio 2,4 GHz nRF24
  • Keluarga Mini Arduino Pro, Arduino Mega
  • baterai surya dan baterai
  • Bahasa pemrograman C / C ++
  • Bahasa pemrograman PHP
  • Sistem manajemen basis data MySQL
  • Bahasa pemrograman Java dan kerangka kerja Android (membuat aplikasi untuk Adnroid untuk menampilkan data cuaca pada smartphone).

Beberapa topik yang terdaftar dan telur tidak layak, dan beberapa dapat dipelajari selama bertahun-tahun. Oleh karena itu, kami akan menyentuh hal-hal kompleks hanya di bagian yang terkait langsung dengan proyek ini, sehingga Anda memahami bagaimana semuanya bekerja.


Tapi kita akan mulai dari awal . Yaitu, dari deskripsi dan desain perangkat masa depan "di atas kertas" , sehingga pada akhirnya setiap bata terletak di tempatnya.


Prototyping


Seperti yang dikatakan Wikipedia dengan tepat kepada kami, membuat prototipe adalah implementasi kasar yang cepat dari sistem kerja. Yang, ya, tidak akan bekerja sepenuhnya tidak efisien dan dengan beberapa kesalahan, tetapi itu akan memberi gambaran apakah kerajinan itu harus dikembangkan ke desain industri. Proses prototipe tidak harus panjang. Tahap prototyping diikuti oleh analisis sistem dan penyempurnaannya.


Tapi ini dalam industri di mana pekerja dipekerjakan penuh waktu.


Setiap orang yang memukau kerajinan proyek hewan peliharaannya untuk “internet of things” di malam hari harus menyadari bahwa ia menciptakan prototipe, produk setengah jadi. Dia sangat jauh dari level produk industri normal. Karena itu, kita tidak boleh mempercayakan kerajinan amatir kita dengan plot pendukung kehidupan yang bertanggung jawab dan berharap bahwa mereka tidak akan mengecewakan kita.


Sebuah produk industri dibangun di atas dasar elemen industri dan kemudian melewati banyak tahapan lainnya, termasuk debugging, pengujian dan pemeliharaan, sebelum menjadi bestseller.


Jadi, alih-alih semua gravitasi ini, kita akan membuat mainan kita sendiri, tetapi bukan yang sederhana. Dengan unsur kreativitas teknis, permulaan pemrograman dan pengetahuan (dalam proses penciptaan) banyak hal terkait lainnya.


Tentu saja, insinyur elektronik akan mengalami kesulitan pada tahap pemrograman, dan programmer harus memusingkan sirkuit, tetapi penulis akan mencoba menjelaskan semuanya semudah mungkin diakses dan menjelaskan dengan jelas mengapa solusi tertentu digunakan.


Persyaratan


Biasanya langkah ini dilewati. Memutuskan untuk melakukan sesuatu seperti itu sekarang, dan kemudian detail kecil ditemukan yang membuat seluruh proyek menemui jalan buntu atau bahkan membuatnya tak tertahankan. Semua Daftar Keinginan kami perlu direkam, saya menggunakan disk Google untuk ini, tersedia dari PC dan dari perangkat seluler.


Jadi, stasiun cuaca kami harus:


  • mengukur suhu dan kelembaban di luar
  • mengukur suhu dan kelembaban di dalam rumah
  • mengukur tekanan atmosfer
  • menampilkan nilai yang ditunjukkan pada layar
  • mentransfer data ke server di Internet, tempat data akan disimpan dalam database dan ditampilkan pada halaman web, atau digunakan dalam aplikasi seluler.

Sensor yang digunakan adalah yang paling sederhana dan termurah. Sebagai contoh, melihat ke depan, saya akan mengatakan bahwa DHT22 mengukur suhu dengan cukup akurat, tetapi dengan kelembapan sedikit tidak akurat. Tapi, sekali lagi, saya ulangi, itu tidak masalah, karena kami memiliki prototipe, dan penyebaran kelembaban 5% tidak akan mempengaruhi hal-hal penting dalam kehidupan kita.


Arsitektur sistem, perangkat keras dan perangkat lunak harus memberikan perluasan sistem lebih lanjut untuk menambahkan sensor baru dan fitur baru.


Besi Pemilihan Komponen


Ini adalah bagian yang paling penting, dan tidak menyolder atau memprogram sama sekali. Setelah menentukan persyaratan untuk sistem, perlu memutuskan dengan bantuan apa tepatnya yang akan diterapkan.


Di sinilah ada satu nuansa. Untuk memilih komponen yang perlu Anda ketahui kemampuannya dengan baik, Anda harus tahu teknologinya sendiri. Artinya, dengan kata lain, itu membutuhkan jauh dari seorang insinyur dan programmer elektronik pemula. Jadi apa yang sekarang menghabiskan beberapa tahun mempelajari seluruh spektrum perangkat yang mungkin?


Lingkaran setan? Tapi lingkaran setan ada untuk menghancurkan mereka.


Ada jalan keluar. Anda bisa mengambil dan mengulangi proyek orang lain. Saya mempelajari proyek stasiun cuaca yang ada dan mudah-mudahan mengambil langkah maju.


Jadi Arsitektur stasiun cuaca didasarkan pada Arduino. Karena Arduino memiliki ambang masuk yang kecil, dan saya sudah menanganinya. Lebih mudah untuk memilih lebih lanjut.


Segera menjadi jelas bahwa stasiun cuaca akan mencakup sensor jarak jauh, udara, dan modul pusat.


Pusat, unit utama akan berlokasi di dalam ruangan. Penting untuk menentukan ini pada tahap awal, dari ini, karakteristik penting seperti rezim suhu operasi dan kekuatan "menari".


Sensor jarak jauh (atau sensor) akan tanpa "otak", tugasnya adalah mengukur dan mengirimkan data secara berkala ke unit rumah pusat. Unit pusat menerima data dari semua sensor, menampilkannya di layar dan mengirimkannya ke database di Internet. Yah, sudah jauh lebih mudah di sana, begitu data ada di database, Anda dapat melakukan apa pun yang Anda inginkan dengannya, bahkan menggambar.


Untuk hubungan dengan dunia luar, Internet pasti dipilih oleh modul WiFi ESP8266 dengan hampir tidak ada alternatif (kira-kira. Mungkin sekarang alternatif seperti itu telah muncul). Kartu ekspansi Arduino Ethernet tersedia, tetapi saya tidak ingin terhubung dengan kabel sama sekali.


ESP8266


Pertanyaan yang menarik adalah bagaimana menyediakan koneksi antara sensor yang dipasang di jendela (atau sensor, ingat persyaratan untuk ekstensibilitas sistem?) Dan pusat. 433 MHz suar jelas tidak cocok (mereka tidak cocok untuk apa pun).


Manfaatkan ESP8266 lagi?


Kekurangan dari keputusan ini:


  • WiFi berkelanjutan diperlukan di luar rumah


  • jangkauan komunikasi tidak akan lama


  • keandalan akan menurun, jika Internet turun, kita tidak akan melihat sensor jarak jauh kita


  • konsumsi daya yang lebih besar.


  • Konsumsi Daya ESP8266:


  • saat mentransmisikan 120-170 mA


  • saat mengambil 50-56 mA


  • di Deep Sleep 10 μA (μA)


  • off 5 µA (µA).



Pada akhirnya, chip nRF24L01 + dengan pemancar dan penerima 2,4 GHz dalam satu botol, dengan antena eksternal tambahan, dipilih untuk menghubungkan sensor jarak jauh dengan unit rumah utama, sehingga dipastikan akan "menerobos" dinding.


nRF24L01 +


Konsumsi Daya nRF24L01 + 2.4 GHz:


  • saat menerima 11 mA
  • saat mentransmisikan pada 2Mbps - 13 mA
  • dalam mode siaga-I - 26 μA (μA)
  • keadaan mati 900 nA (nA).

Sedangkan untuk ESP8266, bahwa untuk nRF24L01 +, kisaran suhu pengoperasian cocok: dari -40 ℃ hingga + 80 ℃.


Anda dapat membeli nRF24L01 + dengan harga sekitar $ 1, atau segera dengan antena eksternal sebesar $ 3. Anda dapat membeli ESP8266-01 dengan harga sekitar $ 4. Baca deskripsi produk dengan cermat! Kalau tidak, beli satu antena.


Inti dari sistem menjulang. Kami beralih ke sensor itu sendiri.


Di jalan, seperti yang Anda tahu, suhu bisa mencapai nilai negatif, sehingga sensor DHT11 tidak cocok, tetapi DHT22 tepat.


DHT22


Fitur DHT22 / AM2302:


  • direkomendasikan catu daya dari 3,3 V hingga 5 V, 5 V
  • konsumsi maksimum 2.5mA, pada saat pengukuran dan transfer data
  • rentang pengukuran kelembaban 0-100% dengan akurasi 2-5%
  • rentang pengukuran suhu dari -40 hingga + 125 ° C dengan akurasi ± 0,5 ° C
  • permintaan pengukuran tidak lebih dari 0,5 Hz - setiap 2 detik sekali.

Di dalam rumah, saya berharap tidak akan ada suhu negatif, sehingga Anda dapat menggunakan DHT11, terutama karena saya sudah memilikinya.


Fitur DHT11:


  • catu daya dari 3,3 V hingga 5 V
  • konsumsi maksimum 2,5 mA, pada saat pengukuran dan transfer data
  • rentang pengukuran kelembaban 20-80% dengan akurasi 5%
  • rentang pengukuran suhu dari 0 hingga + 50 ° C dengan akurasi ± 2 ° C
  • permintaan pengukuran tidak lebih dari 1 Hz - sekali per detik.

Anda dapat membeli DHT22 dengan harga sekitar $ 3. DHT11 lebih murah - $ 1, tetapi kurang akurat.


Sekarang kembali ke Arduino. Papan mana yang harus dipilih?


Saya menguji masing-masing bagian sistem pada Arduino UNO. Yaitu Saya menghubungkan modul ESP ke Uno dan mempelajarinya, memutusnya, lalu menghubungkan nRF24, dll. Untuk implementasi akhir sensor luar negeri, ia memilih Arduino Pro Mini sebagai yang paling dekat dengan Uno dari yang miniatur.


Arduino Pro Mini


Dalam hal konsumsi daya, Arduino Pro Mini juga terlihat bagus:


  • tidak ada konverter USB-TTL, yang dengan sendirinya “makan banyak”,
  • LED terhubung melalui resistor 10k.

Untuk konservasi energi maju direncanakan:


  • lepaskan LED - indikator daya pada Arduino Pro Mini (saya menyesal, tidak merusak papan)
  • baik menggunakan unit telanjang pada mikroprosesor Atmel ATmega328 (tidak digunakan)
  • Gunakan Low Power Library atau JeeLib .

Saya memilih Low Power Library dari perpustakaan, itu sederhana dan hanya berisi apa yang Anda butuhkan.


Untuk unit pusat, karena direncanakan untuk menghubungkan banyak periferal ke sana, dewan Arduino Mega dipilih. Selain itu, sepenuhnya kompatibel dengan UNO dan memiliki lebih banyak memori. Ke depan, saya akan mengatakan bahwa pilihan ini sepenuhnya dibenarkan.


Anda dapat membeli Arduino Mega dengan harga sekitar $ 8.


Daya dan Konsumsi Daya


Sekarang tentang daya dan konsumsi daya.


Arduino Pro Mini hadir dalam dua bentuk:


  • Catu daya 5V dan frekuensi 16MHz
  • Tegangan pasokan 3,3V dan frekuensi 8MHz.

Karena modul radio nRF24L01 + membutuhkan daya 3,3 V, dan kinerja tidak penting di sini, beli Arduino Pro Mini pada 8MHz dan 3.3V.


Pada saat yang sama, rentang tegangan Arduino Pro Mini adalah:


  • 3.35-12 V untuk model 3.3 V
  • 5-12 V untuk 5 V.

Saya sudah memiliki Arduino Pro Mini di 5V, itu sebabnya saya menggunakannya. Anda dapat membeli Arduino Pro Mini dengan harga sekitar $ 4.


Unit pusat akan ditenagai dari jaringan 220 V melalui unit catu daya kecil yang menyediakan output 12V, 450mA, 5W. Suka ini seharga $ 5. Masih ada output terpisah pada 5V.


Modul Catu Daya AC / DC


Dan jika ini tidak cukup, maka itu bisa lebih kuat. Dengan kata lain, menghemat daya untuk unit pusat tidak masuk akal. Tetapi untuk sensor nirkabel jarak jauh, penghematan energi adalah bagian terpenting. Tetapi saya juga tidak ingin kehilangan fungsionalitas.


Oleh karena itu, Arduino Pro Mini dan modul radio nRF24 akan ditenagai oleh 4 baterai Ni-Mh.


Dan ingat, kapasitas maksimum baterai modern adalah sekitar 2500-2700mAh, yang lebih penting adalah trik pemasaran (Ansmann 2850) atau curang (UltraFire 3500).


Saya tidak menggunakan baterai Li-Ion karena beberapa alasan:


  • sangat mahal
  • ketika suhu sekitar turun di bawah 0 ° C, daya baterai lithium-ion menurun hingga 40-50%
  • yang murah dibuat tanpa perlindungan dan tidak aman (selama hubungan pendek atau pengosongan, mereka dapat meledak dan terbakar, lihat banyak video di YouTube)
  • menjadi tua, bahkan jika mereka tidak digunakan (meskipun ini dapat dikatakan tentang semua elemen kimia), setelah 2 tahun, baterai Li-Ion kehilangan sekitar 20% dari kapasitasnya.

Untuk prototipe, sangat mungkin untuk bertahan dengan baterai Ni-MH AA atau AAA berkualitas tinggi. Apalagi kita tidak perlu arus besar. Satu-satunya kekurangan baterai Ni-MH adalah muatannya yang lama.


Skema umum stasiun cuaca


Untuk meringkas. Berikut ini adalah garis besar umum tentang bagaimana semuanya bekerja.


Stasiun cuaca. Skema umum.


Untuk dilanjutkan.

Source: https://habr.com/ru/post/id425901/


All Articles