arduino php

PHP + Arduino en Windows

Compartir es vivir.Tweet about this on TwitterShare on Facebook0Share on Google+0Share on LinkedIn2Pin on Pinterest0Share on Tumblr0Share on Reddit0Email this to someone

Arduino y el Internet de las Cosas

Cada vez esta siendo más fuerte la unión de dispositivos electrónicos especialmente Arduino con un control Web, existen diversas formas de trabajar desde el lado del servidor (PHP, Python, Node, ASP…) en este tutorial realizaremos una conexión con PHP.

El Ideal

Si disponemos de un dispositivo que accederan a él muchos clientes el ideal es trabajar con una base de datos, si alguien escribe un dato (por ejemplo la temperatura de una sala) posteriormente SOLO un PHP (o otro script de cualquier lenguaje) ataca a la base de datos y actúa a través del puerto serie con el Arduino. Pero en este caso como ejemplo lo haremos sin base de datos. De igual forma si deseamos leer una temperatura, el ideal sería que un script leyera el dato analógico y lo guardara en la base de datos incluso se hiciera un histórico por fecha y hora y los usuarios accedan a dicha base de datos y los lean. Quizás si no eres programador esto te resulte un tanto complicado pero me parecía obligado comentarlo.

Nuestro proyecto

Existen librerías de control del puerto serie para PHP, el problema es que en muchos ordenadores no funcionan correctamente lo mejor es crear nuestra propia librería, por otro existe mucha documentación para este tipo de control en Linux por lo que este ejemplo sera para servidores WAMP en Windows.

El Servidor WAMP

Un servidor WAMP consiste en una serie de programas preparados y listos para funcionar, por un lado contiene un server Apache que es un servidor para html, cuando te conectas a cualquier web pidiendo una página concreta un server como el Apache o el similar devuelve lo que estas solicitando, un interprete de PHP, que es la herramienta que interpreta el codigo PHP que vamos a generar y una base de datos MySQL que como su propio nombre indica sirve para almacenar datos de una forma ordenada.

Sobre PHP

PHP es un lenguaje orientado a programación web del lado del servidor, que quiere decir, el PHP genera un HTML, por ejemplo cuando en un blog buscamos una entrada o en una tienda on-line un producto PHP se encarga de leer esas peticiones y genera un HTML acorde a lo pedido, entre otras funciones accede a la base de datos, por ejemplo un registro PHP lee tu nombre y tu contraseña comprueba que son correctas y genera un HTML con la página a la que accedes (por ejemplo tu email) o otra en la cual detecta un error de logeo.

Puerto serie en PHP

Configuración del puerto serie.

El puerto serie o COM (en Windows) lo podemos vamos a tratar de dos formas, la primera es usando shell_exec() esta función de PHP ejecuta un comando, es creamos un programa como el siguiente:

<?php
shell_exec(dir)
?>

Es como si entráramos en la linea de comandos de Windows “cmd” y tecleáramos dir, nos muestra los directorios y archivos del lugar donde se encuentra el PHP en cuestión. Aquí comienza nuestro programa configurando el puerto con el siguiente comando:

 "mode com4: BAUD=9600 PARITY=n DATA=8 STOP=1 to=off dtr=off rts=off"

Podemos cambiar las configuraciones del propio puerto pero son las que vienen por defecto en Arduino así que serán funcionales.

Actuando sobre el propio puerto

Por otro lado el puerto serie para PHP puede ser considerado un archivo y podemos leerlo como se lee un txt. Antes de continuar comentar que vamos crear dos archivos PHP uno será de escritura y otro de lectura, imaginemos un sistema de control LEDs de iluminación regulables, un PHP le ordenará al Arduino a que intensidad funcionará cada LED, mientras que otro leerá los estados (por ejemplo para mostrarlos en una web) o los consumos.

PHP de escritura del puerto

Usando $fp =fopen(“comN”, “w”) abriremos el “archivo” como comentábamos se trata el puerto como un txt. siendo la N el número de puerto (a veces al conectar y desconectar el Arduino cambia) y la w que solo es de escritura (una w+ es lectura y escritura).

La siguiente función envía el stirng por el serial y es fwrite($fp, str), siendo srt el string a enviar y por último cerramos el puerto aunque PHP lo hace automaticamente, fclose($fp).

Comentar que si tenemos un error al abrir $fopen nos dará un error que aprovecharemos para avisar en la web, por lo que el programa final quedará:

shell_exec("mode com4: BAUD=9600 PARITY=n DATA=8 STOP=1 to=off dtr=off rts=off");
//echo $consola;
$fp =fopen("com4", "w");
if (!$fp) {
$status = "No conectado";
echo $status;
} else {
$status = "Conectado";
echo $status;
fwrite($fp, "Hola Arduino");
}
PHP de lectura del puerto

Igualmente debemos configurar y abrir el puerto, comprobar que hay acceso y en este caso usaremos fwrite($fp,int) que nos devolverá un string de la lectura del serial, con una distancia de int bytes, es decir, leerá hasta llegar a int y parará.

shell_exec("mode com4: BAUD=9600 PARITY=n DATA=8 STOP=1 to=off dtr=off rts=off");
//echo $consola;
$fp =fopen("com4", "w");
if (!$fp) {
$status = "No conectado";
echo $status;
} else {
$status = "Conectado";
echo $status;
fread($fp, int");
}

 

Si necesitas un desarrollador back-end o front-end y además te haga proyectos electrónicos, puedes contactar conmigo.

Aquirir Arduino

Si deseas adquirir un Arduino para este u otros proyectos click aquí o en la imagen.

Arduino Genuino UNO
Arduino Genuino
Summary
Arduino y PHP
Article Name
Arduino y PHP
Description
Comunicación entre PHP y Arduino usando un Puerto COM
Author
Publisher Name
Drouiz
Publisher Logo

Compartir es vivir.Tweet about this on TwitterShare on Facebook0Share on Google+0Share on LinkedIn2Pin on Pinterest0Share on Tumblr0Share on Reddit0Email this to someone

Comenta prometemos responder ;)

A %d blogueros les gusta esto: