Isi kandungan:

Sensor Suhu Rangkaian Rumah: 7 Langkah
Sensor Suhu Rangkaian Rumah: 7 Langkah

Video: Sensor Suhu Rangkaian Rumah: 7 Langkah

Video: Sensor Suhu Rangkaian Rumah: 7 Langkah
Video: Rangkaian Operational Amplifier sebagai Pengendali Suhu Menggunakan Sensor LM35 2024, November
Anonim
Sensor Suhu Rangkaian Rumah
Sensor Suhu Rangkaian Rumah

Apa yang perlu anda ketahui untuk membuat projek ini:

Anda perlu tahu mengenai: - Beberapa kemahiran elektronik (pematerian)

- Linux

- Arduino IDE

(anda perlu mengemas kini papan tambahan di IDE:

- mengemas kini / memprogram papan ESP melalui Arduino IDE.

(ada beberapa tutorial bagus yang terdapat di web)

Ini boleh dilakukan dengan menggunakan Arduino Uno atau menggunakan FTDI (penyesuai usb ke siri).

Saya menggunakan Uno saya kerana saya tidak mempunyai port bersiri pada PC saya dan juga tidak mempunyai FTDI

Langkah 1: Pergi Membeli-Belah

Pergi membeli-belah
Pergi membeli-belah

Apa yang anda perlukan untuk mewujudkannya?

Untuk Sensor Suhu dan Kelembapan Digital:

- Sama ada papan roti atau alternatif seperti prototaip pcb, solder, soldering…

- Sebilangan wayar

- dua penerjun

- perintang Ohk 10k

- ESP12F (model lain mungkin berfungsi juga …)

- DHT22 (sedikit lebih mahal daripada DHT11 tetapi lebih tepat)

- 3 bateri AA yang boleh dicas semula dan pemegang bateri

- kotak plastik kecil untuk memasukkan projek anda

- Pada peringkat kemudian saya merancang untuk menambahkan HT7333 dengan dua kapasitor 10uF antara pek bateri dan ESP

untuk menstabilkan voltan input (VCC) ke 3.3V yang disyorkan tetapi juga untuk melindungi ESP daripada voltan berlebihan.

Untuk bahagian Rangkaian:

- Rangkaian WiFi rumah anda

Untuk bahagian Pelayan:

- Sebarang sistem berasaskan Linux (selalu aktif!)

Saya menggunakan Raspberry Pi (yang juga saya gunakan sebagai pelayan untuk kamera IP Luaran saya.)

- penyusun gcc untuk menyusun kod pelayan anda

- pakej rrdtool untuk menyimpan data dan menghasilkan grafik

- apache (atau pelayan web lain)

PC atau komputer riba kegemaran anda dengan Arduino IDE di atasnya.

Langkah 2: Persediaan dan Latar Belakang

Persediaan dan Latar Belakang
Persediaan dan Latar Belakang

Dalam versi WiFi yang disambungkan - belum lagi IOT - sensor suhu dan kelembapan saya menggunakan ESP12F, DHT22 dan pemegang bateri 3 AA dengan bateri yang boleh dicas semula.

Setiap 20 minit, ESP mengambil pengukuran dari DHT22 dan mengirimkannya ke pelayan (Raspberry Pi) melalui UDP di rangkaian WiFi rumah saya. Setelah pengukuran dihantar, ESP akan tidur nyenyak. Ini bermaksud bahawa hanya Jam Waktu Nyata modul yang masih berkuasa, menghasilkan penjimatan kuasa yang luar biasa. Selama kira-kira 5 saat, modul memerlukan sekitar 100mA, kemudian selama 20 minit tidur hanya 150uA.

Saya tidak mahu menggunakan perkhidmatan berasaskan Internet kerana saya mempunyai Raspberry Pi saya yang selalu aktif dan dengan cara ini saya juga senang menulis bahagian pelayan.

Di pelayan (Raspberry Pi yang menjalankan Raspbian) saya telah menulis pendengar UDP (pelayan) sederhana yang menyimpan nilai menjadi RRD sederhana. (Round Robin Database menggunakan RRDtool oleh Tobias Oetiker.)

Kelebihan RRDtool ialah anda membuat pangkalan data anda sekali dan ukurannya tetap sama. Anda tidak perlu menjalankan pelayan pangkalan data (seperti mySQLd) di latar belakang. RRDtool memberi anda alat untuk membuat Pangkalan Data dan menghasilkan grafik.

Pelayan saya membuat grafik secara berkala dan memaparkan semuanya dalam halaman http yang sangat mudah. Saya dapat membaca bacaan saya dengan penyemak imbas yang mudah dengan menyambung ke pelayan web Apache2 di Raspberry Pi!

Akhirnya, saya tidak mempunyai FTDI (USB ke Serial) jadi saya menggunakan Arduino UNO saya. Anda perlu menyambungkan TX dan RX dan GND ESP dan UNO. (Saya tahu, naluri anda mungkin memberitahu anda untuk melintasi RX dan TX … mencubanya juga, tidak berjaya.)

Saya tidak melakukan penukaran tahap (UNO: High = 5V tetapi ESP pada dasarnya adalah peranti 3.3V … Terdapat beberapa FTDI yang bagus di pasaran di mana anda bahkan boleh memilih tahap Tinggi anda menjadi 5 atau 3.3V.

Litar saya dikuasakan oleh 3 bateri boleh dicas semula AA - jadi sebenarnya 3 X 1.2V. Pada fasa kemudian saya berhasrat untuk meletakkan HT7333 antara pek bateri dan litar untuk keselamatan; bateri yang baru dicas boleh mempunyai lebih daripada 1.2V dan ESP harus dihidupkan dengan min. 3V dan maks. 3.6V. Juga jika saya memutuskan - dalam masa kelemahan - untuk memasukkan bateri Alkali (3 X 1.5V = 4.5V) ESP saya tidak akan digoreng!

Saya juga mempertimbangkan untuk menggunakan panel Solar 10cm x 10cm, tetapi ia tidak semestinya merepotkan. Dengan melakukan 3 pengukuran per jam (pada dasarnya 3x 5 saat @ maksimum 100mA dan selebihnya waktu @ 100uA), saya berharap dapat menghidupkan litar saya selama 1 tahun dengan bateri boleh dicas semula yang sama.

Langkah 3: Bahagian Arduino - ESP12

Bahagian Arduino - ESP12
Bahagian Arduino - ESP12
Bahagian Arduino - ESP12
Bahagian Arduino - ESP12

Saya melakukan projek ini dalam pelbagai langkah.

Terdapat beberapa pautan yang membantu anda mengimport ESP12 (aka. ESP8266) ke dalam Arduino IDE. (Saya terpaksa menggunakan versi 2.3.0 dan bukan yang terbaru kerana bug yang mungkin telah diselesaikan sementara itu …)

Saya mulakan dengan menghubungkan ESP, melalui Arduino UNO saya (hanya digunakan sebagai jambatan antara PC saya melalui USB ke Serial) ke antara muka siri ESP. Terdapat Instruksional berasingan yang menjelaskan perkara ini.

Dalam projek yang telah saya siapkan, saya meninggalkan kabel untuk menyambung ke Serial sekiranya saya perlu menyelesaikan masalah. RX

Kemudian anda perlu memasukkan ESP12 anda seperti berikut:

Pin ESP…

GND UNO GND

RX UNO RX

TX UNO TX

EN VCC

GPIO15 GND

Pada mulanya saya cuba menghidupkan ESP saya dari 3.3V di UNO tetapi saya dengan pantas beralih ke kuasa ESP saya dengan bekalan kuasa bangku tetapi anda juga boleh menggunakan pek bateri anda.

GPIO0 Saya menghubungkan yang satu ini dengan jumper ke GND untuk membolehkan flashing (= pengaturcaraan) ESP.

Ujian pertama: biarkan pelompat terbuka dan mulakan monitor bersiri di Arduino IDE (pada 115200 baud!).

Kuatkan ESP, anda akan melihat beberapa watak sampah dan kemudian mesej seperti:

Ai-Thinker Technology Co. Ltd. siap

Dalam mod ini, ESP bertindak seperti modem kuno. Anda perlu menggunakan arahan AT.

Cuba arahan berikut:

AT + RST

dan dua perintah berikut

AT + CWMODE = 3

okey

AT + CWLAP

Ini akan memberi anda senarai semua rangkaian WiFi di kawasan itu.

Sekiranya ini berjaya, anda sudah bersedia untuk langkah seterusnya.

Langkah 4: Menguji ESP Sebagai Pelanggan Protokol Masa Rangkaian (NTP)

Menguji ESP Sebagai Pelanggan Protokol Masa Rangkaian (NTP)
Menguji ESP Sebagai Pelanggan Protokol Masa Rangkaian (NTP)
Menguji ESP Sebagai Pelanggan Protokol Masa Rangkaian (NTP)
Menguji ESP Sebagai Pelanggan Protokol Masa Rangkaian (NTP)

Di Arduino IDE, di bawah Fail, Contoh, ESP8266WiFi, muatkan NTPClient.

Tweak kecil diperlukan untuk membuatnya berfungsi; anda perlu memasukkan SSID dan kata laluan rangkaian WiFi anda.

Sekarang letakkan pelompat, pendekkan GPIO0 ke GND.

Kuatkan ESP dan muat naik lakaran ke ESP.

Selepas penyusunan, muat naik ke ESP akan bermula. LED biru pada ESP akan berkelip dengan cepat semasa kod sedang dimuat turun.

Saya perhatikan bahawa saya harus bermain-main sedikit dengan menghidupkan semula IDE, memulakan semula ESP sebelum muat naik berfungsi.

Sebelum anda mula menyusun / memuat naik lakaran, pastikan untuk menutup konsol bersiri (= monitor bersiri) kerana ini akan menghalang anda daripada melakukan muat naik.

Setelah muat naik berjaya, anda boleh membuka semula monitor bersiri untuk melihat ESP mendapat masa dari Internet dengan berkesan.

Hebat, anda telah memprogramkan ESP anda, menyambung ke WiFi anda dan mendapat masa dari Internet.

Langkah seterusnya kami akan menguji DHT22.

Langkah 5: Menguji Sensor DHT22

Menguji Sensor DHT22
Menguji Sensor DHT22

Kini beberapa pendawaian tambahan diperlukan.

Pin DHT… Sambungkan pin 1 (di sebelah kiri) sensor ke VCC (3.3V)

Sambungkan pin 2 ESP GPIO5 (DHTPIN dalam lakaran)

Sambungkan pin 4 (di sebelah kanan) sensor ke GROUND

Sambungkan perintang 10K dari pin 2 (data) ke pin 1 (kuasa) sensor.

Sama seperti ujian NTP, cari lakaran DHTtester, dan ubah dengan cara berikut:

#tentukan DHTPIN 5 // kami memilih GPIO5 untuk menyambung ke sensor # tentukan DHTTYPE DHT22 // kerana kami menggunakan DHT22 tetapi kod / perpustakaan ini juga sesuai untuk DHT11

Sekali lagi, tutup monitor bersiri, hidupkan ESP dan kumpulkan dan nyalakan ESP.

Sekiranya semuanya berjalan lancar, anda mesti melihat pengukuran muncul di monitor bersiri.

Anda boleh bermain-main sedikit dengan sensor. Sekiranya anda menghirupnya, anda akan melihat kelembapan naik.

Sekiranya anda mempunyai lampu meja (bukan LED), anda boleh menyalakan sensor untuk memanaskannya sedikit.

Hebat! Dua bahagian besar sensor kini berfungsi.

Pada langkah seterusnya saya akan mengulas mengenai kod terakhir.

Langkah 6: Menyatukannya…

Menyatukannya…
Menyatukannya…

Sekali lagi beberapa pendawaian tambahan … ini untuk membolehkan DeepSleep dimungkinkan.

Ingat, DeepSleep adalah fungsi luar biasa untuk peranti IoT.

Tetapi jika sensor anda dikabelkan dengan mendalam untuk DeepSleep, mungkin sukar untuk memprogramkan semula ESP sehingga kami akan membuat sambungan jumper lain antara

GPIO16-RST.

Ya itu mestilah GPIO16, kerana itulah GPIO yang diprogramkan untuk menghidupkan peranti ketika Jam Waktu Nyata mati setelah DeepSleep!

Semasa anda menguji, anda boleh memutuskan untuk melakukan DeepSleep 15 saat.

Semasa saya melakukan debug, saya akan memindahkan jumper ke GPIO0 supaya saya dapat memancarkan program saya.

Setelah muat turun selesai, saya akan memindahkan jumper ke GPIO16 supaya DeepSleep berfungsi.

Kod untuk ESP dipanggil TnHclient.c

Anda mesti menukar SSID, Kata Laluan dan alamat IP pelayan anda.

Terdapat barisan kod tambahan yang boleh anda gunakan untuk menyelesaikan masalah atau menguji persediaan anda.

Langkah 7: Bahagian Pelayan

Bahagian Pelayan Perkara
Bahagian Pelayan Perkara
Bahagian Pelayan Perkara
Bahagian Pelayan Perkara

Ini adalah salah faham umum bahawa UDP tidak boleh dipercayai dan TCP adalah…

Itu sama bodohnya dengan mengatakan tukul lebih berguna daripada pemutar skru. Mereka hanya alat yang sangat berguna dan kedua-duanya mempunyai kegunaan.

By the way, tanpa UDP Internet tidak akan berfungsi … DNS berdasarkan UDP.

Jadi, saya memilih UDP kerana sangat ringan, mudah dan pantas.

Saya cenderung berpendapat bahawa WiFi saya sangat dipercayai sehingga pelanggan akan menghantar paling banyak 3 paket UDP jika pengakuan "OK!" tidak diterima.

Kod C untuk TnHserver ada dalam fail TnHServer.c.

Terdapat beberapa komen dalam kod yang menerangkannya.

Kami memerlukan beberapa alat tambahan di pelayan: rrdtool, apache dan mungkin tcpdump.

Untuk memasang rrdtool pada Raspbian, anda boleh memasang pakej seperti ini: apt-get install rrdtool

Sekiranya anda perlu melakukan debug lalu lintas rangkaian, tcpdump sangat berguna untuk memasang tcpdump

Saya memerlukan pelayan web untuk dapat menggunakan penyemak imbas untuk melihat grafik: apt-get install apache2

Saya menggunakan alat ini: https://rrdwizard.appspot.com/index.php untuk mendapatkan arahan membuat Pangkalan Data Round Robin. Anda hanya perlu menjalankannya sekali (jika anda melakukannya dengan betul pada kali pertama).

rrdtool buat TnHdatabase.rrd --mulai sekarang-10s

- langkah '1200'

'DS: Suhu: GAUGE: 1200: -20.5: 45.5'

'DS: Kelembapan: GAUGE: 1200: 0: 100.0'

'RRA: Rata-rata: 0.5: 1: 720'

'RRA: Rata-rata: 0.5: 3: 960'

'RRA: Rata-rata: 0.5: 18: 1600'

Akhirnya, saya menggunakan entri crontab untuk memulakan semula TnHserver saya setiap hari pada tengah malam. Saya menjalankan TnHserver sebagai pengguna biasa (iaitu. BUKAN root) sebagai langkah keselamatan.

0 0 * * * / usr / bin / pkill TnHserver; / rumah / pengguna / bin / TnHserver> / dev / null 2> & 1

Anda boleh memastikan bahawa TnHserver sedang berjalan dengan melakukan

$ ps -elf | grep TnHserver

dan anda boleh mengesahkan bahawa ia sedang mendengar paket di port 7777 dengan melakukan

$ netstat -anu

Sambungan Internet aktif (pelayan dan dibuat)

Proto Recv-Q Send-Q Alamat Tempatan Alamat Negara Asing

udp 0 0 0.0.0.0:7777 0.0.0.0:*

Akhirnya CreateTnH_Graphs.sh.txt adalah contoh skrip untuk menghasilkan graf. (Saya menghasilkan skrip sebagai root, anda mungkin tidak mahu melakukan ini.)

Dengan menggunakan laman web yang sangat mudah, anda dapat menonton grafik dari mana-mana penyemak imbas di rangkaian rumah anda.

Disyorkan: