Isi kandungan:

Monitor Suhu dan Kelembapan: 6 Langkah (dengan Gambar)
Monitor Suhu dan Kelembapan: 6 Langkah (dengan Gambar)

Video: Monitor Suhu dan Kelembapan: 6 Langkah (dengan Gambar)

Video: Monitor Suhu dan Kelembapan: 6 Langkah (dengan Gambar)
Video: Sistem Monitoring suhu dan kelembapan berbasis App Android dengan MIT APP Inventor. 5 Menit Jadi! 2024, Julai
Anonim
Monitor Suhu dan Kelembapan
Monitor Suhu dan Kelembapan
Monitor Suhu dan Kelembapan
Monitor Suhu dan Kelembapan

Dalam arahan ini, saya akan menunjukkan kepada anda cara membuat monitor suhu dan kelembapan anda sendiri untuk ruang tamu anda. Peranti ini juga mempunyai kemampuan WiFi, untuk tujuan mencatat data pada pelayan jauh (mis. Pi Raspberry) dan mengaksesnya kemudian melalui antara muka web yang mudah.

Bahagian utama peranti ini adalah mikrokontroler ESP8266, sensor suhu dan kelembapan DHT11 dan LCD watak 16x4. Projek ini adalah sumber terbuka sepenuhnya, jadi sila muat turun skema, susun atur papan dan fail reka bentuk untuk kandang dan buat perubahan yang anda suka.

Langkah 1: Alat dan Bahagian

Alat dan Bahagian
Alat dan Bahagian
Alat dan Bahagian
Alat dan Bahagian
Alat dan Bahagian
Alat dan Bahagian
Alat dan Bahagian
Alat dan Bahagian

Untuk membina monitor, anda memerlukan bahagian berikut:

1 x ESP-12F [2 €] - Setahu saya ESP-12E dan ESP-12F pada dasarnya sama, dengan perbezaan bahawa ESP-12F mempunyai antena yang lebih baik.

1 x Sensor Suhu dan Kelembapan DHT11 [0,80 €] - DHT22 juga akan berfungsi tetapi beberapa perubahan perlu dibuat pada model kandang 3D, DHT22 juga sedikit lebih mahal.

1 x 16x4 Character LCD 5V [3,30 €] - Ya, anda memerlukan 5V kerana PCB dirancang supaya LCD akan dihidupkan terus dari 5V dan bukannya pengatur voltan. Ini dilakukan untuk mengurangkan beban pada pengatur voltan tetapi juga kerana paparan 5V cenderung lebih murah. Tetapi jangan risau, walaupun ESP8266 beroperasi pada 3.3V, ia tetap berfungsi dengan baik.

1 x LD1117V33 SMD Voltage Regulator, juga dikenali sebagai LD33 (pakej SOT223) [0,80 €]

Kapasitor SMD Seramik 1 x 100nF (pakej 0603)

Kapasitor 1 x 10uF Tantalum SMD (pakej 3528)

Resistor SMD 1 x 10K (pakej 0805)

Periuk Perapi 1 x 10K (Melalui lubang)

1 x 47Ω Resistor SMD (pakej 0805) - Ini hanya untuk mengehadkan arus yang menuju ke lampu latar LCD. Jangan ragu untuk bereksperimen dengan nilai rintangan yang berbeza dan pilih intensiti yang anda sukai.

1 x SMD Momentary Switch [0.80 €] - Yang saya gunakan ialah ini, tetapi anda boleh menggunakan suis sesaat yang anda mahukan dengan jejak yang sama. Saya juga dapat mencari suis yang sama di eBay dengan mendapatkan lebih daripada satu.

1 x 5.5x2.1mm DC Jack (Panel mount) [0.50 €] - Yang saya gunakan mempunyai diameter potongan panel 8mm dan panjang 9mm. Ia boleh didapati dengan mudah di eBay dengan mencari "Panel Mount DC Jack" (lihat gambar yang dilampirkan).

1 x 2.54mm (100mil) Header Pin Lelaki 40-pin (Melalui lubang)

1 x 2.54mm (100mil) Header Pin Perempuan Mesin 40-pin (Melalui lubang)

Pelompat 1 x 2.54mm (100mil) - Sama seperti yang digunakan pada papan induk komputer.

Bolt 4 x M3 8mm

Sisipan Berulir 4 x M3 4x4mm - Mereka boleh didapati dengan mudah dengan mencari "Sisipan Tembaga Tembaga M3 Tekan Dalam" di eBay (lihat gambar yang dilampirkan).

Bolt 4 x M2 12mm

Kacang 4 x M2

1 x USB Type A hingga 5.5x2.1mm DC Plug Cable [1.5 €] - Ini akan memberi kuasa kepada peranti anda sama ada dari pengecas telefon standard atau hampir semua komputer dengan port USB. Peranti ini hanya mendapat 300mA kes terburuk dan 250mA rata-rata, sehingga port USB 2.0 juga dapat dilakukan.

1 x PCB - Ketebalan papan tidak kritikal, jadi gunakan 1.6mm yang biasanya merupakan pilihan termurah dengan kebanyakan pengeluar PCB.

3 x Potongan Kawat Terdampar (masing-masing sekitar 60mm)

3 x Potongan Heatshrink Tubing (masing-masing sekitar 10mm)

Dan alat berikut:

Besi pematerian

USB to Serial Converter - Anda memerlukan ini untuk memprogramkan ESP8266 di papan tulis.

Pemutar Skru Phillips dan / atau Kekunci Hex - Bergantung pada jenis skru yang akan anda gunakan.

Pencetak 3D - Sekiranya anda tidak mempunyai akses ke pencetak 3D, anda sentiasa boleh menggunakan kotak projek plastik generik dan membuat potongan sendiri dengan Dremel. Dimensi dalaman minimum untuk kotak sedemikian mestilah tinggi 24mm, panjang 94mm dan lebar 66mm. Anda juga perlu menggunakan stand-off 8mm M2 untuk memasang LCD.

Dremel - Hanya diperlukan jika anda tidak menggunakan kandang cetak 3D.

Langkah 2: Membuat PCB

Membuat PCB
Membuat PCB
Membuat PCB
Membuat PCB
Membuat PCB
Membuat PCB

Langkah pertama adalah membuat PCB. Anda boleh melakukannya dengan membuat sendiri, atau hanya pergi ke laman web pengeluar PCB kegemaran anda dan membuat pesanan. Sekiranya anda tidak merancang untuk membuat perubahan pada susun atur papan, anda boleh merebut fail ZIP yang mengandungi fail gerber yang dilampirkan pada langkah ini dan menghantarnya terus ke pengeluar. Sekiranya anda ingin membuat perubahan, fail susun atur skema dan papan KiCAD boleh didapati di sini.

Setelah meletakkan tangan di papan, inilah masanya untuk menyolder komponennya. Perkara ini semestinya mudah, tetapi ada beberapa perkara yang harus diberi perhatian. Pertama, jangan terus menyolder PCB pada header LCD, ini perlu dilakukan semasa pemasangan terakhir kerana cara penutupnya dirancang. Sekiranya anda membuat kandang sendiri, jangan ragu untuk mengabaikan nasihat itu.

Penyambung U3 adalah di mana sensor DHT11 akan disambungkan. Sebaik-baiknya, anda harus menggunakan header pin wanita bersudut 90 ° untuk tujuan tersebut. Tetapi jika anda suka saya tidak dapat menjumpainya, dapatkan yang lurus dan bengkokkan sendiri. Sekiranya anda melakukannya kemudian, petunjuk DHT11 juga akan menjadi pendek, jadi anda perlu menyelesaikan beberapa sambungan. Jarak antara header pin dan sensor setelah disambungkan mestilah kira-kira 5mm.

Sebab mengapa anda ingin menggunakan header pin mesin, kerana lubang lebih kecil daripada header pin wanita biasa. Oleh itu, pendorong sensor boleh duduk di sana dengan erat membuat sambungan yang kukuh. Tetapi anda juga boleh mencuba menyisipkan DHT11 pada kepingan pin pin lelaki dan menghubungkannya dengan header pin wanita bersudut biasa, yang seharusnya berfungsi juga.

Langkah 3: Membuat Kandang

Membuat Pagar
Membuat Pagar
Membuat Pagar
Membuat Pagar
Membuat Pagar
Membuat Pagar
Membuat Pagar
Membuat Pagar

Sekarang PCB disolder sudah tiba masanya untuk membuat kandang. Terdapat dua bahagian berbeza yang perlu dicetak, badan utama penutup dan penutupnya. Tudungnya juga dilengkapi lubang pemasangan untuk memasangnya di dinding anda.

Kedua-dua bahagian boleh dicetak dengan muncung 0.4mm standard pada ketinggian lapisan 0.2mm, untuk kes saya masa cetakan adalah sekitar 4 jam untuk kedua-dua bahagian digabungkan. Tudung tidak memerlukan penyokong bahagian utama penutup, terutamanya untuk bahagian bawah soket skru. Setelah mencetak dengan berhati-hati dengan mengeluarkan sokongan, saya berjaya mematahkan salah satu kelebihan LCD semasa melakukan itu dan terpaksa merekatkannya dengan superglue.

Lampiran ini direka pada FreeCAD, jadi jika anda ingin membuat perubahan, ia pasti sangat mudah. Fail STL untuk mencetak lampiran serta fail reka bentuk FreeCAD boleh didapati di Thingiverse.

Langkah 4: Memasang Monitor

Dengan lampiran dicetak, masa untuk menyatukan semuanya. Pertama, letakkan LCD di dalam casing dan geser ke kiri, sehingga akan ada jurang antara lubang itu dan lubang untuk sensor.

Imej
Imej

Seterusnya, letakkan PCB di atasnya, dengan sensor sudah terpasang pada header pin.

Imej
Imej

Selepas itu, tekan sensor ke dalam lubang, luncurkan LCD kembali ke kedudukannya dan masukkan PCB pada header pin. Sekarang betulkan LCD di tempatnya menggunakan mur dan baut M2, dan pasangkan PCB pada header pin.

Imej
Imej

Seterusnya, pasang soket kuasa di tempatnya, pasangkan beberapa wayar ke atasnya dan pasangkan hujungnya yang lain ke PCB. Penggunaan beberapa tabung pemanas air di sini juga akan menjadi idea yang baik.

Imej
Imej

Langkah terakhir adalah memasang sisipan berulir logam supaya penutupnya boleh disekat di tempatnya dengan bolt M3. Untuk tujuan itu, anda perlu menggunakan besi pematerian anda untuk memanaskannya, sehingga mereka boleh didorong ke dalam lubang. Anda boleh melihat petunjuk ini jika anda memerlukan lebih banyak maklumat mengenai menambahkan benang logam ke cetakan 3D anda.

Imej
Imej

Langkah 5: Menyiapkan Pelayan

Menyiapkan Pelayan
Menyiapkan Pelayan

Sebelum memuat naik firmware ke ESP8266 ada satu perkara lagi yang perlu dilakukan, iaitu menyediakan pelayan untuk mencatat data yang diterima oleh peranti. Untuk tujuan itu, anda boleh menggunakan hampir semua mesin Linux yang anda mahukan, dari Raspberry Pi di rangkaian peribadi anda hingga titisan DigitalOcean. Saya pergi kemudian, tetapi prosesnya hampir sama tidak kira apa yang anda pilih.

Memasang Apache, MySQL (MariaDB) dan PHP

Mula-mula kita perlu menyiapkan LAMP, atau dengan kata lain memasang Apache, MySQL (MariaDB) dan PHP di pelayan. Untuk itu anda perlu menggunakan pengurus pakej distro anda, untuk contoh saya akan menggunakan apt yang merupakan pengurus pakej yang digunakan oleh hampir semua distro berasaskan Debian, termasuk Raspbian.

sudo apt kemas kini

sudo apt install apache2 mysql-server mysql-client php libapache2-mod-php php-mysql

Setelah itu selesai, jika anda meletakkan alamat IP pelayan anda ke bar alamat penyemak imbas anda, anda seharusnya dapat melihat halaman lalai Apache.

Menyiapkan pangkalan data

Sekarang kita memerlukan pangkalan data untuk mencatat data. Pertama, sambungkan ke MySQL sebagai root dengan menjalankan, sudo mysql

Dan buat pangkalan data dan pengguna dengan akses kepadanya seperti berikut, BUAT DATABASE `sensor '

GUNAKAN `sensor '; BUAT JADUAL `suhu` (` id` bigint (20) BUKAN NULL AUTO_INCREMENT, `client_id` smallint (6) NOT NULL,` value` smallint (6) NOT NULL, `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) ENGINE = InnoDB; BUAT JADUAL `kelembapan` (` id` bigint (20) TIDAK NULL AUTO_INCREMENT, `client_id` smallint (6) NOT NULL,` value` smallint (6) NOT NULL, `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) ENGINE = InnoDB; BUAT PENGGUNA '[nama pengguna]' @ 'localhost' DIKENALI OLEH '[kata laluan]'; MEMBERIKAN SEMUA KEISTIMEWAAN PADA 'sensor'. * KEPADA 'sensor' @ 'localhost'; KELUAR

Pastikan untuk mengganti [nama pengguna] dan [kata laluan] dengan nama pengguna dan kata laluan sebenar untuk pengguna MySQL yang anda suka. Juga, perhatikan mereka kerana anda memerlukannya untuk langkah seterusnya.

Mengkonfigurasi skrip pembalakan dan antara muka web

Tukar ke direktori / var / www / html yang merupakan akar dokumen dari hos maya default Apache, hapus fail HTML yang mengandungi halaman web lalai dan muat turun skrip log dan antara muka web di dalamnya.

cd / var / www / html

sudo rm index.html sudo wget https://raw.githubusercontent.com/magkopian/esp-arduino-temp-monitor/master/server/log.php sudo wget https://raw.githubusercontent.com/magkopian/esp- arduino-temp-monitor / master / pelayan / index.php

Sekarang edit skrip pembalakan menggunakan nano, sudo nano log.php

Anda perlu mengganti [nama pengguna] dan [kata laluan] dengan nama pengguna dan kata laluan untuk pengguna MySQL yang anda buat pada langkah sebelumnya. Juga, ganti [kunci klien] dengan rentetan unik dan perhatikannya. Ini akan digunakan sebagai kata laluan sehingga monitor dapat mengesahkan dirinya ke pelayan.

Akhirnya, edit index.php dengan nano, sudo nano index.php

dan ganti [nama pengguna] dan [kata laluan] dengan nama pengguna dan kata laluan untuk pengguna MySQL seperti yang anda lakukan dengan skrip pembalakan.

Menyiapkan HTTPS (Pilihan)

Ini mungkin pilihan, tetapi jika sambungan antara ESP8266 dan pelayan melalui Internet, sangat disarankan untuk menggunakan beberapa penyulitan.

Malangnya, anda tidak boleh terus maju dan menggunakan sesuatu seperti Let’s Encrypt untuk mendapatkan sijil. Itu kerana sekurang-kurangnya pada saat penulisan, perpustakaan klien HTTP untuk ESP8266 masih memerlukan cap jari sijil untuk diberikan sebagai argumen kedua ketika memanggil http.begin (). Ini bermaksud bahawa jika anda menggunakan sesuatu seperti Let’s Encrypt, anda harus menukar firmware ke chip setiap 3 bulan untuk mengemas kini cap jari sijil selepas setiap pembaharuan.

Cara mengatasi itu, adalah dengan menghasilkan sijil yang ditandatangani sendiri yang akan berakhir setelah sekian lama (mis. 10 tahun) dan menyimpan skrip pembalakan di hos maya sendiri dengan subdomainnya sendiri. Dengan cara itu, anda dapat memiliki antara muka web untuk mengakses data pada subdomain yang terpisah, yang akan menggunakan sijil yang tepat dari pihak yang dipercayai. Penggunaan sijil yang ditandatangani sendiri dalam hal ini bukanlah masalah keselamatan, kerana cap jari sijil yang mengenal pasti secara unik akan dimasukkan ke dalam firmware dan sijil hanya akan digunakan oleh ESP8266.

Sebelum kita memulakan, saya akan menganggap bahawa anda sudah memiliki nama domain dan anda dapat membuat subdomain di atasnya. Oleh itu, untuk menghasilkan sijil yang tamat selepas 10 tahun jalankan arahan berikut dan jawab soalan-soalannya.

sudo openssl req -x509 -nodes -days 3650 -newkey rsa: 2048 -keyout /etc/ssl/private/sensors.key -out /etc/ssl/certs/sensors.crt

Kerana ini adalah sijil yang ditandatangani sendiri, apa yang anda jawab dalam kebanyakan soalan tidak terlalu penting, kecuali untuk soalan yang meminta Nama Umum. Di sinilah anda perlu menyediakan subdomain penuh yang akan digunakan untuk hos maya ini. Subdomain yang anda berikan di sini harus sama dengan ServerName yang akan anda tetapkan kemudian dalam konfigurasi host maya anda.

Seterusnya buat konfigurasi hos maya baru, sudo nano /etc/apache2/sites-available/sensors-ssl.conf

dengan kandungan berikut, ServerName [subdomain] DocumentRoot / var / www / sensor SSLEngine ON SSLCertificateKeyFile /etc/ssl/private/sensors.key SSLCertificateFile /etc/ssl/certs/sensors.crt Options + FollowSymlinks -Indexes AllowOverride All ErrorLog error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-access-ssl.log digabungkan

Sekali lagi, pastikan untuk mengganti [subdomain] dengan subdomain yang sama dengan yang anda gunakan dengan sijil. Pada ketika ini anda perlu melumpuhkan hos Apache maya lalai, sudo a2dissite 000-default

menukar nama direktori root dokumen, sudo mv / var / www / html / var / www / sensor

dan akhirnya aktifkan hos maya baru dan mulakan semula Apache, sudo a2ensite sensor-ssl

sudo systemctl mulakan semula apache2

Perkara terakhir yang perlu dilakukan adalah mendapatkan cap jari sijil, kerana anda perlu menggunakannya dalam kod firmware.

openssl x509 -noout -fingerprint -sha1 -form pem -in /etc/ssl/certs/sensors.crt

Http.begin () mengharapkan pembatas antara bait cap jari menjadi spasi, jadi anda perlu mengganti titik dua dengan spasi sebelum menggunakannya dalam kod anda.

Sekarang, jika anda tidak mahu menggunakan sijil yang ditandatangani sendiri untuk penyediaan antara muka web subdomain baru dan buat konfigurasi host maya baru, sudo nano /etc/apache2/sites-available/sensors-web-ssl.conf

dengan kandungan berikut, ServerName [subdomain] DocumentRoot / var / www / sensor #SSLEngine ON #SSLCertificateFile /etc/letsencrypt/live/[subdomain]/cert.pem #SSLCertificateKeyFile /etc/letsencrypt/live/[subdomain]/privkey.pem #SSLCertificateCara /letsencrypt/live/[subdomain]/chain.pem Options + FollowSymlinks -Indexes AllowEridrid All All ErrorLog $ {APACHE_LOG_DIR} /sensors-web-error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-web-access-ssws-web-logess

Pastikan untuk mengganti [subdomain] dengan subdomain yang telah anda siapkan untuk antara muka web. Seterusnya aktifkan hos maya baru, mulakan semula Apache, pasang certbot dan dapatkan sijil untuk subdomain baru dari Let's Encrypt, sudo a2ensite sensor-web-ssl

sudo systemctl restart apache2 sudo apt update sudo apt install certbot sudo certbot certonly --apache -d [subdomain]

Setelah memperoleh sijil, edit semula konfigurasi host maya sekali lagi untuk melepaskan baris SSLEngine, SSLCertificateFile, SSLCertificateKeyFile dan SSLCertificateChainFile, dan mulakan semula Apache.

Dan sekarang anda boleh menggunakan subdomain pertama yang menggunakan sijil yang ditandatangani sendiri untuk menghantar data dari ESP8266 ke pelayan, sementara menggunakan yang kedua untuk mengakses antara muka web dari penyemak imbas anda. Certbot juga akan mengurus memperbaharui sijil Let's Encrypt anda secara automatik setiap 3 bulan, menggunakan pemasa sistemd yang seharusnya diaktifkan secara lalai.

Langkah 6: Memprogram ESP8266

Mengaturcara ESP8266
Mengaturcara ESP8266

Akhirnya, satu-satunya perkara yang perlu dilakukan ialah memuatkan firmware pada mikrokontroler. Untuk melakukannya, muat turun kod sumber untuk firmware dari sini dan buka dengan menggunakan Arduino IDE. Anda perlu mengganti [SSID] dan [Kata Laluan] dengan SSID dan kata laluan sebenar rangkaian WiFi anda. Anda juga perlu mengganti [Client ID] dan [Client Key] pada panggilan fungsi sprintf dengan yang anda gunakan pada skrip PHP pada pelayan. Akhirnya, anda harus mengganti [Host] dengan nama domain atau alamat IP pelayan. Sekiranya anda menggunakan HTTPS, anda juga perlu memberikan cap jari sijil anda sebagai hujah kedua pada panggilan fungsi http.begin (). Saya telah menerangkan cara mendapatkan cap jari sijil di bahagian "Menyiapkan HTTPS" pada langkah sebelumnya.

Seterusnya, jika anda belum melakukannya, anda perlu memasang pakej teras Komuniti ESP8266 menggunakan Pengurus Lembaga Pengarah Arduino IDE. Setelah ini selesai, pilih NodeMCU 1.0 (Modul ESP-12E) dari menu papan. Seterusnya, anda perlu memasang perpustakaan SimpleDHT menggunakan Library Manager. Akhirnya, tekan butang Verifikasi di sudut kiri atas tetingkap IDE anda untuk memastikan bahawa kod itu disusun tanpa ralat.

Dan sekarang, akhirnya tiba masanya untuk membakar firmware ke mikrokontroler. Untuk melakukannya gerakkan jumper JP1 di sebelah kanan, jadi GPIO0 dari ESP8266 akan disambungkan ke tanah yang akan membolehkan mod pengaturcaraan. Kemudian, pasangkan USB anda ke serial converter menggunakan kabel jumper ke header pengaturcaraan yang dilabel sebagai P1. Pin 1 dari tajuk pengaturcaraan adalah ground, pin 2 adalah pin penerima ESP8266 dan pin 3 transmit. Anda memerlukan penerimaan ESP8266 untuk pergi ke transmisi USB ke siri penukar, penghantaran ke penerima dan tentu dari ground ke ground.

Akhirnya, kuasakan peranti dengan 5V menggunakan kabel bicu USB ke DC anda dan sambungkan penukar bersiri USB ke komputer anda. Anda sekarang seharusnya dapat melihat port bersiri maya di mana ESP8266 disambungkan, sebaik sahaja anda membuka menu alat di IDE anda. Sekarang, tekan sahaja butang Muat naik dan itu sahaja! Sekiranya semuanya berjalan seperti yang diharapkan, anda seharusnya dapat melihat bacaan suhu dan kelembapan pada LCD peranti. Setelah ESP8266 menyambung ke rangkaian anda dan mula berkomunikasi dengan pelayan, tarikh dan masa semasa juga akan muncul di paparan.

Selepas beberapa jam ketika pelayan akan mengumpulkan banyak data, anda seharusnya dapat melihat carta suhu dan kelembapan dengan melayari https:// [host] /index.php?client_id= [id pelanggan]. Di mana [host] adalah alamat IP pelayan anda atau subdomain yang anda gunakan untuk antara muka web, dan [id klien] id klien peranti yang jika anda membiarkannya ke nilai lalai, ia harus 1.

Disyorkan: