Tabla de contenido:
- Suministros
- Paso 1: características
- Paso 2: PCB
- Paso 3: Montaje
- Paso 4: descripción general de la programación
- Paso 5: Entradas
- Paso 6: Salidas
- Paso 7: registro
- Paso 8: zumbador
- Paso 9: Integraciones de IoT externas
- Paso 10: uso
- Paso 11: Planes futuros
Video: ESP32 Smart Home Hub: 11 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Crear un sistema que pueda manejar grandes cantidades de datos de sensores, tener múltiples salidas y conectarse a Internet o una red local requiere mucho tiempo y una gran cantidad de esfuerzo. Con demasiada frecuencia, las personas que desean crear sus propias redes domésticas inteligentes tienen dificultades para encontrar y ensamblar componentes personalizados en un sistema más grande. Es por eso que quería crear una plataforma modular y rica en funciones que facilitara la construcción de sensores y salidas conectados a IoT.
¡Gracias a DFRobot y PCBGOGO.com por patrocinar este proyecto!
Para obtener información más detallada, visite el repositorio de Github:
Suministros
-
DFRobot ESP32 FireBeetle
www.dfrobot.com/product-1590.html
-
Sensor DHT22
www.dfrobot.com/product-1102.html
-
Sensor de luz y gestos APDS9960
www.dfrobot.com/product-1361.html
-
Módulo LCD I2C 20x4
www.dfrobot.com/product-590.html
- Tira de LED RGB analógica
www.dfrobot.com/product-1829.html
- Controladores de motor paso a paso DRV8825
- Lector de tarjetas SD
- Motores paso a paso NEMA17
Paso 1: características
La característica principal de esta placa es una placa de desarrollo ESP32 FireBeetle que maneja todas las comunicaciones, lecturas de sensores y salidas. Hay dos controladores de motor paso a paso que controlan dos motores paso a paso bipolares.
El bus I2C también está diseñado para su uso con componentes como el APDS9960 o una pantalla LCD. Para leer la temperatura, hay clavijas rotas para conectarse a un sensor DHT22, así como un fotorresistor para leer los niveles de luz ambiental.
Hay soporte para una tira de luz analógica en la placa, que tiene tres MOSFET para impulsar las luces LED.
Paso 2: PCB
Comencé el proceso de diseño de PCB creando primero un esquema en Eagle. Como no pude encontrar una biblioteca ESP32 FireBeetle, solo usé encabezados de dos pines 1x18 en su lugar. Luego, creé un circuito de administración de energía que podría aceptar 12v a través de un conector de barril de CC y convertirlo a 5v para alimentar los sensores y el ESP32.
Después de completar el esquema, pasé al diseño de la PCB.
Sabía que el enchufe cilíndrico de CC tendría que estar cerca de la parte frontal de la placa, y que los condensadores de suavizado de la fuente de alimentación de 100 uF debían estar cerca de las entradas de alimentación del controlador del motor paso a paso. Después de que todo estuvo dispuesto, comencé a enrutar los rastros.
Aunque Oshpark fabrica PCB de gran calidad, sus precios son bastante elevados. Afortunadamente, PCBGOGO.com también fabrica excelentes PCB a un precio asequible. Pude comprar diez PCB por solo $ 5, en lugar de pagar $ 52 por solo tres placas de Oshpark.com.
Paso 3: Montaje
En general, montar la placa fue bastante fácil. Comencé soldando los componentes montados en la superficie y luego colocando el conector y el regulador del conector de barril. A continuación, soldé los encabezados de los pines para componentes como los controladores del motor y el FireBeetle.
Después de que se completó la soldadura, probé la placa en busca de cortocircuitos poniendo un multímetro en modo de medición de resistencia y viendo si la resistencia estaba por encima de una cierta cantidad. La placa pasó, así que pude conectar cada componente.
Paso 4: descripción general de la programación
Quería que el código de esta placa fuera modular y fácil de usar. Esto significó tener varias clases que manejan funciones específicas, junto con una clase contenedora más grande que combina las más pequeñas.
Paso 5: Entradas
Para manejar las entradas, creé una clase llamada “Hub_Inputs”, que permite que el concentrador doméstico se comunique con el APDS9960, además de crear y administrar botones e interfaces táctiles capacitivas. Contiene las siguientes funciones:
Botón Crear
Obtener si se presiona el botón
Obtener el número de pulsaciones de botones
Obtener el último gesto
Obtenga valor táctil capacitivo
Los botones se almacenan como una estructura, con tres atributos: is_pressed, numberPresses y pin. Cada botón, cuando se crea, se adjunta a una interrupción. Cuando se activa esa interrupción, la Rutina de servicio de interrupción (ISR) pasa el puntero de ese botón (dado como la dirección de memoria del mismo en la matriz de botones) e incrementa el número de pulsaciones de botones, junto con la actualización del valor booleano is_pressed.
Los valores táctiles capacitivos son mucho más simples. Se recuperan pasando el pin táctil a la función touchRead ().
El último gesto se actualiza sondeando el APDS9960 y verificando si se ha detectado algún nuevo gesto, y si se ha detectado uno, configure la variable de gesto privado para ese gesto.
Paso 6: Salidas
El concentrador de hogar inteligente presenta varias formas de generar información y cambiar las luces. Hay pines que rompen el bus I2C, lo que permite a los usuarios conectar una pantalla LCD. Hasta ahora, solo se admite un tamaño de LCD: 20 x 4. Al usar la función “hub.display_message ()”, los usuarios pueden mostrar mensajes en la pantalla LCD pasando un objeto de cadena.
También hay un encabezado de clavija para conectar una cadena de LED analógicos. Llamar a la función “hub.set_led_strip (r, g, b)”, establece el color de la tira.
Los dos motores paso a paso se accionan mediante un par de placas de controlador DRV8825. Decidí usar la biblioteca BasicStepper para manejar el control del motor. Cuando se inicia la placa, se crean dos objetos paso a paso y ambos motores se activan. Para escalonar cada motor, se utiliza la función “hub.step_motor (motor_id, steps)”, donde el id del motor es 0 o 1.
Paso 7: registro
Debido a que la placa tiene varios sensores, quería tener la capacidad de recopilar y registrar datos localmente.
Para comenzar a registrar, se crea un nuevo archivo con “hub.create_log (nombre de archivo, encabezado)”, donde el encabezado se usa para hacer una fila de archivo CSV que denota columnas. La primera columna es siempre una marca de tiempo en formato Año Mes Día Hora: Min: Sec. Para obtener la hora, la función hub.log_to_file () obtiene la hora con la función basic_functions.get_time (). Luego, la estructura tm time se pasa por referencia a la función de registro, junto con los datos y el nombre del archivo.
Paso 8: zumbador
¿De qué sirve una placa de IoT si no puedes reproducir música? Por eso incluí un timbre con una función para reproducir sonidos. Al llamar a "hub.play_sounds (melodía, duración, duración)" se inicia la reproducción de una canción, siendo la melodía un conjunto de frecuencias de notas, la duración como un conjunto de duraciones de notas y la duración como el número de notas.
Paso 9: Integraciones de IoT externas
Actualmente, el concentrador admite webhooks IFTTT. Se pueden activar llamando a la función Hub_IoT.publish_webhook (url, datos, evento, clave) o Hub_IoT.publish_webhook (url, datos). Esto envía una solicitud POST a la URL proporcionada con esos datos adjuntos, junto con un nombre de evento si es necesario. Para configurar un ejemplo de integración IFTTT, primero cree un nuevo subprograma. Luego, seleccione el servicio de webhook que se activa cuando se recibe una solicitud.
A continuación, llame al evento "high_temp" y guárdelo. Luego, seleccione el servicio de Gmail para la parte "Eso" y elija la opción "Enviarme un correo electrónico a mí mismo". En la configuración del servicio, escriba "¡La temperatura es alta!" para el sujeto, y luego puse "Temperatura medida de {{Value1}} en {{OccurredAt}}", que muestra la temperatura medida y la hora en que se desencadenó el evento.
Después de configurarlo, simplemente pegue la URL del webhook que genera IFTTT y coloque "high_temp" en la sección del evento.
Paso 10: uso
Para usar Smart Home Hub, simplemente llame a las funciones necesarias en setup () o loop (). Ya he puesto ejemplos de llamadas a funciones, como imprimir la hora actual y llamar a un evento IFTTT.
Paso 11: Planes futuros
El sistema Smart Home Hub funciona muy bien para tareas sencillas de automatización del hogar y recopilación de datos. Se puede usar para casi cualquier cosa, como establecer el color de una tira de LED, monitorear la temperatura de una habitación, verificar si una luz está encendida y una gran cantidad de otros proyectos potenciales. En el futuro, me gustaría ampliar aún más la funcionalidad. Esto podría incluir agregar un servidor web más robusto, alojamiento de archivos local e incluso Bluetooth o mqtt.
Recomendado:
Smart Home de Raspberry Pi: 5 pasos (con imágenes)
Smart Home de Raspberry Pi: ya existen varios productos que hacen que su piso sea más inteligente, pero la mayoría de ellos son soluciones patentadas. Pero, ¿por qué necesita una conexión a Internet para encender una luz con su teléfono inteligente? Esa fue una de las razones por las que construí mi propio Smar
Introducción a ESP32 - Instalación de placas ESP32 en Arduino IDE - Código intermitente ESP32: 3 pasos
Introducción a ESP32 | Instalación de placas ESP32 en Arduino IDE | Código intermitente ESP32: en este instructables veremos cómo comenzar a trabajar con esp32 y cómo instalar placas esp32 en Arduino IDE y programaremos esp 32 para ejecutar código intermitente usando arduino ide
Sonoff B1 Firmware Home Automation Openhab Google Home: 3 pasos
Sonoff B1 Firmware Home Automation Openhab Google Home: Me gusta mucho el firmware Tasmota para mis interruptores Sonoff. Pero no estaba muy contento con el firmware de Tasmota en mi Sonoff-B1. No logré integrarlo completamente en mi Openhab y controlarlo a través de Google Home, por lo que escribí mi propia firma
Interfaz Honeywell Vista Alarm con Smart Hub (Wink / Smartthings): 7 pasos (con imágenes)
Interfaz Honeywell Vista Alarm con Smart Hub (Wink / Smartthings): ¡Hola! Quería dar un breve tutorial sobre cómo logré integrar mi sistema de alarma Honeywell Vista en mi hub inteligente. Estoy usando Wink para este tutorial, pero esto debería funcionar con cualquier hub inteligente (Smartthings / Iris / etc.) Antes de comenzar, ya está
DIY Google Home con altavoz Bluetooth en Raspberry Pi Zero Docking Hub: 7 pasos (con imágenes)
DIY Google Home con altavoz Bluetooth en Raspberry Pi Zero Docking Hub: tenemos un instructivo sobre DIY Amazon Echo Alexa - Asistente de voz de Alexa en Raspberry Pi Zero Docking Hub. En esta ocasión queremos mostrarte cómo construir una casa de Google de bricolaje. En este instructivo, le mostraremos cómo instalar y configurar el Asistente de Google