Daftar Isi:

Sensor Suhu Jaringan Rumah: 7 Langkah
Sensor Suhu Jaringan Rumah: 7 Langkah

Video: Sensor Suhu Jaringan Rumah: 7 Langkah

Video: Sensor Suhu Jaringan Rumah: 7 Langkah
Video: 6 Ciri-Ciri Sensor ECT Mobil Rusak - (Engine Coolant Temperature Sensor) 2024, November
Anonim
Sensor Suhu Jaringan Rumah
Sensor Suhu Jaringan Rumah

Apa yang perlu Anda ketahui untuk membuat proyek ini:

Anda perlu tahu tentang:- Beberapa keterampilan elektronik (menyolder)

- Linux

-Arduino IDE

(Anda perlu memperbarui papan tambahan di IDE:

- memperbarui/memprogram papan ESP melalui Arduino IDE.

(ada beberapa tutorial bagus yang tersedia di web)

Ini dapat dilakukan dengan menggunakan Arduino Uno atau menggunakan FTDI (usb to serial adapter).

Saya menggunakan Uno saya karena saya tidak memiliki port serial di PC saya juga tidak memiliki FTDI

Langkah 1: Pergi Berbelanja

Pergi belanja
Pergi belanja

Apa yang Anda perlukan untuk mewujudkannya?

Untuk Sensor Suhu dan Kelembaban Digital:

- Entah papan tempat memotong roti atau alternatif seperti PCB prototipe, solder, besi solder …

- Beberapa kawat

- dua jumper

- resistor 10k Ohm

- sebuah ESP12F (model lain mungkin bekerja juga…)

- DHT22 (sedikit lebih mahal dari DHT11 tapi lebih akurat)

- 3 baterai isi ulang AA dan dudukan baterai

- kotak plastik kecil untuk meletakkan proyek Anda

- Pada tahap selanjutnya saya berencana untuk menambahkan HT7333 dengan dua kapasitor 10uF antara baterai dan ESP

untuk menstabilkan tegangan input (VCC) ke 3.3V yang direkomendasikan tetapi juga untuk melindungi ESP dari tegangan lebih.

Untuk bagian Jaringan:

- Jaringan WiFi rumah Anda

Untuk bagian Server:

- Semua sistem berbasis Linux (selalu aktif!)

Saya menggunakan Raspberry Pi (yang juga saya gunakan sebagai server untuk kamera IP Outdoor saya.)

- kompiler gcc untuk mengkompilasi kode server Anda

- paket rrdtool untuk menyimpan data dan menghasilkan grafik

- apache (atau server web lain)

PC atau laptop favorit Anda dengan Arduino IDE di dalamnya.

Langkah 2: Pengaturan dan Latar Belakang

Pengaturan dan Latar Belakang
Pengaturan dan Latar Belakang

Dalam versi WiFi yang terhubung ini - belum lagi IOT - sensor suhu dan kelembaban saya menggunakan ESP12F, DHT22, dan dudukan baterai 3 AA dengan baterai yang dapat diisi ulang.

Setiap 20 menit ESP mengambil pengukuran dari DHT22 dan mengirimkannya ke server (Raspberry Pi) melalui UDP di jaringan WiFi rumah saya. Setelah pengukuran dikirim, ESP masuk ke deepsleep. Ini berarti bahwa hanya Jam Waktu Nyata dari modul yang tetap menyala, menghasilkan penghematan daya yang luar biasa. Selama sekitar 5 detik, modul membutuhkan sekitar 100mA, kemudian selama 20 menit deepsleep hanya 150uA.

Saya tidak ingin menggunakan layanan berbasis Internet karena saya memiliki Raspberry Pi saya yang selalu aktif dan dengan cara ini saya merasa senang menulis bagian server juga.

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

Keuntungan dari RRDtool adalah Anda membuat database Anda sekali dan ukurannya tetap sama. Anda juga tidak perlu memiliki server database (seperti mySQLd) yang berjalan di latar belakang. RRDtool memberi Anda alat untuk membuat Database dan menghasilkan grafik.

Server saya membuat grafik secara berkala dan menampilkan semuanya dalam halaman http yang sangat sederhana. Saya dapat berkonsultasi dengan bacaan saya dengan browser sederhana dengan menghubungkan ke server web Apache2 di Raspberry Pi!

Akhirnya, saya tidak memiliki FTDI (USB to Serial) jadi saya menggunakan Arduino UNO. Anda perlu menghubungkan TX dan RX dan GND dari ESP dan UNO. (Saya tahu, insting Anda mungkin meminta Anda untuk melewati RX dan TX… mencobanya juga, tidak berhasil.)

Saya tidak melakukan konversi level (UNO: High=5V tetapi ESP pada dasarnya adalah perangkat 3.3V… Ada beberapa FTDI yang bagus di pasaran di mana Anda bahkan dapat memilih level High Anda menjadi 5 atau 3.3V.

Sirkuit saya ditenagai oleh 3 baterai isi ulang AA - jadi sebenarnya 3 X 1.2V. Dalam fase selanjutnya saya bermaksud untuk menempatkan HT7333 antara baterai dan sirkuit untuk keselamatan; baterai yang baru diisi dapat memiliki lebih dari 1.2V dan ESP harus ditenagai dengan min. 3V dan maks. 3.6V. Juga jika saya memutuskan - di saat kelemahan - untuk memasukkan baterai Alkaline (3 X 1.5V = 4.5V) ESP saya tidak akan gosong!

Saya juga mempertimbangkan untuk menggunakan panel surya 10cm x 10cm, tetapi itu tidak sepadan dengan kerumitannya. Dengan melakukan 3 pengukuran per jam (pada dasarnya 3x 5 detik @ 100mA maks. dan sisanya @100uA), saya berharap dapat memberi daya pada sirkuit saya selama 1 tahun dengan baterai isi ulang yang sama.

Langkah 3: Bagian Arduino - ESP12

Bagian Arduino - ESP12
Bagian Arduino - ESP12
Bagian Arduino - ESP12
Bagian Arduino - ESP12

Saya melakukan proyek ini dalam langkah yang berbeda.

Ada beberapa tautan yang membantu Anda mengimpor ESP12 (alias. ESP8266) ke dalam Arduino IDE. (Saya harus menggunakan versi 2.3.0 daripada yang terbaru karena bug yang mungkin telah diselesaikan sementara itu…)

Saya mulai dengan menghubungkan ESP, melalui Arduino UNO saya (hanya digunakan sebagai jembatan antara PC saya melalui USB ke Serial) ke antarmuka serial ESP. Ada Instructables terpisah yang menjelaskan hal ini.

Dalam proyek saya yang sudah selesai, saya meninggalkan kabel untuk terhubung ke Serial jika saya perlu memecahkan masalah

Maka Anda perlu menyambungkan ESP12 Anda sebagai berikut:

pin ESP…

GND UNO GND

RX UNO RX

TX UNO TX

EN VCC

GPIO15 GND

Awalnya saya mencoba menyalakan ESP saya dari 3.3V di UNO tetapi saya dengan cepat pindah untuk menyalakan ESP saya dengan Power Supply bangku tetapi Anda juga dapat menggunakan baterai Anda.

GPIO0 Saya menghubungkan yang ini dengan jumper ke GND untuk mengaktifkan flashing (= pemrograman) ESP.

Tes pertama: biarkan jumper terbuka dan mulai monitor serial di Arduino IDE (pada 115200 baud!).

Power cycle ESP, Anda akan melihat beberapa karakter sampah dan kemudian pesan seperti:

Ai-Thinker Technology Co. Ltd. siap

Dalam mode ini, ESP bertindak sedikit seperti modem kuno. Anda perlu menggunakan perintah AT.

Coba perintah berikut:

AT+RST

dan dua perintah berikut

AT+CWMODE=3

oke

AT+CWLAP

Ini akan memberi Anda daftar semua jaringan WiFi di area tersebut.

Jika ini berhasil, Anda siap untuk langkah selanjutnya.

Langkah 4: Menguji ESP Sebagai Klien Protokol Waktu Jaringan (NTP)

Menguji ESP Sebagai Klien Protokol Waktu Jaringan (NTP)
Menguji ESP Sebagai Klien Protokol Waktu Jaringan (NTP)
Menguji ESP Sebagai Klien Protokol Waktu Jaringan (NTP)
Menguji ESP Sebagai Klien Protokol Waktu Jaringan (NTP)

Di Arduino IDE, di bawah File, Contoh, ESP8266WiFi, muat NTPClient.

Tweak kecil diperlukan untuk membuatnya bekerja; Anda perlu memasukkan SSID dan kata sandi jaringan WiFi Anda.

Sekarang tempatkan jumper, korslet GPIO0 ke GND.

Putar daya ESP dan unggah sketsa ke ESP.

Setelah kompilasi, unggahan ke ESP akan dimulai. LED biru pada ESP akan berkedip cepat saat kode sedang diunduh.

Saya perhatikan bahwa saya harus bermain-main sedikit dengan memulai ulang IDE, memulai ulang ESP sebelum unggahan berhasil.

Sebelum Anda mulai mengkompilasi/mengunggah sketsa, pastikan untuk menutup konsol serial (=monitor serial) karena ini akan mencegah Anda melakukan pengunggahan.

Setelah unggahan berhasil, Anda dapat membuka kembali monitor serial untuk melihat ESP secara efektif mendapatkan waktu dari Internet.

Hebat, Anda telah memprogram ESP Anda, terhubung ke WiFi Anda dan mendapatkan waktu dari Internet.

Langkah selanjutnya kita akan menguji DHT22.

Langkah 5: Menguji Sensor DHT22

Menguji Sensor DHT22
Menguji Sensor DHT22

Sekarang beberapa kabel tambahan diperlukan.

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

Hubungkan pin 2 ESP GPIO5 (DHTPIN dalam sketsa)

Hubungkan pin 4 (di sebelah kanan) sensor ke GROUND

Hubungkan resistor 10K dari pin 2 (data) ke pin 1 (daya) sensor.

Mirip dengan tes NTP, cari sketsa DHTtester, dan atur dengan cara berikut:

#define DHTPIN 5 // kami memilih GPIO5 untuk terhubung ke sensor#define DHTTYPE DHT22 // karena kami menggunakan DHT22 tetapi kode/pustaka ini juga cocok untuk DHT11

Sekali lagi, tutup monitor serial, nyalakan ESP dan kompilasi dan flash ESP.

Jika semuanya berjalan dengan baik, Anda akan melihat pengukuran muncul di monitor serial.

Anda dapat bermain-main sedikit dengan sensor. Jika Anda menghirupnya, Anda akan melihat kelembapan naik.

Jika Anda memiliki lampu meja (non LED), Anda dapat menyinari sensor untuk memanaskannya sedikit.

Besar! Dua bagian besar dari sensor sekarang bekerja.

Pada langkah selanjutnya saya akan mengomentari kode terakhir.

Langkah 6: Menyatukannya…

Menyatukannya…
Menyatukannya…

Sekali lagi beberapa kabel tambahan… ini untuk memungkinkan DeepSleep.

Ingat, DeepSleep adalah fungsi luar biasa untuk perangkat IoT.

Namun jika sensor Anda diprogram untuk DeepSleep, mungkin sulit untuk memprogram ulang ESP sehingga kami akan membuat koneksi jumper lain antara

GPIO16-RST.

Ya HARUS GPIO16, karena itulah GPIO yang diprogram untuk membangunkan perangkat ketika Real Time Clock mati setelah DeepSleep!

Saat Anda menguji, Anda dapat memutuskan untuk melakukan DeepSleep 15 detik.

Ketika saya sedang debugging, saya akan memindahkan jumper ke GPIO0 sehingga saya bisa mem-flash program saya.

Setelah pengunduhan selesai, saya akan memindahkan jumper ke GPIO16 agar DeepSleep berfungsi.

Kode untuk ESP disebut TnHclient.c

Anda harus mengubah SSID, Kata Sandi, dan alamat IP server Anda.

Ada baris kode tambahan yang dapat Anda gunakan untuk memecahkan masalah atau menguji penyiapan Anda.

Langkah 7: Sisi Server

Sisi Server Hal
Sisi Server Hal
Sisi Server Hal
Sisi Server Hal

Ini adalah kesalahpahaman umum bahwa UDP tidak dapat diandalkan dan TCP…

Itu sama konyolnya dengan mengatakan palu lebih berguna daripada obeng. Mereka hanyalah alat yang sangat berguna yang berbeda dan keduanya memiliki kegunaannya sendiri.

Omong-omong, tanpa UDP Internet tidak akan berfungsi… DNS didasarkan pada UDP.

Jadi, saya memilih UDP karena sangat ringan, mudah dan cepat.

Saya cenderung berpikir bahwa WiFi saya sangat andal sehingga klien akan mengirim paling banyak 3 paket UDP jika pengakuan "OK!" tidak diterima.

Kode-C untuk TnHserver ada di file TnHServer.c.

Ada beberapa komentar dalam kode yang menjelaskannya.

Kami akan membutuhkan beberapa alat tambahan di server: rrdtool, apache dan mungkin tcpdump.

Untuk menginstal rrdtool di Raspbian Anda cukup menginstal paket seperti ini: apt-get install rrdtool

Jika Anda perlu men-debug lalu lintas jaringan, tcpdump berguna apt-get install tcpdump

Saya membutuhkan server web untuk dapat menggunakan browser untuk melihat grafik: apt-get install Apache2

Saya menggunakan alat ini: https://rrdwizard.appspot.com/index.php untuk mendapatkan perintah untuk membuat Round Robin Database. Anda hanya perlu menjalankan ini sekali (jika Anda melakukannya dengan benar pertama kali).

rrdtool create TnHdatabase.rrd --start now-10s

--langkah '1200'

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

'DS: Kelembaban: 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 me-restart TnHserver saya setiap hari pada tengah malam. Saya menjalankan TnHserver sebagai pengguna biasa (mis. BUKAN root) sebagai tindakan pencegahan keamanan.

0 0 * * * /usr/bin/pkill TnHserver; /home/user/bin/TnHserver >/dev/null 2>&1

Anda dapat memeriksa apakah server TnH berjalan dengan melakukan

$ ps -elf | grep TnHserver

dan Anda dapat memverifikasi itu mendengarkan paket pada port 7777 dengan melakukan

$ netstat -anu

Koneksi Internet aktif (server dan didirikan)

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

udp 0 0 0.0.0.0:7777 0.0.0.0:*

Akhirnya CreateTnH_Graphs.sh.txt adalah contoh skrip untuk menghasilkan grafik. (Saya membuat skrip sebagai root, Anda mungkin tidak ingin melakukan ini.)

Dengan menggunakan halaman web yang sangat sederhana, Anda dapat melihat grafik dari browser apa pun di jaringan rumah Anda.

Direkomendasikan: