Suse 11.2

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

  1. Descarga e instala XAMPP.
  2. Descarga la extensión y los archivos de ejemplo de PHP Serial.
  3. Coloca el *.dll en las librerías de PHP y activalas en el php.ini.
  4. Pon el Xampp en modo CGI.
  5. Conecta y sube código de prueba al Arduino.
  6. Inicia el Apache.
  7. Usa archivo de prueba “sms_list.php” que viene en el paquete de PHP Serial .
  8. 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:

  1. 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>

  2. 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.

Codigo Arduino

He tomado el codigo prestado del proyecto de GMAIL_NOTIFIER_LAMP que si la placa recibe el valor “M” enciende el led si recibe “N” lo apaga:

int outPin = 13; // Especificamos el pin de salida
int mail = LOW; // Is there new mail?
int val; // Value read from the serial port
 
void setup()
{
 pinMode(outPin, OUTPUT); // sets the digital pin as output
 Serial.begin(19200);
 Serial.flush();
}
 
void loop()
{
// Read from serial port
 if (Serial.available())
 {
  val = Serial.read();
  Serial.println(val);
  if (val == 'M'){
  mail = HIGH;
 }
  else if (val == 'N') mail = LOW;
 }
 
// Set the status of the output pin
 digitalWrite(outPin, mail);
}

El Codigo PHP para encendido pueden usar el de ejemplo de PHPSerial, el que lleva por nombre sms_list.php solo recuerden modificar por su puerto COM en mi caso es el COM4 y los baud a 19200 en caso de ser USB.

Suerte!! Cualquier problema lo publican en los comentarios

Arduino from Punksolid on Vimeo.

Actualización!! (22/Nov/09)

Este articulo fue escrito hace tiempo,  creo que ya cambió la version de XAMPP con la que fue probado, e incluso ya salió una nueva version de PHP_Serial en la que ya no se ocupa el modo CGI, segun lo leido en los comentarios, este articulo parece ya no funcionar.

Referencia

Instrucciones de Instalación y API de PHP Serials (En Ingles)

Talvez te interese leer

29 comments to Conectar la placa Arduino con PHP a travez de PHP Serial

  • ona

    no funcionaaaaaa
    me tira error diciendo Module win_serial_port is not compiled into PHP

  • Reiniciaste el Apache?

  • ona

    sip lo reinicie todo
    pero no me funciona
    mmm ???
    que extraño
    yo ya lo he isto funcionar como dices en otros lados pero a mi no me funciona

  • ona

    ya funciona ok
    graciasssss

  • Bien ona, cuentanos que hiciste, si falta algo o le sobra.

  • el problema seguramente fue que la version del SER_PHP.dll no concordaba con la instalada en el servidor WEB…

  • Richard Sánchez

    saludos, segui las instrucciones y luego de muchas pruebas logré hacer funcionar la extensión.

    Mi pregunta ahora es sobre si alguien me puede ayudar a obtener mayor información referida a las funciones dispobles en la extensión.

    De antemano, gracias.

  • Hola Richard
    Hace rato que no le muevo a mi arduino, segun recuerdo casi no había funciones de la extensión. Asi que te tocará programarlo

  • ona

    una preguntilla , se que quizas no es el lugar , pero tengo una duda
    el pin 13 o y el resto de los pines que voltaje me entregan ???
    por que estoy trabajando con un rele de 5volt y bueno con el pin 13 me lo activa sin problemas
    pero creo que el voltaje de este pin es menor , he buscado donde salga algo detallado d cada pin pero no me lo deja en claro
    gracias de antemano si alguien pueda ayudarme.

  • Hola Ona cuando hice la prueba creo que me daba 3.5 volts

  • ona

    muchas gracias Punksolid

    bueno he podido activar un rele de 5volts y por eso tenia las dudas

  • HOLA, podrías explicar mejor la parte de instalar la .dll ?

    te agredeceria mucho si me explicas mejor. Ya que tengo xampp e hice todos los pasos y no me resulta.

    es necesario instalar php5?…. el xampp trae una carpeta llamada php….y dentro de esa carpeta tiene el mismo directorio que la php5. Con cual ejemplo php probaste la salida de voltaje?

    eso, espero tu respuesta.

  • ona

    he tenido un pequeño problema jaja
    estoy haciendo funcionar un motor de 3 volts, lo he probado directamente con el pin 3v3 y ha funcionado muy bien, pero lo he intentado con el pin 12 que se supone que tiene mayor voltage, me he dado cuenta que gira mas rapido con este pin ,pero la fuerza es menor a la del pin 3v3 , ya que lo estaba haciendo funcionar para una maqueta para levantar una mini persiana y con el pin 12 no es capaz de levantarla y con el 3v3 si lo hace y sin problemas????
    alguien podria explicarme esto , probe tambien un led y en el pin 12 tiene mayor luminosidad y en el 3v3 es menor ???? a que se debe esto. un pin con menor voltage pero mayor fuerza ???

  • Ona me he quedado impresionado, segun yo todos los pines manejan el mismo voltaje, lo que me imagino que podria suceder es que no haga bien contacto en el pin 12 y por eso no tenga tanta potencia.

    Gerzon, hace mucho que no le muevo ni al arduino, ni lo conecto a php y ni siquiera tenia instalado el windows desde hace mucho, estoy alejado de este tema en estos momentos y no creo ser capaz de ayudarles.

  • ona

    No Punksolid probe muchas veces y como te dije, probe con los demas pines y es lo mismo , giran a mayor velocidad pero la fuerza es menor…

    Saludos

  • utec

    para los interesados, salio una nueva version de php_serial capas de trabajar sin modo cgi :D …..
    encendi un led usando el wamp, funciona perfectamente….

    reitero mis agradecimiento a punksolid…. (lo hice en un post anterior)

  • Hola Utec, gracias por el agradecimiento, este blog lo contruyo con el fin de aportar algo, pero los comentarios son los que lo mejoran. Asi que este blog es de todos.

    Por parte del PHP_Serials tendré que probar la nueva version, me llamaria la atencion si funciona mas rapido, la version anterior me parecia muy lenta. Ya veremos

  • rk

    no funciona tu wea… actualiza lo que escribes…con la nueva version de xampp eso no funcionará… ya que los archivos de configuracion son diferentes………………………………………….ademas se demora mucho ese metodo.

  • Hola Rk, ya no uso ni windows asi que no puedo actualizarlo, pero ya puse un mensaje en el post con la advertencia, por que incluso ya actualizaron el PHP_serials y ni siquiera ocupa CGI asi que parece que la implementacion es mas facil ahora.

  • utec

    Hola punksolid, tengo dudas con respecto a arduino….

    la primera es: existe algun riesgo si tengo conectado arduino mediante usb y a la vez conectado con el tranformador?…

    y la segunda es: necesito controlar varios reles 5v dc, aprox (6) la placa soportara los 6 reles?

    la verdad soy un novato en la electronica, ojala me puedas ayudar

    gracias

  • Hola @Utec.
    La verdad es que no soy electronico, soy informatico, asi que por eso uso arduino, la primera duda a mi tambien me surgió, y segun yo tiene un fusible para que no dañe tu computadora.

    Y sobre la segunda duda no tengo idea, pero puedes probar a ver si funcionan. Y si puedes publicar aqui tu resultado para hacérnoslo saber a todos.

  • utec

    ejeje, tambien soy informatico :D , te cuento, estoy realizando un sistema domotico con unos colegas para nuestro seminario (encender luces, controlar cortinas, controlar temperatura ambiente y mediante sensor de movimiento y magnetico controlamos las intrusiones al lugar) hasta el momento va bien la cosa, pero hemos tenido bastantes problemas tecnicos, somos todos informaticos xD! la electronica es otra cosa….

    te cuento despues como me fue….

    saludos

  • Interesante. De hecho yo tambien le veo usos interesantes en domotica al arduino, talvez te interese mi idea de abrir puertas detectando celulares con bluetooth. Usando como llave las direcciones Mac detectadas. Solo que ocuparías una tarjeta madre con un dispositivo bluetooth o un arduino con bluetooth integrado que no está nada barato :P

    Estaria bien que nos compartieras tus avances.

  • Ona

    jajja Oye utec jajaja tamo cagao wom nos queda la nada de tiempo
    jojoo

  • Me puedes ayudar a poner mas que una salida? lo ideal son 8…

    como hacer eso?

    ya que tengo varios archivos .pde y algunos scripts php… que hacen lo mismo que tú y sin necesidad del proxy ni la libreria php…ademas me presenta un boton, pero quiero poner 8 salidas y…en el codigo no logro hacerlo =( apenas pude hacer 2 con suerte…y lo modifique y jamas me volvio a salir :( HELP!!! PLZ

  • Los archivos .pde de que son? nunca los habia escuchado. Lo siento creo que no puedo ayudarte.

  • ayudame porfaaaa

    Pues el sketch … =( bueno, mi idea es hacer un control de 8 o mas salidas desde internet

    en tu ejemplo solo se puede activar una sola.

  • ayudame porfaaaa

    Mi idea es controlar 8 salidas, independientemente es decir, tener activada solo la 1, o la 1 y la 2, o todas juntas o todas apagadas…

    pero desde internet

  • signo

    Igual lo conoces, pero por si acaso, el editor Geany en mi opinión le da mil vueltas a notepad++, a pesar de estar basado también en scintilla.

    Saludos

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">