Taula de continguts:

ESP32 Smart Home Hub: 11 passos
ESP32 Smart Home Hub: 11 passos

Vídeo: ESP32 Smart Home Hub: 11 passos

Vídeo: ESP32 Smart Home Hub: 11 passos
Vídeo: ESP32 HomeKit Tutorial | HomeSpan 2024, Juny
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

Crear un sistema que pugui gestionar grans quantitats de dades del sensor, tenir diverses sortides i connectar-se a Internet o a una xarxa local requereix molt de temps i força esforç. Massa sovint, la gent que vol fer les seves pròpies xarxes domèstiques intel·ligents lluita per poder trobar i muntar components personalitzats en un sistema més gran. Per això, volia crear una plataforma modular i rica en funcions que facilités la construcció de sensors i sortides connectats a IoT.

Gràcies a DFRobot i PCBGOGO.com per patrocinar aquest projecte.

Per obtenir informació més detallada, visiteu la reposició de Github:

Subministraments

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • Sensor DHT22

    www.dfrobot.com/product-1102.html

  • APDS9960 Sensor de llum i gest

    www.dfrobot.com/product-1361.html

  • Mòdul LCD I2C 20x4

    www.dfrobot.com/product-590.html

  • Tira LED analògica RGB

    www.dfrobot.com/product-1829.html

  • Controladors de motor pas a pas DRV8825
  • Lector de targetes SD
  • Motors pas a pas NEMA17

Pas 1: funcions

Característiques
Característiques
Característiques
Característiques
Característiques
Característiques

La principal característica d’aquesta placa és una placa de desenvolupament ESP32 FireBeetle que gestiona totes les comunicacions, lectures de sensors i sortides. Hi ha dos controladors de motors pas a pas que controlen dos motors pas a pas bipolars.

El bus I2C també es divideix per utilitzar-lo amb components com l'APDS9960 o una pantalla LCD. Per llegir la temperatura, hi ha pins trencats per connectar-se a un sensor DHT22, així com un fotoresistor per llegir els nivells de llum ambiental.

Hi ha suport per a una tira de llum analògica a la placa, que té tres MOSFET per accionar els llums LED.

Pas 2: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

Vaig començar el procés de disseny de PCB creant primer un esquema a Eagle. Com que no he pogut trobar una biblioteca ESP32 FireBeetle, he fet servir dues capçaleres de pin 1x18 pin. Llavors, vaig crear un circuit de gestió d’energia que podia acceptar 12v mitjançant una presa de barril de CC i convertir-lo a 5v per alimentar els sensors i ESP32.

Després de completar l'esquema, vaig passar a dissenyar el propi PCB.

Sabia que l'endoll de barril de CC hauria d'estar a prop de la placa i que els condensadors de suavització de la font d'alimentació 100uF havien d'estar a prop de les entrades de potència del controlador del motor pas a pas. Després de disposar-ho tot, vaig començar a encaminar traces.

Tot i que Oshpark fabrica PCB de gran qualitat, els seus preus són força alts. Afortunadament, PCBGOGO.com també fabrica grans PCB a un preu assequible. Vaig poder comprar deu PCB per només 5 dòlars, en lloc de pagar 52 dòlars per només tres taules d'Ospark.com.

Pas 3: Muntatge

muntatge
muntatge
muntatge
muntatge
muntatge
muntatge

En general, muntar el tauler va ser bastant fàcil. Vaig començar soldant els components muntats a la superfície i després connectant el connector i el regulador de la presa de barril. A continuació, he soldat a les capçaleres dels pins per a components com els controladors de motor i el FireBeetle.

Un cop finalitzada la soldadura, vaig provar la placa de curtcircuit posant un multímetre en mode de mesura de resistència i comprovant si la resistència era superior a una certa quantitat. La placa va passar, de manera que vaig poder connectar cada component.

Pas 4: Visió general de la programació

Volia que el codi d’aquest tauler fos modular i fàcil d’utilitzar. Això significava tenir diverses classes que gestionen funcions específiques, juntament amb una classe d'embolcall més gran que combina les més petites.

Pas 5: entrades

Entrades
Entrades
Entrades
Entrades
Entrades
Entrades

Per al maneig d’entrades, vaig crear una classe anomenada “Hub_Inputs”, que permet que el concentrador domèstic es comuniqui amb l’APDS9960, juntament amb la creació i gestió de botons i interfícies tàctils capacitives. Conté les funcions següents:

Botó Crea

Obteniu si es prem el botó

Obteniu el nombre de pulsacions de botó

Obteniu l'últim gest

Obteniu un valor tàctil capacitiu

Els botons s’emmagatzemen com una estructura, amb tres atributs: is_pressed, numberPresses i pin. Cada botó, quan es crea, està unit a una interrupció. Quan s’activa aquesta interrupció, la rutina de servei d’interrupció (ISR) passa el punter del botó (que s’indica com a adreça de memòria a la matriu de botons) i augmenta el nombre de pulsacions de botons, juntament amb l’actualització del valor booleà is_pressed.

Els valors tàctils capacitius són molt més senzills. Es recuperen passant el pin tàctil a la funció touchRead ().

L'últim gest s'actualitza enquestant l'APDS9960 i comprovant si s'ha detectat algun gest nou i, si n'hi ha detectat un, configureu la variable de gest privat a aquest gest.

Pas 6: Sortides

Sortides
Sortides
Sortides
Sortides
Sortides
Sortides

El hub de casa intel·ligent presenta diverses maneres de generar informació i canviar de llum. Hi ha pins que trenquen el bus I2C, cosa que permet als usuaris connectar una pantalla LCD. Fins ara, només s’admetia una mida de pantalla LCD: 20 x 4. Mitjançant la funció “hub.display_message ()”, els usuaris poden mostrar missatges a la pantalla LCD passant un objecte de cadena.

També hi ha una capçalera de pin per connectar una sèrie de LED analògics. Si crideu la funció "hub.set_led_strip (r, g, b)", es defineix el color de la tira.

Els dos motors pas a pas s’accionen mitjançant un parell de plaques de control DRV8825. Vaig decidir utilitzar la biblioteca BasicStepper per gestionar el control del motor. Quan s'inicia la placa, es creen dos objectes pas a pas i els dos motors estan habilitats. Per passar cada motor, s’utilitza la funció “hub.step_motor (motor_id, steps)”, on l’identificador del motor és 0 o 1.

Pas 7: registre

Registre
Registre
Registre
Registre
Registre
Registre

Com que la placa té diversos sensors, volia la possibilitat de recopilar i registrar dades localment.

Per iniciar el registre, es crea un fitxer nou amb "hub.create_log (nom de fitxer, capçalera)", on s'utilitza la capçalera per crear una fila de fitxers CSV que denoti columnes. La primera columna sempre és una marca de temps en format Any Mes Dia Hora: mínim: segon. Per obtenir el temps, la funció hub.log_to_file () obté el temps amb la funció basic_functions.get_time (). L'estructura de temps tm es passa per referència a la funció de registre, juntament amb les dades i el nom del fitxer.

Pas 8: timbre

Zumbador
Zumbador

De què serveix un tauler IoT si no podeu reproduir música? Per això, he inclòs un brunzidor amb una funció per reproduir sons. Cridar "hub.play_sounds (melodia, durada, longitud)" comença a reproduir una cançó, sent la melodia una matriu de freqüències de notes, la durada com a matriu de durades de les notes i la longitud com a nombre de notes.

Pas 9: Integracions IoT externes

Integracions IoT externes
Integracions IoT externes
Integracions IoT externes
Integracions IoT externes
Integracions IoT externes
Integracions IoT externes

Actualment, el centre admet webhooks IFTTT. Es poden activar trucant a la funció Hub_IoT.publish_webhook (url, dades, esdeveniment, clau) o Hub_IoT.publish_webhook (url, dades). Això envia una sol·licitud POST a l'URL indicat amb aquestes dades adjuntes, juntament amb un nom d'esdeveniment si cal. Per configurar un exemple d’integració IFTTT, primer creeu una miniaplicació nova. A continuació, seleccioneu el servei de webhook que s'activa quan es rep una sol·licitud.

A continuació, crideu l'esdeveniment "high_temp" i deseu-lo. A continuació, seleccioneu el servei de Gmail per a la part "Això" i trieu l'opció "Enviar-me un correu electrònic". Dins de la configuració del servei, poseu "La temperatura és alta". per al tema, i després he posat "Temperatura mesurada de {{Value1}} a {{OccurredAt}}", que mostra la temperatura mesurada i l'hora en què es va activar l'esdeveniment.

Després de configurar-lo, només cal enganxar l'URL del webhook que genera IFTTT i posar "high_temp" a la secció d'esdeveniments.

Pas 10: Ús

Ús
Ús
Ús
Ús
Ús
Ús
Ús
Ús

Per utilitzar l’Smart Home Hub, només cal que truqueu a totes les funcions necessàries a setup () o loop (). Ja he posat exemple de trucades a funcions, com ara imprimir l’hora actual i trucar a un esdeveniment IFTTT.

Pas 11: Plans de futur

El sistema Smart Home Hub funciona molt bé per a tasques senzilles de domòtica i recopilació de dades. Es pot utilitzar per a gairebé qualsevol cosa, com ara configurar el color d’una tira LED, controlar la temperatura d’una habitació, comprovar si hi ha una llum encesa i un munt d’altres projectes potencials. En el futur, voldria ampliar encara més la funcionalitat. Això podria incloure l’addició d’un servidor web més robust, allotjament de fitxers local i fins i tot Bluetooth o mqtt.

Recomanat: