Taula de continguts:
- Subministraments
- Pas 1: funcions
- Pas 2: PCB
- Pas 3: Muntatge
- Pas 4: Visió general de la programació
- Pas 5: entrades
- Pas 6: Sortides
- Pas 7: registre
- Pas 8: timbre
- Pas 9: Integracions IoT externes
- Pas 10: Ús
- Pas 11: Plans de futur
Vídeo: ESP32 Smart Home Hub: 11 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
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
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
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
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
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
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
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
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
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
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:
Smart Home de Raspberry Pi: 5 passos (amb imatges)
Smart Home de Raspberry Pi: ja hi ha diversos productes que fan que el vostre pis sigui més intel·ligent, però la majoria són solucions propietàries. Però, per què necessiteu una connexió a Internet per canviar una llum amb el vostre telèfon intel·ligent? Aquesta va ser una de les raons per la qual vaig construir el meu propi Smar
LCD PEDRA amb Smart Home: 5 passos
STONE LCD amb Smart Home: avui tinc la pantalla de la unitat de port sèrie de STONE, que es pot comunicar a través del port sèrie de l’MCU, i el disseny lògic de la interfície d’usuari d’aquesta pantalla es pot dissenyar directament mitjançant el programari VGUS que es proporciona al lloc web oficial de STONE, que és molt conveni
Introducció a ESP32 - Instal·lació de plaques ESP32 a Arduino IDE - ESP32 Blink Code: 3 passos
Introducció a ESP32 | Instal·lació de plaques ESP32 a Arduino IDE | ESP32 Blink Code: en aquest instructable veurem com començar a treballar amb esp32 i com instal·lar plaques esp32 a Arduino IDE i programarem esp 32 per executar codi blink amb arduino ide
Interfície Honeywell Vista Alarm amb Smart Hub (Wink / Smartthings): 7 passos (amb imatges)
Interfície Honeywell Vista Alarm amb Smart Hub (Wink / Smartthings): Hola! Volia donar un breu tutorial sobre com vaig integrar el meu sistema d’alarma Honeywell Vista al meu hub intel·ligent. Estic fent servir Wink per a aquest tutorial, però hauria de funcionar amb qualsevol hub intel·ligent (Smartthings / Iris / etc.) Abans de començar, ja aneu
Google Home de bricolatge amb altaveu Bluetooth al hub d'acoblament zero Raspberry Pi: 7 passos (amb imatges)
Google Home de bricolatge amb altaveu Bluetooth al hub d’acoblament zero Raspberry Pi: tenim un instructiu a Amazon Amazon Echo Alexa - Alexa Voice Assistant al hub d’acoblament zero Raspberry Pi. Aquesta vegada us volem mostrar com podeu construir un Google Home DIY. En aquesta instrucció, us mostrarem com instal·lar i configurar l'Assistent de Google