• Non ci sono risultati.

dotare il nostro Arduino della connettività Bluetooth. Undicesima puntata

Nel documento  Conoscere e usare (pagine 99-104)

Conosciamo ed impariamo ad usare un

nuovo shield: quello che permette di

dotare il nostro Arduino della connettività

Bluetooth. Undicesima puntata.

dell’ing.

MIRCO

SEGATELLO

(www.seeedstudio.com) fornito dalla Futura Elettronica (codice 7300-BLUETBEE). È possibile acquistare a parte il solo mo-dulo Bluetooth (Futura Elettronica, codice 7300-BLUETOOTHMOD) ma, viste le ridotte dimensioni, il suo utilizzo non è per niente agevole. Pur costando di più, consigliamo l’utilizzo del modulo già cablato sulla piccola basetta XBee, facilmente utilizzabile con la sua XBee shield.

Vediamo ora brevemente le caratteristiche di questo ricetrasmettitore Bluetooth apposita-mente progettato per realizzare collegamenti trasparenti tra due apparecchiature. Questo modulo contiene un ricetrasmettitore fun-zionante nella banda ISM (ricordiamo che lo standard Bluetooth riguarda connessioni effettuate alla frequenza di 2,4 GHz) ed è in grado di gestire collegamenti seriali sino a 460.800 bps.

È compatibile con le specifi che Bluetooth v2.0 + EDR, con una potenza in trasmissione di 4 dBm (Classe 2) che gli consente collegamenti sino a circa 10 metri.

Il modulo UART interno ha il baud-rate pro-grammabile e la gestione del transito dati è asservita ad un sistema di crittografi a; l’ali-mentazione è a 3,3 volt e dispone di un’anten-na integrata nel PCB.

Il modulo UART interno è confi gurato, per impostazione predefi nita, per una comuni-cazione a 38.400 baud con 8 bit di dati, 1 bit di stop, nessuna parità, nessun controllo di fl usso; sono comunque supportate le seguenti velocità di trasferimento: 9.600, 19.200, 38.400, 57.600, 115.200, 230.400, 460.800.

Sono disponibili le linee CTS e RTS per il controllo del fl usso dati e due LED (uno verde e uno rosso) per la segnalazione dello stato di funzionamento.

Quando il modulo si trova nello stato “scon-nesso”, si vedrà il solo LED verde lampeggia-re 2 volte al secondo. In attesa di collegamento ci saranno sia il LED verde che il LED rosso a lampeggiare una volta la secondo, mentre nello stato “connesso” lampeggerà il solo LED verde una volta al secondo.

Per impostazione predefi nita, il modulo è predisposto alla connessione automatica con l’ultimo dispositivo non appena viene acceso; il codice di accesso è impostato a “0000”. Per

Fig 4 - Modulo Bluetooth.

Fig 2 - Modulo Bluetooth Bee.

Fig 3 - Modulo Bluetooth Bee. Fig 1 - XBee shield.

Corso Arduino

“ultimo dispositivo” si intende quello con cui si è collegato prima di essere spento.

Per i dettagli relativi alla funzione dei pin di collegamento, vi rimandiamo alla lettura dei data-sheet del prodotto.

Volendo realizzare un collegamento wire-less con un PC, dovremmo necessariamente dotarci di un adattatore Bluetooth (Bluetooth dongle) da inserire in una porta USB libera del PC. Per le nostre verifi che sul campo abbiamo utilizzato il Bluetooth USB dongle prodotto dalla Velleman e distribuito dalla Futura Elettronica con il codice PCUSBBT; esso viene fornito con il software Bluesoleil della IVT Corporation (il più diffuso per far dialogare dispositivi Bluetooth con un

com-puntata del corso. Il modulo Bluetooth Bee sarà inserito nella XBee shield e a sua volta su Arduino, ma, per poterlo utilizzare, è necessa-rio programmarlo; la programmazione avvie-ne tramite l’invio di semplici comandi seriali. È possibile inserire il modulo Bluetooth Bee in un adattatore USB-XBee, in modo da consenti-re la programmazione via PC, ma pconsenti-referiamo sia direttamente Arduino, tramite un apposito sketch, ad inviare le impostazioni. Elenchiamo qui di seguito i comandi a disposizione.

Imposta modalità di funzionamento

\r\n+STWMOD=0\r\n Client (slave) \r\n+STWMOD=1\r\n Server (master)

Imposta Baud-rate

\r\n+STBD=115200\r\n Imposta baudrate 115200

Baudrate supportati: 9600, 19200,38400,57600,11 5200,230400,460800.

Imposta il nome del dispositivo

\r\n+STNA=abcdefg Imposta il nome “abcdefg”

Listato 1

/*

BluetoothBee Demo Code 2011 ElettronicaIN Hardware:

modulo BluetoothBee XBee shiled Libelium Arduino duemilanove

USB Bluetooth dongle Velleman

Questo sketch configura il modulo come slave */

void setup() {

Serial.begin(38400); //Imposta l’UART a 38400 baud delay(1000);

Serial.print(“\r\n+STWMOD=0\r\n”); //Imposta il modulo come slave

Serial.print(“\r\n+STNA=Arduino\r\n”); //Assegna il nome “Arduino” al modulo delay(2000); // Ritardo necessario per la configurazione.

Serial.print(“\r\n+INQ=1\r\n”);

delay(2000); // Ritardo necessario per abilitare la comunicazione. }

void loop() {

delay(1000);

int sensorValue = analogRead(A0); //Legge il canale analogico A0 Serial.println(sensorValue, DEC); //Invia il dato via UART }

Autoconnessione con l’ultimo dispositivo connesso

\r\n+STAUTO=0\r\n Proibito \r\n+STAUTO=1\r\n Permesso

Permette la connessione del dispositivo

\r\n+STOAUT=0\r\n Proibito \r\n+STOAUT=1\r\n Permesso

Imposta PIN code (Passkey)

\r\n +STPIN=2222\r\n Imposta il PINCODE “2222”

Cancella PIN code (Passkey assegnata dal microcontrollore)

\r\n+DLPIN\r\n Cancella PINCODE

Legge l’indirizzo del dispositivo

\r\n+RTADDR\r\n Riporta l’indirizzo del dispositivo

Auto riconnessione quando viene perso il segnale con il dispositivo master

\r\n+LOSSRECONN=0\r\n Proibito \r\n+LOSSRECONN=1\r\n Permesso

Ricerca moduli

a) Nel caso di modulo confi gurato come Master:

\r\n+INQ=0\r\n Ferma ricerca dispositivi \r\n+INQ=1\r\n Avvia ricerca dispositivi

b) Nel caso di modulo confi gurato come Slave:

\r\n+INQ=0\r\n Ferma visibilità dispositivo \r\n+INQ=1\r\n Avvia visibilità dispositivo

Siamo adesso pronti per scrivere lo sketch occorrente alla gestione della comunicazione in Bluetooth, il quale, una volta caricato su Arduino, confi gurerà il modulo e, successiva-mente, andrà a leggere l’ingresso analogico 0 ed invierà al PC i dati acquisiti, ad intervalli di un secondo, via Bluetooth. Il codice corrispon-dente è quello illustrato nel Listato 1.

La confi gurazione del modulo avviene invian-do semplici caratteri seriali nello standard

Fig 6 - Schermata di avvio di Bluesoleil.

Fig 9 - Inserimento Passkey.

Fig 7 - Ricerca periferiche.

specifi cato nei data-sheet. Il comando “\r\

n+STWMOD=0\r\n” imposta il modulo come

Slave; sarà l’adattatore Bluetooth sul PC a svolgere la funzione di Master.

Il comando “\r\n+STNA=Arduino\r\n” assegna al modulo il nome “Arduino”; infi ne, il comando “\r\n+INQ=1\r\n” abilita la visi-bilità del modulo da parte del Master.

Tutte queste fasi sono chiaramente indicate dallo stato di lampeggio dei LED. Quando il LED verde lampeggia due volte al secondo, signifi ca che il modulo non è connesso; ciò ac-cade, ad esempio, quando alimentate quest’ul-timo senza prima averlo confi gurato.

Quando si abilita la visibilità del modulo, lam-peggiano una volta al secondo i LED sia verde che rosso, mentre una volta che viene stabi-lita una connessione, lampeggia il solo LED verde , sempre con la cadenza di una volta al secondo. Durante la fase di programmazione di Arduino con lo sketch riportato nel Listato

1 è importante che gli interruttori della XBee

shield siano posti in modalità USB. Quindi staccate Arduino, impostate gli interruttori della XBee Shield su XBee ed alimentate la scheda tramite la presa Plug. Questo è

neces-sario perché il modulo Bluetooth Bee dialoga con il microcontrollore di Arduino tramite il modulo UART, il quale non deve entrare in confl itto con eventuali segnali giunti via USB. Passati alcuni secondi dall’accensione, il modulo Bluetooth sarà operativo e visibi-le. Avviate il software Bluesoleil, installato precedentemente, inserite il Bluetooth dongle, attendete venga riconosciuto, quindi selezio-nate Bluetooth-Rileva periferiche Bluetooth; sul modulo Bluetooth Bee devono lampeg-giare entrambi i LED. Cliccate con il pulsante destro sopra l’icona della periferica trovata e, dal menu contestuale cui accedete, attivate la funzione di ricerca servizi. Verrà chiesta la Passkey di accesso alla periferica; il valore predefi nito è 0000 (quattro zeri). Sempre con il pulsante destro del mouse sopra la periferica, dal menu contestuale avviate il servizio SPP (servizio porta seriale). A questo punto inizie-rà a lampeggiare lentamente il solo LED ver-de. Visualizzate le proprietà della connessione SPP per sapere a quale COM virtuale è stata associata la comunicazione con il modulo. Avviate l’IDE di Arduino, aprite Serial moni-tor sulla COM, assegnata all’adattamoni-tore Blue-tooth, con il Baud Rate di 38.400 ed attendete l’arrivo dei dati acquisiti da Arduino. Notate che è come se Arduino fosse collegato via cavo USB, ma in pratica è connesso in modali-tà wireless. Non essendo cablate le linee RTS e CTS dal modulo Bluetooth Bee verso Ardui-no, non sarà possibile la programmazione di Arduino tramite questo collegamento.

Fig 10 - Connessione stabilita.

Fig 12 - Dati ricevuti da Serial monitor di Arduino.

Fig 11 - Porta COM virtuale utilizzata dalla connessione.

n questa puntata del corso su Arduino ci occupiamo dello shield denominato WiFly, che permette ad una scheda Arduino (anche alle versioni “clone” con essa compatibili) di potersi connettere ad una rete wireless secondo lo standard 802.11b/g. Lo shield che abbiamo utilizzato per que-sta occasione è que-stato sviluppato dalla ditta americana Sparkfun ed è basato sul modulo wireless prodotto dalla Roving Network di

sigla RN-131G. Questo modulo, operante in logica a 3,3 volt, potrebbe esse interfacciato con il modulo seriale (UART) di Arduino, ma ciò non garantirebbe la possibilità di utilizzare la massima velocità di comunicazione. Per sfruttare appieno le prestazioni del modulo wireless è preferibile interfacciarlo con la porta SPI (Serial Peripheral Interface Bus) di Arduino, che assicura una velocità di trasferi-mento ben superiore rispetto a quella

garanti-Conoscere e usare



Nel documento  Conoscere e usare (pagine 99-104)