Ago 272012
 

Ho Appena ricevuto il minuscolo Arduino Uno.

In 10 minuti, utilizzando un normale cavo USB e  l’ottimo IDE, sono riuscito a compilare ed effettuare l’upload del primo sketch!

Emozionatissimo ho visto il dispositivo prendere vita ed emettere il primo vagito (“Hello word” … che fantasia eh?) 

Non ho riscontrato nessun problema sulla mia workstation Ubuntu 12.04. Tutto funziona come promesso.

Il passo successivo è stato provare a scrivere un programmino in PHP per interfacciare l’Arduino ed ottenere una risposta ad alcuni comandi.

Sotto LINUX sembra tutto facile: il dispositivo viene riconosciuto immediatamente e all’USB viene assegnata una porta seriale /dev/ttyACM0.

Ho perso un po’ di tempo nel debugging perché apparentemente non rispondeva correttamente.

Poi mi sono ricordato che nella documentazione avevo letto qualcosa circa una funzione di autoreset che riavvia il dispositivo in seguito all’apertura della comunicazione seriale….

In pratica aprendo la porta l’Arduino si riavvia e quindi non è disponibile per un paio di secondi.

Inserendo un’opportuna pausa nel programma PHP tutto ha funzionato a meraviglia.

Ora attendo con ansia l’arrivo dell’ethernet shield e del fratellino più grande Arduino Mega 2560 già ordinati e con i quali andrò ad implementare alcuni progetti che ho in mente… e che pubblicherò su questo sito. 

Ecco i listatato del programmino PHP nel quale sono implementati due comandi in formato testo (leggimicro e leggimilli) che inviati al dispositivo ottengono come risposta rispettivamente i microsecondi e i millisecondi passati dall’ultima accensione:

deviceSet("/dev/ttyACM0");

$serial->deviceOpen();
echo "Attendo il boot del dispositivo....\n";
//attende che il device fa il boot
//(si resetta quando la seriale viene inizializzata)
sleep(2);
$r="";

$result="";

$x=0;
//esegui ad oltranza!!!!
while(1){

$x++;
//Alterna i 2 comandi definiti nei secondi pari e dispari
if($x%2){
echo "invio comando leggimilli\n";
$serial->sendMessage("leggimilli");
}
else
{
echo "invio comando leggimicro\n";
$serial->sendMessage("leggimicro");
}

//legge e visualizza la risposta di Arduino Uno
while($r=$serial->ReadPort()){
echo "$r";
}
sleep(1);

}
?>

ed ecco lo sketch caricato su Arduino che quando riceve i comandi risponde come da specifiche


void setup()
{
Serial.begin(9600);
}

//variabile globale del comando ricevuto dal PC
String Comando="";

void loop()
{
unsigned long tempo=0;
if(Comando=="leggimicro"){
Comando="";
tempo=micros();
Serial.print("\nSono acceso da ");
Serial.print(tempo);
Serial.println(" microsecondi\n");

}
else if(Comando=="leggimilli"){
Comando="";
tempo=millis();
Serial.print("\nSono acceso da ");
Serial.print(tempo);
Serial.println(" millisecondi\n");
}

delay(100);
}

void serialEvent(){

char CharLetto=0;
while(Serial.available()){
CharLetto=Serial.read();
Comando.concat(CharLetto);
}

}

  2 Risposte a “Il mio nuovo Arduino UNO – test comunicazione USB/seriale con host PHP”

  1. Scusami, sei molto bravo con arduino complimenti
    volevo chiederti, se era possibile gestire 12 uscite per far accendere delle luci da 6v 3w ad una distanza di 50 m con il computer, so che esiste il sistema seriale.
    mi spiego,e possibile che programmando l’arduino premo il numero 1 sulla tastiera de computer mi si accende l’uscita 1 su una consol, dove vado a mettere 12 ferma cavo (come quelli degli altoparlanti degli amplificatori) utilizzando il sistema seriale
    ciao

    • Non mi è molto chiaro. Vediamo se ho capito: vuoi comandare con un computer una console basata su Arduino distante 50 metri.
      Escluderi il collegamento “seriale” in quanto la copmunicazione seriale con Arduino avviene tramite collegamento USB.
      Dubito che tu possa trovare facilmente un cavo USB di quella lunghezza senza complicarti la vita con repeater.
      Ma c’è un modo molto più semplice ed economico.
      Puoi acquistare un o shield ethernet tipo questo:

      http://store.arduino.cc/it/index.php?main_page=product_info&cPath=11_5&products_id=199

      E’ semplicissimo da usare (trovi molti esempi su internet) e puoi collegare direttamente l’Arduino al PC con un economico cavo di rete ad una distanza anche superiore. In teoria puoi comandare il tuo sistema in tempo reale attraverso internet anche se sei dall’altra parte del mondo ;-).
      Altro vantaggio, non hai bisogno di un software specifico da installare sul PC, ma basta un semplice browser.

      Ciao

 Lascia un commento

Puoi usare questi tag e attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)