Pages: [1]   Go Down
Author Topic: Problema Puerto de Serie y PHP  (Read 699 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 10
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola a todos. Estoy preparando el terreno para llevar a cabo mi proyecto final de curso. Al basar una parte en Arduino he estado estos días investigando como comunicar la placa con una página web, en este caso usando Html, JavaScript y PHP.
Para ir aprendiendo prepare un pequeño Sketch para encender y apagar un LED:

Code:
const int ledPin = 13;
int incomingByte = 0;

void setup() {  
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);  
}

void loop() {  
  if (Serial.available() > 0) {    
    incomingByte = Serial.read();
    if (incomingByte == '1') {      
digitalWrite(ledPin, HIGH);
    }    
    if (incomingByte == '0') {
digitalWrite(ledPin, LOW);
    }
  }
}

Para la parte Web escribí un "index.php" que lo que contiene son dos botones que al pulsarlo llaman a una función en JavaScript con un "1" si es encender y un "0" si es apagar:

Code:
function llamarLed(strOnOff) {

if(strOnOff == '1') {

getAjax("<?=$_strAppPages;?>Led.php?Cadena="+"<?=$_On;?>"+"&id="+"<?=$_id;?>","carga");
}

if(strOnOff == '0') {

getAjax("<?=$_strAppPages;?>Led.php?Cadena="+"<?=$_Off;?>"+"&id="+"<?=$_id;?>","carga");
}
}

Como podéis ver lo que hace la función es traerse a un div denominado "carga", el cual está vacío, el documento Led.php el cual incluye una clase de comunicación Serial que podéis encontrar aquí http://www.phpclasses.org/package/3679-PHP-Communicate-with-a-serial-port.html:

Code:
<?php
require("../phpClasses/php_serial.class.php");
$_cade $_GET["Cadena"];
echo 
"Cadena que trae por GET a Led.php = ".$_cade;
$serial = new phpSerial();
$serial->deviceSet("/dev/ttyACM0");
$serial->confBaudRate(9600);
$serial->confCharacterLength(8);
$serial->confParity("none");
$serial->confStopBits(1);
$serial->confFlowControl("none");

//$serial->_exec("stty -F /dev/ttyACM0 cs8 -cstopb clocal -parenb -crtscts -ixon -ixoff");

$serial->deviceOpen("ab");
echo "<br />Apertura de Dispositivo = ".$serial->deviceOpen("ab");

//$serial->sendMessage($_cade);
fwrite($serial->_dHandle$_cade);

echo "<br />fwrite = ".$_cade;
$serial->deviceClose();
trigger_error("Hola");
?>

El problema esta en que tal y como lo tengo solo funciona, es decir, cuando pulso el botón de encendido y apagado el led se enciende o se apaga, cuando tengo el IDE de arduino abierto con el monitor de serie abierto. En el momento en que cierro el monitor de serie deja de funcionar, solo parpadea como cuando se reinicia la placa. ¿ Alguien sabe que puede estar ocurriendo? Muchas gracias si has llegado hasta aquí.

P.S.: Si alguien conoce un canal de irc sobre Arduino me sería de mucha utilidad. Gracias.
« Last Edit: March 22, 2011, 02:20:23 am by Inixtrom » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

en que server lo probas?
Logged

Albacete
Offline Offline
Full Member
***
Karma: 0
Posts: 140
Arduino mola que te pasas
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Me deja un poco descolocado el nombre del puerto ¿/dev/ttyACM0? esperaba que fuera /dev/ttyUSB0 ...
Por otro lado, creo que estas mandando con GET la variable $cadena con valores 'on'/'off' y luego, en el script que graba hacer un write de $cadena, mientras que tu Sketch ewstá esperando 1 o 0.
Logged

Pages: [1]   Go Up
Jump to: