Como encender/apagar un led en Arduino usando PHP & Processing

El siguiente articulo tiene por objetivo lograr encender y apagar un arduino de manera remota haciendo uso de PHP & Processing.

Este proceso tiene ciertas ventajas asi como desventajas, las principales:

Ventajas:
-No requieres comprar tarjeta Arduino Ethernet.
-Se “reducen” costos.

Desventajas:
-Se requiere de un equipo de computo conectado a internet para lograr que funcione.
-Requiere conocimientos (básicos) en PHP, Processing.

Este metodo es muy util, y unicamente requerimos de:

-Placa Arduino (puede funcionar con cualquiera, pero recomendamos el Arduino UNO)
-Webhosting con soporte de PHP, recomendamos usar 000webhosting o algún similar.
-Entorno de programación Arduino (Web de Arduino), nosotros usamos la versión 1.0.5.
-Entorno de programación Processing (Web de Processing) usamos 1.5.1 y 2.0.3
-Editor de Texto (Bloc de notas o lo que prefieras)

-Usamos Windows de 32bits, aunque una vez se hizo prueba en 64bits y resulto exitoso.

El documento es una traducción y desarrollo conforme a lo mostrado en el sitio Projects.sindrelinstand

Para iniciar requerimos de la interfaz web, su función sera dar al usuario a elegir si desea encender o apagar el led, cuando se de click en alguno de los elementos el comando sera escribir a un archivo de texto (.txt) el valor de 1 (encendido) ó 0 (apagado).
La interfaz consistira de 3 archivos, un documento HTML, PHP y un archivo .txt donde se almacenara el valor, usaremos el editor de texto para la creación de dichos archivos :

• index.html
• led.php
• LEDstate.txt

El archivo index.html debera contener lo siguiente:

////////////////////////////////////////////////////////////////////////////

<html>
<head>
<title>LED ON/OFF</title>
</head>
<body>
<p align=”center”>
<font size=”8″>
<b><a href=”led.php?state=1″>ON</a></b> /
<b><a href=”led.php?state=0″>OFF</a></b> /
<b><a href=”https://ssoloquiero.com/”>Visitar Soloquiero</a></b></font>
</p>
</body>
</html>

////////////////////////////////////////////////////////////////////////////

Un ejemplo de como les debe de aparecer:

Ejemplo

Creando el archivo led.php :

////////////////////////////////////////////////////////////////////////////

<?php
$onoroff = $_GET[“state”]; // Declara la petición de index.html como variable
$textfile = “LEDstate.txt”; // Declara el nombre y localización del archivo .txt
$fileLocation = “$textfile”;
$fh = fopen($fileLocation, ‘w ‘) or die(“Something went wrong!”); // Abre el archivo .txt //para escribir y remplazar cualquier contenido previo
$stringToWrite = “$onoroff”; // Escribe 1 ó 0 dependiendo de la solicitud de index.html
$fwrite($fh, $stringToWrite); // Escribe en el archivo .txt
fclose($fh);
header(“Location: index.html”); // Regresa a la pagina principal (index.html)
?>

////////////////////////////////////////////////////////////////////////////

El archivo .txt se deja vacio.

Cargar los 3 archivos al sitio web y recordar su localización, ya que se necesitara posteriormente (nostros usamos un directorio llamado “PRUEBA”).

Ahora es momento de programar Arduino, el codigo abre la conexión Serial de la computadora “host” y lee los valores de entrada en el puerto Serial. Si Arduino recibe un comando “H” activara el LED, o lo apagara si recibe el comando “L”.

Codigo Arduino:

////////////////////////////////////////////////////////////////////////////

const int ledPin = 13; // El pin al que se encuentra conectado el LED
int incomingByte; //Una variable para leer si existe información entrante a leer
void setup() {
// Inicializa comunicación Serial:
Serial.begin(9600);
// Inicializa el pin del LED como salida:
pinMode(ledPin, OUTPUT);
}
void loop() {
// Verifica si existe información entrante en el puerto Serial:
if (Serial.available() > 0) {
// Lee el byte mas antiguo en el buffer Serial:
incomingByte = Serial.read();
// Si es h mayuscula (ASCII 72), enciende el LED:
if (incomingByte == ‘H’) {
digitalWrite(ledPin, HIGH);
}
// Si es una l mayuscula (ASCII 76) apaga el LED:
if (incomingByte == ‘L’) {
digitalWrite(ledPin, LOW);
}
}
}

////////////////////////////////////////////////////////////////////////////

Carga el codigo a Arduino usando su entorno de programación, para verificar que funciona abre el monitor de Puerto Serial y escribe “H” o “L” (sin comillas), y presiona enviar, el LED debera encender si se es enviada una letra H, y se apagara si recibe una letra L.

La ultima parte, encargada de vincular todo es Processing, donde el codigo a cargar es el siguiente:

////////////////////////////////////////////////////////////////////////////

/* A simple Processing script for enabling or disabling the LED on an Arduino using a web interface and serial communication.
Author: Sindre Lindstad
Created: 19th of January 2011
http://projects.sindrelindstad.com */
import processing.serial.*;
Serial port;
void setup() {
/* Esta parte debe ser alterada para que encaje con tus configuraciones locales, el número en parentesis despues de “Serial.list()” es donde tu declaras a que puerto esta conectado tu Arduino.
Si se muestra errores, prueba diferentes numeraciones iniciando desde 0 (ejemplo: 0, 1, 2, 3…) . */
port = new Serial(this, Serial.list()[1], 9600); // Abre el puerto en el que Arduino se encuentra conectado e inicia comunicación a 9600 baud
}
void draw() {
String onoroff[] = loadStrings(“http://YOURDOMAIN.COM/LEDstate.txt”); // Inserta la localización de tu archivo .txt
//la localización de nuestro archivo txt es https://ssoloquiero.com/PRUEBA/LEDstate.txt
print(onoroff[0]); // Imprime el valor de lo que se encuentra en el archivo txt (“1” or “0”)
if (onoroff[0].equals(“1″) == true) {
println(” – TELLING ARDUINO TO TURN LED ON”);
port.write(‘H’); // Envia “H” por el puerto Serial para encender el LED
} else {
println(” – TELLING ARDUINO TO TURN LED OFF”);
port.write(‘L’); //Envia “L” por el puerto Serial para apagar el LED
}
delay(7000); // Establece un intervalo deseado para evitar hacer demasiadas peticiones al servidor web en milliseconds
}

////////////////////////////////////////////////////////////////////////////

Recuerda editar lo correspondiente a tu sitio, nombre de archivos, y demas configuraciones para que funcione correctamente, se debe ejecutar el codigo de PRocessing, y tener cerrado el entorno de programación de Arduino.

Una vez que este corriendo deberas ver en la terminal unos y ceros dependiendo de tu archivo .txt. Si tienes alguna duda comentala. Gracias por visitar el articulo.

Bookmark the permalink.

2 Responses to Como encender/apagar un led en Arduino usando PHP & Processing

  1. geekshabeka says:

    Hola!

    Me parece buenisimo el sistema y la simplificacion de setup porue tengo que hacer una cosa parecida con pocas condiciones de internet.Lo que sucede es que el codigo de processing que poneis me da el siguiente error en la linea de loadStrings desde la URL

    processing.app.SketchException: unexpected char: ”
    at processing.mode.java.JavaBuild.preprocess(JavaBuild.java:379)
    at processing.mode.java.JavaBuild.preprocess(JavaBuild.java:185)
    at processing.mode.java.JavaBuild.build(JavaBuild.java:144)
    at processing.mode.java.JavaBuild.build(JavaBuild.java:123)
    at processing.mode.java.JavaMode.handleRun(JavaMode.java:120)
    at processing.mode.java.JavaEditor$20.ru

    Estoy usando la version processing-2.0.3 que sugeris.Agradeceria mucho vuestro consejo.Gracias!

    • admin says:

      Saludos, disculpa la respuesta tardia lo que ocurre es que dicho proceso unicamente fue probado con processing 1.5 la cual cambio ciertas funciones a la version 2.0 esperamos hayas solucionado tu problema. El codigo proporcionado es como referencia y se le pueden hacer los cambios que sean necearios.

Leave a Reply

Your email address will not be published. Required fields are marked *