Repo ini berisi instruksi build untuk perangkat sensor ESP8266 multi-tujuan untuk proyek IoT rumah.
Papan V5, berpenduduk sebagian. Gambar yang dihasilkan di KICAD.
Dewan sensor ini memenuhi sebagian besar kebutuhan perangkat keras otomasi rumah saya. Ini cocok dengan selungkup yang murah dan tersedia secara luas (tidak diperlukan pencetakan 3D), dan dapat ditenagai oleh baterai Li-ion (pemantauan tegangan, pengisian daya, polaritas balik, dan sirkuit perlindungan termasuk) atau USB, dengan berbagi daya yang sesuai jika USB dan baterai terhubung secara bersamaan. Di sisi perangkat lunak, saya menjaga hal-hal setinggi mungkin: Tasmota untuk sebagian besar skenario penggunaan; Micropython di mana diperlukan. Komunikasi menggunakan protokol MQTT atas Wi-Fi, atau Lora (saya menggunakan papan sebagai sensor Lora jarak jauh, dan sebagai jembatan Lora-MQTT).
Papan ini dirancang untuk sensor berikut, serta kontrol motor/pompa (untuk penyiraman tanaman otomatis). Pin GPIO tetap mudah diakses, sehingga papan ini juga dapat digunakan sebagai dasar untuk banyak sensor lainnya.
Penggunaan ESP8266 hadir dengan beberapa keterbatasan, khususnya di sekitar GPIO yang tersedia, dan hanya satu port ADC. Ini berarti bahwa tidak semua fungsionalitas potensial tersedia secara bersamaan. Ya, keterbatasan ini dapat diatasi dengan pembagi port, atau dengan memanfaatkan mikrokontroler yang berbeda seperti ESP32; Namun bagian dari kesenangan bagi saya adalah melihat seberapa banyak yang bisa saya lakukan hanya dengan ESP8266, dan hasil akhirnya cocok dengan semua kasus penggunaan saya.
![]() | ![]() |
|---|---|
| V4, dengan BME280 (Suhu, Tekanan dan Kelembaban), BH1750 (LUX) dan Sensor Kelembaban (melalui steker audio). Dilengkapi untuk pompa penyiraman (kanan bawah); tidak terhubung saat ini. | V5, dengan sensor BME280 dan MH-Z19C (CO 2 ) |
![]() |
|---|
| Pengiriman papan V5 baru |
Anda bisa (harus?!) Menggunakan sesuatu yang lain. Saya awalnya merancang ini sebagai cara untuk mempelajari tentang sensor IoT dan desain/fabrikasi sirkuit. Saya sudah terjebak dengan itu karena memberikan beberapa keunggulan dibandingkan papan di luar rak:
Papan dapat ditenagai langsung dari USB, atau dari baterai li-ion. Papan V4 dan sebelumnya menggunakan Micro-USB; V5 menggunakan USB-C. Guntingan di sebelah kiri papan dirancang untuk mengakomodasi kasus baterai 18650 sel 1-sel seperti ini (tautan pembelian). Konektor baterai adalah 2-pin JST-PH (pitch 2mm), tetapi jika Anda lebih suka, cukup solder kabel langsung ke konektor.
Jika baterai dan USB terhubung secara bersamaan, sirkuit berbagi daya memastikan bahwa hanya USB yang memberi kekuatan pada papan. Baterai digunakan bersamaan dengan salinan modul berbasis TP4056 3-chip umum untuk pengisian daya. Ada sakelar yang disediakan jika Anda tidak menggunakan baterai dan ingin memotong sirkuit ini (atau jika Anda tidak ingin baterai diisi saat USB terhubung). Modul ini mencakup perlindungan untuk kelebihan biaya, over-discharge, overcurrent dan pendek-sirkuit. Perhatikan bahwa perlindungan arus berlebih dan hubung singkat dilewati untuk seluruh papan (bukan baterai) ketika USB terhubung, dan karenanya sirkuit pembagian daya aktif. Modul pengisian standar tidak termasuk perlindungan baterai-polaritas, jadi saya juga menambahkannya.
Pemantauan tegangan baterai tersedia ketika jumper JP5 (depan) atau JP6 (belakang) dijembatani. Ini menghubungkan terminal baterai positif, melalui pembagi tegangan, ke pin ADC tunggal ESP. Koneksi ini opsional karena sensor kelembaban (dan tentu saja sensor lain) juga memerlukan akses ke ADC. Karena ini, jelas tidak mungkin untuk memantau tegangan baterai dan sensor kelembaban tanah secara bersamaan dengan papan V5.
Catatan
Ada rangkaian ldo ICS yang memusingkan yang mungkin untuk dipilih. Saya menetap di XC6203P332PR karena output arus yang relatif tinggi, dan tegangan putus sekolah yang rendah. Dewan V4 memiliki jejak kaki untuk dua regulator alternatif, yang saya rencanakan untuk menguji stabilitas, tetapi ini tidak diperlukan dan dihapus di V5.
Pada PCB versi 4 saya memasangkan dua kapasitor Tantalum 1μF dengan XC6203, per lembar data. Saya memiliki kapasitor yang gagal pada dua papan ini setelah beberapa minggu digunakan, menyebabkan hubungan pendek dan banyak asap (papan-papan bertenaga USB pada saat itu). Setelah membaca Tantalum Horror-Stories Online, saya memutuskan untuk bereksperimen dengan menukarnya dengan keramik di V5, dan tidak mengalami masalah lebih lanjut. Saya kemudian menemukan bahwa kedua kegagalan adalah kesalahan saya: Saya memasang bagian -bagiannya secara terbalik! Saya yakin ada alasan bagus mengapa pita penanda polaritas di tantalum menunjukkan yang positif, sementara pada kapasitor aluminium dan dioda itu menunjukkan yang negatif, tetapi mereka tersandung pemula ini.
Nyaman, XC6203P332PR juga kompatibel dengan papan adaptor ESP-12F putih. Ini lebih kecil dari jejak yang disediakan, tetapi masih bisa disolder ke atasnya dengan sedikit masalah. Pastikan Anda menghapus resistor nol-ohm pusat di bagian depan papan jika menggunakan regulator yang dipasang di papan.
Saya belajar dengan cara yang sulit tentang sensitivitas listrik-noise ESP8266: di V3 papan, itu akan reboot setiap kali motor penyiraman diaktifkan. Saya mengatasi ini di V4 dengan reposisi komponen (menggerakkan motor ke ujung jauh dari mikrokontroler), menambahkan kapasitor tambahan di sebelah koneksi motor, meningkatkan lebar jejak daya vs jejak sinyal, meminimalkan loop pada bidang ground, dan memisahkan jalur pengembalian lahan motor dari sisa komponen.
Dewan dirancang untuk ESP-12F. Saya cenderung mem -flash chip di papan programmer sebelum menyoldernya, hanya untuk memeriksanya berfungsi.
Saat diinstal, itu dapat dilontarkan dengan cara normal dengan menghubungkan papan antarmuka USB-ART ke pin yang sesuai.
| Pin# | Pelabuhan | Koneksi papan | Penghambat* |
|---|---|---|---|
| 1 | Pertama | Tombol Reset | |
| 2 | ADC | ADC (kelembaban atau baterai) | |
| 3 | En | Chip mengaktifkan | Pengawas, atau E-Pu |
| 4 | IO16 | Tidur | |
| 5 | Io14 | I2C SCL, atau SPI SCK | |
| 6 | Io12 | VCC kelembaban, atau SPI SDO-MISO | |
| 7 | IO13 | I2C SDA, atau SPI Mosi | |
| 8 | Vcc | ||
| 15 | Gnd | ||
| 16 | IO15 | Lora NSS | E-PD |
| 17 | IO2 | LED onboard, & SPI SS | |
| 18 | Io0 | Tombol flash | E-pu |
| 19 | IO4 | Sakelar mode (GND: Gunakan tidur) | E-pu |
| 20 | Io5 | Pompa Air, atau Lora Dio | E-PD |
| 21 | Rxd | CO 2 TX | |
| 22 | Txd | CO 2 RX |
* Resistor yang terpasang pada pin: i: internal, e: eksternal, pu: pull-up, pd: pull-down
Tampaknya ada beberapa debat online tentang cara optimal untuk menghubungkan RST ke GPIO16 untuk menggunakan fungsionalitas tidur ESP8266. Saya telah melakukan kesalahan di sisi kehati -hatian dan menambahkan dioda di antara keduanya.
ESP8266 rentan terhadap brown-out jika tegangan terlalu rendah (penjelasan yang baik tentang masalah ini dapat ditemukan di sini). Sehubungan dengan peningkatan tegangan non-voltan dari regulator ketika daya pertama kali diterapkan, ini dapat menyebabkan masalah boot. Untuk melindungi dari ini, saya telah memasukkan pengawas tegangan opsional (TPS3839G33DBZ) yang hanya akan mengatur pin yang mengaktifkan chip tinggi ketika tegangan berada di atas ambang batas yang sesuai. Namun, saya belum melihat Brown-out menjadi masalah, jadi saya kadang-kadang melewatkan komponen ini.
Sepasang perangkat yang dilengkapi Lora di penutup mereka
Menggabungkan ESP8266 dengan modul LORA adalah peregangan ketika datang ke GPIO yang tersedia. Papan ini dirancang untuk bekerja dengan modul SX1276 LORA (tautan contoh), dan sangat bersandar pada desain dari sini, yang meminimalkan port yang dibutuhkan dengan menghubungkan tiga pin modul LORA (DiO0, 1 dan 2) ke satu pin ESP8266 melalui tiga dioda (board footprints D9, D10 dan D11 masing -masing). Konfigurasi pembagian dio ini membutuhkan penanganan khusus dalam perangkat lunak. Namun, untuk Lora Communications yang sederhana hanya diperlukan dio0, jadi untuk papan Lora saya hingga saat ini saya telah menjembatani D9, dan membuat D10 dan D11 terputus.
Untuk pengujian, Anda dapat secara langsung menyolder antena kawat heliks umum (sering disertakan dengan pembelian modul) langsung ke pin antena modul. Kisaran akan payah. Untuk rentang yang lebih baik, lampirkan antena-gain yang lebih tinggi (saya menggunakan antena 5dBi yang dibeli di sini). Saya menyertakan jejak IPEX U.FL-R di AE1. Atau, konektor yang dipasang di tepi SMA pas di tepi papan di atas jejak J5. Ini dapat disambungkan sebagai berikut (contoh ini menggunakan papan V4, tetapi hal yang sama akan berfungsi untuk v5): atas dan bawah.
Catatan
ADC tunggal tersedia di ESP8266, dengan kisaran pengukuran dari 0V hingga 1V. Oleh karena itu, untuk mengukur tegangan yang lebih tinggi, pembagi tegangan diperlukan. Di papan V5, ADC dapat digunakan untuk periferal yang terhubung ke jack audio, atau untuk memantau tegangan baterai jika JP11 atau JP5 ditutup.
Koneksi melalui jack audio melalui pembagi dengan R1 = 470 kΩ (komponen R7), R2 = 200 kΩ (komponen R8). Ini memungkinkan pengukuran tegangan hingga 3,3V (3,3V diturunkan menjadi sekitar 0,985V; mengkalibrasi sinyal untuk akurasi yang lebih tinggi).
Koneksi baterai menambahkan resistor 330 kΩ (komponen R10) tambahan secara seri dengan komponen R7, yang mengarah ke R1 = 800 kΩ. Ini meningkatkan rentang pengukuran hingga 5V.
Saya memilih untuk menggunakan jack audio 4-tiang (model PJ313E) untuk menghubungkan sensor kelembaban ke papan. Untuk saat ini, hanya tiga dari empat kutub yang terhubung; Yang keempat adalah cadangan dengan pandangan terhadap fungsionalitas di masa depan. Mulai dari pangkalan ke ujung steker audio, koneksi saat ini adalah:
| Tiang | Koneksi |
|---|---|
| 1 | Gnd |
| 2 | Tidak ada koneksi |
| 3 | 3.3V (dari GPIO12, melalui JP3) |
| 4 | Ke ADC melalui pembagi tegangan 3.3V |
Saya telah mengalami satu masalah dengan soket yang saya pilih (atau mungkin kombinasi soket dan colokan yang saya gunakan): secara default, gagal membuat koneksi ke keempat kutub. Ini dapat dilihat di gambar atas di sini, di mana pin kontak terdalam (kutub 4) tidak dibelokkan. Untuk memperbaiki masalah, saya memotong/mengajukan bagian depan plastik yang menonjol dari soket (gambar bawah)
Pompa air kecil dan tabung fleksibel yang diperlukan tersedia secara luas. Seperti yang dibahas di atas, mereka pengacau yang tidak dapat secara elektrik; Oleh karena itu mengapa konektor untuk pompa berada di sudut jauh papan dari ESP, dan terlindung di belakang dua kapasitornya sendiri. Biasanya didukung oleh GPIO5, melalui MOSFET N-channel, atau dapat dioperasikan secara manual dengan tombol opsional SW5.
Untuk kesederhanaan, dan karena pompa kecil tampaknya dapat berfungsi pada rentang tegangan yang cukup luas, pompa dipasok dengan tegangan apa pun yang saat ini memberi daya pada papan (ditentukan oleh keadaan sirkuit pembagian daya): jika USB terhubung, itu akan menjadi 5V dikurangi tegangan maju di seluruh dioda D2 dan D8; Jika bertenaga baterai, itu akan menjadi tegangan baterai dikurangi drop D8. Dalam praktiknya itu benar-benar tidak membuat banyak perbedaan: sedikit lebih banyak air akan dipompa selama waktu tertentu ketika di USB vs bertenaga baterai.
Untuk koneksi papan pompa, ada jejak kaki untuk soket DC-002. Saya mempertimbangkan untuk menggunakan soket USB tetapi memutuskan bahwa itu menyesatkan karena tegangan output tidak selalu 5V yang diharapkan dari USB. Di papan gambar di atas, saya melewatkan soket power-jack dan cukup menghubungkan soket pin-header ganda sebagai gantinya.
Saya memilih kotak proyek ini karena murah, tersedia secara luas, dan ukuran yang tepat untuk PCB dan baterai 18650.
Sekrup 8mm M2.6 diperlukan untuk memasang papan ke kotak, seperti ini.
| Milik | Modul | Koneksi papan | Lembar data | Beli tautan* |
|---|---|---|---|---|
| Suhu, tekanan, kelembaban | BME280 | Direct (header 2.54mm) | Link | |
| Lux | BH1750 | Direct (header 2.00mm) | Link | AliExpress |
| CO 2 | MH-Z19C | Direct (header 2.54mm) | Link | AliExpress |
| Kelembaban | “Sensor Kelembaban Tanah Kapasitif v1.2” | Steker audio | Tautan (versi lama) | AliExpress |
* Saya telah membeli dari tautan -tautan itu di masa lalu, tetapi mereka diberikan tanpa jaminan. Saya juga tidak berencana untuk memperbaruinya ketika mereka pasti kedaluwarsa.
Ini adalah suhu, kelembaban, dan sensor tekanan yang sangat berguna. Dengan titik pemasangan sensor saat ini, ia berada sebagian di luar selungkup. Saya merasa ini nyaman karena saya tidak perlu khawatir tentang aliran udara di dalam kotak. Jika geometri saat ini menyinggung Anda, atau Anda memerlukan perangkat yang lebih kuat di mana sensor tidak akan berisiko rusak, pertimbangkan desain ulang pada titik koneksi, atau pilih sensor alternatif dengan kandang bawaan.
Anda mungkin menemukan bahwa pin yang disolder menghalangi penutupan tutup kandang dengan benar. Jika ini masalahnya, Anda dapat memotongnya sebelum menyolder, seperti yang telah saya lakukan di sini.
Sensor dapat berkomunikasi dengan I2C atau SPI; Kebanyakan orang tampaknya menggunakan I2C, yang tidak perlu Anda lakukan. Jika Anda menginginkan antarmuka SPI, tutup beberapa jembatan solder di bagian belakang untuk menghubungkan pin tambahan. Di papan V5, salah satu koneksi ini juga memberi daya pada sensor kelembaban, jadi perubahan akan diperlukan jika Anda ingin menjalankan BME280 (dengan antarmuka SPI) dan sensor kelembaban secara bersamaan.
Catatan
Ini adalah fotodioda yang sederhana dan andal, dikombinasikan dengan antarmuka I2C. Anda dapat membelinya di berbagai faktor bentuk, dengan versi bola lampu yang sangat nyaman untuk tujuan kami. Trim-down Bagian plastik dari konektor bawaan, dan ini sekarang dapat dihubungkan langsung ke header pin 2mm-pitch standar, seperti yang disertakan pada papan V5. Bola ringan dapat muncul dari sensor dan dipasang langsung ke bagian atas selungkup.
Catatan
Ini adalah sensor paling mahal yang saya gunakan, tapi saya pikir itu sepadan dengan alternatif VOC yang lebih murah. Ini berkomunikasi melalui bus UART (jadi ESP8266 PIN RX dan TX). Karena itu Anda ingin memastikan sensor tidak terhubung jika Anda mencoba mem -flash ESP atau menggunakan antarmuka serial.
Untuk menggunakan MH-Z19C di papan V5, Anda perlu menghubungkan dua jembatan solder di bagian belakang. Kalau dipikir-pikir saya tidak bisa memikirkan kasus penggunaan yang baik ketika Anda tidak ingin mereka yang dijembatani, jadi saya mungkin hanya akan menukar bantalan dengan jejak terus menerus pada versi masa depan apa pun.
Catatan
Untuk menghentikan sensor kelembaban berjalan terus -menerus dan menguras baterai, itu ditenagai langsung oleh GPIO12. Jembatan bantalan kanan JP3 ke bantalan tengah untuk membuat koneksi itu. Itu tidak menarik banyak arus, jadi saya tidak punya masalah secara langsung menyalakan sensor langsung dari pin GPIO. Jika ternyata menjadi masalah cokelat/stabilitas di masa depan, koneksi ini perlu digantikan oleh MOSFET.
Dewan dirancang di KICAD, dan diproduksi oleh JLCPCB. File KICAD dan informasi yang diperlukan oleh JLCPCB disediakan di Direktori Board_V*.
Harap pengertian dengan skema; Saya tahu itu jelek dan sangat membutuhkan pemisahan menjadi beberapa bagian. Ingat, ini adalah desain PCB pertama saya!

Tata letak papan V5
Untuk kenyamanan, saya menggunakan Tasmota untuk semua perangkat jika memungkinkan. Tasmota tidak dapat menangani Lora, jadi untuk perangkat ini saya menggunakan Micropython.
Tautan instalasi web
Pastikan Anda menginstal versi "sensor" dari gambar Tasmota.
Berikut adalah beberapa tangkapan layar Tasmota dari perangkat V4 yang digambarkan di bagian atas readme ini.
| 
Berikut adalah pengaturan utama yang saya ubah dari default mereka di antarmuka kontrol. Baca tentang ini dan pengaturan lainnya di sini.
Catatan
POWER2 ON perintahOutput Hi daripada Relay 2 . Ini kemudian akan ditetapkan lebih awal dalam proses boot Tasmota, dan masih dimatikan ketika mikrokontroler tidur nyenyak.Lihat di sini untuk perangkat lunak dan instruksi Lora Micropython saya: https://github.com/brev-dev/lora_esp8266_sensor_mqtt_bridge.
Meskipun tidak dicakup oleh repo ini, berikut adalah beberapa catatan cepat di mana perangkat ini duduk di pengaturan rumah lengkap saya.
Pengaturan rumah saya dirancang untuk mencapai tujuan ini:
Untuk mengaktifkan kontrol suhu di setiap kamar, radiator dicolokkan ke colokan pintar ESP8285 yang Tasmotisasi.
"Hub" adalah Raspberry Pi 4 yang dilengkapi dengan Mosquitto, Nodered, InfluxDB, dan Grafana. Aliran saya yang mengangguk mungkin bisa disederhanakan dengan mengganti sebagian besar dengan, misalnya, homeassistant, tetapi saya belum melihat ke dalamnya. Kombinasi influxdb dan grafana digunakan untuk menyimpan dan memvisualisasikan data historis (contoh di bawah), bersama dengan aplikasi "MQTT DASH" di ponsel kami untuk memantau status saat ini dan mengubah level pemicu suhu dan kelembaban. Tumpukan perangkat lunak RPI menggunakan Docker dan IotStack untuk kemudahan konfigurasi dan pemeliharaan. Andreas Spiess memiliki beberapa video hebat tentang topik ini, termasuk: #255, #295, dan #352.


