Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Funksjoner
- Trinn 2: PCB
- Trinn 3: Montering
- Trinn 4: Oversikt over programmering
- Trinn 5: Innganger
- Trinn 6: Utganger
- Trinn 7: Logging
- Trinn 8: summer
- Trinn 9: Eksterne IoT -integrasjoner
- Trinn 10: Bruk
- Trinn 11: Fremtidsplaner
Video: ESP32 Smart Home Hub: 11 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Å lage et system som kan håndtere store mengder sensordata, ha flere utganger og koble til internett eller et lokalt nettverk tar lang tid og store anstrengelser. Altfor ofte sliter folk som ønsker å lage sine egne smarte hjemmenettverk med å kunne finne og sette sammen tilpassede komponenter til et større system. Derfor ønsket jeg å lage en modulær og funksjonsrik plattform som ville gjøre det enkelt å konstruere IoT-tilkoblede sensorer og utganger.
Takk til DFRobot og PCBGOGO.com for sponsing av dette prosjektet!
For mer grundig informasjon, besøk Github-repoen:
Rekvisita
-
DFRobot ESP32 FireBeetle
www.dfrobot.com/product-1590.html
-
DHT22 sensor
www.dfrobot.com/product-1102.html
-
APDS9960 lys- og bevegelsessensor
www.dfrobot.com/product-1361.html
-
I2C 20x4 LCD -modul
www.dfrobot.com/product-590.html
-
Analog RGB LED -stripe
www.dfrobot.com/product-1829.html
- DRV8825 trinnmotordrivere
- SD -kortleser
- NEMA17 Stepper Motors
Trinn 1: Funksjoner
Hovedtrekk ved dette kortet er et ESP32 FireBeetle Development Board som håndterer all kommunikasjon, sensoravlesninger og utganger. Det er to trinnmotordrivere som styrer to bipolare trinnmotorer.
I2C -bussen er også brutt ut for bruk med komponenter som APDS9960 eller en LCD. For å lese temperaturen, er det pinner ødelagt for å koble til en DHT22 -sensor, samt en fotoresistor for å lese omgivelseslysnivåer.
Det er støtte for en analog lysstrimmel på brettet, som har tre MOSFET -er på for å drive LED -lysene.
Trinn 2: PCB
Jeg begynte PCB -designprosessen ved først å lage en skjema i Eagle. Siden jeg ikke klarte å finne et ESP32 FireBeetle -bibliotek, brukte jeg bare to pinners 1x18 pinnehoder i stedet. Deretter opprettet jeg en strømstyringskrets som kunne godta 12v gjennom en DC fatkontakt og konvertere den til 5v for å drive sensorene og ESP32.
Etter at skjematikken var fullført, gikk jeg over til å designe selve kretskortet.
Jeg visste at DC -fatpluggen måtte være nær fronten av brettet, og 100uF strømforsyningens utjevningskondensatorer måtte være i nærheten av trinnmotorens driverinnganger. Etter at alt var lagt ut begynte jeg å rute spor.
Selv om Oshpark lager PCB av høy kvalitet, er prisene ganske høye. Heldigvis lager PCBGOGO.com også gode PCB -er til en rimelig pris. Jeg klarte å kjøpe ti PCB for bare $ 5, i stedet for å betale $ 52 for bare tre brett fra Oshpark.com.
Trinn 3: Montering
Totalt sett var det ganske enkelt å montere brettet. Jeg begynte med å lodde de overflatemonterte komponentene og deretter feste fatkontakten og regulatoren. Deretter loddet jeg inn pinnehodene for komponenter som motordrivere og FireBeetle.
Etter at lodding var fullført, testet jeg brettet for kortslutning ved å sette et multimeter i motstandsmåling og se om motstanden var over en viss mengde. Brettet passerte, så jeg kunne deretter koble til hver komponent.
Trinn 4: Oversikt over programmering
Jeg ønsket at koden for dette kortet skulle være modulær og enkel å bruke. Dette betydde å ha flere klasser som håndterer spesifikke funksjoner, sammen med en større innpakningsklasse som kombinerer de mindre.
Trinn 5: Innganger
For håndtering av innganger opprettet jeg en klasse kalt "Hub_Inputs", som lar hjemmeknutepunktet kommunisere med APDS9960, sammen med å lage og administrere knapper og kapasitive berøringsgrensesnitt. Den inneholder følgende funksjoner:
Opprett -knapp
Få hvis du trykker på knappen
Få antall knappetrykk
Få siste gest
Få kapasitiv berøringsverdi
Knappene lagres som en struktur, med tre attributter: is_pressed, numberPresses og pin. Hver knapp, når den er opprettet, er knyttet til et avbrudd. Når det avbruddet utløses, blir Interrupt Service Routine (ISR) passert denne knappens peker (gitt som minneadressen til det i knappearrayet) og øker antallet knappetrykk, sammen med oppdatering av is_pressed boolsk verdi.
Kapasitive berøringsverdier er mye enklere. De hentes ved å føre berøringsnålen til touchRead () -funksjonen.
Den siste gesten oppdateres ved å avstemme APDS9960 og kontrollere om noen ny gest er blitt oppdaget, og hvis en har blitt oppdaget, setter du den private gestvariabelen til den bevegelsen.
Trinn 6: Utganger
Smart hjemme -huben har flere måter å sende informasjon og bytte lys på. Det er pinner som bryter ut I2C -bussen, slik at brukerne kan koble til en LCD. Hittil støttes bare én størrelse på LCD -skjermen: 20 x 4. Ved å bruke funksjonen “hub.display_message ()” kan brukere vise meldinger på LCD -skjermen ved å sende inn et strengobjekt.
Det er også en pin header for å koble en streng med analoge lysdioder. Ved å kalle funksjonen “hub.set_led_strip (r, g, b)”, angir fargen på stripen.
De to trinnmotorene drives med et par DRV8825 -driverkort. Jeg bestemte meg for å bruke BasicStepper -biblioteket til å håndtere motorstyring. Når brettet startes opp, opprettes to trinnobjekter, og begge motorene aktiveres. For å trinnvise hver motor brukes funksjonen “hub.step_motor (motor_id, trinn)”, der motor -ID er enten 0 eller 1.
Trinn 7: Logging
Fordi brettet har flere sensorer, ønsket jeg muligheten til lokalt å samle inn og logge data.
For å begynne å logge, opprettes en ny fil med “hub.create_log (filnavn, topptekst)”, der header brukes til å lage en CSV -filrad som angir kolonner. Den første kolonnen er alltid et tidsstempel i År Måned Dagtime: Min: Sek -format. For å få tid, får hub.log_to_file () -funksjonen tiden med funksjonen basic_functions.get_time (). Tm -tidsstrukturen sendes deretter ved referanse til loggfunksjonen, sammen med data og filnavn.
Trinn 8: summer
Hva nytter et IoT -bord hvis du ikke kan spille musikk? Derfor inkluderte jeg en summer med en funksjon for å spille lyder. Å kalle “hub.play_sounds (melodi, varighet, lengde)” begynner å spille en sang, med melodi som en rekke notefrekvenser, varighet som en rekke notenes varighet og lengde som antall notater.
Trinn 9: Eksterne IoT -integrasjoner
Navet støtter for tiden IFTTT webhooks. De kan utløses ved å ringe funksjonen Hub_IoT.publish_webhook (url, data, hendelse, nøkkel) eller Hub_IoT.publish_webhook (url, data). Dette sender en POST -forespørsel til den gitte URL -en med dataene vedlagt, sammen med et hendelsesnavn om nødvendig. For å sette opp et eksempel på IFTTT -integrasjon, må du først opprette en ny applet. Velg deretter webhook -tjenesten som utløses når en forespørsel mottas.
Deretter kaller du hendelsen "høy_temp" og lagrer den. Velg deretter Gmail -tjenesten for delen "Den", og velg "Send en e -post til meg selv". I oppsettet for tjenesten, sett "Temperaturen er høy!" for motivet, og deretter satte jeg "Målt temperatur på {{Value1}} på {{OccuredAt}}", som viser den målte temperaturen og tidspunktet da hendelsen ble utløst.
Etter at du har konfigurert det, limer du bare inn webhook -URL -en som er generert av IFTTT, og setter "high_temp" i hendelsesdelen.
Trinn 10: Bruk
For å bruke Smart Home Hub, bare ring de nødvendige funksjonene i enten setup () eller loop (). Jeg har allerede lagt eksempel på funksjonsanrop, for eksempel å skrive ut nåværende tidspunkt og ringe en IFTTT -hendelse.
Trinn 11: Fremtidsplaner
Smart Home Hub -systemet fungerer veldig bra for enkle hjemmeautomatisering og datainnsamling. Den kan brukes til nesten alt, for eksempel å sette fargen på en LED -stripe, overvåke temperaturen i et rom, kontrollere om et lys tennes og en rekke andre potensielle prosjekter. I fremtiden vil jeg utvide funksjonaliteten enda mer. Dette kan inkludere å legge til en mer robust webserver, lokal filvert og til og med Bluetooth eller mqtt.
Anbefalt:
IoT -basert smart hagearbeid og smart landbruk ved bruk av ESP32: 7 trinn
IoT -basert smart hagearbeid og smart landbruk Ved hjelp av ESP32: Verden endrer seg som tid og så landbruk. I dag integrerer folk elektronikk på alle felt, og landbruk er ikke unntak for dette. Denne sammenslåingen av elektronikk i landbruket hjelper bønder og mennesker som forvalter hager. I denne
Sonoff B1 Firmware Home Automation Openhab Google Home: 3 trinn
Sonoff B1 Firmware Home Automation Openhab Google Home: Jeg liker Tasmota -fastvaren for Sonoff -switchene mine. Men a var egentlig ikke fornøyd med Tasmota-fastvaren på min Sonoff-B1. Jeg lyktes ikke fullt ut med å integrere det i Openhab og kontrollere det via Google Home. Derfor skrev jeg mitt eget firma
Raspberry Pi-Arduino-SignalR Home Automation Hub: 11 trinn (med bilder)
The Raspberry Pi-Arduino-SignalR Home Automation Hub: Etter et par av mine forspill IBLE-er publisert her og her, tar dette prosjektet det første skrittet mot å bygge en grunnleggende versjon av en funksjonell Home Automation Hub. Jeg har brukt flere forskjellige teknologier i en innsats for å forstå hvordan jeg kan b
Grensesnitt Honeywell Vista Alarm With Smart Hub (Wink/Smartthings): 7 trinn (med bilder)
Grensesnitt Honeywell Vista Alarm With Smart Hub (Wink/Smartthings): Hei! Jeg ønsket å gi en kort opplæring om hvordan jeg fikk mitt Honeywell Vista alarmsystem integrert i min smarte hub. Jeg bruker Wink for denne opplæringen, men dette bør fungere med alle smarte knutepunkter (Smartthings/Iris/etc.) Før vi begynner, er du i gang
DIY Google Home med Bluetooth -høyttaler på Raspberry Pi Zero Docking Hub: 7 trinn (med bilder)
DIY Google Home med Bluetooth -høyttaler på Raspberry Pi Zero Docking Hub: Vi har en instruks om DIY Amazon Echo Alexa - Alexa Voice Assistant på Raspberry Pi Zero Docking Hub. Denne gangen vil vi vise deg hvordan du bygger et DIY Google Home. I denne instruksjonen viser vi deg hvordan du installerer og konfigurerer Google Assistant