Encendido de LED por Proximidad por Bluetooth
He hecho un proyecto para la escuela que consiste en abrir los seguros del carro al estar cerca de él, y de cerrarlos al alejarse, es solo un prototipo, para eso he utilizado un Arduino, un USB-Bluetooth, una laptop y el celular que se va a detectar.
Video demo
Todo está hecho sobre linux UBUNTU 8.10, sobre windows no se me ocurre como integralo, solo haciendo una sola aplicacion completa.
1.- Se ensambla e USB-Bluetooth a la computadora y se empareja el dispositivo por medio de los asistentes.
2.- Se instala la aplicación Blueproximity desde Synaptics y se configura.
3.- Se baja una clase en C que tiene funciones para el manejo del puerto serial, la clase es arduino-serial.c, al descargar accesas a la carpeta donde lo descargaste y desde la terminal ejecutas
punksolid$ gcc -o arduino-serial arduino-serial.c
con eso compilas la clase, para su uso solo basta
punksolid$ ./arduino-serial
y aparecerá el modo de uso, por ejemplo yo uso está linea para encender el led
punksolid$ /home/punksolid/arduino-serial -b 19200 -p /dev/ttyUSB0 -s m
y para apagarlo
punksolid$ /home/punksolid/arduino-serial -b 19200 -p /dev/ttyUSB0 -s n
el codigo de la placa arduino es el siguiente
* Serial Read Blink * ----------------- * Turns on and off a light emitting diode(LED) connected to digital * pin 13. The LED will blink the number of times given by a * single-digit ASCII number read from the serial port. * * Created 18 October 2006 * copyleft 2006 Tod E. Kurt <tod@todbot.com> * http://todbot.com/ * * based on "serial_read_advanced" example */ int ledPin = 13; // select the pin for the LED int val = 0; // variable to store the data from the serial port void setup() { pinMode(ledPin,OUTPUT); // declare the LED's pin as output Serial.begin(19200); // connect to the serial port } void loop () { val = Serial.read(); // read the serial port // if the stored value is a single-digit number, blink the LED that number if (val > '0' && val <= '9' ) { val = val - '0'; // convert from character to number for(int i=0; i<val; i++) { Serial.println("blink!"); digitalWrite(ledPin,HIGH); delay(150); digitalWrite(ledPin, LOW); delay(150); } //Serial.println(); } if (val=='m'){ digitalWrite(ledPin,HIGH); }else if(val=='n'){ digitalWrite(ledPin,LOW); } }
4.- Ya nada mas falta configurar Blueproximity en la pestaña de bloqueo para que se ejecute el comando de ejemplo que puse arriba.
Como utilidades he pensado en la apertura de serguros electricos para carro al acercarse ademas tambien bajar las ventanas, y viceversa para cuando el usuario se aleje, para hacer eso basta con un relay.
Cualquier duda comentarlo y responderé.
Referencias
Conectar Arduino con el lenguaje C
Conectar la placa Arduino con PHP a travez de PHP Serial
Este tutorial sirve para conectar Arduino con PHP de manera mas directa sobre windows con XAMPP y la extensión PHP Serial, que prácticamente debería servir para cualquier dispositivo que se quiera conectar al puerto Serial de la computadora, aunque mi prueba es por USB.
Guía Rápida
- Descarga e instala XAMPP.
- Descarga la extensión y los archivos de ejemplo de PHP Serial.
- Coloca el *.dll en las librerías de PHP y activalas en el php.ini.
- Pon el Xampp en modo CGI.
- Conecta y sube código de prueba al Arduino.
- Inicia el Apache.
- Usa archivo de prueba "sms_list.php" que viene en el paquete de PHP Serial .
- Ejecútalo y Suerte.
Guía Detallada
Una vez instalado XAMPP en windows descarga la extension y los archivos de PHP Serial una vez descompreso copia el archivo php_ser.dll en la carpeta de extensiones de PHP que usualmente suele ser para PHP5
C:/PHP/ext/
ahora debes buscar el php.ini dentro de la carpeta C:\xampp\php en el caso de XAMPP y abrirlo con un bloc de notas, aunque recomiendo NOTEPAD+ que es el que uso, y agregar la extencion que copiamos anteriormente, para hacer eso solo debemos agregar la siguiente linea donde están las demas dll, ejemplo:
extension=php_ser.dll
guarda y cierra el php.ini.
si no estas usando XAMPP talvez asi ya puedas utilizarlo, solo reinicia el apache, pero si eres usuario de XAMPP debes configurarlo para que corra como CGI, ya que por default corre como modulo de apache, para cambiar esto debemos:
- Ir a C:\xampp\apache\conf\extra/httpd-xampp.conf y buscar donde estén las siguientes lineas y descomentar las lineas 1 y 2 y comentar la 3.
<em>#ScriptAlias /php/ "C:/xampp/php/" #Action application/x-httpd-php "/php/php-cgi.exe" LoadModule php5_module "C:/xampp/apache/bin/php5apache2.dll" AddType application/x-httpd-php-source .phps</em>
- Ir a C:\xampp\apache\conf/httpd.conf y buscar <Directory /> y dejarlo como sigue:
<em>Options FollowSymLinks AllowOverride None #Order deny,allow #Deny from all </em>
Ahora si pueden reiniciar el Apache, algo que pude notar es que el tiempo de respuesta es algo lento, si alguien puede mejorarlo que me lo notifique, no sé si es la mejor manera de comunicarlo con PHP en windows, pero eso ya es cuestion de cada quien.
Arduino y PHP en Windows


Foto por Nicholas Zambetti
Se me hace raro que en la web oficial de Arduino no venga como conectar la placa Arduino + PHP de manera directa, hay unos métodos a través de proxys o cosas similares, el caso es que lo he logrado implementando la extensión PHPSerials que descargué desde http://www.easyvitools.com/phpserial/index.html, son pocas pero suficientes funciones que permiten leer y escribir sobre el puerto serial, bajo windows XP y sobre XAMPP con Arduino USB,los únicos problemas que noté fue la velocidad, y que al parecer la versión de la extensión es solo para estudiantes o algo similar.
Si no puedes lograr la conexion, comentalo y te respondo detalladamente.