Automatización utilizando Router IP + Arduino + transmisores/receptores de radiofrecuencia (433 Mhz)
Para el desarrollo de este tutorial hse ha utilizado un router casero TP-Link Modelo Tl-WR841N.
Modificando el Firmware por uno tipo Custom, permitiendo mayor parametrización del router, lo utilizo como un pequeño servidor WEB y a su vez me permite utilizar el puerto serial interno, permitiendo por esta vía comunicarlo con el Arduino. Cabe destacar que el acceso y control se realiza por medio de servicios web, con ello obtenemos un sistema de automatización multiplataforma (Mac, Linux, Windows, Iphone, Android, Blackberry), lo que es fundamental hoy en día para estos tipos de sistemas, el cual no se limita a un sistema operativo específico.
Por ejemplo en mi primera publicación, la interface gráfica o GUI solo funciona bajo Windows ya que la aplicación fue realizada bajo Visual Studio 2013.
¿Como funciona?
Al router se le modifica el firmware cargándole el openWRT. Accesamos al router y dentro de él cargamos nuestra interface de automatización, en este caso una sencilla página web.
El index.html contiene los botones de encendido y apagado, ligados a un script que al presionar cada botón este se ejecuta en el router, enviando cadenas de texto al puerto serial. Estas cadenas las recibe nuestro Arduino y, por medio de la programación cargad,a nuestro Arduino capta e interpreta los datos recibidos por el puerto serial.
La programación del arduino interpreta la cadena y segun sea nuestro Arduino envía el codigo de control vía inalámbrica a nuestros «wireless remote controller switch» por medio del módulo RF433. Cabe destacar que el router continua funcionado como tal, con un firmware mejorado ya que se amplía la capacidad de parametrización del mismo, permitiendo al usuario avanzado sacarle más provecho al cambiarle el Firmware al router que adquiere teniendo un routeador de Internet y un servidor de automatización que consume menos de 4 Watts.
Para el desarrollo de este proyecto hemos utilizado los siguientes elementos:
- Un router casero TP-Link Tl-WR841N (ver lista de router compatibles).
- Custon Firmware Openwrt.
- Arduino Nano.
- Módulo 433mhz.
- Wireless Remote Control Power Outlet Light Switches Plug.
- Archivos Html Jada Home Automation Server.
- Software WinSCP.
- Software Putty.
Primer Proceso
I- Configuración del Router.
Instalar en el Router el firmware OpenWRT basado en Linux. Las instrucciones de instalación para el TP-LINK TL-WR841N se encuentran aqui. Puede utilizar los router listados aqui . Realizamos la configuración de nuestro router, teniendo en cuenta que el equipo ahora cuenta con el Firmware OpenWRT , recordando que la página de administracion/configuracion del fabricate ya no existe.
1. Abrimos el navegador (192.168.1.1) el usuario es: root y la contraseña queda en blanco.
2. Tendremos que configurar nuevamente nuestra red, recordar utilizar parámetros altos de seguridad, si van a poner en producción este proyecto, por lo que recomiendo conocimientos básicos de redes informáticas. Voy a explicar solo lo básico, si tiene problemas con la configuración puede contactarme.
Open-wrt tiene 3 menús.
- Status
- System
- Network
Ingresamos en System -> Administration y realizamos la siguiente configuración:
1. Router/Password : establecemos el password para ingresar a la administración del router ya que el password DEFAULT esta en blanco. MUY IMPORTANTE guardar y recordar esta contraseña[…].
2. SSH Access: mediante esta configuración podremos realizar cambios en el router y conectarnos a él por medio de programa WinSCP, Putty. La configuración Dropbear nos permite acceder al Shell (consola, terminal) del router por medio de la red y poder acceder al servidor integrado SCP server. Adjunto la imagen con la configuración.
3. Configuramos la red inalámbrica. En el menú NETWORK -> Wifi. En la opción Wireless Overview vamos a ver al botón Add.
Luego en Device Configuration en la opción de General Setup tenemos que habilitar la conexión inalámbrica por defecto viene desactivada. Pulsamos el botón Enable y vemos que el tag debe de decir Wireless network is enable.
Segimos con Interface Configuration
- ESSID = el nombre de su red.
- Mode = acces point
- Network = lan, wan seleccionadas(es importante para poder salir al intenet y poder tener acceso a las interfaces físicas del router)
- Wmm Mode = seleccionado
- Salvamos en SAVE
4. Ingresamos en Wireless Security, aplicar la configuración de seguridad inalambrica que guste.
- Encryption WPA2-PSK
- CIPHER = AUTO
- KEY= INGRESE SU CLAVE DE ACCESO INALAMBRICO
- Salvamos con Save & Apply
Segundo Proceso
II- Subir al Router la aplicación «Jada Home Automation Server«.
Debido a que la administración y configuración del router se realiza por el puerto 80, debemos de realizar cambios en el archivo de configuración uhttpd localizado dentro de las carpetas que contienen el firmware cargado en el I Paso. Con la configuración descrita, el router nos permitirá acceder a la aplicación web y trabajar en ella por el puerto 81. Al realizar los cambios en el archivo estaremos configurando un puerto secundario, por este puerto TCP trabajara nuestro sitio web de automatización.
1. Abrimos el programa WinSCP y establecemos los siguientes parámetros para la conexión:
- Host name = a la dirección ip del router 192.168.1.1 (default).
- Port: 22.
- User name: root.
- Password: es el password de administración y configuración (el que establecimos en la I parte) Router/Password )
- File protocol: SCP.
- Damos clic en el botón login.
2. Luego establecer conexión veremos un programa similar a uno de FTP. nos muestra una estructura de carpetas, al darle clic al botón de subir como lo indica la imagen, podemos ver toda la estructura de archivos internos de nuestro router, «el firmware».
3. Ubicamos la siguiente ruta y realizamos cambios al siguiente archivo dándole doble click a uhttpd. /etc/config/uhttpd
Ir al final y agregar los sig parámetros.
config ‘uhttpd’ ‘secondary’
option ‘listen_http’ ’81’
option ‘home’ ‘/routerapp/www’
option ‘cgi_prefix’ ‘/cgi-bin’
option ‘script_timeout’ ’60’
option ‘network_timeout’ ’30’
Salvamos y cerramos.
5. Ahora creamos en el root una carpeta (presionamos F7) con el nombre routerapp dentro de esta creamos la carpeta con el nombre www. Dentro de la carpeta www descomprimimos y copiamos los archivos que contiene nuestra aplicación de automatización Jada home automation server, el index.html y sus subcarpetas.
Luego debemos de establecer permisos de acceso a los archivos on.cgi y off.cgi , estan dentro de la carpeta cgi-bin, seleccionándo y presionando F9. Seleccionamos todos los cheqbox, nos mostrara los permisos 777.
Salvamos y reiniciamos el Router. Después de iniciar ya tenemos lista la aplicación de automatización cargada dentro del Router, siendo este nuestro servidor de automatización.
Tercer Proceso
En este paso ya estamos listos para realizar las conexiones de físicas tanto del Router al Ardunio y del Arduino al módulo RF433mhz.
Router al Arduino
En la página web de OpenWRT cuenta con la descripción de pines del puerto serial de los modelos que mantienen listados, el modelo de router que utilice mantiene varias versiones, cada versión mantiene placas diferentes por lo que dejare en este link para que vean la descripcion .
La conexión desde el Router al Arduino es en un solo sentido (Simplex).
Arduino al módulo RF 433mhz
Conectamos el módulo RF433 al nuestro arduino como lo muestra la imagen. Para comprender que códigos enviamos y como realizamos el control de los tomacorrientes inalámbricos le recomiendo lean el Primer Post
Cuarto Proceso
Programación del Arduino.
Descargamos el Sketch lo abrimos y cargamos a nuestro Arduino.
Vemos en la imagen que la Programación esta compilada sin errores
Quinto Proceso
Cómo Funciona la Web Embedida en el Router?
Cuando se presionan los Botones de encendido o Apagado el navegador carga un Scrip on.cgi/off.cgi para cada botón. El Router ejecuta los scrips (archivos .cgi) enviando los datos por su salida serial. Luego el Scrip redirige de regreso al navegador la página principal (index).
- echo -e «\x9B\x01\x00\x34\xCB\x0D» > /dev/ttyS0 (dato ejecutado y enviado)
- echo » function Redirect(){ location.href = ‘../index.html’;}»(regresando a la pagina index)
Puede agregar cuantos botones quiera y personalizar los comandos que interpreta el Arduino modificando los archivos on.cgi/off.cgi
- «\x9B\x01\x00\x34\xCB\x0D» (solo debe de modificarse en la cadena: Data1, Data2, Checksum)
En este caso el stream hexadecimal se compone asi
Byte# Funcion:
1. Synchronizacion (0x9B)
2. tipo de mensaje, utilice(0x00) o (0x01)
3. Data1 (convertido de ascii as hex) 0 = 0
4. Data2 (convertido de ascii as hex) 4 = 34
5. Suma de comprobación o Checksum (cualculo de Byte. 2~4)
6. Carácter de fin (, 0x0D)
Generador de caracteres(Pronto)
enlace que convierte los datos de ASCII a Hex
Escrito y Publicado Por Javier Brathwaite V.
[…] Home Automation Server // IP Router + Arduino. | Panama Hitek. […]