Isi kandungan:

Hab Rumah Pintar ESP32: 11 Langkah
Hab Rumah Pintar ESP32: 11 Langkah

Video: Hab Rumah Pintar ESP32: 11 Langkah

Video: Hab Rumah Pintar ESP32: 11 Langkah
Video: SMARTHOME !! Project IOT/ Internet of Things rumah pintar dengan Nodemcu ESP8266 by TOKOTRONIK 2024, September
Anonim
Hab Rumah Pintar ESP32
Hab Rumah Pintar ESP32
Hab Rumah Pintar ESP32
Hab Rumah Pintar ESP32
Hab Rumah Pintar ESP32
Hab Rumah Pintar ESP32
Hab Rumah Pintar ESP32
Hab Rumah Pintar ESP32

Membuat sistem yang dapat menangani sejumlah besar data sensor, mempunyai banyak output, dan menyambung ke internet atau rangkaian tempatan memerlukan waktu yang lama dan sejumlah besar usaha. Sering kali, orang yang ingin membuat rangkaian rumah pintar mereka sendiri berjuang untuk dapat mencari dan memasang komponen tersuai ke dalam sistem yang lebih besar. Itulah sebabnya saya ingin membuat platform modular dan kaya ciri yang memudahkan pembinaan sensor dan output yang disambungkan dengan IoT.

Terima kasih kepada DFRobot dan PCBGOGO.com kerana menaja projek ini!

Untuk maklumat lebih mendalam, lawati repo Github:

Bekalan

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • Sensor DHT22

    www.dfrobot.com/product-1102.html

  • Sensor Cahaya dan Gerak isyarat APDS9960

    www.dfrobot.com/product-1361.html

  • Modul LCD I2C 20x4

    www.dfrobot.com/product-590.html

  • Jalur LED Analog RGB

    www.dfrobot.com/product-1829.html

  • Pemacu Motor Stepper DRV8825
  • Pembaca Kad SD
  • NEMA17 Stepper Motors

Langkah 1: Ciri-ciri

ciri-ciri
ciri-ciri
ciri-ciri
ciri-ciri
ciri-ciri
ciri-ciri

Ciri utama papan ini adalah Lembaga Pembangunan FireBeetle ESP32 yang mengendalikan semua komunikasi, pembacaan sensor, dan output. Terdapat dua pemacu motor stepper yang mengawal dua motor stepper bipolar.

Bas I2C juga rosak untuk digunakan dengan komponen seperti APDS9960 atau LCD. Untuk membaca suhunya, ada pin yang patah untuk disambungkan ke sensor DHT22, serta fotoresistor untuk membaca tahap cahaya ambien.

Terdapat sokongan untuk jalur cahaya analog di papan, yang mempunyai tiga MOSFET di atasnya untuk menggerakkan lampu LED.

Langkah 2: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

Saya memulakan proses reka bentuk PCB dengan membuat skema pertama di Eagle. Oleh kerana saya tidak dapat mencari perpustakaan FireBeetle ESP32, saya hanya menggunakan dua header pin 1x18 pin. Kemudian, saya membuat litar pengurusan kuasa yang dapat menerima 12v melalui jack barel DC dan menukarnya menjadi 5v untuk menghidupkan sensor dan ESP32.

Setelah skema selesai, saya terus merancang PCB sendiri.

Saya tahu bahawa palam laras DC mesti berada di bahagian depan papan, dan kapasitor pelicin bekalan kuasa 100uF perlu dekat dengan input kuasa pemacu motor stepper. Setelah semuanya disusun, saya mula mengesan jejak.

Walaupun Oshpark membuat PCB berkualiti tinggi, harganya cukup tinggi. Syukurlah, PCBGOGO.com juga membuat PCB hebat dengan harga yang berpatutan. Saya dapat membeli sepuluh PCB dengan harga $ 5, dan bukannya membayar $ 52 untuk hanya tiga papan dari Oshpark.com.

Langkah 3: Perhimpunan

perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan

Secara keseluruhan, pemasangan papan adalah sangat mudah. Saya mulakan dengan memateri komponen yang dipasang di permukaan, dan kemudian memasang penyambung dan pengatur soket tong. Seterusnya, saya menggunakan header pin untuk komponen seperti pemandu motor dan FireBeetle.

Setelah pematerian selesai, saya menguji papan litar pintas dengan memasukkan multimeter ke mod pengukuran rintangan dan melihat apakah rintangan melebihi jumlah tertentu. Papan berlalu, jadi saya kemudian dapat memasukkan setiap komponen.

Langkah 4: Gambaran Keseluruhan Pengaturcaraan

Saya mahu kod papan ini modular dan mudah digunakan. Ini bermaksud mempunyai beberapa kelas yang mengendalikan fungsi tertentu, bersama dengan kelas pembungkus yang lebih besar yang menggabungkan yang lebih kecil.

Langkah 5: Input

Input
Input
Input
Input
Input
Input

Untuk mengendalikan input, saya membuat kelas yang disebut "Hub_Inputs", yang memungkinkan hub rumah berkomunikasi dengan APDS9960, bersama dengan membuat dan mengurus butang dan antara muka sentuhan kapasitif. Ia mengandungi fungsi berikut:

Buat butang

Dapatkan jika butang ditekan

Dapatkan bilangan penekanan butang

Dapatkan isyarat terkini

Dapatkan nilai sentuhan kapasitif

Butang disimpan sebagai struktur, dengan tiga atribut: is_pressed, numberPresses, dan pin. Setiap butang, apabila dibuat, dilampirkan pada gangguan. Apabila gangguan itu dipicu, Interrupt Service Routine (ISR) dilewatkan penunjuk butang itu (diberikan sebagai alamat ingatannya dalam susunan butang) dan menambah jumlah penekanan butang, bersama dengan mengemas kini nilai Boolean is_pressed.

Nilai sentuhan kapasitif jauh lebih sederhana. Mereka diambil dengan meneruskan pin sentuh ke fungsi touchRead ().

Isyarat terbaru diperbaharui dengan mengundi APDS9960 dan memeriksa apakah ada gerakan baru yang terdeteksi, dan jika ada yang terdeteksi, tetapkan pemboleh ubah isyarat peribadi ke gerakan itu.

Langkah 6: Hasil

Keluaran
Keluaran
Keluaran
Keluaran
Keluaran
Keluaran

Hab rumah pintar mempunyai beberapa cara untuk mengeluarkan maklumat dan menukar lampu. Terdapat pin yang memecah bas I2C, membiarkan pengguna menyambungkan LCD. Sejauh ini, hanya satu ukuran LCD yang didukung: 20 x 4. Dengan menggunakan fungsi "hub.display_message ()", pengguna dapat menampilkan pesan di LCD dengan memasukkan objek string.

Terdapat juga pin header untuk menyambungkan rentetan LED analog. Memanggil fungsi "hub.set_led_strip (r, g, b)", menetapkan warna jalur.

Kedua motor stepper digerakkan menggunakan sepasang papan pemacu DRV8825. Saya memutuskan untuk menggunakan perpustakaan BasicStepper untuk mengendalikan kawalan motor. Semasa papan dipasang, dua objek stepper dibuat, dan kedua-dua motor diaktifkan. Untuk melangkah setiap motor, fungsi "hub.step_motor (motor_id, step)" digunakan, di mana id motor sama ada 0 atau 1.

Langkah 7: Pembalakan

Pembalakan
Pembalakan
Pembalakan
Pembalakan
Pembalakan
Pembalakan

Kerana papan mempunyai beberapa sensor, saya mahukan kemampuan mengumpulkan dan log data secara tempatan.

Untuk memulakan log, file baru dibuat dengan "hub.create_log (nama file, header)", di mana header digunakan untuk membuat baris file CSV yang menunjukkan lajur. Lajur pertama selalu merupakan cap waktu dalam Tahun Bulan Jam Hari: Format Min: Sec. Untuk mendapatkan masa, fungsi hub.log_to_file () mendapat masa dengan fungsi basic_functions.get_time (). Struktur waktu tm kemudian diteruskan dengan merujuk ke fungsi pembalakan, bersama dengan data dan nama fail.

Langkah 8: Buzzer

Buzzer
Buzzer

Apa gunanya papan IoT jika anda tidak dapat memainkan muzik? Itulah sebabnya saya memasukkan bel dengan fungsi untuk memainkan suara. Memanggil "hub.play_sounds (melodi, durasi, panjang)" mula memainkan lagu, dengan melodi menjadi array frekuensi nota, durasi sebagai susunan durasi nota, dan panjang sebagai jumlah nota.

Langkah 9: Integrasi IoT Luaran

Integrasi IoT Luaran
Integrasi IoT Luaran
Integrasi IoT Luaran
Integrasi IoT Luaran
Integrasi IoT Luaran
Integrasi IoT Luaran

Hab pada masa ini menyokong webhook IFTTT. Mereka boleh dipicu dengan memanggil fungsi Hub_IoT.publish_webhook (url, data, peristiwa, kunci) atau Hub_IoT.publish_webhook (url, data). Ini menghantar permintaan POST ke URL yang diberikan dengan data yang dilampirkan, bersama dengan nama acara jika perlu. Untuk menyediakan contoh integrasi IFTTT, buat pertama kali applet baru. Kemudian pilih perkhidmatan webhook yang mencetuskan ketika permintaan diterima.

Seterusnya, panggil acara "high_temp" dan simpan. Kemudian, pilih perkhidmatan Gmail untuk bahagian "Itu", dan pilih pilihan "Kirim e-mel kepada saya sendiri". Dalam persediaan untuk layanan, masukkan "Suhu tinggi!" untuk subjek, dan kemudian saya meletakkan "Suhu terukur {{Value1}} pada {{OccurrAt}}", yang menunjukkan suhu yang diukur dan waktu ketika peristiwa itu dipicu.

Setelah menyiapkannya, cukup tempel URL webhook yang dihasilkan oleh IFTTT, dan masukkan "high_temp" di bahagian acara.

Langkah 10: Penggunaan

Penggunaan
Penggunaan
Penggunaan
Penggunaan
Penggunaan
Penggunaan
Penggunaan
Penggunaan

Untuk menggunakan Smart Home Hub, cukup panggil semua fungsi yang diperlukan dalam setup () atau loop (). Saya telah membuat contoh panggilan fungsi, seperti mencetak waktu semasa dan memanggil acara IFTTT.

Langkah 11: Rancangan Masa Depan

Sistem Smart Home Hub berfungsi dengan baik untuk automasi rumah yang sederhana dan tugas pengumpulan data. Ia dapat digunakan untuk hampir semua hal, seperti menetapkan warna jalur LED, memantau suhu ruangan, memeriksa apakah lampu menyala, dan sejumlah besar proyek lain yang berpotensi. Pada masa akan datang, saya ingin mengembangkan lagi fungsi. Ini termasuk menambahkan pelayan web yang lebih mantap, hosting fail tempatan, dan bahkan Bluetooth atau mqtt.

Disyorkan: