Cuprins:
- Provizii
- Pasul 1: caracteristici
- Pasul 2: PCB
- Pasul 3: Asamblare
- Pasul 4: Prezentare generală a programării
- Pasul 5: Intrări
- Pasul 6: ieșiri
- Pasul 7: Logare
- Pasul 8: Buzzer
- Pasul 9: Integrări externe IoT
- Pasul 10: utilizare
- Pasul 11: Planuri de viitor
Video: ESP32 Smart Home Hub: 11 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Crearea unui sistem care poate gestiona cantități mari de date despre senzori, poate avea mai multe ieșiri și se poate conecta la internet sau la o rețea locală necesită mult timp și eforturi mari. De prea multe ori, oamenii care doresc să-și facă propriile rețele inteligente de casă se luptă pentru a putea găsi și asambla componente personalizate într-un sistem mai mare. De aceea am vrut să creez o platformă modulară și bogată în funcții care să faciliteze construirea senzorilor și ieșirilor conectate la IoT.
Mulțumim DFRobot și PCBGOGO.com pentru sponsorizarea acestui proiect!
Pentru mai multe informații detaliate, vizitați repo Github:
Provizii
-
DFRobot ESP32 FireBeetle
www.dfrobot.com/product-1590.html
-
Senzor DHT22
www.dfrobot.com/product-1102.html
-
Senzor de lumină și gest APDS9960
www.dfrobot.com/product-1361.html
-
Modul LCD I2C 20x4
www.dfrobot.com/product-590.html
-
Benzi LED analogice RGB
www.dfrobot.com/product-1829.html
- DRV8825 Drivere cu motor pas cu pas
- Cititor de carduri SD
- NEMA17 Motoare pas cu pas
Pasul 1: caracteristici
Caracteristica principală a acestei plăci este o placă de dezvoltare ESP32 FireBeetle care gestionează toate comunicările, citirile senzorilor și ieșirile. Există doi șoferi de motor pas cu pas care controlează două motoare pas cu pas bipolare.
Autobuzul I2C este, de asemenea, defectat pentru utilizare cu componente precum APDS9960 sau un LCD. Pentru citirea temperaturii, există pini rupți pentru conectarea la un senzor DHT22, precum și un fotorezistor pentru citirea nivelurilor de lumină ambientală.
Există suport pentru o bandă de lumină analogică pe placă, care are trei MOSFET-uri pe ea pentru a conduce luminile LED.
Pasul 2: PCB
Am început procesul de proiectare PCB creând mai întâi o schemă în Eagle. Deoarece nu am reușit să găsesc o bibliotecă ESP32 FireBeetle, tocmai am folosit două anteturi pin 1x18 pin. Apoi, am creat un circuit de gestionare a energiei care ar putea accepta 12v printr-o mufă cilindrică DC și să-l convertească la 5v pentru alimentarea senzorilor și ESP32.
După finalizarea schemei, am trecut la proiectarea PCB-ului în sine.
Știam că fișa cilindrică DC ar trebui să fie aproape de partea din față a plăcii, iar condensatorii de netezire a sursei de alimentare 100uF trebuie să fie aproape de intrările de putere ale driverului motorului pas cu pas. După ce totul a fost așezat, am început să direcționez urme.
În timp ce Oshpark produce PCB-uri de calitate, prețurile lor sunt destul de ridicate. Din fericire, PCBGOGO.com produce și PCB-uri grozave la un preț accesibil. Am putut cumpăra zece PCB-uri pentru doar 5 dolari, mai degrabă decât să plătesc 52 de dolari pentru doar trei plăci de la Oshpark.com.
Pasul 3: Asamblare
În general, asamblarea plăcii a fost destul de ușoară. Am început prin lipirea componentelor montate la suprafață și apoi atașarea conectorului și regulatorului jackului cilindru. Apoi, am lipit în anteturile pinilor pentru componente precum driverele de motor și FireBeetle.
După ce lipirea a fost finalizată, am testat placa pentru scurtcircuit punând un multimetru în modul de măsurare a rezistenței și văzând dacă rezistența depășea o anumită cantitate. Placa a trecut, așa că am putut apoi să conectez fiecare componentă.
Pasul 4: Prezentare generală a programării
Am vrut ca codul pentru această placă să fie modular și ușor de utilizat. Aceasta însemna să aveți mai multe clase care gestionează funcții specifice, împreună cu o clasă mai mare de împachetare care combină cele mai mici.
Pasul 5: Intrări
Pentru gestionarea intrărilor, am creat o clasă numită „Hub_Inputs”, care permite hub-ului de acasă să comunice cu APDS9960, împreună cu crearea și gestionarea butoanelor și a interfețelor tactile capacitive. Conține următoarele funcții:
Butonul Creați
Obțineți dacă butonul este apăsat
Obțineți numărul de apăsări de butoane
Obțineți cel mai recent gest
Obțineți o valoare tactilă capacitivă
Butoanele sunt stocate ca o structură, cu trei atribute: is_pressed, numberPresses și pin. Fiecare buton, atunci când este creat, este atașat la o întrerupere. Când acea întrerupere este declanșată, rutina de întrerupere a serviciului (ISR) este trecut de indicatorul butonului (dat ca adresă de memorie a acestuia în matricea de butoane) și crește numărul de apăsări de butoane, împreună cu actualizarea valorii booleene is_pressed.
Valorile tactile capacitive sunt mult mai simple. Acestea sunt recuperate trecând pinul tactil la funcția touchRead ().
Cel mai recent gest este actualizat prin interogarea APDS9960 și verificarea dacă a fost detectat un gest nou și, dacă a fost detectat unul, setați variabila de gest privat la acel gest.
Pasul 6: ieșiri
Hubul inteligent pentru casă are mai multe moduri de a transmite informații și de a schimba luminile. Există pini care izbucnesc magistrala I2C, permițându-le utilizatorilor să conecteze un LCD. Până în prezent, este acceptată doar o dimensiune a ecranului LCD: 20 x 4. Prin utilizarea funcției „hub.display_message ()”, utilizatorii pot afișa mesaje pe ecranul LCD trecând într-un obiect șir.
Există, de asemenea, un antet pin pentru a conecta un șir de LED-uri analogice. Apelând funcția „hub.set_led_strip (r, g, b)”, se setează culoarea benzii.
Cele două motoare pas cu pas sunt acționate folosind o pereche de plăci de driver DRV8825. Am decis să folosesc biblioteca BasicStepper pentru a gestiona controlul motorului. Când placa este pornită, sunt create două obiecte pas cu pas și ambele motoare devin activate. Pentru pasul fiecărui motor, se utilizează funcția „hub.step_motor (motor_id, pași)”, unde id-ul motorului este fie 0, fie 1.
Pasul 7: Logare
Deoarece placa are mai mulți senzori, am dorit capacitatea de a colecta și înregistra date la nivel local.
Pentru a începe înregistrarea, se creează un fișier nou cu „hub.create_log (nume de fișier, antet)”, unde antetul este utilizat pentru a crea un rând de fișier CSV care denotă coloane. Prima coloană este întotdeauna o marcă de timp în formatul An Luna Lună Zi Ora: Min: Sec. Pentru a obține timpul, funcția hub.log_to_file () obține timpul cu funcția basic_functions.get_time (). Structura de timp tm este apoi transmisă prin referință în funcția de înregistrare, împreună cu datele și numele fișierului.
Pasul 8: Buzzer
La ce bun o placă IoT dacă nu puteți reda muzică? De aceea am inclus un buzzer cu o funcție de redare a sunetelor. Apelarea „hub.play_sounds (melodie, durată, lungime)” începe să redea o melodie, melodia fiind o serie de frecvențe de notă, durata ca o serie de durate ale notelor și lungimea ca număr de note.
Pasul 9: Integrări externe IoT
În prezent, hub-ul acceptă webhook-uri IFTTT. Acestea pot fi declanșate apelând funcția Hub_IoT.publish_webhook (url, date, eveniment, cheie) sau Hub_IoT.publish_webhook (url, date). Aceasta trimite o cerere POST la adresa URL dată cu acele date atașate, împreună cu un nume de eveniment, dacă este necesar. Pentru a configura un exemplu de integrare IFTTT, creați mai întâi un applet nou. Apoi selectați serviciul webhook care se declanșează la primirea unei cereri.
Apoi, apelați evenimentul „high_temp” și salvați-l. Apoi, selectați serviciul Gmail pentru partea „Acela” și alegeți opțiunea „Trimiteți-mi un e-mail”. În cadrul configurării serviciului, puneți „Temperatura este ridicată!” pentru subiect, apoi am pus „Temperatura măsurată de {{Value1}} la {{OccurredAt}}”, care arată temperatura măsurată și ora când a fost declanșat evenimentul.
După configurare, lipiți pur și simplu URL-ul webhook generat de IFTTT și introduceți „high_temp” în secțiunea eveniment.
Pasul 10: utilizare
Pentru a utiliza Smart Home Hub, pur și simplu apelați orice funcție necesară fie în setare (), fie în buclă (). Am pus deja exemple de apeluri funcționale, cum ar fi tipărirea orei curente și apelarea unui eveniment IFTTT.
Pasul 11: Planuri de viitor
Sistemul Smart Home Hub funcționează foarte bine pentru sarcini simple de automatizare a casei și colectare de date. Poate fi folosit pentru aproape orice, cum ar fi setarea culorii unei benzi cu LED-uri, monitorizarea temperaturii unei camere, verificarea luminii aprinse și o serie întreagă de alte proiecte potențiale. În viitor, aș dori să extind și mai mult funcționalitatea. Aceasta ar putea include adăugarea unui server web mai robust, găzduirea fișierelor locale și chiar Bluetooth sau mqtt.
Recomandat:
Noțiuni introductive despre ESP32 - Instalarea plăcilor ESP32 în Arduino IDE - ESP32 Blink Code: 3 pași
Noțiuni introductive despre ESP32 | Instalarea plăcilor ESP32 în Arduino IDE | ESP32 Blink Code: În acest instructable vom vedea cum să începeți să lucrați cu esp32 și cum să instalați plăci esp32 în Arduino IDE și vom programa esp 32 pentru a rula codul blink folosind arduino ide
Sonoff B1 Firmware Home Automation Openhab Google Home: 3 pași
Sonoff B1 Firmware Home Automation Openhab Google Home: Îmi place foarte mult firmware-ul Tasmota pentru comutatoarele mele Sonoff. Dar a nu a fost foarte fericit cu firmware-ul Tasmota de pe Sonoff-B1. Nu am reușit pe deplin să-l integrez în Openhab și să-l controlez prin Google Home. Prin urmare, am scris propria mea firmă
Raspberry Pi-Arduino-SignalR Home Automation Hub: 11 pași (cu imagini)
Hub Raspberry Pi-Arduino-SignalR Home Automation Hub: În urma câtorva dintre IBLE-urile mele preliminare publicate aici și aici, acest proiect face primul pas spre construirea unei versiuni de bază a unui Hub funcțional Home Automation. Am folosit mai multe tehnologii diferite într-un efort de a da sens modului în care aș putea
Interfață Honeywell Vista Alarmă cu Smart Hub (Wink / Smartthings): 7 pași (cu imagini)
Interfață Honeywell Vista Alarmă cu Smart Hub (Wink / Smartthings): Bună ziua! Am vrut să ofer un scurt tutorial despre modul în care am integrat sistemul meu de alarmă Honeywell Vista în hub-ul meu inteligent. Folosesc Wink pentru acest tutorial, dar acest lucru ar trebui să funcționeze cu orice hub inteligent (Smartthings / Iris / etc.) Înainte de a începe, te duci
DIY Google Home cu difuzor Bluetooth pe Raspberry Pi Zero Docking Hub: 7 pași (cu imagini)
DIY Google Home cu difuzor Bluetooth pe Raspberry Pi Zero Docking Hub: Avem un instructable pe DIY Amazon Echo Alexa - Alexa Voice Assistant pe Raspberry Pi Zero Docking Hub. De data aceasta vrem să vă arătăm cum să construiți un Google Home DIY. În acest instructiv, vă vom arăta cum să instalați și să configurați Asistentul Google