Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Funktioner
- Trin 2: PCB
- Trin 3: Montering
- Trin 4: Oversigt over programmering
- Trin 5: Inputs
- Trin 6: Outputs
- Trin 7: Logning
- Trin 8: summer
- Trin 9: Eksterne IoT -integrationer
- Trin 10: Brug
- Trin 11: Fremtidsplaner
Video: ESP32 Smart Home Hub: 11 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Oprettelse af et system, der kan håndtere store mængder sensordata, have flere output og oprette forbindelse til internettet eller et lokalt netværk, tager lang tid og store anstrengelser. Alt for ofte kæmper folk, der ønsker at få deres egne smarte hjemmenetværk, med at kunne finde og samle brugerdefinerede komponenter til et større system. Derfor ville jeg lave en modulær og funktionsrig platform, der ville gøre det let at konstruere IoT-tilsluttede sensorer og output.
Tak til DFRobot og PCBGOGO.com for sponsorering af dette projekt!
For mere dybdegående information, besøg Github-repoen:
Forbrugsvarer
-
DFRobot ESP32 FireBeetle
www.dfrobot.com/product-1590.html
-
DHT22 sensor
www.dfrobot.com/product-1102.html
-
APDS9960 lys- og gestusensor
www.dfrobot.com/product-1361.html
-
I2C 20x4 LCD -modul
www.dfrobot.com/product-590.html
-
Analog RGB LED Strip
www.dfrobot.com/product-1829.html
- DRV8825 trinmotordrivere
- SD -kortlæser
- NEMA17 Stepper Motors
Trin 1: Funktioner
Hovedfunktionen i dette kort er et ESP32 FireBeetle Development Board, der håndterer al kommunikation, sensoraflæsninger og output. Der er to trinmotordrivere, der styrer to bipolære steppermotorer.
I2C -bussen er også brudt ud til brug med komponenter som APDS9960 eller en LCD. Til aflæsning af temperaturen er der knækket stifter for at forbinde til en DHT22 -sensor samt en fotoresistor til aflæsning af omgivende lysniveauer.
Der er understøttelse af en analog lysstrimmel på tavlen, som har tre MOSFET'er på den til at drive LED -lysene.
Trin 2: PCB
Jeg begyndte PCB -designprocessen ved først at oprette en skematisk i Eagle. Da jeg ikke kunne finde et ESP32 FireBeetle -bibliotek, brugte jeg bare to pin 1x18 pin headers i stedet. Derefter oprettede jeg et strømstyrings kredsløb, der kunne acceptere 12v gennem et DC tønde stik og konvertere det til 5v til strømforsyning af sensorerne og ESP32.
Efter at skematikken var afsluttet, gik jeg over til at designe selve printkortet.
Jeg vidste, at DC -tøndeproppen skulle være nær forsiden af brættet, og 100uF strømforsyningens udjævningskondensatorer skulle være tæt på trinmotorens driverindgange. Efter at alt var lagt ud, begyndte jeg at føre spor.
Selvom Oshpark fremstiller printkort af høj kvalitet, er deres priser ret høje. Heldigvis laver PCBGOGO.com også gode printkort til en overkommelig pris. Jeg var i stand til at købe ti PCB'er for kun $ 5, frem for at betale $ 52 for kun tre boards fra Oshpark.com.
Trin 3: Montering
Samlet set var det ganske let at samle brættet. Jeg startede med at lodde de overflademonterede komponenter og derefter fastgøre tøndejackstikket og regulatoren. Dernæst lodde jeg i stifthovederne til komponenter som motordrivere og FireBeetle.
Efter lodning var afsluttet, testede jeg brættet for kortslutning ved at sætte et multimeter i modstandsmålingstilstand og se om modstanden var over en vis mængde. Brættet bestod, så jeg kunne derefter tilslutte hver komponent.
Trin 4: Oversigt over programmering
Jeg ville have, at koden til dette kort skulle være modulær og let at bruge. Dette betød at have flere klasser, der håndterer specifikke funktioner, sammen med en større indpakningsklasse, der kombinerer de mindre.
Trin 5: Inputs
Til håndtering af input oprettede jeg en klasse kaldet "Hub_Inputs", som lader hjemmeknudepunktet kommunikere med APDS9960 sammen med oprettelse og håndtering af knapper og kapacitive berøringsgrænseflader. Den indeholder følgende funktioner:
Opret knap
Hent hvis der trykkes på knappen
Få et antal tryk på knapper
Få den seneste gestus
Få kapacitiv berøringsværdi
Knapperne gemmes som en struktur med tre attributter: is_pressed, numberPresses og pin. Hver knap, når den er oprettet, er knyttet til en afbrydelse. Når denne afbrydelse udløses, sendes afbrydelsesrutinen (ISR) forbi denne knaps markør (angivet som hukommelsesadressen for den i knappearrayet) og øger antallet af tryk på knapper sammen med opdatering af den is_pressede boolske værdi.
Kapacitive berøringsværdier er meget enklere. De hentes ved at føre berøringsnålen til funktionen touchRead ().
Den seneste gestus opdateres ved at afstemme APDS9960 og kontrollere, om der er registreret en ny gestus, og hvis der er blevet registreret en sådan, skal du indstille den private gestusvariabel til denne gestus.
Trin 6: Outputs
Smart home -hub'en har flere måder at udsende oplysninger og skifte lys på. Der er stifter, der bryder I2C -bussen, så brugerne kan tilslutte en LCD. Hidtil understøttes kun en størrelse LCD: 20 x 4. Ved at bruge funktionen “hub.display_message ()” kan brugerne vise meddelelser på LCD -skærmen ved at sende et strengobjekt ind.
Der er også en pin -header til at forbinde en række analoge lysdioder. Ved at kalde funktionen “hub.set_led_strip (r, g, b)”, indstilles farven på strimlen.
De to trinmotorer drives af et par DRV8825 -driverkort. Jeg besluttede at bruge BasicStepper -biblioteket til at håndtere motorstyring. Når brættet startes op, oprettes to trinobjekter, og begge motorer aktiveres. Til trin i hver motor bruges funktionen “hub.step_motor (motor_id, trin)”, hvor motor -id enten er 0 eller 1.
Trin 7: Logning
Fordi kortet har flere sensorer, ønskede jeg muligheden for lokalt at indsamle og logge data.
For at begynde at logge oprettes en ny fil med “hub.create_log (filnavn, header)”, hvor header bruges til at lave en CSV -filrække, der angiver kolonner. Den første kolonne er altid et tidsstempel i år måned måned dag time: min: sek format. For at få tiden får funktionen hub.log_to_file () tiden med funktionen basic_functions.get_time (). Tm -tidsstrukturen sendes derefter ved henvisning til logfunktionen sammen med data og filnavn.
Trin 8: summer
Hvad nytter et IoT -board, hvis du ikke kan afspille musik? Derfor inkluderede jeg en summer med en funktion til at afspille lyde. Ved at kalde “hub.play_sounds (melodi, varighed, længde)” begynder at afspille en sang, hvor melodien er en række notefrekvenser, varighed som en række tonevarigheder og længde som antallet af noter.
Trin 9: Eksterne IoT -integrationer
Navet understøtter i øjeblikket IFTTT webhooks. De kan udløses ved at kalde funktionen Hub_IoT.publish_webhook (url, data, hændelse, nøgle) eller Hub_IoT.publish_webhook (url, data). Dette sender en POST -anmodning til den givne URL med disse data vedhæftet sammen med et eventnavn hvis det er nødvendigt. For at konfigurere et eksempel på IFTTT -integration skal du først oprette en ny applet. Vælg derefter den webhook -tjeneste, der udløses, når der modtages en anmodning.
Derefter kalder du begivenheden "high_temp" og gemmer den. Vælg derefter Gmail -tjenesten til delen "Det", og vælg "Send en e -mail til mig selv". I opsætningen af tjenesten skal du sætte "Temperaturen er høj!" for emnet, og derefter satte jeg "Målt temperatur på {{Værdi1}} til {{OccurredAt}}", som viser den målte temperatur og det tidspunkt, hvor hændelsen blev udløst.
Efter at have konfigureret det, skal du blot indsætte webhook -URL'en, der genereres af IFTTT, og sætte "high_temp" i hændelsesafsnittet.
Trin 10: Brug
For at bruge Smart Home Hub skal du blot kalde de nødvendige funktioner i enten setup () eller loop (). Jeg har allerede lagt eksempler på funktionsopkald, f.eks. At udskrive det aktuelle tidspunkt og kalde en IFTTT -begivenhed.
Trin 11: Fremtidsplaner
Smart Home Hub -systemet fungerer meget godt til simple hjemmeautomatisering og dataindsamlingsopgaver. Det kan bruges til næsten alt, såsom at indstille farven på en LED -strimmel, overvåge temperaturen i et værelse, kontrollere, om et lys er tændt, og en lang række andre potentielle projekter. I fremtiden vil jeg gerne udvide funktionaliteten endnu mere. Dette kan omfatte tilføjelse af en mere robust webserver, lokal filhosting og endda Bluetooth eller mqtt.
Anbefalede:
IoT -baseret smart havearbejde og smart landbrug ved hjælp af ESP32: 7 trin
IoT -baseret smart havearbejde og smart landbrug Brug af ESP32: Verden ændrer sig som tiden og så landbruget. I dag integrerer folk elektronik på alle områder, og landbruget er ingen undtagelse herfor. Denne sammensmeltning af elektronik i landbruget hjælper landmænd og mennesker, der administrerer haver. I denne
Sonoff B1 Firmware Home Automation Openhab Google Home: 3 trin
Sonoff B1 Firmware Home Automation Openhab Google Home: Jeg kan virkelig godt lide Tasmota -firmwaren til mine Sonoff -switches. Men a var ikke rigtig tilfreds med Tasmota-firmwaren på min Sonoff-B1. Det lykkedes ikke fuldt ud at integrere det i min Openhab og kontrollere det via Google Home. Derfor skrev jeg mit eget firma
Raspberry Pi-Arduino-SignalR Home Automation Hub: 11 trin (med billeder)
Raspberry Pi-Arduino-SignalR Home Automation Hub: Efter et par af mine optakt IBLE'er, der blev offentliggjort her og her, tager dette projekt det første skridt mod at opbygge en grundlæggende version af en funktionel Home Automation Hub. Jeg har brugt flere forskellige teknologier i en bestræbelser på at give mening om, hvordan jeg kan b
Interface Honeywell Vista -alarm med Smart Hub (blink/Smartthings): 7 trin (med billeder)
Interface Honeywell Vista Alarm Med Smart Hub (blink/Smartthings): Hej der! Jeg ville give en kort vejledning om, hvordan jeg fik mit Honeywell Vista alarmsystem integreret i min smarte hub. Jeg bruger Wink til denne vejledning, men dette burde fungere med enhver smart hub (Smartthings/Iris/osv.) Inden vi går i gang, går du
DIY Google Home med Bluetooth -højttaler på Raspberry Pi Zero Docking Hub: 7 trin (med billeder)
DIY Google Home med Bluetooth -højttaler på Raspberry Pi Zero Docking Hub: Vi har en instruktion om DIY Amazon Echo Alexa - Alexa Voice Assistant på Raspberry Pi Zero Docking Hub. Denne gang vil vi vise dig, hvordan du bygger et DIY Google Home. I denne instruks vil vi vise dig, hvordan du installerer og konfigurerer Google Assistant