.: HosiriS :.

Informatica e non solo

Archive for 11 aprile 2011

Interfacciare Arduino con il PC: pySerial

Posted by hosiris su aprile 11, 2011

Chi ha un minimo di dimestichezza con la programmazione di Arduino sa benissimo che è possibile avere una sorta di debug utilizzando la porta seriale per avere informazioni durante il funzionamento.
Ma questa porta ci permette anche di inviare comandi al controllore, facendo si che alcuni funzionalità possono essere implementate a livello software distogliendo l’attenzione dall’hardware (facile capire che il ponte H per la gestione dei motori è d’obbligo…).
Esistono varie possibilità di interfacciarsi tramite il PC (qui ho parlato di PHP), ma da poco ho scoperto che esiste una libreria che ci permette di scrivere una interfaccia tramite Python: PySerial.

Ipotizziamo di avere il seguente codice:

int ledPin = 13;
int inputPin = 2;
int val = 0;
 
void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(inputPin, INPUT);
  Serial.begin(9600);
  Serial.print("Program Initiated\n");
}
 
void loop(){
  val = digitalRead(inputPin);
  if (val == HIGH) {
    digitalWrite(ledPin, HIGH);
    Serial.print("Ciao!\n");
  } else {
    digitalWrite(ledPin, LOW);
  }
}

Banalmente ci aspettiamo un segnale sul pin 2, ad esempio la chiusura di un interruttore, e mostrerà un messaggio.
Passiamo adesso all’interfaccia. Dopo aver installato la libreria, possiamo scrivere la seguente routine:

import serial
 
location='/dev/ttyS0'
 
try:
  print "Trying...",location
  arduino = serial.Serial(location, 9600)
  break
except:
  print "Failed to connect on",location
 
try:
  print arduino.readline()
except:
  print "Failed to read!"

In questo modo, dopo l’esecuzione dello script, vedremo sul terminale apparire “Ciao!” ad ogni chiusura dell’interuttore.
Bello, no?

Buon divertimento

Posted in Arduino, Hardware, Python | 1 Comment »