Tabla de contenido:

ESP32 Smart Home Hub: 11 pasos
ESP32 Smart Home Hub: 11 pasos

Video: ESP32 Smart Home Hub: 11 pasos

Video: ESP32 Smart Home Hub: 11 pasos
Video: IoT Project using ESP RainMaker with Google Assistant Alexa & Manual Switch - ESP32 Projects 2022 2024, Junio
Anonim
Concentrador de hogar inteligente ESP32
Concentrador de hogar inteligente ESP32
Concentrador de hogar inteligente ESP32
Concentrador de hogar inteligente ESP32
Concentrador de hogar inteligente ESP32
Concentrador de hogar inteligente ESP32
Concentrador de hogar inteligente ESP32
Concentrador de hogar inteligente ESP32

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

Características
Características
Características
Características
Características
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

tarjeta de circuito impreso
tarjeta de circuito impreso
tarjeta de circuito impreso
tarjeta de circuito impreso
tarjeta de circuito impreso
tarjeta de circuito impreso
tarjeta de circuito impreso
tarjeta de circuito impreso

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

Montaje
Montaje
Montaje
Montaje
Montaje
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

Entradas
Entradas
Entradas
Entradas
Entradas
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

Salidas
Salidas
Salidas
Salidas
Salidas
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

Inicio sesión
Inicio sesión
Inicio sesión
Inicio sesión
Inicio sesión
Inicio sesión

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

Zumbador
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

Integraciones de IoT externas
Integraciones de IoT externas
Integraciones de IoT externas
Integraciones de IoT externas
Integraciones de IoT externas
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

Uso
Uso
Uso
Uso
Uso
Uso
Uso
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: