Tabla de contenido:

Sensor de puerta a batería con integración de automatización del hogar, WiFi y ESP-NOW: 5 pasos (con imágenes)
Sensor de puerta a batería con integración de automatización del hogar, WiFi y ESP-NOW: 5 pasos (con imágenes)

Video: Sensor de puerta a batería con integración de automatización del hogar, WiFi y ESP-NOW: 5 pasos (con imágenes)

Video: Sensor de puerta a batería con integración de automatización del hogar, WiFi y ESP-NOW: 5 pasos (con imágenes)
Video: 🔴SENSOR DE MOVIMIENTO WIFI & SENSOR DE PUERTA WIFI CON SIRENA INALAMBRICA TUYA SMART 2019 SMARTLIFE 2024, Mes de julio
Anonim
Image
Image

En este instructivo, les muestro cómo hice un sensor de puerta a batería con integración de automatización del hogar. He visto algunos otros sensores y sistemas de alarma agradables, pero quería hacer uno yo mismo.

Mis metas:

  • Un sensor que detecta e informa una puerta que se abre rápidamente (<5 segundos)
  • Un sensor que detecta el cierre de la puerta.
  • Un sensor que funciona con batería y funciona durante unos meses con una batería.

El hardware y el software están inspirados en

  • El gatillo de Kevin Darrah (TPL5111 y TPS73733).
  • Este video

Hice un sensor para mi puerta delantera y mi puerta trasera. La única diferencia es la posición del LED y el interruptor de alimentación externo (en el sensor de puerta trasera).

Hice varias mejoras durante el desarrollo en hardware y software, se puede ver en las fotos.

Suministros

Compré los componentes electrónicos de Aliexpress, las partes principales:

  • Batería LiPo
  • TPS73733 LDO
  • TPL5111
  • interruptor de láminas
  • Mosfet de canal P: IRLML6401TRPBF
  • Imán
  • Placa adaptadora PCB para componentes SMD y otra.

Paso 1: Hardware - Circuito

Hardware - Circuito
Hardware - Circuito
Hardware - Circuito
Hardware - Circuito
Hardware - Circuito
Hardware - Circuito

Vea los esquemas adjuntos para el circuito. Soldé las partes SMD en una placa de PCB adaptadora y soldé todos los componentes a una placa de perforación de doble cara. Conecté el ESP-01 a través de encabezados hembra, por lo que pude quitarlo para programarlo a través del adaptador que se muestra en el paso 3 de este Instructable.

El circuito funciona de la siguiente manera:

  • Cuando se abre la puerta, el TPL5111 recibe un disparo en el pin DELAY / M_DRV y habilita el LDO TPS73733 que alimenta el ESP-01. Para esta operación, el EN / ONE_SHOT debe reducirse, consulte la hoja de datos del TPL5111.
  • Una vez que se ha ejecutado el programa (consulte el paso Software), el ESP-01 envía una señal Listo al TPL5111 que luego desactiva el TPS73733, lo que da como resultado un estado de muy bajo consumo de energía para el TPL5111 y el TPS73733.

Utilizo interruptores de láminas con conexiones NA y NC. Conecté el cable NC, ya que el interruptor de láminas debe cerrar el circuito cuando se quita el imán (puerta abierta) y abrir cuando el imán está cerca (puerta cerrada).

Para el sensor de puerta trasera agregué algunos condensadores y resistencias cuando descubrí algunas inestabilidades, sin embargo, la inestabilidad fue causada por el software (esp_now_init) como descubrí más tarde.

Paso 2: Hardware - Caja

Hardware - Caja
Hardware - Caja
Hardware - Caja
Hardware - Caja
Hardware - Caja
Hardware - Caja

Diseñé el gabinete en Autodesk Fusion360, inspirado en este video de 'el tipo con acento suizo'.

Los archivos STL de las tres partes:

  • Caja
  • Tapa
  • Soporte de imán

se publican en mi página de Thingiverse.

Paso 3: software

Software
Software

El programa está en mi Github.

El flujo del programa se muestra en la imagen. Vea mi otro Instructable para la explicación de cómo uso ESP-NOW.

Cuando el módulo está encendido, primero intenta enviar el mensaje 'ABRIR' a través de ESP-NOW. Si esto no tiene éxito, cambia a una conexión WiFi y MQTT.

Descubrí que, al menos en mi configuración, el mensaje 'CERRADO' no se envió correctamente a través de ESP-NOW, así que lo eliminé del programa y solo uso WiFi y MQTT.

Durante el tiempo que la puerta está abierta y el módulo está esperando que la puerta se cierre, utiliza este tiempo para conectarse a WiFi y MQTT, por lo que cuando la puerta está cerrada solo tiene que enviar el voltaje medido y un mensaje CERRADO y luego se va directamente a dormir.

El programa comprueba si el receptor recibe el mensaje cerrado a través de la escucha de un mensaje MQTT sobre el tema correcto.

Paso 4: Domótica y Telegram

Domótica y Telegram
Domótica y Telegram
Domótica y Telegram
Domótica y Telegram
Domótica y Telegram
Domótica y Telegram

Los sensores de mi puerta se comunican con mi Openhab Home Automation en mi Raspberry Pi Zero.

Aplicaciones principales:

  • Leer el estado de la puerta: ABIERTA o CERRADA.
  • Avisarme por telegrama si se abre una puerta (si la alarma está activada o la función Monitor está activada).
  • Lea la última vez que se abrió o se cerró una puerta.
  • Cuente el número de aberturas que puede manejar un sensor de puerta antes de que se agote la batería.

Por ejemplo, si estamos de vacaciones y el vecino viene a regar las plantas, recibo un mensaje. Vea el video en la introducción.

Mis elementos de Openhab, reglas y archivos de mapa del sitio están en mi Github. En estos archivos también puede ver el sensor de mi puerta del cobertizo, que usa un interruptor de láminas con cable normal y un interruptor de contacto pequeño (final) de una impresora 3D en la abertura de la cerradura (vea las imágenes).

Aquí se describe cómo usar la acción de Telegram en Openhab.

Paso 5: mejoras y más mejoras

Mejoras y mejoras adicionales
Mejoras y mejoras adicionales
Mejoras y mejoras adicionales
Mejoras y mejoras adicionales

En los últimos meses hice la siguiente mejora.

Manejar aberturas de puerta largas a través de una señal de pulso de conmutación automática

En verano, dejamos la puerta trasera abierta durante unas horas cuando estamos en casa. El ESP-01 en ejecución con una conexión WiFi agotaría innecesariamente la batería. Por eso incluí un interruptor on / off para poder apagar el módulo en estas situaciones.

Sin embargo, esto a veces resultó en un módulo apagado permanentemente (cuando olvidé encenderlo) y una batería agotada después de algunas tardes de una puerta abierta y un módulo en funcionamiento (cuando olvidé apagarlo).

Por lo tanto, quería poder apagar el módulo a través del software después de que el módulo estuviera encendido durante un tiempo predefinido (1 minuto).

Sin embargo, cuando el pulso "DONE" del ESP-01 apagó el TPL5111 cuando se cerró la puerta, descubrí que el TPL5111 no se apagó con un pulso "DONE" mientras que el pin DELAY / M_DRV estaba ALTO. Esta señal ALTA en el pin DELAY / M_DRV fue causada por la puerta abierta y el contacto NC del interruptor de láminas conectado al voltaje de la batería.

Por lo tanto, la señal al pin DELAY / M_DRV no debe ser continuamente ALTA, sino que debe ser pulsada. En la hoja de datos del TPL5111 puede encontrar que debería ser un pulso de> 20 ms. Hice esta señal de conmutación automática a través de un mosfet de canal P, un condensador y una resistencia de 10K y 300K, consulte el esquema incluido.

Funciona de la siguiente manera:

  • Si el contacto NC del interruptor de láminas está cerrado, la puerta está BAJA y el Mosfet está encendido, lo que genera una señal ALTA en el pin DELAY / M_DRV que activa el módulo.
  • El condensador se carga rápidamente, lo que provoca un aumento de voltaje en la puerta.
  • Después de aproximadamente 20 ms, el voltaje en la puerta es el 97% del voltaje de la batería (300K / (300K + 10K) que es ALTO y el Mosfet se apaga, lo que da como resultado una señal BAJA en el pin DELAY / M_DRV.
  • Cuando el pin DELAY / M_DRV está BAJO, la señal DONE del ESP-01 da como resultado el apagado del módulo.

Esto se implementa en el software; Un bucle while no solo verifica si la puerta aún está abierta, sino que también verifica si el módulo no está encendido demasiado tiempo. Si se enciende demasiado tiempo publica un valor NULO (estado indefinido de la puerta). En este caso, no sé si la puerta está abierta o cerrada y no alcanzo todos los objetivos mencionados en la introducción, pero la duración de la batería es más importante y la mayoría de las veces abrimos la puerta más tarde ese día, lo que resulta en un estado cerrado confirmado. de la puerta.

Es importante utilizar un Mosfet de canal P que sea adecuado para el rango de voltaje utilizado aquí. El Mosfet tiene que estar completamente encendido a un VGS de aproximadamente - 3.8V y completamente apagado a un VGS de aproximadamente -0.2 V. Probé varios Mosfets y descubrí que un IRLML6401TRPBF funciona bien para este objetivo en combinación con las resistencias de 10K y 300K. Un condensador de 1 uF funciona bien para obtener una longitud de pulso de aproximadamente 20 ms. Un condensador más grande da como resultado un pulso más largo, lo cual no es necesario, ya que se activó el TPL5111. Usé mi osciloscopio DSO150 para verificar los voltajes y la longitud del pulso.

Mejora planificada: actualización OTA

Planeo incorporar una actualización OTA a través del siguiente procedimiento, que ya está parcialmente incluido en el software actual

  • A través de Openhab de NodeRed publico un mensaje de 'actualización' retenido y un 'tema de actualización'.
  • Si el módulo está encendido y conectado al servidor MQTT y suscrito al 'tema de actualización', recibe el mensaje de actualización.
  • El mensaje de actualización evitará que el módulo se apague e iniciará
  • A través del sitio web de HTTPUpdateServer, puede actualizar el software.
  • A través de Openhab de NodeRed publico un mensaje 'vacío' retenido y un 'tema de actualización'.

Mejora planificada: apagado del hardware después de un tiempo predefinido

En el esquema actual, uso una resistencia de 200K entre DELAY / M_DRV y GND del TPL5111. Esto enciende el módulo durante más de 2 horas (consulte 7.5.3. De la hoja de datos TPL5111). Sin embargo, no quiero que el módulo esté encendido durante tanto tiempo, porque la batería se agota. Si la solución de software (ver arriba) no apaga el módulo, o si el mensaje de actualización no intencional configura el módulo en el modo de actualización, el módulo permanece encendido durante mucho tiempo.

Por lo tanto, es mejor usar una resistencia más pequeña entre DELAY / M_DRV y GND del TPL5111, por lo que el módulo se apaga después de un corto tiempo, por ejemplo, una resistencia de 50K resultando en un tiempo de encendido de 7 minutos.

Recomendado: