Si alguna vez has estado sentado cómoda y tranquilamente en el sofá, has notado algo de frío (o calor) y te has tenido que levantar para controlar la temperatura de la calefacción, sabrás mejor que nadie que algo que mejoraría tu calidad de vida sería el poder manejar la temperatura de casa desde tu propio terminal y en el lugar que desees.
En esta entrada actualizaremos nuestros viejos radiadores para hacerlos inteligentes, construyendo un termostato que puede controlar su funcionamiento desde nuestro terminal móvil gracias a Protocoder.
Además, podremos conocer la temperatura y humedad leída por el sensor y modificar la velocidad de actualización de los datos en pantalla, entre otras características.
¡Pasa a las instrucciones si quieres saber cómo construirlo!
Para completar este proyecto necesitarás:
-
Placa ZUM. También puedes utilizar Arduino o compatibles con un módulo bluetooth
-
Alimentación ZUM: Fuente de alimentación
-
Terminal Android
-
Sensor de temperatura y humedad
-
Módulo relé
-
Cable alargador
-
Cinta Aislante o termoretráctil
-
Carcasa 3D (opcional)

-
Código Arduino
Desde Arduino controlaremos el estado del relé y por tanto, del radiador. Enviaremos a través del módulo Bluetooth los datos de temperatura y humedad leídos desde el sensor y podremos modificar la velocidad de actualización de los datos.
El código utilizado, tanto en Arduino como en Protocoder, es una ligera revisión del código utilizado en esta entrada, por lo que si quieres conocer a fondo cómo funciona, puedes visitar el enlace.
Dentro de nuestro código, utilizaremos las variables t y h para almacenar la temperatura y humedad, respectivamente. Para el control, utilizaremos un pin para controlar el relé, en nuestro caso el pin número 13 y dos variables para conocer en qué modo de funcionamiento nos encontramos, fullOnOff y autoMode. Estas variables se encargan de activar o desactivar completamente el relé o de controlarlo en función de la temperatura, respectivamente.
En el modo automático, se almacena el valor deseado de temperatura y se activa o desactiva el relé en función de si la temperatura es inferior o superior a lo deseado. Para evitar que el relé se active y desactive continuamente, se ha creado la variable securityTemp que obliga a que la temperatura medida tenga una diferencia de al menos 2 grados con la temperatura deseada para que el relé cambie de estado, evitando así el sobre uso del relé. Por defecto, toma un valor de 2, pero puedes modificar el valor de esta variable dentro del código Arduino (se encuentra en la línea 82).
Para facilitar la recepción de datos, utilizaremos la función parseInt(), que se encarga de separar y almacenar los datos recibidos a través del puerto serie (en este caso Bluetooth) separados a través de una coma. Desde la aplicación Protocoder prepararemos los datos antes de enviarlos para que sigan el patrón flag,dato
n.
Para comprobar si hay datos a recibir se utiliza la función checkIncomming(), que utiliza el método anterior para separar los datos. Una vez leído el carácter delimitador, se utiliza un switch para realizar las diferentes programadas en función del flag que se ha recibido. Las diferentes características que se han programado son:
Acción Flag Dato Cambiar tiempo de sampleo 1 int milisegundos Activar/desactivar relé 2 0/1 Marcar la temperatura objetivo 3 int temperatura -
Aplicación Protocoder
Utilizaremos Protocoder para visualizar los datos e interactuar con el sistema.
Dentro de la aplicación de Protocoder, tenemos dos botones, encargados de conectar y desconectar al dispositivo Bluetooth, en nuestro caso la placa. Para que nuestra placa aparezca en el listado, es necesario utilizar los ajustes de Android para emparejar ambos dispositivos.
Dentro de Protocoder, se realiza el procesamiento de datos recibidos desde Arduino y se preparan y envían los datos a través del Bluetooth. Para enviar datos, se utiliza la forma flag,dato
n, es decir, se envía un flag para hacer saber a Arduino que son los datos que vamos a enviar, y el dato específico que enviamos. Por último, se incluye el carácter
n, o salto de línea, que se utiliza para delimitar el envío y hacer saber a Arduino el final del mensaje.
-
Diseño de la carcasa 3D
Para diseñar la carcasa se ha utilizado Freecad. La carcasa se ha diseñado de tal manera que permita fijar de manera segura los elementos dentro de ella, creando así un conjunto resistente.
-
Montaje
Para montar el conjunto necesitarás:
- 2 tornillos m3 x 16
- 6 tornillos m3 x 8
- 8 tuercas m3
- Destornillador
- Llave allen m3
- Alicate de corte y pelacable
- Cinta aislante y/o termoretráctil
En el vídeo puedes ver como montar el conjunto:
En nuestro caso, utilizamos el relé número 4 de nuestra placa, recuerda comprobar en qué relé conectas el cable eléctrico para asegurar que funcione. Es recomendable comprobar el número de pin correspondiente a cada relé alimentando la placa y utilizando un pin conectado a VCC e ir cambiando de pin de relé y comprobar cuál es el que se activa.
Recuerda que al montar la placa ZUM el conector de alimentación debe quedar alineado con el hueco correspondiente de alimentación.
Etiquetas: Bluetooth, FreeCAD, Impresión 3D