Pages: [1]   Go Down
Author Topic: Ayuda con Raspberry Pi + PHP + Arduino  (Read 1171 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
he estado buscando por el foro pero no he encontrado nada en español. Y en ingles esta todo muy confuso. Estoy haciendo pruebas con un Arduino conectado mediante USB a un raspberry Pi. Este último me sirve de servidor LAMP (Apache, php, mysql....).
Para conectar los dos "cerebros" quiero utilizar PHP porque me parece lo más potente para utilizar ya sea para generar páginas HTML o JSON. El caso es que estoy luchando para conectar estos dispositivos. Tengo instalado la versión de Debian para Raspberry y he conseguido comunicarme entre ambos utilizando el programa minicom. Si mando una H desde la Raspberry se enciende el led y si mando la L se apaga. Pero utilizando PHP conecta (lo se porque parpadea el led) pero no se enciende en ningún caso. Os copio los codigos aqui:

Code:
<?php
include "php_serial.class.php";

$serial = new phpSerial;

$serial->deviceSet("/dev/ttyACM0");

$serial->confBaudRate(115200);
$serial->confCharacterLength(8);

$serial->deviceOpen();

$serial->sendMessage("H");
$serial->deviceClose();

?>


Code:
const int ledPin = 13; connected to another pin
int incomingChar;      // a variable to read incoming serial data into
 
void setup() {
  // initialize serial communication:
  Serial.begin(115200);
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
}
 
void loop() {
  // see if there's incoming serial data:
  if (Serial.available() > 0) {
    // read the oldest byte in the serial buffer:
    incomingChar = (char)Serial.read();
    // if it's a capital H (ASCII 72), turn on the LED:
    if (incomingChar == 'H') {
      digitalWrite(ledPin, HIGH);
    }
    // if it's an L (ASCII 76) turn off the LED:
    if (incomingChar == 'L') {
      digitalWrite(ledPin, LOW);
    }
  }
}

Como he comentado utilizando el comando minicom desde la Raspberry mando los caracteres H y L sin problema pero con PHP no funciona. ¿Alguien puede ayudarme?.

Un saludo,
Marziac.
« Last Edit: January 03, 2013, 02:29:29 pm by marziac » Logged

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

Hola marziac !! Pues estoy exactamente igual que tú, con el mismo codigo, llevo 3 días peleandome y nada. Que has intentado? Yo he probado con permisos en ttyACM0, guardando la informacion en un *.txt, por si no lo enviaba bien, cambiar de pin.... la verdad es que no se me ocurre mas.

Los codigos funcionan, ya que si dejas abierto el monitor del IDE de arduino, funciona smiley-confuse.
« Last Edit: January 04, 2013, 03:44:45 pm by Danny_Lop » Logged

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

Ya tengo la solucion!!

El problema era que necesita un tiempo de espera entre que abre el puerto y envia los datos, testea este codigo y me cuentas.

<?php
require("php_serial.class.php");

$serial = new phpSerial;

$serial->deviceSet("/dev/ttyACM0");
$serial->confBaudRate(115200);

$serial->deviceOpen();
sleep(2);
$serial->sendMessage("H");
sleep(1);
$read = $serial->readPort();
$serial->deviceClose();

?>

Un Saludo!
« Last Edit: January 04, 2013, 06:01:26 pm by Danny_Lop » Logged

Pages: [1]   Go Up
Jump to: