Tabla de contenido:

Control inalámbrico de cabecera de cama MQTT: 5 pasos (con imágenes)
Control inalámbrico de cabecera de cama MQTT: 5 pasos (con imágenes)

Video: Control inalámbrico de cabecera de cama MQTT: 5 pasos (con imágenes)

Video: Control inalámbrico de cabecera de cama MQTT: 5 pasos (con imágenes)
Video: Argon arc welding machine. Welder's aid. Fixer accessories 2024, Mes de julio
Anonim
Control inalámbrico de cabecera de cama MQTT
Control inalámbrico de cabecera de cama MQTT
Control inalámbrico de cabecera de cama MQTT
Control inalámbrico de cabecera de cama MQTT

Hace unos años compramos una nueva cama de espuma viscoelástica y, como es el caso de la mayoría de las camas, también tenía que comprar una de sus "bases aprobadas" para mantener la garantía. Entonces, optamos por la base menos costosa que también incluía la capacidad de subir y bajar la cabecera de la cama. Unos días después, nuestro colchón y nuestra base económica American Adjustables con controles cableados (uno para cada lado de la cama) fueron entregados y configurados.

Lo primero que notamos fue que los cables en la sala de exposición que eran agradables y largos no eran los que teníamos en nuestra cama. Los de la sala de exposición tenían extensiones. Estas extensiones NO se incluyeron con nuestra cama y lo suficientemente interesante, nadie estaba interesado en vendernos un par de cables de extensión. Esto nos dejó unos mandos que apenas llegaban a la parte superior de la cama y que tuvimos que voltear para poder utilizarlos.

Tienes lo que pagas

Después de aproximadamente 6 meses, notamos que los collares de alivio de tensión en uno de los controles estaban comenzando a romperse. Unos meses más tarde, alambre desnudo. Avance rápido aproximadamente un año, uno de los controles ya no funciona y el otro se está poniendo un poco nervioso.

Una vez más, nadie estaba interesado en vendernos reemplazos. ¡Entonces me di cuenta!

¡Espera un maldito minuto! ¿¡¿No estoy construyendo un sistema de CONTROL y automatización del hogar ?

Paso 1: descubrimiento

Descubrimiento
Descubrimiento
Descubrimiento
Descubrimiento

Quería ver qué podía hacer con lo que tenía, así que me llevé el controlador defectuoso y ¡guau! ¡Había mucha mierda ahí! ¿Para qué fue todo esto? Di un paso atrás y solo miré las líneas que entraban y salían. Pude ver que había una línea de suministro de 12 voltios y una línea de tierra. Las otras dos líneas parecían líneas de señal para los dos botones arriba y abajo. Entonces, me arriesgué y simplemente conecté el suministro de 12v a la línea de señal "arriba". ¡La cama empezó a moverse! Luego moví mi cable de puente a la línea de señal "abajo" y la cama cayó.

En la caja hay contactos para 4 líneas de señal más y 4 botones más. Mi mejor suposición es que esta placa controladora se usa en todos sus modelos de base cableada y simplemente colocan diferentes placas frontales sobre la placa según sea necesario. Entonces, tenía una teoría de trabajo. Probé la línea de suministro para ver si se hundió durante el uso o si se disparó en algún momento, no. Había muy poco consumo de corriente en las líneas de señal, pero requerían 12 voltios para activar el motor.

Paso 2: diseño

Diseño
Diseño
Diseño
Diseño
Diseño
Diseño
Diseño
Diseño

Entonces, una simple conexión de contacto entre VCC y el pin de señal es todo lo que se necesita, pero ¿cómo se hace eso dentro de mi sistema? Se necesitarían dos relés para los contactos y un ESP8266 funcionaría para el controlador inalámbrico. Dado que los relés pueden requerir más corriente de la que pueden suministrar los pines digitales, es mejor utilizar un optoaislador entre el controlador y el relé. Esto permitirá que una pequeña señal encienda un interruptor de corriente más alta (en este caso, un transistor accionado por luz) y active de forma segura la bobina del relé. Además, un optoaislador aísla el controlador de cualquier pico que pueda formarse cuando se suelta la bobina del relé y el campo magnético colapsa. Afortunadamente, existen módulos de relé que ya contienen todos estos circuitos y por un precio bastante bajo.

La cama será la fuente de alimentación para el controlador y para manejar los 12 voltios suministrados, necesitaremos un convertidor reductor variable. A continuación se ha vinculado uno muy económico y funciona a la perfección. La línea de 12V y las líneas GND se conectan al lado de entrada del convertidor y el lado regulado de 5 voltios se conecta al VCC del NodeMCU y al pin VCC del módulo de relé. tanto el módulo de relés como el NodeMCU.

El NodeMCU se conecta a IN1 usando D1 (GPIO5) e IN2 usando D2 (GPIO4). La línea de señal ascendente en la cama se conecta al terminal de tornillo normalmente abierto para el relé 1 y la línea de señal descendente se conecta al conector del bloque de terminales normalmente abierto del relé 2. Deberá conectar el cable de 12v que está conectado al lado de entrada del convertidor reductor también a la otra conexión del bloque de terminales para AMBOS relés 1 y 2.

Partes

  • 1 - NodeMCU
  • 1 - Módulo de relé de duelo con aislamiento de corriente
  • 1 - Convertidor reductor de entrada / salida variable
  • 1 - Placa de circuito impreso
  • Alambre de núcleo de cobre trenzado de calibre 22
  • 2 - tornillos M3x 8

Paso 3: recinto

Recinto
Recinto

El recinto se puede encontrar aquí:

Diseñé una caja simple con Tinkercad que permite que el cable de control de la cama ingrese a la caja entre los soportes de alivio de tensión dentro de la caja. Hay ranuras para una brida aquí que ayudarían a evitar que el cable se deslice, pero en mi caso, el ajuste fue muy ajustado y no lo necesitaba. La tapa está atornillada con 2 tornillos M3x 8. Recomendaría cargar el código y probar el sistema antes de montarlo en la caja.

Usé pegamento caliente para mantener las tablas en su lugar, pero esto puede no ser necesario.

Paso 4: Código

El código se puede encontrar aquí:

NOTA: Este proyecto utiliza la biblioteca pubsubclient que se puede agregar en el Administrador de bibliotecas en el IDE de Arduino

El código aquí es bastante básico y fue diseñado en base al tipo Cover MQTT en Home Assistant. La idea aquí es simple: cuando presiona el botón arriba o abajo en el asistente de hogar, el relé apropiado se cierra hasta que se recibe el comando de parada O el sistema alcanza un tiempo máximo de activación y se detiene.

El tiempo máximo es una precaución de seguridad en caso de que el usuario olvide detenerlo o si el comando se envió accidentalmente y es poco probable que alguien lo detenga. No queremos que el relé se encienda indefinidamente o cualquier problema inesperado con la cama debido a un cierre de contacto prolongado.

En mi código, este tiempo de espera es de 20 segundos y se puede ajustar en el bloque de variables globales en la parte superior del código.

Una segunda precaución de seguridad fue asegurarme siempre de que si estoy activando un relé, siempre se llama a una desactivación intencional del otro, incluso si el último estado ya estaba apagado. No quiero enviar 12v por ambas líneas de señal ya que no sé qué le hará eso a la cama.

Aparte de eso, la cama publica que está disponible cada 60 segundos y eso es todo. No hay campanas ni silbidos aquí. Como la cama no tiene información de posición, no pude devolver ninguna a Home Assistant.

Paso 5: Integración de ejemplo

Integración de ejemplo
Integración de ejemplo
Integración de ejemplo
Integración de ejemplo

El código que escribí usa MQTT para comunicarse a través de WiFi y, por lo tanto, puede comunicarse con cualquier centro o dispositivo de automatización que use MQTT. Utilizo Home Assistant que tiene un corredor MQTT integrado. A continuación se muestra un ejemplo de mi configuración HA.

En HA tengo un archivo covers.yaml con la siguiente definición:

- plataforma: mqtt

name: "Master Bed Headboard" command_topic: "master_bed_control / cmd" availability_topic: "master_bed_control / availability" qos: 0 retener: false payload_open: "UP" payload_close: "DOWN" payload_stop: "STOP" payload_available: "online" payload_not_available: " offline "optimista: verdadero

Esto me da una entrada en mi interfaz HA con un botón arriba / parar / abajo configurado con la acción como se describe arriba.

Además, he definido dos botones en mi Panel de control de cabecera (Instructable / Publicación de blog) para subir y bajar la cabecera. Los botones del panel de control se definen como sensores MQTT:

- plataforma: mqtt

state_topic: "bedside_cp1 / button5" name: "Bedside CP1 Button 5" icon: mdi: circle

- plataforma: mqtt

state_topic: "bedside_cp1 / button6" name: "Bedside CP1 Button 6" icon: mdi: circle

… Y 4 reglas de automatización para cuando se presiona y se suelta cada botón. Cuando se presiona, el comando de subida o bajada se envía a la cama según el botón que se haya activado, cuando se suelta el botón, se envía el comando de parada:

- identificación: '1548308650383'

alias: MBR Bedside CP Button 5a trigger: - entity_id: sensor.bedside_cp1_button_5 from: 'Off' platform: state to: 'On' condition: action: - data: entity_id: 'cover.master_bed_headboard' service: cover.open_cover - id: '1548308758911' alias: MBR Bedside CP Button 5b trigger: - entity_id: sensor.bedside_cp1_button_5 from: 'On' platform: state to: 'Off' condition: action: - data: entity_id: servicio 'cover.master_bed_headboard': cover.stop_cover - id: '1548308863495' alias: MBR Bedside CP Button 6a trigger: - entity_id: sensor.bedside_cp1_button_6 from: 'Off' platform: state to: 'On' condition: action: - data: entity_id: ' cover.master_bed_headboard 'service: cover.close_cover - id:' 1548308911467 'alias: MBR Bedside CP Button 6b trigger: - entity_id: sensor.bedside_cp1_button_6 from:' On 'platform: state to:' Off 'condición: acción: - data: entity_id: 'cover.master_bed_headboard' service: cover.stop_cover

Recomendado: