Kazalo:

Središče za pametni dom ESP32: 11 korakov
Središče za pametni dom ESP32: 11 korakov

Video: Središče za pametni dom ESP32: 11 korakov

Video: Središče za pametni dom ESP32: 11 korakov
Video: Использование кнопки скорости шагового двигателя 28BYJ-48 с 8 проектами: Ultimate Video Tutorial, урок 107 2024, November
Anonim
ESP32 Središče za pametni dom
ESP32 Središče za pametni dom
ESP32 Središče za pametni dom
ESP32 Središče za pametni dom
ESP32 Središče za pametni dom
ESP32 Središče za pametni dom
ESP32 Središče za pametni dom
ESP32 Središče za pametni dom

Ustvarjanje sistema, ki lahko obdeluje velike količine senzorskih podatkov, ima več izhodov in se poveže z internetom ali lokalnim omrežjem, traja dolgo in zahteva veliko truda. Ljudje, ki si želijo ustvariti lastna pametna domača omrežja, se prepogosto spopadajo z možnostjo iskanja in sestavljanja komponent po meri v večji sistem. Zato sem želel narediti modularno in z funkcijami bogato platformo, ki bi olajšala izdelavo senzorjev in izhodov, povezanih z internetom stvari.

Hvala DFRobot in PCBGOGO.com za sponzorstvo tega projekta!

Za podrobnejše informacije obiščite repo Github:

Zaloge

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • Senzor DHT22

    www.dfrobot.com/product-1102.html

  • APDS9960 Senzor svetlobe in kretnje

    www.dfrobot.com/product-1361.html

  • I2C 20x4 LCD modul

    www.dfrobot.com/product-590.html

  • Analogni RGB LED trak

    www.dfrobot.com/product-1829.html

  • Gonilniki koračnih motorjev DRV8825
  • Bralnik kartic SD
  • Koračni motorji NEMA17

1. korak: Lastnosti

Lastnosti
Lastnosti
Lastnosti
Lastnosti
Lastnosti
Lastnosti

Glavna značilnost te plošče je razvojna plošča ESP32 FireBeetle, ki obravnava vso komunikacijo, odčitke senzorjev in izhode. Obstajata dva gonilnika koračnih motorjev, ki upravljata dva bipolarna koračna motorja.

Vodilo I2C je razčlenjeno tudi za uporabo s komponentami, kot sta APDS9960 ali LCD. Za odčitavanje temperature so zlomljeni zatiči za povezavo s senzorjem DHT22, pa tudi fotografski upor za odčitavanje ravni svetlobe v okolici.

Na plošči je podpora za analogni svetlobni trak, ki ima tri MOSFET -e za pogon LED luči.

Korak: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

Postopek oblikovanja PCB sem začel tako, da sem najprej ustvaril shemo v Eaglu. Ker nisem mogel najti knjižnice ESP32 FireBeetle, sem namesto tega uporabil dve pinski 1x18 -polni glavi. Nato sem ustvaril vezje za upravljanje porabe energije, ki bi lahko sprejelo 12v skozi enosmerni priključek in ga pretvorilo v 5v za napajanje senzorjev in ESP32.

Po dokončanju sheme sem se lotil oblikovanja samega tiskanega vezja.

Vedel sem, da bi moral biti enosmerni cevni vtič blizu sprednje strani plošče, kondenzatorji za glajenje napajalnika 100uF pa morajo biti blizu vhodov v napajanje gonilnika koračnega motorja. Ko je bilo vse postavljeno, sem začel usmerjati sledi.

Medtem ko Oshpark izdeluje visokokakovostne PCB -je, so njihove cene precej visoke. Na srečo PCBGOGO.com izdeluje tudi odlične tiskane vezje po dostopni ceni. Deset PCB -jev sem lahko kupil za samo 5 USD, namesto da bi plačal 52 USD za samo tri plošče z Oshpark.com.

3. korak: Montaža

Montaža
Montaža
Montaža
Montaža
Montaža
Montaža

Na splošno je bilo sestavljanje plošče precej preprosto. Začel sem s spajkanjem površinsko nameščenih komponent, nato pa pritrdil konektor in regulator priključka. Nato sem v glave zatičev zalemil komponente, kot so gonilniki motorjev in FireBeetle.

Po končanem spajkanju sem ploščo preizkusil na kratek stik, tako da sem multimeter prestavil v način merjenja upora in preveril, ali je upor presegel določeno količino. Plošča je minila, tako da sem lahko nato priključil vsako komponento.

4. korak: Pregled programiranja

Želel sem, da je koda za to ploščo modularna in enostavna za uporabo. To je pomenilo več razredov, ki obravnavajo posebne funkcije, skupaj z večjim razredom ovoja, ki združuje manjše.

5. korak: Vhodi

Vhodi
Vhodi
Vhodi
Vhodi
Vhodi
Vhodi

Za ravnanje z vhodi sem ustvaril razred, imenovan »Hub_Inputs«, ki omogoča domačemu vozlišču komuniciranje z APDS9960, skupaj z ustvarjanjem in upravljanjem gumbov in kapacitivnih vmesnikov na dotik. Vsebuje naslednje funkcije:

Gumb za ustvarjanje

Preveri, če pritisneš gumb

Pridobite število pritiskov na gumbe

Pridobite najnovejšo potezo

Pridobite kapacitivno vrednost na dotik

Gumbi so shranjeni kot struktura s tremi atributi: is_pressed, numberPresses in pin. Vsak gumb, ko je ustvarjen, je pritrjen na prekinitev. Ko se ta prekinitev sproži, se rutini storitve prekinitve (ISR) posreduje kazalec tega gumba (podan kot pomnilniški naslov v nizu gumbov) in poveča število pritiskov gumbov skupaj s posodabljanjem logične vrednosti is_pressed.

Kapacitivne vrednosti na dotik so veliko enostavnejše. Pridobijo se s prenosom zatiča na dotik funkciji touchRead ().

Najnovejšo potezo posodobimo tako, da poizvedujemo APDS9960 in preverimo, ali je bila zaznana kakšna nova poteza ter če je bila zaznana, nastavimo spremenljivko zasebne poteze na to potezo.

Korak 6: Izhodi

Izhodi
Izhodi
Izhodi
Izhodi
Izhodi
Izhodi

Središče pametnega doma ponuja več načinov za oddajanje informacij in menjavo luči. Obstajajo zatiči, ki prekinejo vodilo I2C in uporabnikom omogočajo priključitev LCD -ja. Doslej je podprta samo ena velikost LCD -ja: 20 x 4. Z uporabo funkcije »hub.display_message ()« lahko uporabniki prikažejo sporočila na LCD -ju tako, da vnesejo nizni predmet.

Obstaja tudi nožica za priključitev niza analognih LED. Klic funkcije »hub.set_led_strip (r, g, b)« nastavi barvo traku.

Dva koračna motorja poganjata par vozniških plošč DRV8825. Odločil sem se, da bom za upravljanje motorja uporabil knjižnico BasicStepper. Ko se plošča zažene, se ustvarita dva koračna predmeta in oba motorja postaneta omogočena. Za korakanje vsakega motorja se uporablja funkcija »hub.step_motor (motor_id, steps)«, kjer je ID motorja 0 ali 1.

7. korak: Zapisovanje

Zapisovanje
Zapisovanje
Zapisovanje
Zapisovanje
Zapisovanje
Zapisovanje

Ker ima plošča več senzorjev, sem želel možnost lokalnega zbiranja in beleženja podatkov.

Za začetek beleženja se ustvari nova datoteka z »hub.create_log (ime datoteke, glava)«, kjer se glava uporablja za izdelavo vrstice datoteke CSV, ki označuje stolpce. Prvi stolpec je vedno časovni žig v letu Mesec Dan Ura: Min: Sec format. Če želite dobiti čas, funkcija hub.log_to_file () dobi čas s funkcijo basic_functions.get_time (). Časovna struktura tm se nato posreduje s sklicem v funkcijo beleženja, skupaj s podatki in imenom datoteke.

8. korak: Zvočni signal

Zvočni signal
Zvočni signal

Kakšna je korist od plošče IoT, če ne morete predvajati glasbe? Zato sem vključil brenčalo s funkcijo predvajanja zvokov. Klicanje »hub.play_sounds (melodija, trajanje, dolžina)« začne predvajati pesem, pri čemer je melodija niz frekvenc not, trajanje kot niz trajanja not in dolžina kot število not.

9. korak: Zunanje integracije interneta stvari

Zunanje integracije interneta stvari
Zunanje integracije interneta stvari
Zunanje integracije interneta stvari
Zunanje integracije interneta stvari
Zunanje integracije interneta stvari
Zunanje integracije interneta stvari

Središče trenutno podpira spletne kljuke IFTTT. Sprožite jih lahko tako, da pokličete funkcijo Hub_IoT.publish_webhook (url, podatki, dogodek, ključ) ali Hub_IoT.publish_webhook (url, podatki). To pošlje zahtevo POST na dani URL s priloženimi podatki, skupaj z imenom dogodka, če je potrebno. Če želite nastaviti primer integracije IFTTT, najprej ustvarite nov programček. Nato izberite storitev webhook, ki se sproži ob prejemu zahteve.

Nato pokličite dogodek »high_temp« in ga shranite. Nato izberite storitev Gmail za del »To« in izberite možnost »Pošlji e -poštno sporočilo sebi«. V nastavitvah storitve vnesite »Temperatura je visoka!« za motiv, nato pa postavim »Izmerjeno temperaturo {{Value1}} na {{OccurredAt}}», ki prikazuje izmerjeno temperaturo in čas, ko je bil dogodek sprožen.

Ko ga nastavite, preprosto prilepite URL spletnega kljuka, ki ga ustvari IFTTT, in v razdelek dogodkov vnesite »high_temp«.

10. korak: Uporaba

Uporaba
Uporaba
Uporaba
Uporaba
Uporaba
Uporaba
Uporaba
Uporaba

Če želite uporabljati Hub Smart Hub, preprosto pokličite vse potrebne funkcije v nastavitvah () ali zanki (). Sem že dal primere klicev funkcij, na primer tiskanje trenutnega časa in klic dogodka IFTTT.

11. korak: Načrti za prihodnost

Sistem Smart Home Hub zelo dobro deluje pri preprostih opravilih avtomatizacije doma in zbiranja podatkov. Uporablja se lahko za skoraj vse, na primer za nastavitev barve LED traku, spremljanje temperature prostora, preverjanje, ali lučka sveti, in za številne druge potencialne projekte. V prihodnosti bi rad še bolj razširil funkcionalnost. To lahko vključuje dodajanje robustnejšega spletnega strežnika, lokalno gostovanje datotek in celo Bluetooth ali mqtt.

Priporočena: