INHOUDSOPGAWE:

ESP32 Smart Home Hub: 11 stappe
ESP32 Smart Home Hub: 11 stappe

Video: ESP32 Smart Home Hub: 11 stappe

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

Om 'n stelsel te skep wat groot hoeveelhede sensordata kan hanteer, veelvuldige uitsette kan hê en met die internet of 'n plaaslike netwerk kan skakel, verg baie tyd en moeite. Al te dikwels sukkel mense wat hul eie slimhuisnetwerke wil maak, om aangepaste komponente in 'n groter stelsel te vind en te monteer. Daarom wou ek 'n modulêre en funksie-ryk platform maak wat dit maklik sou maak om IoT-gekoppelde sensors en uitsette te bou.

Dankie aan DFRobot en PCBGOGO.com vir die borg van hierdie projek!

Besoek die Github-repo vir meer diepgaande inligting:

Voorrade

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • Sensor DHT22

    www.dfrobot.com/product-1102.html

  • APDS9960 lig- en gebaar sensor

    www.dfrobot.com/product-1361.html

  • I2C 20x4 LCD -module

    www.dfrobot.com/product-590.html

  • Analoog RGB LED Strip

    www.dfrobot.com/product-1829.html

  • DRV8825 Stappermotorbestuurders
  • SD kaartleser
  • NEMA17 Stepper Motors

Stap 1: Kenmerke

Kenmerke
Kenmerke
Kenmerke
Kenmerke
Kenmerke
Kenmerke

Die belangrikste kenmerk van hierdie bord is 'n ESP32 FireBeetle Development Board wat alle kommunikasie, sensorlesings en uitsette hanteer. Daar is twee stapmotorbestuurders wat twee bipolêre stepper motors bestuur.

Die I2C -bus is ook uitgebreek vir gebruik met komponente soos die APDS9960 of 'n LCD. Vir die lees van die temperatuur is daar penne gebreek om aan te sluit op 'n DHT22 -sensor, sowel as 'n fotoresistor om die omringende ligvlakke te lees.

Daar is ondersteuning vir 'n analoog ligstrook op die bord, met drie MOSFET's om die LED -ligte aan te dryf.

Stap 2: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

Ek het die PCB -ontwerpproses begin deur eers 'n skema in Eagle te skep. Aangesien ek nie 'n ESP32 FireBeetle -biblioteek kon vind nie, het ek net twee pen 1x18 -speldopskrifte gebruik. Daarna het ek 'n kragbestuurskring geskep wat 12v deur 'n DC -vataansluiting kan aanvaar en dit omskakel in 5v om die sensors en ESP32 aan te dryf.

Nadat die skema voltooi is, het ek begin met die ontwerp van die PCB self.

Ek het geweet dat die DC -vatprop naby die voorkant van die bord moet wees, en die 100uF -verskaffingskondenseerders van die kragtoevoer moet naby die ingange van die stapmotorbestuurder wees. Nadat alles uitgelê is, het ek spore begin opspoor.

Alhoewel Oshpark PCB's van uitstekende gehalte maak, is die pryse redelik hoog. Gelukkig maak PCBGOGO.com ook uitstekende PCB's teen 'n bekostigbare prys. Ek kon tien PCB's vir slegs $ 5 koop, eerder as om $ 52 vir slegs drie borde van Oshpark.com te betaal.

Stap 3: Montering

Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering

Oor die algemeen was die montering van die bord redelik maklik. Ek het begin deur die komponente op die oppervlak te soldeer en dan die aansluiting en die reguleerder van die vat vas te maak. Vervolgens het ek die penkoppe vir komponente soos die motorbestuurders en die FireBeetle gesoldeer.

Nadat die soldeer voltooi is, het ek die kaart getoets vir kortsluiting deur 'n multimeter in die weerstandsmetingsmodus te plaas en te kyk of die weerstand oor 'n sekere hoeveelheid is. Die bord het geslaag, sodat ek elke komponent kon aansluit.

Stap 4: Oorsig oor programmering

Ek wou hê dat die kode vir hierdie bord modulêr en maklik om te gebruik is. Dit beteken dat u verskillende klasse het wat spesifieke funksies hanteer, asook 'n groter omslagklas wat die kleiner kombineer.

Stap 5: Insette

Insette
Insette
Insette
Insette
Insette
Insette

Vir die hantering van insette het ek 'n klas genaamd "Hub_Inputs" geskep, waarmee die tuishub met die APDS9960 kan kommunikeer, tesame met die skep en bestuur van knoppies en kapasitiewe aanraakkoppelvlakke. Dit bevat die volgende funksies:

Skep knoppie

Kry as die knoppie gedruk word

Kry die aantal knoppies

Kry die nuutste gebaar

Kry kapasitiewe aanraakwaarde

Die knoppies word as 'n struktuur gestoor, met drie kenmerke: is_gedruk, getalpers en pen. Elke knoppie word, wanneer dit geskep is, aan 'n onderbreking gekoppel. As die onderbreking geaktiveer word, word die onderbreekdiensroetine (ISR) deur die knoppie se wyser (aangegee as die geheue -adres daarvan in die knoppie -reeks) deurgegee, en word die aantal knoppies ingedruk, asook die opdatering van die is_gedrukte Booleaanse waarde.

Kapasitiewe raakwaardes is baie eenvoudiger. Hulle word opgehaal deur die raakpen na die touchRead () -funksie te stuur.

Die nuutste gebaar word opgedateer deur die APDS9960 te peil en te kyk of daar 'n nuwe gebaar opgespoor is, en as een daarvan opgespoor is, stel die private gebaar veranderlike op daardie gebaar.

Stap 6: Uitsette

Uitsette
Uitsette
Uitsette
Uitsette
Uitsette
Uitsette

Die slimhuis -hub het verskillende maniere om inligting uit te voer en ligte te verander. Daar is penne wat die I2C -bus uitbreek, waardeur gebruikers 'n LCD kan koppel. Tot dusver word slegs een grootte LCD ondersteun: 20 x 4. Deur die funksie "hub.display_message ()" te gebruik, kan gebruikers boodskappe op die LCD vertoon deur 'n stringvoorwerp in te stuur.

Daar is ook 'n penkop om 'n string analoog LED's aan te sluit. Deur die funksie "hub.set_led_strip (r, g, b)" te noem, word die kleur van die strook bepaal.

Die twee stapmotors word aangedryf deur 'n paar DRV8825 -bestuurborde. Ek het besluit om die BasicStepper -biblioteek te gebruik om motorbeheer te hanteer. As die bord opgestart word, word twee stepper -voorwerpe geskep en word beide motors aangeskakel. Om elke motor te stap, word die funksie "hub.step_motor (motor_id, stappe)" gebruik, waar motor -ID 0 of 1 is.

Stap 7: Teken in

Logging
Logging
Logging
Logging
Logging
Logging

Omdat die bord verskeie sensors het, wou ek die moontlikheid hê om data plaaslik te versamel en aan te meld.

Om te begin aanmeld, word 'n nuwe lêer geskep met "hub.create_log (lêernaam, kop)", waar kop gebruik word om 'n CSV -lêer te maak wat kolomme aandui. Die eerste kolom is altyd 'n tydstempel in Jaar Maand Dag Uur: Min: Sek formaat. Om die tyd te kry, kry die funksie hub.log_to_file () die tyd met die funksie basic_functions.get_time (). Die tm -tydstruktuur word dan deur verwysing na die aanmeldingsfunksie, saam met die data en lêernaam, oorgedra.

Stap 8: Gonser

Gonser
Gonser

Wat help 'n IoT -bord as u nie musiek kan speel nie? Daarom het ek 'n gonser ingesluit met 'n funksie om klanke te speel. Om 'hub.play_sounds (melodie, duur, lengte)' te noem, begin 'n liedjie speel, met melodie 'n verskeidenheid nootfrekwensies, duur as 'n reeks nootduurte en lengte as die aantal note.

Stap 9: Eksterne IoT -integrasies

Eksterne IoT -integrasies
Eksterne IoT -integrasies
Eksterne IoT -integrasies
Eksterne IoT -integrasies
Eksterne IoT -integrasies
Eksterne IoT -integrasies

Die hub ondersteun tans IFTTT -webhooks. Dit kan veroorsaak word deur die Hub_IoT.publish_webhook (url, data, gebeurtenis, sleutel) of Hub_IoT.publish_webhook (url, data) -funksie te skakel. Dit stuur 'n POST -versoek na die gegewe URL met die aangehegte data, saam met 'n gebeurtenisnaam indien nodig. Om 'n voorbeeld IFTTT -integrasie op te stel, skep eers 'n nuwe applet. Kies dan die webhook -diens wat geaktiveer word wanneer 'n versoek ontvang word.

Noem die geleentheid dan 'high_temp' en stoor dit. Kies dan die Gmail -diens vir die gedeelte "Dit" en kies die opsie "Stuur 'n e -pos aan myself". In die opstelling vir die diens, stel 'Die temperatuur is hoog!' vir die onderwerp, en dan plaas ek 'Gemete temperatuur van {{Waarde1}} by {{OccuredAt}}', wat die gemete temperatuur en die tyd waarop die gebeurtenis geaktiveer is, toon.

Nadat u dit opgestel het, plak u eenvoudig die webhook -URL wat deur IFTTT gegenereer word, en plaas 'high_temp' in die gebeurtenisafdeling.

Stap 10: Gebruik

Gebruik
Gebruik
Gebruik
Gebruik
Gebruik
Gebruik
Gebruik
Gebruik

Om die Smart Home Hub te gebruik, bel die nodige funksies in die setup () of lus (). Ek het reeds voorbeeldfunksies genoem, soos om die huidige tyd te druk en 'n IFTTT -gebeurtenis te bel.

Stap 11: Toekomstige planne

Die Smart Home Hub -stelsel werk baie goed vir eenvoudige tuisautomatisering en data -insamelingstake. Dit kan vir byna enigiets gebruik word, soos om die kleur van 'n LED -strook in te stel, die temperatuur van 'n kamer te monitor, te kyk of 'n lamp aan is en 'n hele klomp ander moontlike projekte. In die toekoms wil ek die funksie nog meer uitbrei. Dit kan insluit die toevoeging van 'n meer robuuste webserver, plaaslike lêerhosting en selfs Bluetooth of mqtt.

Aanbeveel: