Domotizar termo eléctrico (parte 1)

Recientemente nos hemos visto obligados en casa a cambiar el termo eléctrico en casa. Hemos intentado colocar uno con WIFI pero no ha sido posible por las restricciones de tamaño que tenemos, y al final nos hemos decantado por el modelo Cointra TDG80 plus:

Cointra TDG80

Este termo tiene dos cosas buenas desde nuestro punto de vista: un panel donde se muestran todos los datos del termo, y lo mejor, tiene un mando IR con el que se pueden controlar todas sus funciones.

El mando

El mando que viene con el termo es el siguiente:

      

Y como sé que os gustaría verlo por dentro, lo he desmontado y no es nada complejo. Tiene unas pestañas en el frontal, en los laterales y en el compartimento trasero donde van las dos pilas AAA tiene un tornillo:

El siguiente paso es quitar el protector del teclado, con un cutter y algo de cuidado se puede quitar sin problemas. También quitamos los tres tornillos que tiene el teclado:

Levantamos los laterales con cuidado de no romper las pestañas y tenemos la placa de circuito impreso siguiente:

 

Si buscáis la hoja de datos del chip Sicore CX6121-001 comprobareis que no es mas que un conversor de teclado a led IR, mas simple no puede ser. Ese mismo chip esta presente en varios mandos (googleando un poco vi que este mismo chip es el que usaba un decodificador de TV con el chip BT878 que usaba hace mas de 15 años para decodificar el Canal Plus, jajajaja)…

 

El decodificador

Vale, ahora sabemos que el mando es lo más sencillo que nos podamos imaginar, ¿cual es el siguiente paso? Pues el led IR tampoco debe ser gran cosa, por lo que nos vamos a Ebay y compramos un emisor y un receptor para hacer nuestro emulador con Arduino. Como tenía algo de prisa por tenerlos y son bastante baratos aquí en España, los compro por unos 4€ con el módulo ya hecho (lo sé, me estoy volviendo comodón, desde China los podéis conseguir los dos por 2€, incluso menos, jajajaja):

Ahora vamos a descargar la librería IRRemote que podéis encontrar en su repositorio de github, o directamente aquí (v2.4.0 beta). La instaláis en vuestro IDE Arduino, que en el caso de mi Ubuntu Mate, consiste en descomprimir el ZIP y copiar el contenido en /usr/share/arduino/libraries. Dentro de la librería tenemos varios sketches de ejemplo. El primero que vamos a usar es IRrecvDumpV2. El montaje es muy sencillo: conectamos el modulo receptor, a 5V, a GND y al pin 11 de arduino. Ya sabéis que me gusta mucho el Arduino Nano, y es el que suelo usar, pero con el UNO, el montaje es prácticamente el mismo:

Cargamos el programa en el Arduino, y abrimos el monitor serial, ya que será ahí donde el programa nos muestre lo que va recibiendo del mando original de termo. Una vez abierto apuntamos con el mando al LED receptor y vamos pulsando una tecla detrás de otra para obtener la lista de códigos:

 

El emulador del mando

Una vez que tenemos apuntados los códigos anteriores, vamos a cambiar el montaje, y a usar el módulo emisor. El Conectamos el módulo emisor al 5V, GND y al pin 3 de Arduino:

Para probar que nuestro emisor funciona correctamente, vamos a cargar un sketch basado en el IRSendRawDemo, que va a encender y a apagar nuestro termo cada 20segundos (20 segundos encendido, 20 segundos apagado…), o lo que es lo mismo: vamos a enviar una pulsación del botón ON/OFF cada 20s.

El codigo es el siguiente:

 Lo cargamos en nuestro Arduino, y apuntamos con el LED emisor al termo, y… ¡funciona! El termo se enciende y a los 20 segundos se apaga, tal y como hemos programado en el sketch!

Ya sabemos que el sistema funciona, que tenemos un emisor válido para controlar el termo. ¿Qué más estaría bien que hiciera el sistema? Pues estaría bien que se pudiese controlar el termo por WIFI…

 

Añadiendo Control por WIFI

El control por WIFI lo vamos a conseguir en el ESP8266, concretamente la versión que tengo más a mano es un NodeMCU. Para ello nos bajamos el software EasyESP de su web (en este momento la última versión es la mega-20190301) y lo compilamos con Platformio. Este proceso nos generará varios binarios, el que yo he utilizado es el normal_IR_ESP8266_4096 (este binario de mi repositorio en GitHub).

Para configurarlo, lo primero una vez instalado el firmware (yo lo hago con este comando en Linux: esptool -vv -cd nodemcu -cb 115200 -cp /dev/ttyUSB0 -ca 0x00000 -cf firmware.bin), es conectarnos con un móvil a la WIFI ESP_Easy_0 que emite el NodeMCU (la contraseña de esa WIFI es configesp), y decirle a que red WIFI se tiene que unir. Es un proceso sencillo, no tiene ningún secreto. En el momento en que lo tengamos en la red WIFI de casa (conviene tener un DCHP en la red para que la configuración inicial sea mas fácil), ya lo podremos configurar. Vamos al servidor DHCP, averiguamos la IP que se le ha asignado al dispositivo y nos conectamos con un navegador web:

Si nos vamos moviendo por las distintas pestañas podremos configurar todas las opciones, pero la que nos interesa es la de Devices, que es donde le configuraremos a nuestro NodeMCU el módulo emisor IR que os mostraba antes con el Arduino.

Pulsamos en Edit en la primera fila y nos aparecerá un listado con todos los sensores y actuadores que permite nuestro firmware, seleccionaremos Communication – IR Transmit (le damos nombre, lo activamos y seleccionamos el pin del NodeMCU al que hemos conectado el pin DAT del módulo emisor IR, en mi caso D7):

Pulsamos en Submit para que se guarden los cambios, y de nuevo en la pestaña Devices para volver a la lista.

Ya lo tenemos listo, podemos enviar los códigos que conseguimos antes con el receptor Arduino mediante comandos HTTP como la siguiente:

En mi caso la IP es 192.168.3.34, el protocolo que obtuvimos con el circuito receptor era NEC, y los códigos eran C7D02F (mode), C750AF (+/-), C7807F (setting), C740BF (confirm) y C7906F (ON/OFF), por tanto los comandos HTTP quedarían como sigue:

Si acercamos el emisor al termo y tecleamos cualquiera de esas URLs en el navegador veremos como el termo reacciona de la forma espera, exactamente igual que si pulsásemos la teclas del control remoto. ¡Ya tenemos nuestro termo con control WIFI!.

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.