Punksolid Tecnologia, Curiosidades, Sistemas de Informacion y un poco de Religion

20oct/0835

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

Comentarios (35) Trackbacks (0)
  1. no funcionaaaaaa
    me tira error diciendo Module win_serial_port is not compiled into PHP

  2. Reiniciaste el Apache?

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

  4. ya funciona ok
    graciasssss

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

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

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

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

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

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

  11. muchas gracias Punksolid

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

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

  13. 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 ???

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

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

  16. 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

  30. Hola oye tomare este tutorial si pude encender mi led desde php pero no pude apagarlo llebaba dos dias intentandolo me emocione mucho e creado mi serviro apache con ubuntu server FTp = ggg gracias cuando sea millonario te pagare un carrazo ;P dudas con gusto ayudaria

  31. aun funciona este proyecto?

  32. Tengo entendido que si funciona, solo que ahora es mas facil hacerlo.

  33. Ayuda por favor!!
    Hola! Estoy pensando en hacer un proyecto para controlar una placa arduino.
    Mi pregunta es, que si tengo que conectar la placa arduino a mi pc ¿Para qué voy a hacer una web en php con su conexión a internet? No le veo utilidad. Sería más lógico hacer un programa que no sea web. A no ser, que programe en php para que se comunique con un servidor y dicho servidor sea el que esté conectado a arduino y éste ejecute lo que sea.

    Espero respuesta, a ver si alguien me puede ayudar.

  34. Hola Victor,
    por supuesto no es necesario tener el arduino conectado al pc para funcionar, pero si quieres compartirle información del pc al arduino si necesitarias tenerlo conectado, para eso puedes desarrollar una aplicación de escritorio con acceso al puerto serial, y funcionaría perfecto.
    Dentro del universo de imaginacion de los desarrolladores alguien puede tener necesidades muy especificas que requieran el acceso de php al arduino, ese ejemplo que mencionas es en el que he pensado, imaginemos que una pc controla un arduino para encender distintas luces dentro de la casa, y en esa pc tengo un servidor web montado, entonces desde el celular con wifi, o desde otro lugar podría entrar al sitio http://www.micasa.com y encender y apagar las luces que quiera desde el navegador.
    Hay muchos ejemplos mas que podría nombrar pero creo que es demasiado claro. Saludos y espero haber resuelto tu duda.

  35. Hola Punksolid.
    Muchas gracias por contestar.
    Ya te contaré lo que decido hacer por si te interesa…

    Por cierto, cuando contestaste no llegó ningún mensaje a mi correo. No sé si lo tienes configurado así o debería haber llegado.

    Un saludo.


Leave a comment

(required)

Aún no hay trackbacks.