Përmbajtje:

ESP32 Smart Home Hub: 11 hapa
ESP32 Smart Home Hub: 11 hapa

Video: ESP32 Smart Home Hub: 11 hapa

Video: ESP32 Smart Home Hub: 11 hapa
Video: ESP32 HomeKit Tutorial | HomeSpan 2024, Nëntor
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

Krijimi i një sistemi që mund të trajtojë sasi të mëdha të të dhënave të sensorit, të ketë dalje të shumta dhe të lidhet me internetin ose një rrjet lokal kërkon një kohë të gjatë dhe përpjekje të mëdha. Shumë shpesh, njerëzit që duan të bëjnë rrjetet e tyre të zgjuara të shtëpisë luftojnë me aftësinë për të gjetur dhe mbledhur përbërës të personalizuar në një sistem më të madh. Kjo është arsyeja pse unë doja të krijoja një platformë modulare dhe të pasur me karakteristika që do ta bënte të lehtë ndërtimin e sensorëve dhe daljeve të lidhura me IoT.

Faleminderit DFRobot dhe PCBGOGO.com për sponsorizimin e këtij projekti!

Për informacion më të thelluar, vizitoni repon e Github:

Furnizimet

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • Sensori DHT22

    www.dfrobot.com/product-1102.html

  • APDS9960 Sensori i dritës dhe gjesteve

    www.dfrobot.com/product-1361.html

  • Moduli LCD I2C 20x4

    www.dfrobot.com/product-590.html

  • Rrip LED RGB analog

    www.dfrobot.com/product-1829.html

  • Drejtuesit e motorit Stepper DRV8825
  • Lexues i kartave SD
  • NEMA17 Stepper Motors

Hapi 1: Karakteristikat

Karakteristikat
Karakteristikat
Karakteristikat
Karakteristikat
Karakteristikat
Karakteristikat

Karakteristika kryesore e këtij bordi është një Bord Zhvillimi ESP32 FireBeetle që trajton të gjithë komunikimin, leximet e sensorëve dhe daljet. Ekzistojnë dy drejtues të motorëve stepper që kontrollojnë dy motorë stepper bipolarë.

Autobusi I2C është gjithashtu i prishur për përdorim me përbërës të tillë si APDS9960 ose një LCD. Për të lexuar temperaturën, ka kunja të thyer për t'u lidhur me një sensor DHT22, si dhe një rezistencë fotografike për leximin e niveleve të dritës së ambientit.

Ekziston mbështetje për një shirit analog të dritës në tabelë, e cila ka tre MOSFET në të për të drejtuar dritat LED.

Hapi 2: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

Fillova procesin e projektimit të PCB duke krijuar së pari një skemë në Eagle. Meqenëse nuk isha në gjendje të gjeja një bibliotekë ESP32 FireBeetle, thjesht përdorja dy tituj pin 1x18 pin në vend të tyre. Pastaj, krijova një qark të menaxhimit të energjisë që mund të pranonte 12v përmes një prizë fuçi DC dhe ta konvertonte atë në 5v për të ndezur sensorët dhe ESP32.

Pas përfundimit të skemës, kalova në hartimin e vetë PCB -së.

E dija që priza e fuçisë DC do të duhej të ishte pranë pjesës së përparme të tabelës, dhe kondensatorët zbutës të furnizimit me energji 100uF duhej të ishin afër hyrjeve të fuqisë së drejtuesit të motorit stepper. Pasi gjithçka u shtrua, fillova të drejtoja gjurmët.

Ndërsa Oshpark bën PCB me cilësi të shkëlqyeshme, çmimet e tyre janë mjaft të larta. Fatmirësisht, PCBGOGO.com gjithashtu bën PCB të shkëlqyeshëm me një çmim të përballueshëm. Isha në gjendje të blija dhjetë PCB për vetëm 5 dollarë, në vend që të paguaja 52 dollarë për vetëm tre dërrasa nga Oshpark.com.

Hapi 3: Montimi

Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi

Në përgjithësi, montimi i bordit ishte mjaft i lehtë. Fillova duke bashkuar përbërësit e montuar në sipërfaqe, dhe pastaj duke bashkuar lidhësin dhe rregullatorin e folesë. Tjetra, unë bashkova në titujt e pin për përbërës të tillë si drejtuesit e motorit dhe FireBeetle.

Pasi të kishte përfunduar saldimi, e testova bordin për qark të shkurtër duke vënë një multimetër në modalitetin e matjes së rezistencës dhe duke parë nëse rezistenca ishte mbi një sasi të caktuar. Bordi kaloi, kështu që unë atëherë isha në gjendje të lidhesha me secilin komponent.

Hapi 4: Vështrim i përgjithshëm i programimit

Doja që kodi për këtë tabelë të ishte modular dhe i lehtë për t’u përdorur. Kjo nënkuptonte të kishit disa klasa që trajtojnë funksione të veçanta, së bashku me një klasë më të madhe mbështjellëse që kombinon ato më të vogla.

Hapi 5: Inputet

Hyrjet
Hyrjet
Hyrjet
Hyrjet
Hyrjet
Hyrjet

Për trajtimin e hyrjeve, unë krijova një klasë të quajtur "Hub_Inputs", e cila lejon që shpërndarësi i shtëpisë të komunikojë me APDS9960, së bashku me krijimin dhe menaxhimin e butonave dhe ndërfaqeve kapacitore të prekjes. Ai përmban funksionet e mëposhtme:

Butoni Krijo

Merr nëse shtypet butoni

Merrni numrin e shtypjeve të butonave

Merr gjestin e fundit

Merrni vlerën kapacitore të prekjes

Butonat ruhen si strukturë, me tre atribute: is_pressed, numberPresses dhe pin. Çdo buton, kur krijohet, i bashkëngjitet një ndërprerjeje. Kur kjo ndërprerje ndizet, Rutina e Shërbimit të Ndërprerjes (ISR) i kalohet treguesit të atij butoni (i dhënë si adresa e kujtesës së tij në grupin e butonave) dhe rrit numrin e shtypjeve të butonave, së bashku me azhurnimin e vlerës isole.

Vlerat kapëse të prekjes janë shumë më të thjeshta. Ato merren duke kaluar pinin e prekjes në funksionin touchRead ().

Gjesti i fundit përditësohet duke anketuar APDS9960 dhe duke kontrolluar nëse është zbuluar ndonjë gjest i ri, dhe nëse është zbuluar, vendosni ndryshoren e gjestit privat në atë gjest.

Hapi 6: Rezultatet

Daljet
Daljet
Daljet
Daljet
Daljet
Daljet

Qendra e shtëpisë së zgjuar përmban disa mënyra për të nxjerrë informacion dhe për të ndryshuar dritat. Ka kunja që shpërthejnë autobusin I2C, duke i lejuar përdoruesit të lidhin një LCD. Deri më tani, vetëm një madhësi LCD mbështetet: 20 x 4. Duke përdorur funksionin "hub.display_message ()", përdoruesit mund të shfaqin mesazhe në LCD duke kaluar në një objekt vargu.

Ekziston edhe një kokë pin për të lidhur një varg LED LED analog. Thirrja e funksionit "hub.set_led_strip (r, g, b)", vendos ngjyrën e shiritit.

Dy motorët stepper drejtohen duke përdorur një palë dërrasa shoferi DRV8825. Vendosa të përdor bibliotekën BasicStepper për të trajtuar kontrollin motorik. Kur bordi ngrihet, krijohen dy objekte stepper dhe të dy motorët bëhen të aktivizuar. Për të rritur secilin motor, përdoret funksioni "hub.step_motor (motor_id, steps)", ku ID e motorit është ose 0 ose 1.

Hapi 7: Regjistrimi

Prerje
Prerje
Prerje
Prerje
Prerje
Prerje

Për shkak se bordi ka disa sensorë, doja mundësinë për të mbledhur dhe regjistruar të dhënat në nivel lokal.

Për të filluar regjistrimin, krijohet një skedar i ri me "hub.create_log (emri i skedarit, titulli)", ku titulli përdoret për të bërë një rresht skedar CSV që tregon kolona. Kolona e parë është gjithmonë një vulë kohore në orën e ditës së muajit të vitit: Min: Formati i sek. Për të marrë kohën, funksioni hub.log_to_file () merr kohën me funksionin themelor_functions.get_time (). Struktura e kohës tm kalohet më pas me referencë në funksionin e regjistrimit, së bashku me të dhënat dhe emrin e skedarit.

Hapi 8: Zile

Zile
Zile

Çfarë përfitimi ka një bord IoT nëse nuk mund të luani muzikë? Kjo është arsyeja pse unë përfshiva një zile me një funksion për të luajtur tinguj. Thirrja "tinguj hub.play (melodi, kohëzgjatja, gjatësia)" fillon të luajë një këngë, me melodinë që është një grup frekuencash notash, kohëzgjatja si një grup kohëzgjatjesh të notave dhe gjatësia si numri i notave.

Hapi 9: Integrimet e jashtme IoT

Integrimet e jashtme IoT
Integrimet e jashtme IoT
Integrimet e jashtme IoT
Integrimet e jashtme IoT
Integrimet e jashtme IoT
Integrimet e jashtme IoT

Qendra aktualisht mbështet lidhëset e uebit IFTTT. Ato mund të nxiten duke thirrur funksionin Hub_IoT.publish_webhook (url, të dhëna, ngjarje, çelës) ose Hub_IoT.publish_webhook (url, të dhëna). Kjo dërgon një kërkesë POST në URL -në e dhënë me ato të dhëna të bashkangjitura, së bashku me një emër ngjarjeje nëse është e nevojshme. Për të krijuar një shembull integrimi IFTTT, së pari krijoni një aplet të ri. Pastaj zgjidhni shërbimin webhook që aktivizohet kur të merret një kërkesë.

Tjetra, quani ngjarjen "tempull i lartë" dhe ruajeni. Pastaj, zgjidhni shërbimin Gmail për pjesën "That" dhe zgjidhni opsionin "Dërgoni një email tek vetja". Brenda konfigurimit për shërbimin, vendosni "Temperatura është e lartë!" për lëndën, dhe më pas vendosa "Temperatura e matur e {{Vlera 1}} në {{OccurredAt}}", e cila tregon temperaturën e matur dhe kohën kur ngjarja u ndez.

Pasi ta vendosni, thjesht ngjitni URL -në e webhook që gjenerohet nga IFTTT dhe vendosni "high_temp" në seksionin e ngjarjeve.

Hapi 10: Përdorimi

Përdorimi
Përdorimi
Përdorimi
Përdorimi
Përdorimi
Përdorimi
Përdorimi
Përdorimi

Për të përdorur Smart Home Hub, thjesht telefononi çdo funksion të nevojshëm në konfigurim () ose loop (). Unë kam vënë tashmë shembullin e thirrjeve të funksioneve, të tilla si printimi i kohës aktuale dhe thirrja e një ngjarjeje IFTTT.

Hapi 11: Planet e së ardhmes

Sistemi Smart Home Hub funksionon shumë mirë për automatizimin e thjeshtë të shtëpisë dhe detyrat e mbledhjes së të dhënave. Mund të përdoret për pothuajse çdo gjë, të tilla si vendosja e ngjyrës së një shiriti LED, monitorimi i temperaturës së një dhome, kontrollimi nëse ndizet një dritë dhe një mori e tërë projektesh të tjera të mundshme. Në të ardhmen, do të doja të zgjeroja funksionalitetin edhe më shumë. Kjo mund të përfshijë shtimin e një serveri më të fuqishëm në internet, pritjen e skedarëve lokalë dhe madje edhe Bluetooth ose mqtt.

Recommended: