Hacía tiempo que no desarrollaba un proyecto con la fonera. En esta ocasión voy a hacer un sistema de alarma, la cual se activa cuando se pulsa un botón. Para ello me he hecho con lo siguientes materiales:
Cuando alguien pulse el mando emisor, el receptor (alimentado por la fonera) recibirá la señal e informará a la fonera que se ha activado. Después la fonera se conectará a una página web para mandar un mensaje sms a un número de teléfono. Esto es útil por ejemplo para ancianos que desean solicitar asistencia, con sólo llevar el emisor colgado ya pueden enviar la alarma. Otra aplicación es una tienda donde se solicite ayuda en caso de robo, guardando el emisor debajo del mostrador o en el suelo.
Para ello, lo primero que se debe tener es la fonera con el firmware openwrt. Los pasos se pueden seguir aquí.
Después hay que instalar el módulo gpio. Los pasos se pueden seguir aquí.
A continuación hay que hacer que la fonera sea independiente del cable de red y se conecte como cliente al router wireless. Primero editamos el fichero /etc/config/wireless y ponemos lo siguiente:
1 2 3 4 5 6 7 8 9 10 |
config wifi-device wifi0 option type atheros option channel 5 config wifi-iface option device wifi0 option mode sta option ssid <SSID> option encryption wep option key <CLAVE HEX> |
Donde SSID es el nombre de la red wireless y CLAVE HEX la clave wep en hexadecimal (Para otras configuraciones mirar el documento de configuración aquí)
Segundo editamos el fichero /etc/config/network y ponemos lo siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# Copyright (C) 2006 OpenWrt.org config interface loopback option ifname lo option proto static option ipaddr 127.0.0.1 option netmask 255.0.0.0 config interface lan option ifname eth0 option proto static option ipaddr 192.168.1.200 option netmask 255.255.255.0 config interface wifi0 option ifname ath0 option proto dhcp |
Con estas configuraciones hacemos que el router de la fonera se conecte al punto de acceso como cliente y coja una ip mediante dhcp, sin la necesidad de tener un cable de red, por lo que podemos ponerla en cualquier lado. Por si acaso se deja una ip 192.168.1.200 en el puerto ethernet por si hubiera que conectarse a ella y no funcionase el wifi.
El siguiente paso es crear el script que recibirá por el gpio la señal del receptor. Creamos el fichero /usr/bin/alarma.sh con este contenido (poniendo el usuario, contraseña, numero de móvil y el mensaje a enviar):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
echo 1 > /proc/gpio/2_dir echo 0 > /proc/gpio/1_dir while true do estado=`cat /proc/gpio/1_in` echo $estado > /proc/gpio/2_out if [ $estado -eq 1 ] then wget -q "https://www.sistemasorp.es/alarma.php?login=<USUARIO>&password=<CLAVE>&destino=<Nº MOVIL>&mensaje=<MENSAJE>" while true do sleep 1 done fi sleep 1 done |
Lo que hace el script es comprobar la salida del receptor cada segundo, si está activada enciende el led wlan de la fonera y accede a una página web php que envía mensajes sms con la API de envío de SMS del open movil forum, este es el código fuente:
1 2 3 4 5 6 |
<?php include 'SMSSenderAPI.php'; $SMS = New SMSSender; $SMS->SendMessage($_GET["login"], $_GET["password"], $_GET["destino"], $_GET["mensaje"]); ?> |
El fichero SMSSenderAPI.php lo podeis descargar aquí. Los campos LOGIN y PASSWORD son para la api de open movilforum, el campo DESTINO es el número de móvil del destinatario y el campo MENSAJE el texto que se le enviará.
Después se edita el fichero /etc/firewall.user y se añade al final la siguiente linea sh /usr/bin/programa.sh &.
En la parte hardware he sacado los cables de GPIO de la fonera y alimentación y masa al exterior:
Igualmente he quitado en el receptor el integrado 7805 para alimentar el circuito directamente desde la fonera con dos cables (alimentación y masa):
Y soldado al pin 1 (el que se pone a 5 voltios si el circuito ha recibido una señal) del chip HEF4013BP un cable que irá directamente conectado al gpio 1 de la fonera:
Y como colofón un video demostrativo:
En el vídeo se puede ver como pulso el botón del emisor, después el led de la fonera se pone en verde y finalmente se recibe un mensaje de texto indicando Alarma activada.