Differenze tra le versioni di "Arduino e comunicazione seriale"
m (bozza xbee) |
m (bozza) |
||
Riga 47: | Riga 47: | ||
Con questo listato puoi accendere il led 13 inviando 'a', spegnerlo con 's', e farti stampare il valore del sensore analog 0 (A0) inviando 'p'; quindi, se invii la stringa "aspa", arduino accende il led, lo spegne, invia i dati del sensore e riaccende il led. | Con questo listato puoi accendere il led 13 inviando 'a', spegnerlo con 's', e farti stampare il valore del sensore analog 0 (A0) inviando 'p'; quindi, se invii la stringa "aspa", arduino accende il led, lo spegne, invia i dati del sensore e riaccende il led. | ||
− | + | ||
− | |||
==Comunicazione radio: gli XBee== | ==Comunicazione radio: gli XBee== | ||
− | Attenzione! per questo progetto sono necessarie '''due schede Arduino''' oppure una scheda e un '''convertitore [http://www.robot-italy.com/it/usb-to-serial-micro-converter.html USB-Seriale]''' e due moduli XBee con relativi adattatori | + | Attenzione! per questo progetto sono necessarie '''due schede Arduino''' oppure una scheda e un '''convertitore [http://www.robot-italy.com/it/usb-to-serial-micro-converter.html USB-Seriale]''' e due moduli XBee con relativi adattatori. Prima di poterli usare, vanno però configurati, e sul sito di ladyada è presente una [http://www.ladyada.net/make/xbee/usermanual.html guida] molto esaustiva. |
− | |||
− | + | ===Configurazione=== | |
+ | [[File:Arduino-xbeecfg.jpg | right | thumb | XBee in configurazione]]Devi collegare l'XBee al PC usando Arduino (senza chip) o il converitore USB-Seriale come ponte. In questo modo aprendo il '''Serial Monitor''' puoi dialogare direttamente con il modulo radio per configurarlo, passandogli alcuni comandi: | ||
{| border="1" width="500" align="center" | {| border="1" width="500" align="center" | ||
| +++ | | +++ | ||
Riga 71: | Riga 70: | ||
|} | |} | ||
− | + | ===Collegamento=== | |
− | + | ...in scrittura... | |
+ | |||
[[Category:Howto]] | [[Category:Howto]] |
Versione delle 19:04, 17 nov 2012
Stai leggendo la guida "Arduino"
Arduino sfrutta il protocollo seriale per comunicare con il computer e per ricevere i programmi, attraverso i due piedini digitali 0 e 1 (TX ed RX); prima abbiamo evitato di usarli proprio per non intralciarne le operazioni di caricamento dei programmi: nel circuito stampato sono collegati al chip FTDI (Atmega8U2 nella versione uno), che si occupa di convertire il segnale TX/RX in protocollo USB. Vediamo come sfruttare questa funzionalità riprendendo il codice del potenziometro e aggiungendo alcune righe;
//seriale.ino const short sensore = 0; void setup() { Serial.begin(9600); } void loop() { Serial.print("Lettura:"); Serial.println(analogRead(sensore)); }
Serial.begin(9600)
abilita la seriale, ad una velocità di comunicazione di 9600 baud, mentre con Serial.print()
si invia al ricevente il codice scritto nelle parentesi tonde; la differenza fra print
e println
è che il secondo include anche il ritorno a capo.
Dopo averlo caricato apri il serial monitor attraverso il pulsante , e imposta la velocità di comunicazione (di default a 9600 baud); a questo punto puoi leggere i dati nello spazio inferiore, ed inviare caratteri ad arduino tramite la barra superiore. Dovresti vedere, ad intervalli di mezzo secondo, i valori del sensore analogico.
Lettura seriale
//seriale2.ino const short sensore = 0; const short led = 13; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); } void loop() { if (Serial.available() > 0) { switch (Serial.read()) { case 'a': digitalWrite (led, HIGH); break; case 's': digitalWrite (led, LOW); break; case 'p': Serial.println(analogRead(sensore)); break; } } }
Sempre con il circuito precedente, puoi provare anche questo listato, che fa uso anche della comunicazione verso arduino: quando si inviano dei dati alla scheda, essi vengono immagazzinati in una memoria apposita, il buffer, e tramite la funzione Serial.available()
si verifica quanti caratteri sono arrivati e in attesa di essere letti. Con Serial.read()
si procede quindi alla lettura dei dati: questa funzione non restituisce stringhe, ma soltanto caratteri, perché legge un carattere alla volta dal buffer; una volta letto, il carattere viene rimosso dal buffer, e quelli che lo precedevano "scalano" al suo posto.
Con questo listato puoi accendere il led 13 inviando 'a', spegnerlo con 's', e farti stampare il valore del sensore analog 0 (A0) inviando 'p'; quindi, se invii la stringa "aspa", arduino accende il led, lo spegne, invia i dati del sensore e riaccende il led.
Comunicazione radio: gli XBee
Attenzione! per questo progetto sono necessarie due schede Arduino oppure una scheda e un convertitore USB-Seriale e due moduli XBee con relativi adattatori. Prima di poterli usare, vanno però configurati, e sul sito di ladyada è presente una guida molto esaustiva.
Configurazione
Devi collegare l'XBee al PC usando Arduino (senza chip) o il converitore USB-Seriale come ponte. In questo modo aprendo il Serial Monitor puoi dialogare direttamente con il modulo radio per configurarlo, passandogli alcuni comandi:
+++ | test di comunicazione, deve rispondere OK |
AT | Richiesta di attenzione, risponde OK |
ATBD | Richiesta o modifica dei baud. Per default è settato a 3 (9600), per cambiarlo si usa ATBD <n_baud> |
ATID | Codice identificativo dell'XBee. Per comunicare fra loro, gli XBee devono avere lo stesso codice. Per default dovrebbe essere 3332, puoi cambiarlo con ATID <id> |
ATWR | Applica eventuali modifiche |
Collegamento
...in scrittura...