Sisukord:

ESP32 Smart Home Hub: 11 sammu
ESP32 Smart Home Hub: 11 sammu

Video: ESP32 Smart Home Hub: 11 sammu

Video: ESP32 Smart Home Hub: 11 sammu
Video: ESP32 HomeKit Tutorial | HomeSpan 2024, September
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

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

Funktsioonid
Funktsioonid
Funktsioonid
Funktsioonid
Funktsioonid
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

PCB
PCB
PCB
PCB
PCB
PCB
PCB
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

Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
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

Sisendid
Sisendid
Sisendid
Sisendid
Sisendid
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

Väljundid
Väljundid
Väljundid
Väljundid
Väljundid
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

Logimine
Logimine
Logimine
Logimine
Logimine
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

Sumin
Sumin

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

Välised IoT -integratsioonid
Välised IoT -integratsioonid
Välised IoT -integratsioonid
Välised IoT -integratsioonid
Välised IoT -integratsioonid
Välised IoT -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

Kasutamine
Kasutamine
Kasutamine
Kasutamine
Kasutamine
Kasutamine
Kasutamine
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: