Este fin de semana he seguido avanzando con el tema de la domótica. Tras conseguir intercomunicar un arduino y la raspberry por radiofrecuencia, he conseguido progresar bastante. Como puede verse en el siguiente vídeo:
Se trata de un reloj de riego barato comprado en el Leroy Merlín. Le he reemplazado la lógico, y dejado tan sólo el servomotor que controla el paso del agua. Para ello he necesitado lo siguiente:
- Mejorar el alcance por de los módulos RF: Esa ha sido la parte sencilla. Tan sólo ha sido necesario soldar sendas antenas de 17 cm. a los módulos de emisión y recepción. ¿Por qué 17 cm.? Porque corresponden (aproximadamente) con 1/4 de la longitud de onda a la que emiten los módulos, lo que permite maximizar la eficiencia de los módulos. He podido comprobar que la señal es perfectamente recibida en toda la casa, a lo largo de las tres plantas. No está mal, para unos módulos de 2€.
- Modificar el código de mensajería Raspberry/WhatsApp: Además de incorporar un comando para comunicarse con los relés controlados a través de RF, ha sido preciso tener en cuenta que el reloj de riego tiene un servomotor en vez de una electroválvula. La diferencia es que la electroválvula abre paso al agua cuando se la alimenta con voltaje, por lo que simplemente activando el relé se abre. El servomotor, por el contrario, se activa para hacer girar 90º una llave de paso, y tiene que volver a activarse para volver a hacer girar 90º la llave de paso para cerrar el paso de agua. Por lo tanto, tiene una implementación lógica diferente, que ha sido preciso modelar.
- Modificar el reloj de riego: He eliminado la circuitería del reloj, dejando tan sólo el servomotor. Éste se compone de un motor convencional, alimentado por dos pilas AA de 1.5v, y un interruptor, que permite saber cuándo está completamente abierta o cerrada la llave de paso. Para poder controlar ambos sistemas con arduino, se requieren dos puertos de E/S: uno para activar el relé, y otro para detectar el estado del interruptor.
El sistema quedaría de la siguiente manera:
Hay una serie de posibles mejoras en las que empezar a trabajar:
- Mejorar la codificación del sistema de RF: Actualmente sólo es capaz de controlar un único dispositivo. Hay que incorporar una implementación de un sistema de comunicación que permita dar instrucciones a múltiples módulos. También sería conveniente mejorar la seguridad de los mensajes intercambiados. Hasta el momento, el módulo arduino ejecuta cualquier mensaje que reciba, sin verificar fuente, por lo que un atacante malicioso podría activar/desactivar el sistema de riego de manera arbitraria. Lo ideal sería incorporar un sistema de codificación basado en identidad, junto con un cifrado basado en clave pública/privada, pero igual esto último es matar moscas a cañonazos…
- Incorporar un sistema de programación de eventos: Hasta ahora es posible dar instrucciones al sistema, pero no programar eventos. Hasta el momento uso una aproximación, consistente en crear en /etc/crontab disparadores que activen el sistema, pero no es especialmente práctico. Mi intención es incorporar un calendario online (Google Calendar, por ejemplo) para poder programar eventos de una manera sencilla
- Miniaturizar el hardware: Actualmente está todo en una placa de prototipado, y hago uso de la placa con 4 relés. Mi intención es pasar de un arduino a un attiny85, y hacer uso de un único relé. Las piezas están ya encargadas; en cuanto lleguen, habrá que tirar de soldador.
- Desarrollar una aplicación web para monitorizar el sistema: Aquí no hay mucho más que decir.
VN:F [1.9.20_1166]
Rating: 9.5/10 (2 votes cast)
Etiquetas: arduino, attiny, raspberry pi, reloj de riego, whatsapp