Daftar Isi:

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

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

Video: Monitor Suhu dan Kelembaban: 6 Langkah (dengan Gambar)
Video: Membuat IoT Sensor Suhu dan Kelembaban (Part 1) 2024, Juli
Anonim
Pemantau Suhu dan Kelembaban
Pemantau Suhu dan Kelembaban
Pemantau Suhu dan Kelembaban
Pemantau Suhu dan Kelembaban

Dalam instruksi ini saya akan menunjukkan kepada Anda bagaimana membuat monitor suhu dan kelembaban Anda sendiri untuk ruang tamu Anda. Perangkat ini juga dilengkapi kemampuan WiFi, untuk tujuan mencatat data pada server jarak jauh (misalnya Raspberry Pi) dan mengaksesnya nanti melalui antarmuka web yang sederhana.

Bagian utama dari perangkat ini adalah mikrokontroler ESP8266, sensor suhu dan kelembaban DHT11 dan LCD karakter 16x4. Proyek ini sepenuhnya open source, jadi silakan unduh skema, tata letak papan, dan file desain untuk enklosur dan buat perubahan apa pun yang Anda suka.

Langkah 1: Alat dan Suku Cadang

Alat dan Bagian
Alat dan Bagian
Alat dan Bagian
Alat dan Bagian
Alat dan Bagian
Alat dan Bagian
Alat dan Bagian
Alat dan Bagian

Untuk membangun monitor Anda akan membutuhkan bagian-bagian berikut:

1 x ESP-12F [2€] - Sejauh yang saya tahu ESP-12E dan ESP-12F pada dasarnya identik, dengan perbedaan bahwa ESP-12F memiliki antena yang lebih baik.

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

1 x 16x4 Karakter LCD 5V [3,30€] - Ya, Anda akan memerlukan yang 5V karena PCB dirancang sehingga LCD akan diberi daya langsung dari 5V, bukan dari pengatur tegangan. Ini dilakukan untuk mengurangi beban pada pengatur tegangan tetapi juga karena tampilan 5V cenderung lebih murah. Tapi jangan khawatir, meskipun ESP8266 beroperasi pada 3.3V, itu akan tetap berfungsi dengan baik.

1 x LD1117V33 SMD Voltage Regulator, juga dikenal sebagai LD33 (paket SOT223) [0.80€]

1 x 100nF Kapasitor SMD Keramik (paket 0603)

1 x 10uF Tantalum SMD Kapasitor (3528 paket)

1 x 10K SMD Resistor (paket 0805)

1 x 10K Pemangkas Pot (Melalui lubang)

1 x 47Ω SMD Resistor (paket 0805) - Ini hanya untuk membatasi arus yang masuk ke lampu latar LCD. Jangan ragu untuk bereksperimen dengan nilai resistansi yang berbeda dan pilih intensitas yang Anda inginkan.

1 x SMD Momentary Switch [0.80€] - Yang saya gunakan adalah ini, tetapi Anda dapat menggunakan sakelar sesaat apa pun yang Anda inginkan dengan footprint yang sama. Saya juga dapat menemukan sakelar yang sama di eBay dengan harga lebih murah dengan mendapatkan lebih dari satu.

1 x 5.5x2.1mm DC Jack (Panel mount) [0.50€] - Yang saya gunakan memiliki diameter potongan panel 8mm dan panjang 9mm. Ini dapat dengan mudah ditemukan di eBay dengan mencari "Panel Mount DC Jack" (lihat gambar terlampir).

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

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

1 x 2.54mm (100mil) Jumper - Sama seperti yang digunakan pada motherboard komputer.

4 x M3 8mm Baut

4 x M3 4x4mm Sisipan Berulir - Mereka dapat dengan mudah ditemukan dengan mencari "M3 Press-In Brass Copper Inserts" di eBay (lihat gambar terlampir).

4 x M2 12mm Baut

4 x M2 Kacang

1 x USB Tipe A ke Kabel Steker DC 5.5x2.1mm [1,5€] - Ini akan memungkinkan untuk memberi daya pada perangkat Anda baik dari pengisi daya telepon standar atau hampir semua komputer dengan port USB. Perangkat hanya menarik 300mA kasus terburuk dan rata-rata 250mA, sehingga bahkan port USB 2.0 akan melakukannya.

1 x PCB - Ketebalan papan tidak terlalu penting, jadi pilihlah 1.6mm yang biasanya merupakan pilihan termurah dengan sebagian besar produsen PCB.

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

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

Dan alat-alat berikut:

Solder Besi

USB to Serial Converter - Anda akan memerlukan ini untuk memprogram ESP8266 di board.

Obeng Phillips dan/atau Kunci Hex - Tergantung jenis sekrup yang akan Anda gunakan.

Printer 3D - Jika Anda tidak memiliki akses ke printer 3D, Anda selalu dapat menggunakan kotak proyek plastik generik dan membuat guntingan sendiri dengan Dremel. Dimensi bagian dalam minimum untuk kotak semacam itu harus tinggi 24mm, panjang 94mm, dan lebar 66mm. Anda juga harus menggunakan penyangga M2 8mm untuk memasang LCD.

Dremel - Hanya diperlukan jika Anda tidak menggunakan enklosur cetak 3D.

Langkah 2: Membuat PCB

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

Langkah pertama adalah membuat PCB. Anda dapat melakukannya dengan mengetsanya sendiri, atau hanya mengunjungi situs web produsen PCB favorit Anda dan memesan. Jika Anda tidak berencana membuat perubahan apa pun pada tata letak papan, Anda cukup mengambil file ZIP yang berisi file gerber yang dilampirkan pada langkah ini dan mengirimkannya langsung ke pabrikan. Jika Anda ingin membuat perubahan, skema KiCAD dan file tata letak papan dapat ditemukan di sini.

Setelah mendapatkan tangan Anda di papan sekarang saatnya untuk menyolder komponen. Ini seharusnya cukup mudah, tetapi ada beberapa hal yang harus diperhatikan. Pertama, jangan melanjutkan untuk menyolder PCB pada header LCD dulu, ini perlu dilakukan selama perakitan akhir karena cara enklosur dirancang. Jika Anda membuat kandang sendiri, jangan ragu untuk mengabaikan saran itu.

Konektor U3 adalah tempat sensor DHT11 akan dihubungkan. Idealnya, Anda harus menggunakan kepala pin wanita bersudut 90° untuk tujuan itu. Tetapi jika Anda seperti saya tidak dapat menemukannya, ambil yang lurus dan tekuk sendiri. Jika Anda melakukannya nanti, kabel DHT11 juga akan sedikit pendek, jadi Anda harus menyolder beberapa ekstensi. Jarak antara pin header dan sensor setelah terhubung harus sekitar 5mm.

Alasan mengapa Anda ingin menggunakan pin header mesin, adalah karena lubangnya lebih kecil dibandingkan dengan header pin wanita biasa. Jadi, ujung sensor dapat duduk di sana dengan erat menciptakan koneksi yang solid. Tetapi Anda juga dapat mencoba menyolder DHT11 pada bagian header pin male dan menghubungkannya dengan cara itu ke header pin female bersudut biasa, yang seharusnya berfungsi dengan baik.

Langkah 3: Membuat Kandang

Membuat Kandang
Membuat Kandang
Membuat Kandang
Membuat Kandang
Membuat Kandang
Membuat Kandang
Membuat Kandang
Membuat Kandang

Sekarang setelah PCB disolder saatnya untuk membuat enklosur. Ada dua bagian berbeda yang perlu dicetak, badan utama enklosur dan tutupnya. Tutupnya juga dilengkapi lubang pemasangan untuk menempelkannya di dinding Anda.

Kedua bagian dapat dicetak dengan nozzle 0.4mm standar pada ketinggian lapisan 0.2mm, untuk kasus saya waktu cetak sekitar 4 jam untuk kedua bagian digabungkan. Tutupnya tidak memerlukan penopang apa pun pada bagian utama enklosur, tetapi terutama untuk bagian di bawah soket sekrup. Setelah mencetak dengan sangat hati-hati dengan melepas penyangga, saya berhasil mematahkan salah satu penyangga LCD saat melakukan itu dan harus merekatkannya kembali dengan lem super.

Enklosur dirancang di FreeCAD, jadi jika Anda ingin membuat perubahan apa pun, itu harus cukup mudah. File STL untuk mencetak enklosur serta file desain FreeCAD dapat ditemukan di Thingiverse.

Langkah 4: Merakit Monitor

Dengan enklosur dicetak, saatnya untuk menyatukan semuanya. Pertama, letakkan LCD di dalam casing dan geser ke kiri, sehingga akan ada celah antara LCD dan lubang untuk sensor.

Gambar
Gambar

Selanjutnya, letakkan PCB di atasnya, dengan sensor yang sudah terpasang di pin header.

Gambar
Gambar

Setelah itu, dorong sensor ke dalam lubang, geser LCD kembali ke posisinya dan masukkan PCB pada pin header. Sekarang pasang LCD di tempatnya menggunakan mur dan baut M2, dan solder PCB pada pin header.

Gambar
Gambar

Selanjutnya, pasang colokan listrik di tempatnya, pasang beberapa kabel ke sana dan solder ujung lainnya ke PCB. Penggunaan beberapa tabung heatshrink di sini juga merupakan ide yang bagus.

Gambar
Gambar

Langkah terakhir adalah memasang sisipan berulir logam sehingga tutupnya dapat disekrup pada tempatnya dengan baut M3. Untuk tujuan itu, Anda harus menggunakan besi solder untuk memanaskannya, sehingga bisa didorong ke dalam lubang. Anda dapat melihat instruksi ini jika Anda memerlukan informasi lebih lanjut tentang menambahkan benang logam ke cetakan 3D Anda.

Gambar
Gambar

Langkah 5: Menyiapkan Server

Menyiapkan Server
Menyiapkan Server

Sebelum mengunggah firmware ke ESP8266 ada satu hal lagi yang perlu dilakukan, yaitu menyiapkan server untuk mencatat data yang diterima perangkat. Untuk tujuan itu, Anda dapat menggunakan hampir semua mesin Linux yang Anda inginkan, dari Raspberry Pi di jaringan pribadi Anda hingga tetesan DigitalOcean. Saya memilih yang terakhir, tetapi prosesnya hampir sama, apa pun yang Anda pilih.

Menginstal Apache, MySQL (MariaDB) dan PHP

Pertama kita perlu mengatur LAMP, atau dengan kata lain menginstal Apache, MySQL (MariaDB) dan PHP di server. Untuk itu Anda harus menggunakan pengelola paket distro Anda, sebagai contoh saya akan menggunakan apt yang merupakan pengelola paket yang digunakan oleh hampir semua distro berbasis Debian, termasuk Raspbian.

sudo apt update

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

Setelah itu selesai, jika Anda memasukkan alamat IP server Anda ke bilah alamat browser Anda, Anda seharusnya dapat melihat halaman default Apache.

Menyiapkan database

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

Dan buat database dan pengguna dengan akses ke sana sebagai berikut, BUAT DATABASE `sensor`

GUNAKAN `sensor`; CREATE TABLE `temperature` (`id` bigint(20) NOT NULL AUTO_INCREMENT, `client_id` smallint(6) NOT NULL, `value` smallint(6) NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) ENGINE=InnoDB; CREATE TABLE `humidity` (`id` bigint(20) NOT NULL AUTO_INCREMENT, `client_id` smallint(6) NOT NULL, `value` smallint(6) NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) ENGINE=InnoDB; BUAT PENGGUNA '[nama pengguna]'@'localhost' DIIDENTIFIKASI DENGAN '[kata sandi]'; BERIKAN SEMUA HAK ISTIMEWA PADA 'sensor'.* KEPADA 'sensor'@'localhost'; KELUAR

Pastikan untuk mengganti [nama pengguna] dan [kata sandi] dengan nama pengguna dan kata sandi yang sebenarnya untuk pengguna MySQL yang Anda sukai. Juga, catat mereka karena Anda akan membutuhkannya untuk langkah selanjutnya.

Mengonfigurasi skrip logging dan antarmuka web

Ubah ke direktori /var/www/html yang merupakan root dokumen dari host virtual default Apache, hapus file HTML yang berisi halaman web default dan unduh skrip logging dan antarmuka 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/server/index.php

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

Anda harus mengganti [nama pengguna] dan [kata sandi] dengan nama pengguna dan kata sandi untuk pengguna MySQL yang Anda buat pada langkah sebelumnya. Juga, ganti [client key] dengan string unik dan catat itu. Ini akan digunakan sebagai kata sandi sehingga monitor dapat mengotentikasi dirinya ke server.

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

dan ganti [nama pengguna] dan [kata sandi] dengan nama pengguna dan kata sandi untuk pengguna MySQL seperti yang Anda lakukan dengan skrip logging.

Menyiapkan HTTPS (Opsional)

Ini mungkin opsional, tetapi jika koneksi antara ESP8266 dan server melalui Internet, sangat disarankan untuk menggunakan beberapa enkripsi.

Sayangnya, Anda tidak bisa melanjutkan dan menggunakan sesuatu seperti Let's Encrypt untuk mendapatkan sertifikat. Itu karena setidaknya pada saat penulisan, pustaka klien HTTP untuk ESP8266 masih memerlukan sidik jari sertifikat untuk diberikan sebagai argumen kedua saat memanggil http.begin(). Ini berarti bahwa jika Anda menggunakan sesuatu seperti Let's Encrypt, Anda harus memperbarui firmware ke chip setiap 3 bulan untuk memperbarui sidik jari sertifikat setelah setiap pembaruan.

Cara mengatasinya, adalah dengan membuat sertifikat yang ditandatangani sendiri yang kedaluwarsa setelah waktu yang sangat lama (misalnya 10 tahun) dan menyimpan skrip logging pada host virtualnya sendiri dengan subdomainnya sendiri. Dengan begitu, Anda dapat memiliki antarmuka web untuk mengakses data pada subdomain terpisah, yang akan menggunakan sertifikat yang sesuai dari otoritas tepercaya. Penggunaan sertifikat yang ditandatangani sendiri dalam kasus ini bukanlah masalah keamanan, karena sidik jari sertifikat yang mengidentifikasinya secara unik akan di-hardcode ke dalam firmware dan sertifikat hanya akan digunakan oleh ESP8266.

Sebelum kita mulai, saya akan berasumsi bahwa Anda sudah memiliki nama domain dan Anda dapat membuat subdomain di atasnya. Jadi, untuk menghasilkan sertifikat yang kedaluwarsa setelah 10 tahun, jalankan perintah berikut dan jawab pertanyaannya.

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

Karena ini adalah sertifikat yang ditandatangani sendiri, apa yang Anda jawab di sebagian besar pertanyaan tidak terlalu penting, kecuali untuk pertanyaan yang menanyakan Nama Umum. Di sinilah Anda harus menyediakan subdomain lengkap yang akan digunakan untuk host virtual ini. Subdomain yang akan Anda berikan di sini harus sama dengan NamaServer yang akan Anda atur nanti dalam konfigurasi host virtual Anda.

Selanjutnya buat konfigurasi virtual host baru, sudo nano /etc/Apache2/sites-available/sensors-ssl.conf

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

Sekali lagi, pastikan untuk mengganti [subdomain] dengan subdomain yang sama yang Anda gunakan dengan sertifikat. Pada titik ini Anda harus menonaktifkan host virtual default Apache, sudo a2dissite 000-default

ubah nama direktori root dokumen, sudo mv /var/www/html /var/www/sensors

dan akhirnya aktifkan virtual host baru dan restart Apache, sudo a2ensite sensor-ssl

sudo systemctl restart Apache2

Hal terakhir yang perlu dilakukan adalah mendapatkan sidik jari sertifikat, karena Anda harus menggunakannya dalam kode firmware.

openssl x509 -noout -sidik jari -sha1 -informasikan pem -in /etc/ssl/certs/sensors.crt

http.begin() mengharapkan pembatas antara byte sidik jari menjadi spasi, jadi Anda harus mengganti titik dua dengan spasi sebelum menggunakannya dalam kode Anda.

Sekarang, jika Anda tidak ingin menggunakan sertifikat yang ditandatangani sendiri untuk antarmuka web, siapkan subdomain baru dan buat konfigurasi host virtual baru, sudo nano /etc/Apache2/sites-available/sensors-web-ssl.conf

dengan isi sebagai berikut, ServerName [subdomain] DocumentRoot /var/www/sensors #SSLEngine ON #SSLCertificateFile /etc/letsencrypt/live/[subdomain]/cert.pem #SSLCertificateKeyFile /etc/letsencrypt/live/[subdomain]/privkey.pem #SSLCertificateChainFile /etc /letsencrypt/live/[subdomain]/chain.pem Opsi +FollowSymlinks -Indexes AllowOverride All ErrorLog ${APACHE_LOG_DIR}/sensors-web-error-ssl.log CustomLog ${APACHE_LOG_DIR}/sensors-web-access-ssl.log digabungkan

Pastikan untuk mengganti [subdomain] dengan subdomain yang telah Anda siapkan untuk antarmuka web. Selanjutnya aktifkan virtual host baru, restart Apache, install certbot dan dapatkan sertifikat 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 mendapatkan sertifikat, edit konfigurasi host virtual lagi untuk menghapus komentar pada baris SSLEngine, SSLCertificateFile, SSLCertificateKeyFile dan SSLCertificateChainFile, dan mulai ulang Apache.

Dan sekarang Anda dapat menggunakan subdomain pertama yang menggunakan sertifikat yang ditandatangani sendiri untuk mengirim data dari ESP8266 ke server, sementara yang kedua untuk mengakses antarmuka web dari browser Anda. Certbot juga akan secara otomatis memperbarui sertifikat Let's Encrypt Anda setiap 3 bulan, menggunakan pengatur waktu systemd yang harus diaktifkan secara default.

Langkah 6: Memprogram ESP8266

Memprogram ESP8266
Memprogram ESP8266

Akhirnya, satu-satunya yang tersisa untuk dilakukan adalah memuat firmware pada mikrokontroler. Untuk melakukannya, unduh kode sumber untuk firmware dari sini dan buka menggunakan Arduino IDE. Anda harus mengganti [SSID] dan [Kata Sandi] dengan SSID dan kata sandi sebenarnya dari jaringan WiFi Anda. Anda juga harus mengganti [ID Klien] dan [Kunci Klien] pada pemanggilan fungsi sprintf dengan yang Anda gunakan pada skrip PHP di server. Terakhir, Anda harus mengganti [Host] dengan nama domain atau alamat IP server. Jika Anda menggunakan HTTPS, Anda juga perlu memberikan sidik jari sertifikat Anda sebagai argumen kedua pada pemanggilan fungsi http.begin(). Saya sudah menjelaskan cara mendapatkan sidik jari sertifikat di bagian "Menyiapkan HTTPS" pada langkah sebelumnya.

Selanjutnya, jika Anda belum melakukannya, Anda perlu menginstal paket inti Komunitas ESP8266 menggunakan Board Manager dari Arduino IDE. Setelah ini selesai, pilih NodeMCU 1.0 (ESP-12E Module) dari menu papan. Selanjutnya, Anda harus menginstal pustaka SimpleDHT menggunakan Pengelola Perpustakaan. Terakhir, tekan tombol Verifikasi di sudut kiri atas jendela IDE Anda untuk memastikan bahwa kode dikompilasi tanpa kesalahan.

Dan sekarang, akhirnya saatnya untuk membakar firmware ke mikrokontroler. Untuk melakukannya pindahkan jumper JP1 di sebelah kanan, sehingga GPIO0 dari ESP8266 akan terhubung ke ground yang akan mengaktifkan mode pemrograman. Kemudian, pasang konverter USB ke serial menggunakan kabel jumper ke header pemrograman yang berlabel P1. Pin 1 dari header pemrograman adalah ground, pin 2 adalah pin penerima dari ESP8266 dan pin 3 sebagai pengirim. Anda memerlukan penerima ESP8266 untuk pergi ke transmisi USB Anda ke konverter serial, transmisi ke penerima dan tentu saja ground to ground.

Terakhir, nyalakan perangkat dengan 5V menggunakan kabel jack USB ke DC Anda dan sambungkan konverter USB ke serial ke komputer Anda. Anda sekarang dapat melihat port serial virtual tempat ESP8266 terhubung, segera setelah Anda membuka menu alat pada IDE Anda. Sekarang, tekan saja tombol Unggah dan selesai! Jika semuanya berjalan seperti yang diharapkan, Anda seharusnya dapat melihat pembacaan suhu dan kelembaban pada LCD perangkat. Setelah ESP8266 terhubung ke jaringan Anda dan mulai berkomunikasi dengan server, tanggal dan waktu saat ini juga akan muncul di layar.

Setelah beberapa jam ketika server akan mengumpulkan data dalam jumlah yang baik, Anda akan dapat melihat grafik suhu dan kelembaban dengan mengunjungi http(s)://[host]/index.php?client_id=[client id]. Di mana [host] adalah alamat IP server Anda atau subdomain yang Anda gunakan untuk antarmuka web, dan [client id] id klien perangkat yang jika Anda biarkan ke nilai defaultnya, seharusnya 1.

Direkomendasikan: