Sisukord:
- Tarvikud
- Samm: funktsioonid
- 2. samm: PCB
- 3. samm: kokkupanek
- Samm 4: Programmeerimise ülevaade
- 5. samm: sisendid
- 6. samm: väljundid
- 7. samm: logimine
- 8. samm: helisignaal
- 9. samm: asjade Interneti välised integratsioonid
- 10. samm: kasutamine
- 11. samm: tulevikuplaanid
Video: ESP32 Smart Home Hub: 11 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
Süsteemi loomine, mis suudab käsitleda suurel hulgal anduriandmeid, omada mitut väljundit ja luua ühendus Interneti või kohaliku võrguga, võtab palju aega ja suuri jõupingutusi. Liiga sageli on inimestel, kes soovivad oma nutikate koduvõrkudega hakkama saada, raskusi kohandatud komponentide leidmisega ja kokkupanekuga suuremaks süsteemiks. Seetõttu tahtsin teha modulaarse ja funktsioonirikka platvormi, mis hõlbustaks IoT-ga ühendatud andurite ja väljundite konstrueerimist.
Täname DFRobot ja PCBGOGO.com selle projekti toetamise eest!
Põhjalikuma teabe saamiseks külastage Githubi repot:
Tarvikud
-
DFRobot ESP32 FireBeetle
www.dfrobot.com/product-1590.html
-
DHT22 andur
www.dfrobot.com/product-1102.html
-
APDS9960 Valgus- ja žestiandur
www.dfrobot.com/product-1361.html
-
I2C 20x4 LCD moodul
www.dfrobot.com/product-590.html
- Analoog -RGB LED -riba
www.dfrobot.com/product-1829.html
- DRV8825 samm -mootoriga draiverid
- SD -kaardi lugeja
- NEMA17 samm -mootorid
Samm: funktsioonid
Selle plaadi peamine omadus on ESP32 FireBeetle arendusplaat, mis tegeleb kogu side, andurite näitude ja väljunditega. On kaks samm -mootoriga draiverit, mis juhivad kahte bipolaarset samm -mootorit.
I2C siin on välja töötatud ka selliste komponentidega nagu APDS9960 või LCD. Temperatuuri lugemiseks on purustatud tihvtid DHT22 anduriga ühendamiseks, samuti fototakisti ümbritseva valguse taseme lugemiseks.
Laual on analoogvalgusriba tugi, millel on kolm MOSFET -i LED -tulede juhtimiseks.
2. samm: PCB
Alustasin trükkplaatide projekteerimisprotsessi, luues esmalt Eagle'is skeemi. Kuna ma ei suutnud ESP32 FireBeetle'i raamatukogu leida, kasutasin selle asemel lihtsalt kahte tihvti 1x18 kontaktiga päist. Seejärel lõin toitehaldusskeemi, mis suudab vastu võtta 12 V alalisvoolu tünnipistiku kaudu ja teisendada see 5 V -ks andurite ja ESP32 toiteks.
Pärast skeemi valmimist läksin PCB enda projekteerimise juurde.
Ma teadsin, et alalisvoolu silindri pistik peab asuma plaadi esiosa lähedal ja 100uF toiteallika silumiskondensaatorid peavad asuma samm -mootori juhi toitesisendite lähedal. Kui kõik oli välja pandud, hakkasin jälgi marsruutima.
Kuigi Oshpark toodab suurepärase kvaliteediga trükkplaate, on nende hinnad üsna kõrged. Õnneks valmistab PCBGOGO.com ka suurepäraseid trükkplaate taskukohase hinnaga. Mul oli võimalik osta kümme PCB -d vaid 5 dollari eest, selle asemel, et maksta 52 dollarit Oshpark.com -ist vaid kolme plaadi eest.
3. samm: kokkupanek
Üldiselt oli plaadi kokkupanek üsna lihtne. Alustasin pinnale paigaldatud komponentide jootmisega ning seejärel tünni pistiku pistiku ja regulaatori kinnitamisega. Järgmisena jootsin tihvtide päistesse selliste komponentide jaoks nagu mootoridraiverid ja FireBeetle.
Pärast jootmise lõpetamist testisin tahvlit lühise suhtes, pannes multimeetri takistuse mõõtmise režiimi ja vaadates, kas takistus on üle teatud summa. Tahvel läks läbi, nii et sain seejärel iga komponendi ühendada.
Samm 4: Programmeerimise ülevaade
Tahtsin, et selle plaadi kood oleks modulaarne ja seda oleks lihtne kasutada. See tähendas mitut konkreetsete funktsioonidega tegelevat klassi koos suurema pakendiklassiga, mis ühendab väiksemad.
5. samm: sisendid
Sisendite käitlemiseks lõin klassi nimega „Hub_Inputs”, mis võimaldab kodumäluga suhelda APDS9960 -ga, koos nuppude ja mahtuvuslike liideste loomise ja haldamisega. See sisaldab järgmisi funktsioone:
Loo nupp
Hankige, kui nuppu vajutatakse
Hankige mitu nupuvajutust
Hankige uusim žest
Hankige mahtuvuslik puuteväärtus
Nupud salvestatakse struktuurina, millel on kolm atribuuti: is_pressed, numberPress ja pin. Iga nupp, kui see on loodud, on ühendatud katkestusega. Kui see katkestus käivitatakse, edastatakse teenuse katkestamise rutiin (ISR) selle nupu kursorile (antud selle mäluaadressina nuppude massiivis) ja see suurendab nupuvajutuste arvu koos is_pressed Boolean väärtuse uuendamisega.
Mahtuvuslikud puuteväärtused on palju lihtsamad. Neid saab kätte, kui edastate puutepinna funktsioonile touchRead ().
Viimast žesti värskendatakse, küsitledes APDS9960 ja kontrollides, kas on tuvastatud mõni uus liigutus, ja kui see on tuvastatud, määrake privaatse liigutuse muutuja sellele liigutusele.
6. samm: väljundid
Nutika kodu jaoturil on mitu võimalust teabe väljastamiseks ja tulede vahetamiseks. I2C siinil purunevad tihvtid, mis võimaldavad kasutajatel LCD -ekraani ühendada. Siiani toetatakse ainult ühte LCD -ekraani suurust: 20 x 4. Kasutades funktsiooni “hub.display_message ()”, saavad kasutajad kuvada LCD -ekraanil sõnumeid, edastades stringi objekti.
Analoog -LED -ide ühendamiseks on olemas ka tihvtide päis. Funktsiooni “hub.set_led_strip (r, g, b)” kutsumine määrab riba värvi.
Kahte samm -mootorit juhitakse paari DRV8825 juhtplaati kasutades. Otsustasin kasutada BasicStepper raamatukogu, et juhtida mootori juhtimist. Kui plaat on käivitatud, luuakse kaks samm -objekti ja mõlemad mootorid aktiveeritakse. Iga mootori käivitamiseks kasutatakse funktsiooni „hub.step_motor (motor_id, steps)”, kus mootori id on kas 0 või 1.
7. samm: logimine
Kuna tahvlil on mitu andurit, soovisin võimalust kohapeal andmeid koguda ja logida.
Logimise alustamiseks luuakse uus fail nimega „hub.create_log (failinimi, päis)”, kus päise abil luuakse veerge tähistav CSV -failirida. Esimene veerg on alati ajatempel Aasta Kuu Päev Tund: Min: Sek. Aja saamiseks saab funktsioon hub.log_to_file () aja funktsiooniga basic_functions.get_time (). Seejärel edastatakse tm aja struktuur koos andmete ja failinimega viitena logimisfunktsiooni.
8. samm: helisignaal
Mis kasu on IoT -plaadist, kui te ei saa muusikat mängida? Sellepärast lisasin helisignaali, millel on funktsioon helide esitamiseks. Helistamine „hub.play_sounds (meloodia, kestus, pikkus)” hakkab lugu esitama, meloodia on noodisageduste massiiv, kestus nootide kestuste massiivina ja pikkus nootide arvuna.
9. samm: asjade Interneti välised integratsioonid
Rummu toetab praegu IFTTT veebihaake. Neid saab käivitada, kutsudes funktsiooni Hub_IoT.publish_webhook (URL, andmed, sündmus, võti) või Hub_IoT.publish_webhook (URL, andmed). See saadab antud URL -ile POST -päringu koos nende andmetega ja vajadusel koos sündmuse nimega. IFTTT integratsiooni näite seadistamiseks looge esmalt uus aplett. Seejärel valige veebikonksu teenus, mis käivitub päringu saamisel.
Seejärel helistage sündmusele "high_temp" ja salvestage see. Seejärel valige jaotise „See” jaoks Gmaili teenus ja valige suvand „Saada mulle meil”. Teenuse seadistuses sisestage „Temperatuur on kõrge!” teema jaoks ja seejärel panin väärtuseks „Mõõdetud temperatuur {{Value1}} {{OccurredAt}}”, mis näitab mõõdetud temperatuuri ja sündmuse käivitamise aega.
Pärast selle seadistamist kleepige lihtsalt IFTTT loodud veebikonksu URL ja pange sündmuste sektsiooni „high_temp”.
10. samm: kasutamine
Smart Home Hubi kasutamiseks helistage lihtsalt vajalikele funktsioonidele kas seadistuses () või silmuses (). Olen juba näidanud funktsioonikõnesid, näiteks praeguse aja printimine ja IFTTT -sündmuse helistamine.
11. samm: tulevikuplaanid
Smart Home Hub süsteem töötab väga hästi lihtsate koduautomaatika ja andmete kogumise ülesannete täitmiseks. Seda saab kasutada peaaegu kõige jaoks, näiteks LED -riba värvi määramiseks, ruumi temperatuuri jälgimiseks, valguse sisselülitamise kontrollimiseks ja paljude muude võimalike projektide jaoks. Tulevikus tahaksin funktsionaalsust veelgi laiendada. See võib hõlmata tugevama veebiserveri, kohaliku failimajutuse ja isegi Bluetoothi või mqtt lisamist.
Soovitan:
ESP32 kasutamise alustamine - ESP32 tahvlite installimine Arduino IDE -sse ESP32 vilkuv kood: 3 sammu
ESP32 kasutamise alustamine | ESP32 tahvlite installimine Arduino IDE -sse ESP32 vilkumiskood: selles juhendis näeme, kuidas alustada esp32 -ga töötamist ja kuidas esp32 -tahvleid Arduino IDE -sse installida, ning programmeerime esp 32, et käivitada vilkumiskood arduino ide abil
IKEA traadita lüliti - DIY Smart Home: 4 sammu
IKEA traadita lüliti - DIY Smart Home: poisid, loodan, et leiate minu idee huvitava ja kasuliku. Müügil on palju nutikaid pistikupesasid, kuid saate seda ise teha. Siin on minu idee odava DIY nutipesa kohta
IOT123 - ASISIMILEERITUD SENSORI HUB: ICOS10 GENERIC SHELL (HOOKUP WIRE) Kokkupanek: 4 sammu
IOT123 - ASISIMILEERITUD SENSORI HUB: ICOS10 GENERIC SHELL (HOOKUP WIRE) Kokkupanek: UPDATE Suurema töökindluse tagamiseks soovitame kasutada IDC vooluringi (mitte HOOKUP). Kui teil on aega vooluringi kontrollida, on see HOOKUP -i komplekt otstarbekas mitte -kriitiliseks kasutamiseks. Leidsin mõned juhtmed (paneelide ülemine kiht: punane/kollane) mitte kaua
IOT123 - ASISIMILEERITUD SENSORI HUB: ICOS10 3V3 MQTT NODE: 6 sammu
IOT123 - ASISIMILEERITUD SENSORI HUB: ICOS10 3V3 MQTT NODE: See on esimene mitmetest MCU/funktsioonikombinatsioonidest ASSIMILATE SENSOR HUBES: meistrid, kes koguvad I2C ASSIMILATE SENSORS orjade andmete prügilaid. See ehitis kasutab Wemos D1 Mini, et avaldada kõik andmed, mis on ASSIMILATE -st dumpitud
GO-4 Smart Home Arduino Bot: 7 sammu (koos piltidega)
GO-4 Smart Home Arduino Bot: Selles projektis näitan teile, kuidas luua nutikat kodubotti, kasutades IOT-tehnoloogiat, et oma kodumasinaid Interneti kaudu kaugjuhtida. Aga enne kui alustame, räägime sellest tehnikast, nagu me seda kasutasime teha … Mis on IOT? Th