Hoe maak je een Smart Home Automation-systeem met de ESP32-module?
In deze moderne tijd groeit het concept van domotica met grote snelheid. Op bijna elke plek worden slimme systemen geïnstalleerd. Smart Home Systems is een concept waarbij alle elektrische apparaten of apparaten worden bediend met één afstandsbediening. In deze systemen is de afstandsbediening meestal een mobiele applicatie. Omdat een Android-mobiel het meest voorkomt onder de mensen, is een Android-applicatie de beste optie om al deze apparaten te bedienen.
Dus in dit project gaan we enkele van de elektrische apparaten van het huis aansluiten op de relaismodule en deze besturen via ESP32 Microcontroller. We zullen een firebase realtime database maken en deze verbinden vanuit de Android-app. Deze Android-app stuurt de gegevens naar de cloud en vervolgens naar de microcontroller om het elektrische apparaat in of uit te schakelen. Het beste is dat u de volledige controle heeft over het schakelen van uw apparaten, waar ook ter wereld. Je hebt alleen een internetverbinding nodig om de Android-applicatie te bedienen.
Hoe huishoudelijke apparaten bedienen via wifi?
Domotica-systemen die al op de markt verkrijgbaar zijn, zijn erg kostbaar. We kunnen een ESP32-kaart gebruiken om verschillende huishoudelijke apparaten aan te sluiten en ze te bedienen met een Android-app. Dit zal erg goedkoop zijn en een efficiënte manier om het huis te automatiseren. Laten we nu een stap verder gaan en beginnen met het verzamelen van informatie om het project te starten.
Stap 1: De componenten verzamelen
De beste benadering om een project te starten, is door een lijst met componenten te maken en deze componenten kort te bestuderen, omdat niemand midden in een project wil blijven staan alleen omdat er een component ontbreekt. Een lijst met componenten die we in dit project gaan gebruiken, wordt hieronder gegeven:
Stap 2: de componenten bestuderen
Nu we de samenvatting van dit project kennen, laten we een stap verder gaan en een korte studie doornemen van de werking van de belangrijkste componenten die we gaan gebruiken.
ESP32is een low-power en goedkope microcontroller-kaart met ingebouwde WiFi en een dual-mode Bluetooth-module. Dit Microcontroller-bord is gemaakt en ontwikkeld door Espressif-systemen. Dit bord heeft ingebouwde eindversterkers, lage mooie ontvangstversterkers, filters en antenneschakelaars. Het wordt aangedreven door een Android-datakabel en kan tot 3,3 V aan de uitgang leveren. ESP32 voert TCP / IP, volledige 802.11 b / g / n / e / I WLAN MAC-conventie en Wi-Fi Direct in het bijzonder uit. Dit houdt in dat ESP 32 een groot deel van de WiFi-routers kan aanspreken wanneer deze wordt gebruikt in station (client) -modus. Evenzo kan het een toegangspunt maken met volledige 802.11 b / g / n / e / I. ESP32 ondersteunt niet alleen de meest recente BLE Bluetooth 4.2, maar ondersteunt ook geweldige Bluetooth. Het impliceert fundamenteel dat het oude en nieuwe Bluetooth-telefoons / -tabellen kan adresseren. Als u geen ESP32-module heeft, kunt u ook ESP8266 of een Node MCU gebruiken. Deze borden kunnen worden gebruikt om dezelfde taak uit te voeren als ze zijn verbonden met wifi.
Een relaismodule is een schakelapparaat. Het werkt in twee modi, Normaal open (NO) en Normaal gesproken Gesloten (NC). In de NO-modus is het circuit altijd verbroken, tenzij je via Arduino een HOOG signaal naar het relais stuurt. De NC-modus werkt andersom. Het circuit is altijd compleet, tenzij u de relaismodule inschakelt. Zorg ervoor dat u de positieve draad van uw elektrisch apparaat op de relaismodule aansluit op de hieronder weergegeven manier.
Stap 3: Blokschema
In het bovenstaande blokschema wordt de stroom van dit project weergegeven. De relais zijn verbonden met de elektrische apparaten of apparaten in huis. Een mobiele applicatie stuurt een Aan of UIT commando naar de database. Deze cloud is via wifi verbonden met het ESP32-microcontrollerbord. Om het elektronische apparaat in te schakelen, sturen we een "1" in de database en om het uit te schakelen, sturen we een "0" in de database. Deze opdracht wordt vervolgens opgehaald door de microcontroller omdat deze ook is verbonden met de database. Op basis van deze 0 of 1 schakelt de microcontroller de relaismodule aan of uit wat uiteindelijk zal resulteren in het schakelen van de elektrische apparaten.
Dus hier, in dit artikel, zal ik twee relaismodules gebruiken om u de hele procedure te laten zien. Maar u kunt het aantal relais verhogen en hetzelfde stuk code in uw programma toevoegen als u een groter aantal elektrische huishoudelijke apparaten wilt bedienen.
Stap 4: Montage van de componenten
Nu we een duidelijke visie hebben van wat we willen doen in dit project, laten we geen tijd meer verspillen en beginnen met het monteren van de componenten.
- Neem een breadboard en bevestig de ESP32-microcontroller erin. Neem nu de twee relaismodules en verbind de Vcc en de aarde van de modules parallel met de Vin en de aarde van de ESP32-microcontroller-kaart. Verbind de in-pin van de relaismodules aan de pin34 en pin35 van de ESP32-kaart. U zult zien dat de relais nu zijn ingeschakeld.
- Sluit de huishoudelijke apparaten aan op de relaismodule. Zorg ervoor dat uw aansluitingen overeenkomen met de aansluitingen die worden weergegeven in de afbeelding in stap 2.
Nu terwijl we het hardwaregedeelte van ons systeem hebben aangesloten. We zullen een Android-applicatie ontwikkelen die zal worden verbonden met de firebase-database. We zullen de database en de Android-applicatie maken in deel 2 van dit artikel.
Stap 5: Aan de slag met ESP32
Als u nog niet eerder aan Arduino IDE hebt gewerkt, hoeft u zich geen zorgen te maken, want hieronder wordt stap voor stap weergegeven hoe u de Arduino IDE instelt.
- Download de nieuwste versie van Arduino IDE van Arduino.
- Verbind je Arduino-bord met de pc en open het Configuratiescherm. Klik op Hardware en geluid.Nu open Apparaten en printer en zoek de poort waarop uw bord is aangesloten. In mijn geval wel COM14maar het is anders op verschillende computers.
- Klik op Bestand en vervolgens op Voorkeuren. Kopieer de volgende link in het URL van aanvullende Board Manager. "https://dl.espressif.com/dl/package_esp32_index.json ”
- Om ESP32 met Arduino IDE te gebruiken, moeten we speciale bibliotheken importeren waarmee we code op ESP32 kunnen branden en gebruiken. deze twee bibliotheken zijn bijgevoegd in de onderstaande link. Ga naar om de bibliotheek op te nemen Schets> Bibliotheek opnemen> ZIP-bibliotheek toevoegen. Er verschijnt een vak. Zoek de ZIP-map op uw computer en klik op OK om de mappen op te nemen.
- Ga nu naar Schets> Bibliotheek opnemen> Bibliotheken beheren.
- Er wordt een menu geopend. Typ in de zoekbalk Arduino JSON.Er verschijnt een lijst. Installeren Arduino JSON door Benoit Blanchon.
- Klik nu op het Hulpmiddelen.Er verschijnt een vervolgkeuzemenu. Zet het bord op ESP-ontwikkelmodule.
- Klik opnieuw op het menu Tool en stel de poort in die u eerder in het configuratiescherm hebt waargenomen.
- Upload nu de code die is bijgevoegd in de onderstaande link en klik op de uploadknop om de code op de ESP32-microcontroller te branden.
Dus wanneer u de code uploadt, kan er een fout optreden. Dit is de meest voorkomende fout die kan optreden als u een nieuwe versie van de Arduino IDE en de Arduino JSON gebruikt. Hieronder volgen de fouten die u mogelijk op het scherm ziet.
In bestand opgenomen uit C: \ Users \ Pro \ Documents \ Arduino \ libraries \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, vanuit C: \ Users \ Pro \ Desktop \ smartHome \ code \ code.ino: 2: C : \ Users \ Pro \ Documents \ Arduino \ bibliotheken \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: fout: StaticJsonBuffer is een klasse van ArduinoJson 5. Zie arduinojson.org/upgrade om te zien hoe u uw programma kunt upgraden naar ArduinoJson versie 6 StaticJsonBufferjsonBuffer; ^ In bestand opgenomen in C: \ Users \ Pro \ Documents \ Arduino \ libraries \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, vanuit C: \ Users \ Pro \ Desktop \ smartHome \ code \ code.ino: 2: C: \ Users \ Pro \ Documents \ Arduino \ libraries \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: fout: StaticJsonBuffer is een klasse van ArduinoJson 5. Zie arduinojson.org/upgrade om te zien hoe u uw programma kunt upgraden naar ArduinoJson versie 6 retourneert StaticJsonBuffer () .parseObject (_data); ^ Er zijn meerdere bibliotheken gevonden voor "WiFi.h" Gebruikt: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ pakketten \ esp32 \ hardware \ esp32 \ 1.0.2 \ bibliotheken \ WiFi Niet gebruikt: C: \ Program Files ( x86) \ Arduino \ bibliotheken \ WiFi Bibliotheek-WiFi gebruiken op versie 1.0 in map: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ pakketten \ esp32 \ hardware \ esp32 \ 1.0.2 \ bibliotheken \ WiFi Bibliotheek gebruiken IOXhop_FirebaseESP32-master in map: C: \ Users \ Pro \ Documents \ Arduino \ libraries \ IOXhop_FirebaseESP32-master (legacy) Met behulp van bibliotheek HTTPClient op versie 1.2 in map: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ packages \ esp32 \ hardware \ esp32 \ 1.0.2 \ bibliotheken \ HTTPClient Bibliotheek WiFiClientSecure gebruiken op versie 1.0 in map: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ pakketten \ esp32 \ hardware \ esp32 \ 1.0.2 \ bibliotheken \ WiFiClientSecure Bibliotheek ArduinoJson gebruiken op versie 6.12.0 in map: C: \ Users \ Pro \ Documents \ Arduino \ libraries \ ArduinoJson exit status 1 Fout bij compileren voor board ESP32 Dev Module.
U hoeft zich nergens zorgen over te maken, want we kunnen deze fouten verhelpen door enkele eenvoudige stappen te volgen. Deze fouten ontstaan omdat de nieuwe versie van Arduino JSON een andere klasse heeft in plaats van StaticJsonBuffer.Dit is de klasse van JSON 5. We kunnen deze fout dus eenvoudig elimineren door de versie van Arduino JSON van onze Arduino IDE te downgraden. Ga gewoon naar Schets> Bibliotheek opnemen> Bibliotheken beheren.Zoeken naarArduino JSON door Benoit Blanchondie je eerder hebt geïnstalleerd. Verwijder het eerst en stel vervolgens de versie in op 5.13.5. Nu we een oude versie van Arduino JSON hebben ingesteld, installeer je deze opnieuw en compileer je de code opnieuw. Deze keer wordt je code succesvol gecompileerd.
Klik hier om de code te downloaden.
Stap 6: De code begrijpen
De code van dit project is heel eenvoudig en goed becommentarieerd. Maar toch wordt de code hieronder kort uitgelegd.
1. In het begin worden bibliotheken meegeleverd zodat het ESP32-bord kan worden aangesloten op de lokale wifi-verbinding in huis of op kantoor. Hierna wordt een link naar uw firebase-project en de authenticatie van uw firebase-project gedefinieerd. Vervolgens worden de naam en het wachtwoord van uw lokale wifi-verbinding gedefinieerd, zodat de ESP32 kan worden verbonden met de wifi. Sommige pinnen van ESP32 zijn gedefinieerd om te worden aangesloten op de relaismodules. en eindelijk wordt een variabele gedeclareerd die een aantal tijdelijke gegevens opslaat die afkomstig zijn van de firebase-cloud.
#inclusief// include bibliotheek om verbinding te maken met de lokale wifi-verbinding #include // Voeg bibliotheek toe om verbinding te maken met Firebase-databse #define FIREBASE_HOST "coma-patient.firebaseio.com" // Voeg de link van uw firebase-project toe #define FIREBASE_AUTH "UrzlDZXMBNRhNdc5i73DRW10KFEuw8ZPEAN9lmdf" // Voeg de authenticatie van uw firebase_SSID #cd_SSID "toe "// de naam van de WiFi-verbinding van uw huis of kantoor #define WIFI_PASSWORD" abcd "// wachtwoord van de WiFi-verbinding van uw huis of kantoor int r1 = 34; // pin om relais 1 int r2 = 35 aan te sluiten; // pin om relais 2 int temp te verbinden; // variabe om gegevens te dragen
2. leegte setup ()is een functie waarin we de INPUT- of OUTPUT-pinnen initialiseren. Deze functie stelt ook de baudrate in met Serial.begin () opdracht. Baudrate is de communicatiesnelheid van de microcontroller. Hier worden enkele regels code toegevoegd om de ESP32 te verbinden met de lokale wifi-verbinding. Het bord zal proberen verbinding te maken met de lokale wifi-verbinding en zal "verbinding" afdrukken. in de seriële monitor. Het zal "Verbonden" afdrukken wanneer de verbinding tot stand is gebracht. Dus om dit te controleren, is het beter om de seriële monitor te openen en de status daar te controleren.
leegte setup () {Serial.begin (115200); // de baudrate instellen // verbinding maken met wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ("verbinden"); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); vertraging (500); } Serial.println (); Serial.print ("verbonden:"); Serial.println (WiFi.localIP ()); Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); }
3. leegte lus ()is een functie die herhaaldelijk in een lus wordt uitgevoerd. In deze lus schrijven we een code die de microcontroller-kaart vertelt welke taken moeten worden uitgevoerd en hoe. We hebben de gegevens opgehaald tegen licht en ACuit de database en opgeslagen in de twee tijdelijke variabelen. Vervolgens worden vier voorwaarden toegepast om de twee apparaten te schakelen volgens de opgehaalde 0 of 1 uit de database.
void loop () {// get value temp1 = Serial.println (Firebase.getFloat ("light")); // verkrijg de waarde voor het omschakelen van het licht temp2 = Serial.println (Firebase.getFloat ("AC")); // verkrijg de waarde voor het omschakelen van ventilatorvertraging (1000); if (temp1 == 1 && temp2 == 1) {// Om het licht aan te zetten en de ventilator digitalWrite (r1, HIGH); digitalWrite (r2, HIGH); } if (temp1 == 0 && temp2 == 1) {// Om de ventilator aan te zetten en het licht uit te schakelen digitalWrite (r1, LOW); digitalWrite (r2, HIGH); } if (temp1 == 1 && temp2 == 0) {// Om de ventilator uit te zetten en het licht aan te zetten digitalWrite (r1, HIGH); digitalWrite (r2, LOW); } if (temp1 == 0 && temp2 == 0) {// Om de ventilator uit te zetten en het licht uit te schakelen digitalWrite (r1, LOW); digitalWrite(r2,LOW); }}
Dit was deel een van de "Hoe maak je een Smart Home-systeem met ESP32?". U kunt meer relaismodules toevoegen als u nog meer huishoudelijke apparaten wilt bedienen, het enige dat u hoeft te doen, is de gegevens van de firebase uitlezen en wat meer voorwaarden voor het schakelen toevoegen. In het volgende artikel zal ik uitleggen hoe je een Android-applicatie en Firebase-database ontwikkelt. Ik zal de stapsgewijze procedure uitleggen om de Android-app met de firebase te verbinden en er gegevens naartoe te sturen.
Om naar de volgende tutorial te gaanKlik hier