Daftar Isi:

ESP32 Smart Home Hub: 11 Langkah
ESP32 Smart Home Hub: 11 Langkah

Video: ESP32 Smart Home Hub: 11 Langkah

Video: ESP32 Smart Home Hub: 11 Langkah
Video: ESP32 HomeKit Tutorial | HomeSpan 2024, Juni
Anonim
Hub Rumah Pintar ESP32
Hub Rumah Pintar ESP32
Hub Rumah Pintar ESP32
Hub Rumah Pintar ESP32
Hub Rumah Pintar ESP32
Hub Rumah Pintar ESP32
Hub Rumah Pintar ESP32
Hub Rumah Pintar ESP32

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
Fitur
Fitur
Fitur
Fitur
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

PCB
PCB
PCB
PCB
PCB
PCB
PCB
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

perakitan
perakitan
perakitan
perakitan
perakitan
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

Masukan
Masukan
Masukan
Masukan
Masukan
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

Keluaran
Keluaran
Keluaran
Keluaran
Keluaran
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

Pencatatan
Pencatatan
Pencatatan
Pencatatan
Pencatatan
Pencatatan

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

Bel
Bel

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

Integrasi IoT Eksternal
Integrasi IoT Eksternal
Integrasi IoT Eksternal
Integrasi IoT Eksternal
Integrasi IoT Eksternal
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

Penggunaan
Penggunaan
Penggunaan
Penggunaan
Penggunaan
Penggunaan
Penggunaan
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: