Turinys:

„ESP32 Smart Home Hub“: 11 žingsnių
„ESP32 Smart Home Hub“: 11 žingsnių

Video: „ESP32 Smart Home Hub“: 11 žingsnių

Video: „ESP32 Smart Home Hub“: 11 žingsnių
Video: ESP32 HomeKit Tutorial | HomeSpan 2024, Lapkritis
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“

Sukurti sistemą, galinčią tvarkyti didelius jutiklių duomenų kiekius, turėti kelis išėjimus ir prisijungti prie interneto ar vietinio tinklo, reikia daug laiko ir daug pastangų. Labai dažnai žmonės, norintys sukurti savo išmaniųjų namų tinklus, stengiasi rasti ir surinkti pasirinktinius komponentus į didesnę sistemą. Štai kodėl norėjau sukurti modulinę ir daug funkcijų turinčią platformą, kuri leistų lengvai sukurti su internetu prijungtus jutiklius ir išvestis.

Dėkojame DFRobot ir PCBGOGO.com už šio projekto rėmimą!

Norėdami gauti išsamesnės informacijos, apsilankykite „Github“repo:

Prekės

  • „DFRobot ESP32 FireBeetle“

    www.dfrobot.com/product-1590.html

  • DHT22 jutiklis

    www.dfrobot.com/product-1102.html

  • APDS9960 šviesos ir gestų jutiklis

    www.dfrobot.com/product-1361.html

  • I2C 20x4 LCD modulis

    www.dfrobot.com/product-590.html

  • Analoginė RGB LED juostelė

    www.dfrobot.com/product-1829.html

  • DRV8825 žingsninių variklių tvarkyklės
  • SD kortelių skaitytuvas
  • NEMA17 žingsniniai varikliai

1 žingsnis: funkcijos

funkcijos
funkcijos
funkcijos
funkcijos
funkcijos
funkcijos

Pagrindinis šios plokštės bruožas yra ESP32 „FireBeetle“kūrimo plokštė, kuri tvarko visus ryšius, jutiklių rodmenis ir išėjimus. Yra du žingsninių variklių valdikliai, valdantys du bipolinius žingsninius variklius.

I2C magistralė taip pat skirta naudoti su tokiais komponentais kaip APDS9960 arba LCD. Temperatūrai skaityti yra sulaužyti kaiščiai, skirti prijungti prie DHT22 jutiklio, taip pat yra fotorezistorius, skirtas aplinkos šviesos lygiams nuskaityti.

Lentoje palaikoma analoginė šviesos juosta, kurioje yra trys MOSFET, kad būtų galima valdyti šviesos diodus.

2 žingsnis: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

Aš pradėjau PCB projektavimo procesą, pirmiausia sukūręs schemą „Eagle“. Kadangi man nepavyko rasti ESP32 „FireBeetle“bibliotekos, aš tiesiog naudoju dvi kaiščių 1x18 kontaktų antraštes. Tada aš sukūriau energijos valdymo grandinę, kuri galėtų priimti 12 voltų per nuolatinės srovės statinės lizdą ir konvertuoti į 5 voltų jutiklius ir ESP32.

Baigęs schemą, pradėjau kurti pačią PCB.

Aš žinojau, kad nuolatinės srovės cilindro kištukas turi būti šalia plokštės priekio, o 100uF maitinimo šaltinio išlyginamieji kondensatoriai turi būti arti žingsninio variklio vairuotojo maitinimo šaltinių. Kai viskas buvo išdėstyta, aš pradėjau maršrutus pėdsakais.

Nors „Oshpark“gamina aukštos kokybės PCB, jų kainos yra gana aukštos. Laimei, PCBGOGO.com taip pat gamina puikias PCB už prieinamą kainą. Aš galėjau nusipirkti dešimt PCB tik už 5 USD, o ne sumokėti 52 USD už tik tris plokštes iš „Oshpark.com“.

3 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas

Apskritai plokštės surinkimas buvo gana lengvas. Pradėjau lituoti ant paviršiaus sumontuotus komponentus, o tada pritvirtinau statinės lizdo jungtį ir reguliatorių. Tada aš lituodavau kaiščių antraštes tokiems komponentams kaip variklio tvarkyklės ir „FireBeetle“.

Kai litavimas buvo baigtas, aš išbandžiau plokštę dėl trumpojo jungimo, įjungdamas multimetrą į pasipriešinimo matavimo režimą ir pažiūrėjęs, ar pasipriešinimas viršijo tam tikrą sumą. Lenta praėjo, todėl galėjau prijungti kiekvieną komponentą.

4 žingsnis: Programavimo apžvalga

Norėjau, kad šios plokštės kodas būtų modulinis ir lengvai naudojamas. Tai reiškė, kad turi keletą klasių, kurios atlieka tam tikras funkcijas, ir didesnę įvyniojimo klasę, apimančią mažesnes.

5 žingsnis: įvestys

Įėjimai
Įėjimai
Įėjimai
Įėjimai
Įėjimai
Įėjimai

Norėdami tvarkyti įvestis, sukūriau klasę pavadinimu „Hub_Inputs“, kuri leidžia namų centrui bendrauti su APDS9960, taip pat sukurti ir valdyti mygtukus bei talpines jutiklines sąsajas. Jame yra šios funkcijos:

Sukurti mygtuką

Gaukite, jei paspaudžiamas mygtukas

Gaukite mygtukų paspaudimų skaičių

Gaukite naujausią gestą

Gaukite talpinę prisilietimo vertę

Mygtukai saugomi kaip struktūra, turintys tris atributus: is_pressed, numberPresses ir pin. Kiekvienas mygtukas, kai jis sukurtas, yra prijungtas prie pertraukos. Kai šis pertraukimas suaktyvinamas, pertraukimo paslaugų tvarka (ISR) perduodama to mygtuko žymekliui (nurodomas kaip jo atminties adresas mygtukų masyve) ir padidina mygtukų paspaudimų skaičių kartu atnaujinant is_pressed Boolean reikšmę.

Talpinės prisilietimo vertės yra daug paprastesnės. Jie gaunami perduodant jutiklinį kaištį į funkciją „touchRead ()“.

Naujausias gestas atnaujinamas apklausiant APDS9960 ir patikrinus, ar nebuvo aptikta naujų gestų, o jei buvo aptiktas, nustatykite privataus gesto kintamąjį į tą gestą.

6 žingsnis: išėjimai

Išėjimai
Išėjimai
Išėjimai
Išėjimai
Išėjimai
Išėjimai

Išmaniųjų namų centre yra keletas būdų, kaip išvesti informaciją ir pakeisti šviesas. Yra kaiščių, kurie išlaužia I2C magistralę ir leidžia vartotojams prijungti LCD ekraną. Taigi kol kas palaikomas tik vieno dydžio LCD: 20 x 4. Naudodami funkciją „hub.display_message ()“, vartotojai gali rodyti pranešimus LCD ekrane, perduodami eilutės objektą.

Taip pat yra kaiščio antraštė, skirta prijungti analoginių šviesos diodų eilutę. Paskambinus funkcijai „hub.set_led_strip (r, g, b)“, nustatoma juostelės spalva.

Du žingsniniai varikliai varomi naudojant porą DRV8825 tvarkyklių plokščių. Variklio valdymui nusprendžiau naudoti „BasicStepper“biblioteką. Įkėlus plokštę, sukuriami du žingsniniai objektai ir abu varikliai įjungiami. Kiekvienam varikliui paleisti naudojama funkcija „hub.step_motor (motor_id, steps)“, kur variklio ID yra 0 arba 1.

7 žingsnis: registravimas

Registravimas
Registravimas
Registravimas
Registravimas
Registravimas
Registravimas

Kadangi plokštėje yra keli jutikliai, norėjau galimybės vietoje rinkti ir registruoti duomenis.

Norėdami pradėti registravimą, sukuriamas naujas failas su „hub.create_log (failo pavadinimas, antraštė)“, kuriame antraštė naudojama CSV failo eilutei, žyminčiai stulpelius, sudaryti. Pirmasis stulpelis visada yra laiko žyma metų mėnesio dienos valandos: min: sek formatu. Norėdami gauti laiko, funkcija hub.log_to_file () gauna laiką naudodami pagrindines funkcijas.get_time (). Tada tm laiko struktūra perduodama nuoroda į registravimo funkciją kartu su duomenimis ir failo pavadinimu.

8 žingsnis: garsinis signalas

Garsinis signalas
Garsinis signalas

Kam naudinga daiktų interneto lenta, jei negalite leisti muzikos? Štai kodėl aš įtraukiau garsinį signalą su funkcija atkurti garsus. Skambinant „hub.play_sounds (melodija, trukmė, ilgis)“pradedama leisti daina, o melodija yra natų dažnių masyvas, trukmė - natų trukmės masyvas, o ilgis - natų skaičius.

9 veiksmas: išorinės daiktų interneto integracijos

Išorinės daiktų interneto integracijos
Išorinės daiktų interneto integracijos
Išorinės daiktų interneto integracijos
Išorinės daiktų interneto integracijos
Išorinės daiktų interneto integracijos
Išorinės daiktų interneto integracijos

Centras šiuo metu palaiko IFTTT žiniatinklio kabliukus. Juos galima suaktyvinti paskambinus „Hub_IoT.publish_webhook“(URL, duomenys, įvykis, raktas) arba „Hub_IoT.publish_webhook“(URL, duomenys). Tai siunčia POST užklausą nurodytu URL su tais duomenimis ir prireikus įvykio pavadinimu. Norėdami nustatyti IFTTT integravimo pavyzdį, pirmiausia sukurkite naują programėlę. Tada pasirinkite žiniatinklio užkabos paslaugą, kuri suveikia gavus užklausą.

Tada paskambinkite įvykiui „high_temp“ir išsaugokite jį. Tada dalyje „Tai“pasirinkite „Gmail“paslaugą ir pasirinkite parinktį „Siųsti el. Laišką sau“. Paslaugos sąrankoje įrašykite „Temperatūra aukšta! temai, tada įdėjau „Išmatuota temperatūra {{Value1}} {{OccurredAt}}“, kuri rodo išmatuotą temperatūrą ir įvykio suveikimo laiką.

Nustatę, tiesiog įklijuokite IFTTT sukurtą žiniatinklio užkabos URL ir įvykių skiltyje įrašykite „high_temp“.

10 žingsnis: naudojimas

Naudojimas
Naudojimas
Naudojimas
Naudojimas
Naudojimas
Naudojimas
Naudojimas
Naudojimas

Jei norite naudoti „Smart Home Hub“, tiesiog paskambinkite į visas reikiamas funkcijas, esančias sąrankoje () arba cikle (). Aš jau pateikiau funkcijų iškvietimų pavyzdžius, pvz., Dabartinio laiko spausdinimą ir IFTTT įvykio iškvietimą.

11 žingsnis: ateities planai

„Smart Home Hub“sistema labai gerai tinka paprastoms namų automatizavimo ir duomenų rinkimo užduotims. Jis gali būti naudojamas beveik viskam, pavyzdžiui, nustatyti LED juostos spalvą, stebėti kambario temperatūrą, patikrinti, ar įjungta lemputė, ir daugybę kitų galimų projektų. Ateityje norėčiau dar labiau išplėsti funkcionalumą. Tai gali apimti tvirtesnės žiniatinklio serverio pridėjimą, vietinį failų prieglobą ir net „Bluetooth“arba „mqtt“.

Rekomenduojamas: