Sisällysluettelo:

ESP32 Smart Home Hub: 11 vaihetta
ESP32 Smart Home Hub: 11 vaihetta

Video: ESP32 Smart Home Hub: 11 vaihetta

Video: ESP32 Smart Home Hub: 11 vaihetta
Video: ESP32 HomeKit Tutorial | HomeSpan 2024, Kesäkuu
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

Järjestelmän luominen, joka pystyy käsittelemään suuria määriä anturitietoja, jolla on useita ulostuloja ja joka muodostaa yhteyden Internetiin tai paikalliseen verkkoon, kestää kauan ja vaatii paljon työtä. Liian usein ihmiset, jotka haluavat saada omat älykkäät kotiverkot, kamppailevat voidakseen löytää ja koota mukautettuja komponentteja suuremmaksi järjestelmäksi. Siksi halusin tehdä modulaarisen ja monipuolisen alustan, joka helpottaisi IoT-kytkettyjen antureiden ja lähtöjen rakentamista.

Kiitos DFRobotille ja PCBGOGO.comille projektin sponsoroinnista!

Jos haluat lisätietoja, käy Githubin repossa:

Tarvikkeet

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • DHT22 -anturi

    www.dfrobot.com/product-1102.html

  • APDS9960 Valo- ja eleanturi

    www.dfrobot.com/product-1361.html

  • I2C 20x4 LCD -moduuli

    www.dfrobot.com/product-590.html

  • Analoginen RGB -LED -nauha

    www.dfrobot.com/product-1829.html

  • DRV8825 askelmoottorin ohjaimet
  • SD -kortinlukija
  • NEMA17 askelmoottorit

Vaihe 1: Ominaisuudet

ominaisuudet
ominaisuudet
ominaisuudet
ominaisuudet
ominaisuudet
ominaisuudet

Tämän piirilevyn pääominaisuus on ESP32 FireBeetle Development Board, joka käsittelee kaiken tiedonsiirron, anturilukemat ja lähdöt. On olemassa kaksi askelmoottorin ohjainta, jotka ohjaavat kahta bipolaarista askelmoottoria.

I2C -väylä on myös suunniteltu käytettäväksi komponenttien, kuten APDS9960: n tai nestekidenäytön kanssa. Lämpötilan lukemiseksi DHT22 -anturiin liitettävät nastat on katkaistu ja valovastus ympäristön valotason lukemiseen.

Levyllä on tuki analogiselle valonauhalle, jossa on kolme MOSFETia LED -valojen käyttämiseksi.

Vaihe 2: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

Aloitin piirilevyjen suunnitteluprosessin luomalla ensin kaavion Eaglessa. Koska en löytänyt ESP32 FireBeetle -kirjastoa, käytin vain kahta nastaista 1x18 -nastaista otsikkoa. Sitten loin virranhallintapiirin, joka pystyi hyväksymään 12 V DC -tynnyripistokkeen kautta ja muuttamaan sen 5 V: ksi antureiden ja ESP32: n virran saamiseksi.

Kaavion valmistuttua siirryin itse piirilevyn suunnitteluun.

Tiesin, että DC -tynnyrin pistokkeen on oltava lähellä levyn etuosaa, ja 100uF: n virtalähteen tasoituskondensaattoreiden oli oltava lähellä askelmoottorin ohjaimen tehotuloja. Kun kaikki oli asetettu, aloin reitittää jälkiä.

Vaikka Oshpark valmistaa laadukkaita piirilevyjä, niiden hinnat ovat melko korkeat. Onneksi PCBGOGO.com valmistaa myös hienoja piirilevyjä edulliseen hintaan. Pystyin ostamaan kymmenen piirilevyä vain 5 dollarilla sen sijaan, että maksaisin 52 dollaria vain kolmesta levystä Oshpark.com -sivustolta.

Vaihe 3: Kokoonpano

Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano

Kaiken kaikkiaan levyn kokoaminen oli melko helppoa. Aloitin juottamalla pinta -asennettavat komponentit ja kiinnittämällä sitten tynnyrin liittimen ja säätimen. Seuraavaksi juotin nastapäät komponentteihin, kuten moottoriajurit ja FireBeetle.

Juottamisen jälkeen testasin levyn oikosulun varalta asettamalla yleismittarin vastusmittaustilaan ja katsomalla, onko vastus yli tietyn määrän. Levy meni ohi, joten pystyin sitten liittämään jokaisen komponentin.

Vaihe 4: Ohjelmoinnin yleiskatsaus

Halusin tämän levyn koodin olevan modulaarinen ja helppokäyttöinen. Tämä tarkoitti sitä, että meillä oli useita luokkia, jotka käsittelevät tiettyjä toimintoja, sekä suurempi kääreluokka, joka yhdistää pienemmät.

Vaihe 5: Tulot

Tulot
Tulot
Tulot
Tulot
Tulot
Tulot

Tulojen käsittelyä varten olen luonut luokan nimeltä "Hub_Inputs", jonka avulla kotikeskus voi kommunikoida APDS9960: n kanssa sekä luoda ja hallita painikkeita ja kapasitiivisia kosketusrajapintoja. Se sisältää seuraavat toiminnot:

Luo -painike

Hae, jos painiketta painetaan

Hanki useita painalluksia

Hae viimeisin ele

Hanki kapasitiivinen kosketusarvo

Painikkeet tallennetaan rakenteena, ja niissä on kolme määritettä: is_pressed, numberPresses ja pin. Jokainen painike, kun se on luotu, on liitetty keskeytykseen. Kun kyseinen keskeytys laukaistaan, keskeytyspalvelurutiini (ISR) välitetään kyseisen painikkeen osoittimella (joka on annettu sen muistiosoitteena painikejärjestelmässä) ja lisää painallusten määrää sekä päivittää is_pressed Boolen arvon.

Kapasitiiviset kosketusarvot ovat paljon yksinkertaisempia. Ne haetaan siirtämällä kosketustappi touchRead () -toimintoon.

Viimeisin ele päivitetään kyselemällä APDS9960 ja tarkistamalla, onko uusia eleitä havaittu, ja jos se on havaittu, aseta yksityisen eleen muuttuja tähän eleeseen.

Vaihe 6: Lähdöt

Lähdöt
Lähdöt
Lähdöt
Lähdöt
Lähdöt
Lähdöt

Älykkään kodin keskittimessä on useita tapoja tuottaa tietoa ja vaihtaa valoja. On tapit, jotka rikkovat I2C -väylän, jolloin käyttäjät voivat liittää nestekidenäytön. Toistaiseksi vain yksi LCD -koko on tuettu: 20 x 4. Käyttämällä toimintoa "hub.display_message ()", käyttäjät voivat näyttää viestejä nestekidenäytöllä syöttämällä merkkijonoobjektin.

Siellä on myös nastatunniste analogisten LED -merkkijonojen kytkemiseksi. Toiminnon "hub.set_led_strip (r, g, b)" kutsuminen asettaa nauhan värin.

Molempia askelmoottoreita käytetään käyttämällä DRV8825 -ohjainkorttia. Päätin käyttää BasicStepper -kirjastoa moottorin ohjaamiseen. Kun kortti käynnistetään, luodaan kaksi askelobjektia ja molemmat moottorit otetaan käyttöön. Jokaisen moottorin askeltaa varten käytetään toimintoa "hub.step_motor (motor_id, steps)", jossa moottorin tunnus on joko 0 tai 1.

Vaihe 7: Kirjaaminen

Kirjaaminen
Kirjaaminen
Kirjaaminen
Kirjaaminen
Kirjaaminen
Kirjaaminen

Koska kortilla on useita antureita, halusin mahdollisuuden kerätä ja kirjata tietoja paikallisesti.

Kirjaamisen aloittamiseksi luodaan uusi tiedosto nimellä "hub.create_log (tiedostonimi, otsikko)", jossa otsikon avulla luodaan CSV -tiedostorivi, joka osoittaa sarakkeet. Ensimmäinen sarake on aina aikaleima Vuosi Kuukausi Päivä Tunti: Min: sek. Jotta aika saadaan, hub.log_to_file () -funktio hakee ajan basic_functions.get_time () -funktiolla. TM -aikarakenne välitetään sitten viittauksella lokitoimintoon yhdessä tietojen ja tiedostonimen kanssa.

Vaihe 8: summeri

Summeri
Summeri

Mitä hyötyä IoT -kortista on, jos et voi toistaa musiikkia? Siksi sisällytin summerin, jolla on toiminto äänien toistamiseen. Soittaminen "hub.play_sounds (melodia, kesto, pituus)" alkaa toistaa kappaletta, ja melodia on nuotin taajuuksien joukko, kesto nuottien kestojoukkona ja pituus muistiinpanojen lukumääränä.

Vaihe 9: Ulkoiset IoT -integraatiot

Ulkoiset IoT -integraatiot
Ulkoiset IoT -integraatiot
Ulkoiset IoT -integraatiot
Ulkoiset IoT -integraatiot
Ulkoiset IoT -integraatiot
Ulkoiset IoT -integraatiot

Keskitin tukee tällä hetkellä IFTTT -webhookeja. Ne voidaan käynnistää kutsumalla Hub_IoT.publish_webhook (url, data, event, key) tai Hub_IoT.publish_webhook (url, data) -toiminto. Tämä lähettää POST -pyynnön annettuun URL -osoitteeseen kyseisten tietojen kanssa ja tarvittaessa tapahtuman nimen. Jos haluat määrittää esimerkin IFTTT -integraatiosta, luo ensin uusi sovelma. Valitse sitten webhook -palvelu, joka käynnistyy, kun pyyntö vastaanotetaan.

Soita seuraavaksi tapahtumalle "high_temp" ja tallenna se. Valitse sitten Gmail -palvelu "Tämä" -osiosta ja valitse "Lähetä sähköposti itselleni". Kirjoita palvelun asetuksissa”Lämpötila on korkea!” aiheelle ja laitoin sitten "Mitatun lämpötilan {{Value1}} arvoon {{OccurredAt}}", joka näyttää mitatun lämpötilan ja tapahtuman laukaisuajan.

Kun olet määrittänyt sen, liitä IFTTT: n luoma webhook -URL -osoite ja lisää "high_temp" tapahtumaosioon.

Vaihe 10: Käyttö

Käyttö
Käyttö
Käyttö
Käyttö
Käyttö
Käyttö
Käyttö
Käyttö

Voit käyttää Smart Home Hubia soittamalla tarvittaviin toimintoihin joko setup () tai loop (). Olen jo laittanut esimerkkitoimintokutsuja, kuten tulostan nykyisen ajan ja kutsun IFTTT -tapahtuman.

Vaihe 11: Tulevaisuuden suunnitelmat

Smart Home Hub -järjestelmä toimii erittäin hyvin yksinkertaisissa kodin automaatio- ja tiedonkeruutehtävissä. Sitä voidaan käyttää melkein mihin tahansa, kuten LED -nauhan värin säätämiseen, huoneen lämpötilan seurantaan, valon syttymisen tarkistamiseen ja lukuisiin muihin mahdollisiin projekteihin. Jatkossa haluan laajentaa toiminnallisuutta entisestään. Tämä voi sisältää vanhemman verkkopalvelimen lisäämisen, paikallisen tiedostojen ylläpidon ja jopa Bluetoothin tai mqtt: n.

Suositeltava: