Indholdsfortegnelse:

ESP32 Smart Home Hub: 11 trin
ESP32 Smart Home Hub: 11 trin

Video: ESP32 Smart Home Hub: 11 trin

Video: ESP32 Smart Home Hub: 11 trin
Video: ESP32 HomeKit Tutorial | HomeSpan 2024, September
Anonim
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub

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

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

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

montage
montage
montage
montage
montage
montage

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

Indgange
Indgange
Indgange
Indgange
Indgange
Indgange

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

Udgange
Udgange
Udgange
Udgange
Udgange
Udgange

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

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

Summer
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

Eksterne IoT -integrationer
Eksterne IoT -integrationer
Eksterne IoT -integrationer
Eksterne IoT -integrationer
Eksterne IoT -integrationer
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

Anvendelse
Anvendelse
Anvendelse
Anvendelse
Anvendelse
Anvendelse
Anvendelse
Anvendelse

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: