Daftar Isi:
- Perlengkapan
- Langkah 1: Fitur
- Langkah 2: PCB
- Langkah 3: Perakitan
- Langkah 4: Ikhtisar Pemrograman
- Langkah 5: Masukan
- Langkah 6: Keluaran
- Langkah 7: Masuk
- Langkah 8: Buzzer
- Langkah 9: Integrasi IoT Eksternal
- Langkah 10: Penggunaan
- Langkah 11: Rencana Masa Depan
Video: ESP32 Smart Home Hub: 11 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Membuat sistem yang dapat menangani data sensor dalam jumlah besar, memiliki banyak keluaran, dan terhubung ke internet atau jaringan lokal membutuhkan waktu yang lama dan usaha yang besar. Terlalu sering, orang yang ingin membuat jaringan rumah pintar mereka sendiri berjuang untuk dapat menemukan dan merakit komponen khusus ke dalam sistem yang lebih besar. Itulah mengapa saya ingin membuat platform modular dan kaya fitur yang akan memudahkan pembuatan sensor dan output yang terhubung dengan IoT.
Terima kasih kepada DFRobot dan PCBGOGO.com yang telah mensponsori proyek ini!
Untuk informasi lebih mendalam, kunjungi repo Github:
Perlengkapan
-
DFRobot ESP32 FireBeetle
www.dfrobot.com/product-1590.html
-
Sensor DHT22
www.dfrobot.com/product-1102.html
-
Sensor Cahaya dan Gerakan APDS9960
www.dfrobot.com/product-1361.html
-
Modul LCD I2C 20x4
www.dfrobot.com/product-590.html
-
Strip LED RGB Analog
www.dfrobot.com/product-1829.html
- Driver Motor Stepper DRV8825
- Pembaca Kartu SD
- Motor Stepper NEMA17
Langkah 1: Fitur
Fitur utama dari board ini adalah ESP32 FireBeetle Development Board yang menangani semua komunikasi, pembacaan sensor, dan output. Ada dua driver motor stepper yang mengendalikan dua motor stepper bipolar.
Bus I2C juga dipecah untuk digunakan dengan komponen seperti APDS9960 atau LCD. Untuk membaca suhu, ada pin yang putus untuk dihubungkan ke sensor DHT22, serta fotoresistor untuk membaca tingkat cahaya sekitar.
Ada dukungan untuk strip lampu analog di papan, yang memiliki tiga MOSFET di atasnya untuk menggerakkan lampu LED.
Langkah 2: PCB
Saya memulai proses desain PCB dengan terlebih dahulu membuat skema di Eagle. Karena saya tidak dapat menemukan perpustakaan ESP32 FireBeetle, saya hanya menggunakan dua pin header 1x18 pin saja. Kemudian, saya membuat rangkaian manajemen daya yang dapat menerima 12v melalui jack barel DC dan mengubahnya menjadi 5v untuk memberi daya pada sensor dan ESP32.
Setelah skema selesai, saya pindah ke merancang PCB itu sendiri.
Saya tahu bahwa steker barel DC harus berada di dekat bagian depan papan, dan kapasitor penghalus catu daya 100uF harus dekat dengan input daya driver motor stepper. Setelah semuanya ditata, saya mulai merutekan jejak.
Meskipun Oshpark membuat PCB berkualitas tinggi, harganya cukup tinggi. Untungnya, PCBGOGO.com juga membuat PCB yang bagus dengan harga yang terjangkau. Saya dapat membeli sepuluh PCB hanya dengan $5, daripada membayar $52 hanya untuk tiga papan dari Oshpark.com.
Langkah 3: Perakitan
Secara keseluruhan, merakit papan itu cukup mudah. Saya mulai dengan menyolder komponen yang dipasang di permukaan, dan kemudian memasang konektor dan regulator jack barel. Selanjutnya, saya menyolder pin header untuk komponen seperti driver motor dan FireBeetle.
Setelah penyolderan selesai, saya menguji papan untuk hubungan pendek dengan menempatkan multimeter ke mode pengukuran resistansi dan melihat apakah resistansi melebihi jumlah tertentu. Papannya lewat, jadi saya kemudian bisa mencolokkan setiap komponen.
Langkah 4: Ikhtisar Pemrograman
Saya ingin kode untuk papan ini menjadi modular dan mudah digunakan. Ini berarti memiliki beberapa kelas yang menangani fungsi tertentu, bersama dengan kelas pembungkus yang lebih besar yang menggabungkan yang lebih kecil.
Langkah 5: Masukan
Untuk menangani input, saya membuat kelas yang disebut "Hub_Inputs", yang memungkinkan hub rumah berkomunikasi dengan APDS9960, bersama dengan membuat dan mengelola tombol dan antarmuka sentuh kapasitif. Ini berisi fungsi-fungsi berikut:
Buat tombol
Dapatkan jika tombol ditekan
Dapatkan jumlah penekanan tombol
Dapatkan gerakan terbaru
Dapatkan nilai sentuh kapasitif
Tombol disimpan sebagai struct, dengan tiga atribut: is_pressed, numberPresses, dan pin. Setiap tombol, saat dibuat, dilampirkan ke interupsi. Ketika interupsi itu dipicu, Interrupt Service Routine (ISR) melewati penunjuk tombol itu (diberikan sebagai alamat memorinya dalam array tombol) dan menambah jumlah penekanan tombol, bersama dengan memperbarui nilai Boolean is_pressed.
Nilai sentuh kapasitif jauh lebih sederhana. Mereka diambil dengan meneruskan pin sentuh ke fungsi touchRead().
Gestur terbaru diperbarui dengan polling APDS9960 dan memeriksa apakah ada gestur baru yang terdeteksi, dan jika ada yang terdeteksi, atur variabel gestur pribadi ke gestur itu.
Langkah 6: Keluaran
Hub rumah pintar memiliki beberapa cara untuk mengeluarkan informasi dan mengganti lampu. Ada pin yang memecah bus I2C, memungkinkan pengguna menghubungkan LCD. Sejauh ini, hanya satu ukuran LCD yang didukung: 20 x 4. Dengan menggunakan fungsi “hub.display_message()”, pengguna dapat menampilkan pesan pada LCD dengan melewatkan objek string.
Ada juga pin header untuk menghubungkan rangkaian LED analog. Memanggil fungsi “hub.set_led_strip(r, g, b)”, menyetel warna strip.
Kedua motor stepper digerakkan menggunakan sepasang papan driver DRV8825. Saya memutuskan untuk menggunakan perpustakaan BasicStepper untuk menangani kontrol motor. Saat papan di-boot, dua objek stepper dibuat, dan kedua motor diaktifkan. Untuk melangkah setiap motor, fungsi "hub.step_motor(motor_id, langkah)" digunakan, di mana id motor adalah 0 atau 1.
Langkah 7: Masuk
Karena board memiliki beberapa sensor, saya menginginkan kemampuan untuk mengumpulkan dan mencatat data secara lokal.
Untuk memulai logging, file baru dibuat dengan “hub.create_log(filename, header)”, di mana header digunakan untuk membuat baris file CSV yang menunjukkan kolom. Kolom pertama selalu berupa stempel waktu dalam format Tahun Bulan Hari Jam:Min:Detik. Untuk mendapatkan waktu, fungsi hub.log_to_file() mendapatkan waktu dengan fungsi basic_functions.get_time(). Struktur waktu tm kemudian diteruskan dengan referensi ke fungsi logging, bersama dengan data dan nama file.
Langkah 8: Buzzer
Apa gunanya papan IoT jika Anda tidak bisa memutar musik? Itu sebabnya saya menyertakan buzzer dengan fungsi untuk memutar suara. Memanggil "hub.play_sounds(melodi, durasi, panjang)" mulai memainkan lagu, dengan melodi sebagai larik frekuensi nada, durasi sebagai larik durasi nada, dan panjang sebagai jumlah nada.
Langkah 9: Integrasi IoT Eksternal
Hub saat ini mendukung webhook IFTTT. Mereka dapat dipicu dengan memanggil fungsi Hub_IoT.publish_webhook(url, data, event, key) atau Hub_IoT.publish_webhook(url, data). Ini mengirimkan permintaan POST ke URL yang diberikan dengan data terlampir, bersama dengan nama acara jika perlu. Untuk menyiapkan contoh integrasi IFTTT, pertama buat applet baru. Kemudian pilih layanan webhook yang terpicu saat permintaan diterima.
Selanjutnya, panggil acara "high_temp" dan simpan. Kemudian, pilih layanan Gmail untuk bagian "Itu", dan pilih opsi "Kirim email ke saya sendiri". Di dalam pengaturan untuk layanan, masukkan "Suhunya tinggi!" untuk subjek, lalu saya menempatkan “Suhu terukur {{Value1}} pada {{OccurredAt}}”, yang menunjukkan suhu terukur dan waktu saat peristiwa dipicu.
Setelah mengaturnya, cukup tempel URL webhook yang dihasilkan oleh IFTTT, dan letakkan "high_temp" di bagian acara.
Langkah 10: Penggunaan
Untuk menggunakan Smart Home Hub, cukup panggil fungsi yang diperlukan baik di setup() atau loop(). Saya sudah memasukkan contoh panggilan fungsi, seperti mencetak waktu saat ini dan memanggil acara IFTTT.
Langkah 11: Rencana Masa Depan
Sistem Smart Home Hub bekerja sangat baik untuk otomatisasi rumah sederhana dan tugas pengumpulan data. Ini dapat digunakan untuk hampir semua hal, seperti mengatur warna strip LED, memantau suhu ruangan, memeriksa apakah lampu menyala, dan sejumlah proyek potensial lainnya. Di masa depan, saya ingin memperluas fungsionalitas lebih banyak lagi. Ini bisa termasuk menambahkan server web yang lebih kuat, hosting file lokal, dan bahkan Bluetooth atau mqtt.
Direkomendasikan:
Membuat Sistem Kontrol Smart Home pada STONE HMI Disp: 23 Langkah
Membuat Sistem Kontrol Rumah Pintar di STONE HMI Disp: Pengenalan proyekTutorial berikut menunjukkan cara menggunakan modul layar sentuh STONE STVC050WT-01 untuk membuat sistem kontrol peralatan rumah sederhana
Memulai Dengan ESP32 - Memasang Board ESP32 di Arduino IDE - Kode Blink ESP32: 3 Langkah
Memulai Dengan ESP32 | Memasang Board ESP32 di Arduino IDE | Kode Blink ESP32: Dalam instruksi ini kita akan melihat cara mulai bekerja dengan esp32 dan cara memasang papan esp32 ke Arduino IDE dan kami akan memprogram esp 32 untuk menjalankan kode blink menggunakan arduino ide
Sonoff B1 Firmware Home Automation Openhab Google Home: 3 Langkah
Sonoff B1 Firmware Home Automation Openhab Google Home: Saya sangat menyukai firmware Tasmota untuk sakelar Sonoff saya. Tetapi a tidak terlalu senang dengan firmware Tasmota di Sonoff-B1 saya. Saya tidak sepenuhnya berhasil mengintegrasikannya di Openhab saya dan mengendalikannya melalui Google Home. Oleh karena itu saya menulis perusahaan saya sendiri
Antarmuka Honeywell Vista Alarm Dengan Smart Hub (Wink/Smartthings): 7 Langkah (dengan Gambar)
Antarmuka Honeywell Vista Alarm Dengan Smart Hub (Wink/Smartthings): Hai! Saya ingin memberikan tutorial singkat tentang bagaimana saya membuat sistem alarm Honeywell Vista saya terintegrasi ke dalam hub pintar saya. Saya menggunakan Wink untuk tutorial ini, tetapi ini harus bekerja dengan semua smart hub (Smartthings/Iris/etc.) Sebelum kita mulai, Anda mulai
Google Home DIY Dengan Speaker Bluetooth di Raspberry Pi Zero Docking Hub: 7 Langkah (dengan Gambar)
Google Home DIY Dengan Speaker Bluetooth di Raspberry Pi Zero Docking Hub: Kami memiliki instruksi di Amazon Echo Alexa DIY - Asisten Suara Alexa di Raspberry Pi Zero Docking Hub. Kali ini kami ingin menunjukkan cara membuat Google Home DIY. Dalam instruksi ini, kami akan menunjukkan kepada Anda cara menginstal dan mengatur Asisten Google