Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Ominaisuudet
- Vaihe 2: PCB
- Vaihe 3: Kokoonpano
- Vaihe 4: Ohjelmoinnin yleiskatsaus
- Vaihe 5: Tulot
- Vaihe 6: Lähdöt
- Vaihe 7: Kirjaaminen
- Vaihe 8: summeri
- Vaihe 9: Ulkoiset IoT -integraatiot
- Vaihe 10: Käyttö
- Vaihe 11: Tulevaisuuden suunnitelmat
Video: ESP32 Smart Home Hub: 11 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
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
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
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
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
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
Ä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
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
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
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ö
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:
Smart Home by Raspberry Pi: 5 vaihetta (kuvilla)
Smart Home by Raspberry Pi: Siellä on jo useita tuotteita, jotka tekevät asunnostasi älykkäämmän, mutta suurin osa niistä on omia ratkaisuja. Mutta miksi tarvitset Internet -yhteyden vaihtaaksesi valon älypuhelimellasi? Se oli yksi syy minulle rakentaa oma Smar
Hallitse automaattista liukuporttia Home Assistantin ja ESP: n avulla Home: 5 vaihetta (kuvilla)
Hallitse automaattista liukuporttia Home Assistantin ja ESPHomen avulla: Seuraava artikkeli antaa palautetta henkilökohtaisesta kokemuksestani taloon asennetun automaattisen liukuportin ohjaamisesta. Tässä portissa, "V2 Alfariss", oli muutama Phox V2 -kaukosäädin sen hallitsemiseksi. Minulla on myös
ESP32: n käytön aloittaminen - ESP32 -levyjen asentaminen Arduino IDE: hen - ESP32 vilkkuva koodi: 3 vaihetta
ESP32: n käytön aloittaminen | ESP32 -levyjen asentaminen Arduino IDE: hen | ESP32 Blink Code: Tässä ohjeessa näemme, kuinka aloittaa työskentely esp32: n kanssa ja miten asennetaan esp32 -levyt Arduino IDE: hen, ja ohjelmoimme esp 32: n suorittamaan vilkkuva koodi käyttämällä arduino ide
Sonoff B1 Firmware Home Automation Openhab Google Home: 3 vaihetta
Sonoff B1 Firmware Home Automation Openhab Google Home: Pidän todella Tasmota -laiteohjelmistosta Sonoff -kytkimille. Mutta a ei ollut todella tyytyväinen Sonoff-B1: n Tasmota-laiteohjelmistoon. En onnistunut täysin integroimaan sitä Openhabiini ja hallitsemaan sitä Google Homen kautta. Siksi kirjoitin oman yritykseni
Raspberry Pi-Arduino-SignalR Home Automation Hub: 11 vaihetta (kuvilla)
Raspberry Pi-Arduino-SignalR Home Automation Hub: Muutaman täällä ja täällä julkaistun IBLE-esipuheen jälkeen tämä projekti ottaa ensimmäisen askeleen kohti perusversion rakentamista toimivasta Home Automation Hubista. yritän ymmärtää, miten voin olla