Instalación y configuración de PHP en el Arduino Yún

1
517

Durante el desarrollo de mi tesis me tocó trabajar con el Arduino Yún y con lenguajes de programación web del lado del servidor. La instalación y configuración de PHP es algo que me tomó un par de horas lograr.

Una característica sumamente interesante del Arduino Yún es, precisamente, la posibilidad de ser utilizado como servidor web. Esto quiere decir que en el Yún podríamos montar una página web que bien podríamos utilizar para interactuar con circuitos electrónicos.

Dado que el Arduino Yún viene con una distribución de OpenWRT preinstalada, el usuario es capaz de acceder a los recursos con los que cuenta este sistema operativo. Uno de estos recursos el el paquete de servidor web uhhtpd.

Con uhhtpd nuestro Arduino Yún actúa como un servidor web de bajos recursos. Esto significa que podemos utilizar lenguajes de programación del lado del servidor para lograr diferentes resultados. Uno de estos lenguajes de programación es PHP, el cual aprenderemos no viene pre instalado en el Arduino.

El siguiente artículo mostrará el proceso de instalación y configuración de PHP en el Arduino Yún, junto con breves ejemplos sobre el uso y funcionamiento de este lenguaje.

Conocimientos previos

Como ya dijimos, en el Arduino Yún podemos montar un servidor web. En este servidor es posible utilizar lenguajes de programación web del lado del servidor.

HTTP Cliente Server

La imagen muestra una representación gráfica del esquema de comunicación cliente/servidor, donde los clientes serán las personas que accedan desde sus computadoras a las páginas web alojadas en los servidores. Sin embargo, esto no se limita solamente al acceso a páginas web sino al flujo de información como tal.

Cuando utilizamos un navegador web, este envía una petición al servidor utilizando el Protocolo de Transferencia de Hipertexto (HTTP). El servidor recibe la petición y envía una respuesta de vuelta. Los navegadores reciben esta respuesta y la convierten en resultados proyectados al usuario en un entorno visual.  Para proyectar estos resultados se utilizan lenguajes de programación del lado del cliente, tales como HTML, CSS y JavaScript, entre otros.

Pero los lenguajes de programación del lado del cliente han sido diseñados sólo para eso, renderizar interfaces gráficas. El manejo de datos sensitivos, tales como acceso a bases de datos o transacciones de datos dentro del servidor, se lleva a cabo en el lado del servidor, con los lenguajes de programación diseñados para este fin.

Lenguajes de programación web del lado del servidor

Los lenguajes de programación web del lado del servidor son aquellos que se ejecutan desde un servidor web. En esta categoría podemos mencionar a PHP, NodeJS, Java, Python, etc. Éstos gestionan los datos que no deben ser vistos por los usuarios de una página web. Son los encargados de manejar contraseñas, las bases de datos, operaciones internas en el server, transacciones comerciales, etc.

En nuestra computadora podemos instalar un servidor web y ejecutar scripts en lenguaje PHP. Si instalamos XAMPP tendremos a nuestra disposición el Apache Server, uno de los servidores web más utilizados en la actualidad. Este tema ya lo desarrollamos en el post montaje de un servidor Apache en nuestra PC, en donde ejecutamos ficheros en PHP de forma local.

Una de las cosas más interesantes del Arduino Yún y similares es que podemos utilizar los lenguajes de programación web para realizar tareas avanzadas con nuestros circuitos electrónicos. Gracias a estas capacidades es que el Arduino Yún es especial.

Planteamiento del problema

Gracias al uhttpd podemos utilizar el Arduino Yún como un servidor web. Utilizando un IDE (Entorno de desarrollo integrado) de nuestra preferencia (Netbeans, Sublime, Atom…) o un editor de texto (Bloc de notas), vamos a crear un fichero llamado index.php. Dentro colocaremos el siguiente código:

Ahora guardaremos este fichero dentro del Arduino Yún. Para ello es necesario expandir la memoria del dispositivo a través de una tarjeta microSD. También es necesario instalar un servidor FTP.

Utilizando filezilla colocamos el fichero index.php en la ruta /mnt/sda1/arduino/www/php_test. Debe lucir más o menos asi:

php-arduino-yun

Ahora trataremos de visualizar el fichero desde un navegador web. Entraremos a la dirección http://10.100.32.188/sd/php_test (tomando en cuenta que 10.100.32.188 es la IP del Arduino que estoy utilizando para esta prueba). El resultado que se obtiene es:

php-arduino-yun

Este no es el resultado que esperamos obtener. Se supone que cuando entramos a través de HTTP a una carpeta que contenga y un fichero index.html o index.php se debe renderizar el código en el interior del fichero. En este caso, deberíamos ver el “hello world” que colocamos en el código PHP. La razón de este error es que no tenemos PHP configurado en el Arduino Yún, por lo cual no es posible interpretar el código del fichero en cuestión.

Solución propuesta

Necesitaremos instalar algunos programas antes de poder resolver este problema. Los siguientes comandos deben ser ejecutados desde una consola SSH:

Ahora es necesario configurar algunos parámetros, utilizando los siguientes comandos:

Hecho esto estamos listos para empezar a programar en PHP. Desde el navegador web entramos a la siguiente dirección: http://10.100.32.188/sd/php_test. El resultado ahora debe ser el siguiente:

php-arduino-yun

Esto quiere decir que el script fue ejecutado y devolvió el resultado esperado, a través de la función echo(). Con esto habremos terminado la configuración de PHP y estamos listos para programar.

Espero que la información suministrada sea de utilidad para ustedes. Saludos.

 

 

 

 

  • Antony García González

    Puedes hacer que desde PHP se ejecuten comandos en la consola. En este post: http://panamahitek.com/arduino-yun-comunicacion-inalambrica-por-medio-de-ssh/

    Ahí presentamos un código en Arduino que es sensible a los comandos ejecutados en la consola de Linux. PHP puede ejecutar ese tipo de comandos. No he publicado sobre eso pero sí lo he visto por ahí. Además hay otros lenguajes server side que permiten hacer esto, como Node.JS. También existe el llamado LininoIO que es un sistema operativo con funcionalidades nativas para el control del Arduino desde el lado de Linux