Domotica con Arduino Yun
Esta es una prueba de la potencia de la nueva placa arduino-Yun, la cual la utilizamos como control de iluminación. Configuramos un servidor web en arduino-Yun con soporte de MySQL y PHP. Utilizando la librería <Process.h>, el estado de la luz se controla
con las consultas de MySQL e incluso cuando se pulsa un botón se activa una
consulta MySQL, esta es la ventaja del puente de Arduino-Yun, se puede interactuar
entre el ATmega 32U4 (lado Arduino) y el Linino AR9331 (lado Linux). A continuación se presentan algunas imágenes de la
instalación y también un vídeo de demostración.
vídeo demostrativo:
Antes de proceder con la instalación, hay que mencionar en este
momento, que en este proyecto, no se trata el aspecto de control de seguridad y acceso.
Úselo bajo su propia responsabilidad. Si va a acceder desde internet o acceso
público está expuesto y vulnerable a los ataques.
Configuración del lado Linino (Linux) de Arduino:
Descargar todos los archivos necesarios
desde el siguiente enlace:
https://drive.google.com/file/d/0B-CQXux6nrNkbXJ4OVRfZFo1SGs/edit?usp=sharing
https://drive.google.com/file/d/0B-CQXux6nrNkbXJ4OVRfZFo1SGs/edit?usp=sharing
Instalamos LAMP más información en el siguiente sitio web:
Instalación y configuración del servidor web
usuario: root contraseña la que tengamos por defecto en arduino-Yun.
Debemos tener conectado Linino a internet, para que pueda descargar los paquetes por cable o Wifi.
Ya hay un servidor Web en ejecución en arduino-YUN para la interfaz Web de usuario.
Instalamos otro para ser independiente de las paginas de configuración.
uHTTPd
→ http.uhttpd es un servidor web bajo BSD-licencia. Luci WebUI ya utiliza este servidor. Si uHTTPd no está instalado puede instalarlo con:
>opkg update
>opkg install uhttpd
La imagen predeterminada ejecuta un WebUI para OpenWrt en el puerto 80 (HTTP) y el puerto 443 (HTTPS).
Para habilitar nuestro servidor web PHP5, iniciamos uHTTPd en una nueva instancia con un puerto diferente.
Aquí utilizamos el puerto 81.>uci set uhttpd.llmp=uhttpd
>uci set uhttpd.llmp.listen_http=81
>uci set uhttpd.llmp.home=/mnt/sda1/www
>uci commit uhttpd
Creamos un directorio para el contenido del servidor web dentro de la SD
>mkdir -p $(uci get uhttpd.llmp.home)
Si uHTTPd ya estaba instalado y funcionando reiniciamos con
>/etc/init.d/uhttpd restart
Si hemos instalado uHTTPd través opkg tenemos que iniciar el servidor web de forma manual y también añadir la ejecución en el arranque, añadiendo en el script de inicio.
>/etc/init.d/uhttpd start
>/etc/init.d/uhttpd enable
Instalación y configuración de un servidor de base de datos.
>opkg update
>opkg install libpthread libncurses libreadline mysql-server
>sed -i 's,^datadir.*,datadir = "/mnt/sda1/mysql",g' /etc/my.cnf
>sed -i 's,^tmpdir.*,tmpdir = "/tmp",g' /etc/my.cnf
>mkdir -p /mnt/sda1/mysql
>mysql_install_db --force
>/etc/init.d/mysqld start
>/etc/init.d/mysqld enable
>mysqladmin -u root password 'new-password'
yo he puesto de contraseña arduino en caso de cambiarla hay que cambiarla también en los scripts
Para habilitar MySQL en PHP
>opkg update
>opkg install php5-mod-mysql
y cargarmos el módulo mysql.so en /etc/php.ini
>sed -i 's,;extension=mysql.so,extension=mysql.so,g' /etc/php.ini
>mysqli.default_socket = /var/run/mysqld.sock
Para que trabaje MySQL con PHP, también se debe configurar el archivo (vi/etc/php.ini) php.ini, en la sección [MySQL].
[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port = 3306
mysql.default_socket = /tmp/run/mysqld.sock
mysql.default_host = 127.0.0.1
mysql.default_user = root
mysql.default_password = MySuperSecretPassword
mysql.connect_timeout = 60
mysql.trace_mode = Off
yo no he utilizado el vi en su lugar utilizo WinSCP.
WinSCP
Ya tenemos instalado MySQL y PHP.
2º Copiamos los archivo de www en la carpeta del servidor web que ejecuta Arduino.
podemos utilizar WinSCP.
ejecutamos MySQL.
>mysql -h localhost -u root -p
Nos pide la contraseña.
mysql> CREATE DATABASE homeautomation;
mysql>use homeautomation;
mysql> CREATE TABLE LEDstatus (id INT(2) NOT NULL AUTO_INCREMENT PRIMARY KEY,name VARCHAR(15), LEDstatus VARCHAR(5), pin INT(2), pinOut INT(2));
mysql> CREATE TABLE WEBstatus (status INT(1));
mysql> INSERT INTO LEDstatus VALUES (1,'LED1','-1',2,8);
mysql> INSERT INTO LEDstatus VALUES (2,'LED2','-1',3,9);
mysql> INSERT INTO WEBstatus VALUES (1);
verificamos y nos tiene que dar como a continuación:
mysql> DESCRIBE LEDstatus;
Tabla LEDstatus:
Field
|
Type
|
Null
|
Key
|
Default
|
Extra
|
id
|
int (2)
|
NO
|
PRI
|
NULL
|
AUTO_INCREMENT
|
name
|
varchar (15)
|
YES
|
NULL
|
||
LEDstatus
|
varchar (5)
|
YES
|
NULL
|
||
pin
|
int (2)
|
YES
|
NULL
|
||
pinOut
|
int (2)
|
YES
|
NULL
|
.. Y ha añadido dos entradas en la tabla LEDstatus:
mysql> SELECT * FROM LEDstatus;
mysql> SELECT * FROM LEDstatus;
id
|
name
|
LEDstatus
|
pin
|
pinOut
|
1
|
LED1
|
-1
|
2
|
8
|
2
|
LED2
|
-1
|
3
|
9
|
mysql> DESCRIBE WEBstatus;
Tabla WebStatus:
Tabla WebStatus:
Field
|
Type
|
Null
|
Key
|
Default
|
Extra
|
status
|
int (1)
|
YES
|
NULL
|
3º Creamos una carpeta llamada scripts y copiamos los archivos que realizaran las operaciones para diferentes consultas MySQL. Si se cambio la contraseña hay que editarlos para actualizarlos.
4º Probamos colocamos en el navegador.
http://ip-arduino:81/ y nos aparecerá los dibujos de los 2 led.
Muchas gracias por su atención :
bibligrafia:
Donde va exactamente la carpeta de scripts? gracias.
ResponderEliminarPara quien le pueda interesar faltan los siguientes comandos para el correcto funcionamiento ya que si no la pagina php no carga correctamente :
ResponderEliminaruci add_list uhttpd.llmp.interpreter=".php=/usr/bin/php-cgi"
uci set uhttpd.llmp.index_page="index.html index.htm default.html default.htm index.php"
uci commit uhttpd
sed -i 's,doc_root.*,doc_root = "",g' /etc/php.ini
sed -i 's,;short_open_tag = Off,short_open_tag = On,g' /etc/php.ini
Hola me parece excelente este proyecto, recien vengo comprando mi Arduino Yun, soy nuevo en esto y el problema es que no puedo seguirte bien los pasos, me ayudas por favor? me encantaría poder realizar esto. Tal vez si publicas algunas imagenes, como capturas de la pantalla de tu computador o algo así, debajo de cada paso sería genial así podría guiarme mejor, espero tu ayuda y de antemano gracias!
ResponderEliminarExcelente ejemplo, que no deja de ser un pequeño SCADA, aplicable a cualquier entorno, por ejemplo el mundo de la industria y la automatización...
ResponderEliminarJ.R.J. Casino & Hotel - St. Pete's Hotel & Casino
ResponderEliminarJ.R.J Casino & Hotel. 1 Fremont Street, St. 천안 출장샵 Pete's, Pete, CA 86328 - 전주 출장안마 Use this 구리 출장마사지 simple form to 청주 출장샵 find the perfect place to 순천 출장안마 stay.