Kaip sukurti protingą namų automatikos sistemą naudojant ESP32 modulį?

Šioje šiuolaikinėje eroje namų automatikos samprata auga labai sparčiai. Išmaniosios sistemos diegiamos beveik visose vietose. „Smart Home Systems“ - tai koncepcija, kai visi elektros prietaisai arba prietaisai valdomi naudojant vieną nuotolinio valdymo pultą. Šiose sistemose nuotolinio valdymo pultas dažniausiai yra mobilioji programa. Kadangi „Android“ mobilusis telefonas yra labiausiai paplitęs tarp žmonių, todėl „Android“ programa yra geriausias būdas valdyti visus šiuos įrenginius.



Namų automatika

Taigi šiame projekte ketiname prijungti kai kuriuos namų elektrinius prietaisus prie „Relay“ modulio ir valdyti per „ESP32“ mikrovaldiklį. Mes sukursime „Firebase“ realaus laiko duomenų bazę ir sujungsime ją iš „Android“ programos. Ši „Android“ programa nusiųs duomenis į debesį, tada jie bus nusiųsti į mikrovaldiklį, kad įjungtų ar išjungtų elektros prietaisą. Geriausia tai, kad jūs galite visiškai kontroliuoti savo prietaisų perjungimą iš bet kurios pasaulio vietos. Norint valdyti „Android“ programą, jums tiesiog reikia interneto ryšio.



Kaip valdyti buitinę techniką per „WiFi“?

Namų automatikos sistemos, kurios jau yra rinkoje, yra labai brangios. ESP32 plokštę galime naudoti norėdami sujungti skirtingus buitinius prietaisus ir valdyti juos naudodami „Android“ programą. Tai bus labai maža kaina ir efektyvus būdas automatizuoti namą. Dabar paženkime žingsnį į priekį ir pradėkime rinkti informaciją, kad pradėtume projektą.



1 veiksmas: rinkite komponentus

Geriausias būdas pradėti bet kokį projektą yra sudaryti komponentų sąrašą ir atlikti trumpą šių komponentų tyrimą, nes niekas nenorės laikytis projekto vidurio vien dėl trūkstamo komponento. Toliau pateikiamas komponentų, kuriuos ketiname naudoti šiame projekte, sąrašas:



  • ESP32
  • Bandomoji Lenta
  • Laidų sujungimas

2 žingsnis: komponentų studijavimas

Dabar, kai žinome šio projekto santrauką, eikime vienu žingsniu į priekį ir atlikime trumpą pagrindinių komponentų, kuriuos ketiname naudoti, veikimo tyrimą.

ESP32 yra mažos galios ir pigių mikrovaldiklių plokštė, turinti įmontuotą „WiFi“ ir dvigubo režimo „Bluetooth“ modulį. Šią mikrovaldiklio plokštę sukūrė ir sukūrė Espressif sistemos . Ši plokštė turi įmontuotus galios stiprintuvus, mažo gero priėmimo stiprintuvus, filtrus ir antenos jungiklius. Jis maitinamas „Android“ duomenų kabeliu ir gali išvestį tiekti iki 3,3 V įtampos. ESP32 vykdo TCP / IP, visas 802.11 b / g / n / e / I WLAN MAC sutartis ir „Wi-Fi Direct“. Tai reiškia, kad ESP 32 gali valdyti didelę dalį „WiFi“ maršrutizatorių, kai jis naudojamas stoties (kliento) režimu. Taip pat jis gali sukurti prieigos tašką su visu 802.11 b / g / n / e / I. ESP32 nėra tiesiog pagrindas naujausiam „BLE Bluetooth 4.2“, jis taip pat palaiko puikų „Bluetooth“. Tai iš esmės reiškia, kad gali spręsti senus ir naujus „Bluetooth“ telefonus / stalus. Jei neturite ESP32 modulio, taip pat galite naudoti ESP8266 arba „Node MCU“. Šios plokštės gali būti naudojamos tai pačiai užduočiai atlikti, jei jos yra prijungtos prie „WiFi“.

ESP32



Relės modulis yra perjungimo įtaisas. Jis veikia dviem režimais, Paprastai atidarytas (NE) ir Paprastai Uždaryta (NC) . „NO“ režimu grandinė visada nutrūksta, nebent per „Arduino“ į relę siunčiate AUKŠTĄ signalą. NC režimas blogėja atvirkščiai, grandinė visada baigta, nebent įjungiate relės modulį. Įsitikinkite, kad prijungėte teigiamą elektros prietaiso laidą prie relės modulio taip, kaip parodyta žemiau.

Relės modulio grandinės surinkimas

3 žingsnis: Blokuoti schemą

Blokuoti schemą

Pirmiau pateiktoje blokinėje diagramoje parodytas šio projekto srautas. Relės yra prijungtos prie namų elektros prietaisų ar prietaisų. Mobilioji programa atsiųs Įjungta arba IŠJUNGTA komandą į duomenų bazę. Šis debesys yra prijungtas prie ESP32 mikrovaldiklio plokštės per „WiFi“. Norėdami įjungti elektroninį prietaisą, duomenų bazėje išsiųsime „1“, o išjungdami - duomenų bazėje „0“. Tada šią komandą gaus mikrovaldiklis, nes ji taip pat prijungta prie duomenų bazės. Remiantis šiuo 0 arba 1, mikrovaldiklis įjungs arba išjungs relės modulį, kuris galiausiai sukels elektros prietaisų perjungimą.

Taigi čia, šiame straipsnyje, naudosiu du relės modulius, kad galėčiau parodyti jums visą procedūrą. Bet jei norite valdyti didesnį skaičių elektrinių buitinių prietaisų, galite padidinti relių skaičių ir pridėti tą patį kodo dalį savo programoje.

4 žingsnis: komponentų surinkimas

Dabar, kai turime aiškią viziją, ką norime nuveikti šiame projekte, negaiškime daugiau laiko ir pradėkime montuoti komponentus.

  1. Paimkite skydą ir užfiksuokite jame ESP32 mikrovaldiklį. Dabar paimkite du relinius modulius ir lygiagrečiai prijunkite modulių Vcc ir įžeminimą prie „ESP32“ mikrovaldiklio plokštės „Vin“ ir įžeminimo. Prijunkite smeigtukas relės modulių į ESP32 plokštės pin34 ir pin35. Pamatysite, kad relės dabar įjungtos.
  2. Prijunkite buitinę techniką prie relės modulio. Įsitikinkite, kad jungtys sutampa su jungtimis, parodytomis 2 veiksmo paveiksle.

Dabar, kai mes prijungėme aparatinę mūsų sistemos dalį. Sukursime „Android“ programą, kuri bus prijungta prie „Firebase“ duomenų bazės. Duomenų bazę ir „Android“ programą sukursime šio straipsnio 2 dalyje.

5 žingsnis: darbo su ESP32 pradžia

Jei anksčiau nedirbote su „Arduino IDE“, nesijaudinkite, nes žingsnis po žingsnio parodomas „Arduino IDE“ nustatymas.

  1. Atsisiųskite naujausią „Arduino IDE“ versiją iš Arduino.
  2. Prijunkite „Arduino“ plokštę prie kompiuterio ir atidarykite Valdymo skydą. Spustelėkite Aparatūra ir garsas. Dabar atidaryta Prietaisai ir spausdintuvas ir suraskite prievadą, prie kurio prijungta jūsų plokštė. Mano atveju taip yra COM14 bet skirtinguose kompiuteriuose yra skirtinga.

    Rasti uostą

  3. Spustelėkite Failas, tada spustelėkite Nuostatos. Nukopijuokite šią nuorodą į Papildomas valdybos valdytojo URL. „ https://dl.espressif.com/dl/package_esp32_index.json '

    Nuostatos

  4. Dabar, norėdami naudoti ESP32 su „Arduino IDE“, turime importuoti specialias bibliotekas, kurios leis mums įrašyti kodą ESP32 ir jį naudoti. šios dvi bibliotekos yra pridėtos žemiau pateiktoje nuorodoje. Norėdami įtraukti biblioteką, eikite Eskizas> Įtraukti biblioteką> Pridėti ZIP biblioteką . Pasirodys langelis. Kompiuteryje raskite aplanką ZIP ir spustelėkite Gerai, jei norite įtraukti aplankus.

    Įtraukti biblioteką

  5. Dabar eik Eskizas> Įtraukti biblioteką> Tvarkyti bibliotekas.

    Tvarkyti bibliotekas

  6. Bus atidarytas meniu. Paieškos juostoje įveskite Arduino JSON. Bus parodytas sąrašas. Diegti Benoit Blanchon „Arduino JSON“.

    Arduino JSON

  7. Dabar spustelėkite Įrankiai. Bus parodytas išskleidžiamasis meniu. Nustatykite lentą į ESP „Dev“ modulis.

    Nustatymo lenta

  8. Dar kartą spustelėkite meniu Įrankis ir nustatykite prievadą, kurį anksčiau pastebėjote valdymo skydelyje.

    Uosto nustatymas

  9. Dabar įkelkite kodą, pridėtą žemiau esančioje nuorodoje, ir spustelėkite mygtuką „Įkelti“, kad įrašytumėte kodą ESP32 mikrovaldiklyje.

    Įkelti

Taigi dabar, kai įkelsite kodą, gali įvykti klaida. Tai yra dažniausiai pasitaikanti klaida, kuri gali kilti, jei naudojate naują „Arduino IDE“ ir „Arduino JSON“ versiją. Toliau pateikiamos klaidos, kurias galite pamatyti ekrane.

Į failą, įtrauktą iš C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, iš C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C :  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: error: StaticJsonBuffer yra „ArduinoJson“ klasė. Norėdami sužinoti, kaip atnaujinti programą į „ArduinoJson“, žr. Arduinojson.org/upgrade. 6 versija „StaticJsonBuffer“ „jsonBuffer“; ^ Į failą, įtrauktą iš C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, iš C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: error: StaticJsonBuffer yra „ArduinoJson“ klasė 5. Norėdami sužinoti, kaip atnaujinti programą į, žr. Arduinojson.org/upgrade. „ArduinoJson“ 6 versija pateikia „StaticJsonBuffer“ (). ParseObject (_data); ^ Rasta kelios „WiFi.h“ bibliotekos. Naudota: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  library  WiFi Nenaudojama: C:  Program Files ( x86)  Arduino  libraries  WiFi Naudojant bibliotekos „WiFi“ versiją 1.0 versijoje aplanke: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  bibliotekas  WiFi  Naudojant biblioteką IOXhop_FirebaseESP32-master aplanke: C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master (palikimas) Naudojant bibliotekos HTTPClient 1.2 versiją aplanke: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  bibliotekas  HTTPClient bibliotekos „WiFiClientSecure“ naudojimas naudojant 1.0 versiją aplanke: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  library  WiFiClientSecure Biblioteka „ArduinoJson“ naudojimas 6.12.0 versija aplanke: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson exit status 1 Klaida rengiant plokštės ESP32 „Dev“ modulį.

Nėra ko jaudintis, nes šias klaidas galime pašalinti atlikdami kelis paprastus veiksmus. Šios klaidos kyla dėl to, kad naujojoje „Arduino JSON“ versijoje vietoj klasės yra kita klasė „StaticJsonBuffer“. Tai yra „JSON 5“ klasė. Taigi mes galime paprasčiausiai pašalinti šią klaidą, sumažinę mūsų „Arduino IDE“ versiją „Arduino JSON“. Paprasčiausiai eikite į Eskizas> Įtraukti biblioteką> Tvarkyti bibliotekas. Ieškoti Benoit Blanchon „Arduino JSON“ kurį jau įdiegėte. Pirmiausia pašalinkite jį, tada nustatykite jo versiją 5.13.5. Dabar, kai nustatėme seną „Arduino JSON“ versiją, įdiekite ją dar kartą ir sukompiliuokite kodą. Šį kartą jūsų kodas bus sėkmingai sukompiliuotas.

Norėdami atsisiųsti kodą, spustelėkite čia.

6 veiksmas: supraskite kodą

Šio projekto kodas yra labai paprastas ir gerai komentuojamas. Bet vis tiek kodas trumpai paaiškinamas žemiau.

1. Pradžioje įtraukiamos bibliotekos, kad ESP32 plokštę būtų galima prijungti prie vietinio „WiFi“ ryšio namuose ar biure. Po to bus apibrėžta jūsų „Firebase“ projekto nuoroda ir „Firebase“ projekto autentifikavimas. Tada nustatomas jūsų vietinio „wifi“ ryšio pavadinimas ir slaptažodis, kad ESP32 būtų galima prijungti prie „Wifi“. Kai kurie ESP32 kaiščiai yra apibrėžti prijungti prie relės modulių. ir pagaliau deklaruojamas kintamasis, kuriame bus saugomi kai kurie laikini duomenys, gaunami iš „Firebase“ debesies.

#include // įtraukti biblioteką, kad galėtumėte prisijungti prie vietinio „Wifi“ ryšio #include // Įtraukti biblioteką, kad prisijungtumėte prie „Firebase“ duomenų bazės #define FIREBASE_HOST 'coma-patient.firebaseio.com' // įtraukite savo „Firebase“ projekto nuorodą #define FIREBASE_AUTH 'UrzlDZXMBNRhNZCDFE9Wwd105W7dw5dw5 '// Įtraukite savo „Firebase“ projekto autentifikavimą #define WIFI_SSID' abcd '// jūsų namų ar biuro WiFi ryšio pavadinimą #define WIFI_PASSWORD' abcd '// namų ar biuro WiFi ryšio slaptažodį int r1 = 34; // kaištis prijungti 1 relę int r2 = 35; // kaištis prijungti 2 relę int temp; // variabe nešioti duomenis

2. negaliojanti sąranka () yra funkcija, kurioje inicijuojame INPUT arba OUTPUT kaiščius. Ši funkcija taip pat nustato duomenų perdavimo greitį naudodama Serial.begin () komandą. „Baud Rate“ yra mikrovaldiklio ryšio greitis. Čia pridedamos kai kurios kodo eilutės, kad ESP32 būtų galima prijungti prie vietinio „wifi“ ryšio. Plokštė bandys prisijungti prie vietinio „wifi“ ryšio ir atspausdins „ryšį“. serijiniame monitoriuje. Kai bus užmegztas ryšys, jis atspausdins „Prisijungta“. Taigi, norėdami tai stebėti, geriau atidarykite nuoseklųjį monitorių ir ten patikrinkite jo padėtį.

negaliojanti sąranka () {Serial.begin (115200); // perdavimo greičio nustatymas // prisijungti prie „wifi“. „WiFi.begin“ (WIFI_SSID, WIFI_PASSWORD); Serial.println ('jungiantis'); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); vėlavimas (500); } Serial.println (); Serial.print ('prijungtas:'); Serial.println („WiFi.localIP“ ()); „Firebase.begin“ (FIREBASE_HOST, FIREBASE_AUTH); }

3. tuščia kilpa () yra funkcija, kuri kartojasi cikle. Šioje grandinėje mes parašome kodą, kuris mikrokontrolerio valdybai nurodo, kokias užduotis ir kaip atlikti. Mes gavome duomenis prieš lengvas ir AC iš duomenų bazės ir saugomi dviejuose laikinuose kintamuosiuose. Tada, norint perjungti du prietaisus pagal duomenų bazėje gautą 0 arba 1, taikomos keturios sąlygos.

void loop () {// get value temp1 = Serial.println (Firebase.getFloat ('light')); // gauti šviesos temp2 svyravimo reikšmę = Serial.println (Firebase.getFloat ('AC')); // gauti ventiliatoriaus vėlavimo (1000) perjungimo vertę; if (temp1 == 1 && temp2 == 1) {// Norėdami įjungti šviesą ir ventiliatorių digitalWrite (r1, HIGH); „digitalWrite“ (r2, HIGH); } if (temp1 == 0 && temp2 == 1) {// Norėdami įjungti ventiliatorių ir išjungti šviesą digitalWrite (r1, LOW); „digitalWrite“ (r2, HIGH); } if (temp1 == 1 && temp2 == 0) {// Norėdami išjungti ventiliatorių ir įjungti šviesą digitalWrite (r1, HIGH); „digitalWrite“ (r2, LOW); } if (temp1 == 0 && temp2 == 0) {// Norėdami išjungti ventiliatorių ir išjungti šviesą digitalWrite (r1, LOW); „digitalWrite“ (r2, LOW); }}

Tai buvo pirmoji dalis 'Kaip sukurti protingą namų sistemą naudojant ESP32?'. Galite pridėti daugiau relinių modulių, jei norite valdyti dar kelis buitinius prietaisus, vienintelis dalykas, kurį turėsite padaryti, yra skaityti duomenis iš „Firebase“ ir pridėti dar keletą sąlygų perjungti. Kitame straipsnyje paaiškinsiu, kaip sukurti „Android“ programą ir „Firebase“ duomenų bazę. Aš paaiškinsiu žingsnis po žingsnio procedūrą, kaip prijungti „Android“ programą prie „Firebase“ ir siųsti duomenis į ją.

Norėdami pereiti prie kitos pamokos Paspauskite čia