Hvordan lage smart hjemmeautomatiseringssystem ved hjelp av ESP32-modul?
I denne moderne tiden vokser begrepet hjemmeautomatisering med stor hastighet. Smarte systemer blir installert på nesten alle steder. Smart Home Systems er et konsept der alle elektriske apparater eller enhetene styres med en enkelt fjernkontroll. I disse systemene er fjernkontrollen mesteparten av tiden en mobilapplikasjon. Som en Android-mobil er den vanligste blant folket, så er en Android-applikasjon det beste alternativet for å kontrollere alle disse enhetene.
Så i dette prosjektet skal vi koble noen av hjemmets elektriske apparater til relémodulen og kontrollere den via ESP32 Microcontroller. Vi vil lage en firebase sanntidsdatabase og koble den fra android-appen. Denne Android-appen vil sende dataene til skyen og deretter sendes den til mikrokontrolleren for å slå det elektriske apparatet på eller av. Det beste er at du kan ha full kontroll over å bytte apparater fra hvor som helst i verden. Du trenger bare en internettforbindelse for å betjene Android-applikasjonen.
Hvordan kontrollere husholdningsapparater via WiFi?
Hjemmeautomatiseringssystemer som allerede er tilgjengelige i markedet, er veldig kostbare. Vi kan bruke et ESP32-kort til å koble til forskjellige husholdningsapparater og kontrollere dem ved hjelp av en Android-app. Dette vil være veldig lavt og en effektiv måte å automatisere huset på. La oss nå gå et skritt videre og begynne å samle informasjon for å starte prosjektet.
Trinn 1: Samle komponentene
Den beste tilnærmingen for å starte et prosjekt er å lage en liste over komponenter og gå gjennom en kort studie av disse komponentene, fordi ingen vil holde seg midt i et prosjekt bare på grunn av en manglende komponent. En liste over komponenter som vi skal bruke i dette prosjektet er gitt nedenfor:
Trinn 2: Studere komponentene
Nå som vi vet sammendraget av dette prosjektet, la oss gå et skritt foran og gå gjennom en kort studie av hvordan hovedkomponentene vi skal bruke.
ESP32er et lavt strømforbruk og billig mikrokontrollerkort som har innebygd WiFi og en dual-mode Bluetooth-modul. Dette Microcontroller-kortet er opprettet og utviklet av Espressif Systems. Dette kortet har innebygde effektforsterkere, lave mottaksforsterkere, filtre og antennebrytere. Den drives av en Android-datakabel og kan gi opptil 3,3 V på utgangen. ESP32 kjører TCP / IP, full 802.11 b / g / n / e / I WLAN MAC-konvensjon, og spesielt Wi-Fi Direct. Dette innebærer at ESP 32 kan adressere en stor del av WiFi-rutere der ute når de brukes i stasjonsmodus (klient). På samme måte kan det lage et tilgangspunkt med full 802.11 b / g / n / e / I. ESP32 understøtter ikke bare den nyeste BLE Bluetooth 4.2, den styrker i tillegg flott Bluetooth. Det innebærer fundamentalt at den kan adressere gamle og nye Bluetooth-telefoner / -tabeller. Hvis du ikke har en ESP32-modul, kan du også bruke ESP8266 eller en Node MCU. Disse kortene kan brukes til å utføre den samme oppgaven hvis de er koblet til WiFi.
En relémodul er en bryterenhet. Det fungerer i to moduser, Normalt åpen (NO) og Normalt Stengt (NC). I NO-modus er kretsen alltid ødelagt med mindre du sender et HØYT signal til stafetten gjennom Arduino. NC-modus forverres omvendt. Kretsen er alltid komplett med mindre du slår på relémodulen. Forsikre deg om at du kobler den positive ledningen til det elektriske apparatet til relémodulen på den måten som er vist nedenfor.
Trinn 3: Blokkdiagram
I blokkdiagrammet ovenfor vises strømmen til dette prosjektet. Reléene er koblet til husets elektriske apparater eller enheter. En mobilapplikasjon vil sende en På eller AV kommandoen til databasen. Denne skyen er koblet til ESP32-mikrokontrollerkortet via WiFi. For å slå på den elektroniske enheten vil vi sende en "1" i databasen, og for å slå den av vil vi sende en "0" i databasen. Denne kommandoen blir deretter hentet av mikrokontrolleren fordi den også er koblet til databasen. Basert på denne 0 eller 1 vil mikrokontrolleren slå relémodulen på eller av, noe som til slutt vil resultere i bytte av elektriske apparater.
Så her, i denne artikkelen, vil jeg bruke to relémoduler for å vise deg hele prosedyren. Men du kan øke antall reléer og legge til den samme koden i programmet ditt hvis du vil kontrollere et større antall elektriske husholdningsapparater.
Trinn 4: Montering av komponentene
Nå som vi har en klar visjon om hva vi vil gjøre i dette prosjektet, la oss ikke kaste bort mer tid og begynne å montere komponentene.
- Ta et brødbrett og fest ESP32-mikrokontrolleren i den. Ta nå de to relémodulene og koble modulene Vcc og bakken til Vin og bakken på ESP32-mikrokontrollerkortet parallelt. Koble til in-pin av relémodulene til pin34 og pin35 på ESP32-kortet. Du vil se at reléene nå er slått på.
- Koble husholdningsapparater til relémodulen. Forsikre deg om at tilkoblingene dine samsvarer med tilkoblingene vist i figuren i trinn 2.
Nå som vi koblet til maskinvaredelen av systemet vårt. Vi vil utvikle en android-applikasjon som vil bli koblet til Firebase-databasen. Vi lager databasen og Android-applikasjonen i del 2 av denne artikkelen.
Trinn 5: Komme i gang med ESP32
Hvis du ikke har jobbet med Arduino IDE før, ikke bekymre deg fordi trinn for trinn for å konfigurere Arduino IDE vises nedenfor.
- Last ned den nyeste versjonen av Arduino IDE fra Arduino.
- Koble Arduino-kortet til PC-en og åpne Kontrollpanel. Klikk på Maskinvare og lyd.Nå åpen Enheter og skriver og finn porten som kortet ditt er koblet til. I mitt tilfelle er det COM14men det er forskjellig på forskjellige datamaskiner.
- Klikk på Fil og deretter på Innstillinger. Kopier følgende lenke i Tilleggsstyrelederens URL. “https://dl.espressif.com/dl/package_esp32_index.json ”
- Nå, for å bruke ESP32 med Arduino IDE, må vi importere spesielle biblioteker som lar oss brenne kode på ESP32 og bruke den. disse to bibliotekene er vedlagt i lenken nedenfor. For å inkludere biblioteket, gå til Skisse> Inkluder bibliotek> Legg til ZIP-bibliotek. En rute vises. Finn ZIP-mappen på datamaskinen din, og klikk OK for å inkludere mappene.
- Nå går du Skisse> Inkluder bibliotek> Administrer biblioteker.
- En meny åpnes. Skriv inn i søkefeltet Arduino JSON.En liste vises. Installere Arduino JSON av Benoit Blanchon.
- Klikk nå på Verktøy.En rullegardinmeny vises. Sett brettet til ESP Dev-modul.
- Klikk på Verktøy-menyen igjen og angi porten du observerte i kontrollpanelet før.
- Last nå opp koden som er vedlagt i lenken nedenfor, og klikk på opplastingsknappen for å brenne koden på ESP32-mikrokontrolleren.
Så når du laster opp koden, kan det oppstå en feil. Dette er den vanligste feilen som kan oppstå hvis du bruker en ny versjon av Arduino IDE og Arduino JSON. Følgende er feilene du kan se på skjermen.
I filen inkludert fra C: \ Users \ Pro \ Documents \ Arduino \ biblioteker \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, fra C: \ Users \ Pro \ Desktop \ smartHome \ code \ code.ino: 2: C : \ Users \ Pro \ Documents \ Arduino \ biblioteker \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: feil: StaticJsonBuffer er en klasse fra ArduinoJson 5. Se arduinojson.org/upgrade for å lære hvordan du oppgraderer programmet ditt til ArduinoJson versjon 6 StaticJsonBufferjsonBuffer; ^ I filen inkludert fra C: \ Users \ Pro \ Documents \ Arduino \ biblioteker \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, fra C: \ Users \ Pro \ Desktop \ smartHome \ code \ code.ino: 2: C: \ Users \ Pro \ Documents \ Arduino \ biblioteker \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: feil: StaticJsonBuffer er en klasse fra ArduinoJson 5. Se arduinojson.org/upgrade for å lære hvordan du oppgraderer programmet til ArduinoJson versjon 6 returnerer StaticJsonBuffer () .parseObject (_data); ^ Flere biblioteker ble funnet for "WiFi.h" Brukt: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ Packages \ esp32 \ hardware \ esp32 \ 1.0.2 \ biblioteker \ WiFi Ikke brukt: C: \ Program Files ( x86) \ Arduino \ biblioteker \ WiFi Bruker biblioteket WiFi i versjon 1.0 i mappen: C: \ Brukere \ Pro \ AppData \ Lokalt \ Arduino15 \ pakker \ esp32 \ maskinvare \ esp32 \ 1.0.2 \ biblioteker \ WiFi Bruker biblioteket IOXhop_FirebaseESP32-master i mappe: C: \ Users \ Pro \ Documents \ Arduino \ biblioteker \ IOXhop_FirebaseESP32-master (eldre) Bruker biblioteket HTTPClient i versjon 1.2 i mappen: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ Packages \ esp32 \ hardware \ esp32 \ 1.0.2 \ biblioteker \ HTTPClient ved hjelp av bibliotek WiFiClientSecure i versjon 1.0 i mappe: C: \ Brukere \ Pro \ AppData \ Local \ Arduino15 \ pakker \ esp32 \ hardware \ esp32 \ 1.0.2 \ biblioteker \ WiFiClientSecure Ved hjelp av bibliotek ArduinoJson på versjon 6.12.0 i mappe: C: \ Users \ Pro \ Documents \ Arduino \ libraries \ ArduinoJson exit status 1 Feil under kompilering for ESP32 Dev-modul.
Det er ingenting å bekymre seg for, fordi vi kan eliminere disse feilene ved å følge noen enkle trinn. Disse feilene oppstår fordi den nye versjonen av Arduino JSON har en annen klasse i stedet for StaticJsonBuffer.Dette er klassen til JSON 5. Så vi kan ganske enkelt eliminere denne feilen ved å nedgradere versjonen av Arduino JSON av vår Arduino IDE. Bare gå til Skisse> Inkluder bibliotek> Administrer biblioteker.Søk etterArduino JSON av Benoit Blanchonsom du har installert før. Avinstaller den først, og sett deretter versjonen til 5.13.5. Nå som vi har satt en gammel versjon av Arduino JSON, installerer du den igjen og kompilerer koden på nytt. Denne gangen vil koden din kompileres.
Klikk her for å laste ned koden.
Trinn 6: Forstå koden
Koden til dette prosjektet er veldig enkel og godt kommentert. Men likevel blir koden kort forklart nedenfor.
1. I starten er biblioteker inkludert, slik at ESP32-kortet kan kobles til den lokale WiFi-tilkoblingen hjemme eller på kontoret. Etter dette er en lenke til ditt firebase-prosjekt og autentiseringen av ditt firebase-prosjekt definert. Deretter defineres navnet og passordet til din lokale wifi-tilkobling slik at ESP32 kan kobles til Wifi. Noen pinner på ESP32 er definert for å være koblet til relémodulene. og til slutt erklæres en variabel som vil lagre noen midlertidige data som kommer fra firebase-skyen.
#inkludere// inkluderer bibliotek for å koble til den lokale Wifi-tilkoblingen # inkluderer // Inkluder bibliotek for å koble til Firebase-databasen #define FIREBASE_HOST "coma-patient.firebaseio.com" // inkludere lenken til ditt firebase-prosjekt #define FIREBASE_AUTH "UrzlDZXMBNRhNdc5i73DRW10KFEuw8ZPEAN9lmdf" // Inkluder godkjenning av projektet "// navnet på WiFi-tilkoblingen til hjemmet eller kontoret ditt #definer WIFI_PASSWORD" abcd "// passord til WiFi-tilkoblingen til hjemmet eller kontoret int r1 = 34; // pin for å koble relé 1 int r2 = 35; // pin for å koble relé 2 int temp; // variabe å bære data
2. ugyldig oppsett ()er en funksjon der vi initialiserer INPUT- eller OUTPUT-pinnene. Denne funksjonen angir også overføringshastigheten ved å bruke Serial.begin () kommando. Baud Rate er kommunikasjonshastigheten til mikrokontrolleren. Noen kodelinjer er lagt til her for å koble ESP32 til den lokale wifi-tilkoblingen. Styret vil prøve å koble til den lokale wifi-tilkoblingen og vil skrive ut "tilkobling". i seriell skjerm. Det blir skrevet ut "Connected" når tilkoblingen er opprettet. Så for å overvåke dette er det bedre å åpne den serielle skjermen og sjekke dens staus der.
ugyldig oppsett () {Serial.begin (115200); // stille inn overføringshastighet // koble til wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ("tilkobling"); mens (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); forsinkelse (500); } Serial.println (); Serial.print ("tilkoblet:"); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }
3. ugyldig sløyfe ()er en funksjon som går gjentatte ganger i en løkke. I denne sløyfen skriver vi en kode som forteller mikrokontrollerkortet hvilke oppgaver som skal utføres og hvordan. Vi har hentet dataene mot lys og ACfra databasen og lagret i de to midlertidige variablene. Deretter brukes fire betingelser for å bytte de to apparatene i henhold til hentet 0 eller 1 fra databasen.
void loop () {// get value temp1 = Serial.println (Firebase.getFloat ("light")); // få verdien for switcching av lys temp2 = Serial.println (Firebase.getFloat ("AC")); // få verdien for å bytte vifteforsinkelse (1000); hvis (temp1 == 1 && temp2 == 1) {// For å slå på lys og vifte digitalWrite (r1, HIGH); digitalWrite (r2, HIGH); } if (temp1 == 0 && temp2 == 1) {// For å slå på viften og slå av lys digitalWrite (r1, LOW); digitalWrite (r2, HIGH); } if (temp1 == 1 && temp2 == 0) {// For å slå av viften og slå på lys digitalWrite (r1, HIGH); digitalWrite (r2, LOW); } hvis (temp1 == 0 && temp2 == 0) {// For å slå av viften og slå av lys digitalWrite (r1, LOW); digitalWrite (r2, LOW); }}
Dette var del en av “Hvordan lage Smart Home System ved hjelp av ESP32?”. Du kan legge til flere relémoduler hvis du vil kontrollere noen flere husholdningsapparater. Det eneste du trenger å gjøre er å lese data fra firebasen og legge til noen flere betingelser for å bytte. I neste artikkel vil jeg forklare hvordan du utvikler en Android-applikasjon og Firebase-database. Jeg vil forklare trinnvis fremgangsmåte for å koble android-appen til firebase og sende data til den.
For å gå til neste opplæringKlikk her