Shield per Arduino basata sul modulo RN-42 della Roving Networks indicata in tutte le applicazioni in cui serva instaurare una connessione su Bluetooth.
Tutti i pin del moduloRN-42 sono disponibili su 6 connettori che servono ad interfacciarlo con il mondo esterno.
Il primo, siglato RS232 è l’interfaccia seriale grazie alla quale avviene la comunicazione di dati e comandi, il secondo è quello siglato IO e raggruppa tre degli I/O disponibili nel modulo RN-42, il terzo connettore è siglato AD, i cui contatti sono solo ingressi analogici e possono essere utilizzati dal modulo Bluetooth per acquisire alcune informazioni, come ad esempio il livello di tensione sulla batteria.
Il quarto è il connettore siglato SPI e tramite esso si può scrivere nella Flash interna al modulo RN-42 in modo da aggiornare o sostituire il firmware; tale connessione non è comunque indispensabile, ilquinto è il connettore siglato PCM e offre la possibilit di inviare via radio, ad un altro dispositivo Bluetooth, uno stream audio ad una velocit di trasferimento di 64 kbps.
L'ultimo connettore è quello siglato USB e che veicola una connessione USB.
La shield è inoltre dotata di un dip switch che permette di impostare, al momento dell’avvio, alcune modalit di funzionamento del modulo RN-42.
Le modalit si possono anche configurare tramite software.
N.B. La scheda viene fornita con tutti i componenti SMD gi montati, mentre gli altri componenti (strip, pulsante, ecc) devono essere montati dal cliente.
Il dip-switch a 4 vie (SW1) presente sulla scheda permette di impostare alcune modalit di funzionamento del modulo RN-42. Spostando un dip su ON viene collegato il rispettivo pin del modulo a Vcc abilitando la relativa funzionalit.
I 4 pin di confi gurazione vengono interpretati al momento dell’avvio, quindi cambiando lo
stato dei dip durante il funzionamento dello shield non si otterranno gli effetti desiderati.
Le modalit si possono anche configurare tramite software, entrando nella fase comando tramite la sequenza di escape $$$.
Di seguito sono descritti i pin del modulo che fanno capo al dip-switch e i LED di segnalazione montati sulla scheda
- AUTO - È collegato al pin GPIO3 del modulo Bluetooth. Se abilitato, permette l’accoppiamento automatico con un altro dispositivo remoto Bluetooth, senza pertanto dover digitare il codice segreto (detto Passkey). Se però il dispositivo remoto è settato per richiedere l’autenticazione, verr comunque richiesto l’inserimento della Passkey per instaurare un collegamento sicuro. La Passkey predefinita è 1234, ma può essere modificata, entrando in modalit comando, tramite sequenza di escape $$$.
- DEFAULT - È collegato al pin GPIO4 del modulo Bluetooth. Permette di ripristinare tutti i settaggi interni al modulo ai valori iniziali di fabbrica. Può essere utile quando vengono impartiti comandi che portano il modulo in conflitto. Per effettuare questo reset, occorre portare verso ON il relativo dip, prima di alimentare lo shield; una volta alimentato occorre riportarlo allo stato 0, poi allo stato 1, di nuovo allo stato 0 e ancora ad 1. Ad ogni cambiamento di stato deve trascorrere un secondo circa.
- MASTER - È collegato al pin GPIO6 del modulo Bluetooth. Per impostazione predefinita, il modulo Bluetooth si comporta come un dispositivo slave e quindi può venire rilevato da altri dispositivi Bluetooth e connettersi ad essi, ma non è in grado di iniziare per primo una connessione.
Portando a ON il rispettivo dip, il modulo lavorer in modalit Master. In questa fase non potr essere rilevato da altri dispositivi, ma sar esso ad effettuare una connessione verso un particolare dispositivo remoto precedentemente memorizzato nella Flash del modulo RN-42, tramite il comando SR,
(in cui è l’indirizzo MAC del dispositivo remoto scelto). Nel caso in cui non ci fosse alcun indirizzo memorizzato, l’RN-42 effettuer una scansione e si connetter al primo dispositivo remoto trovato. Sono inoltre possibili altre modalit Master che variano dal modo più o meno particolare di comportarsi; queste si possono settare solo da software tramite il comando SM,, in cui x rappresenta la modalit e varia da 0 a 5. In particolare SM,0 far ritornare il modulo in modalit slave.
- BAUDRATE - Questo dip è collegato al pin GPIO7 del modulo Bluetooth. Abilitandolo, viene forzata la velocit di comunicazione per dati e comandi a 9.600 bps. Altrimenti verr utilizzata la velocit desiderata che avremo precedentemente scritto in Flash tramite il comando SU,
(esempio: SU,57.6 per selezionare 57.600 baud). Per impostazione predefinita, questo valore è pari a 115.200 baud. Tramite software è possibile impostare anche velocit di trasferimento non standard. Notare che disponendo di due shield è possibile metterli in comunicazione punto-punto tra di loro per permettere comunicazione tra due PC (o altri dispositivi) evitando l’uso di un cavo seriale. In questo caso uno dei due dovr comportarsi come master (spostando il relativo dip-switch) e l’altro rimarr slave. Su entrambi dovr essere settato il dip-switch AUTO in modo da non richiedere codice di autenticazione.
Di seguito viene fornita una breve descrizione dei connettori presenti sulla scheda che permettono di interfacciare il modulo con il mondo esterno; sono esclusi quelli di connessione con Arduino.
• 1 = CTS;
• 2 = RTS;
• 3 = TX;
• 4 = RX;
• 5 = GND.
Tale connettore è l’interfaccia seriale grazie alla quale avviene la comunicazione di dati e comandi. Si accede alla fase di comando inviando la sequenza di escape $$$ sul pin RX del modulo Bluetooth, tramite la seriale locale del PC o direttamente da Arduino. Per uscire da questa fase ed entrare nella fase dati occorre inviare la sequenza ---. Durante la fase dati ed una volta instaurata una connessione Bluetooth, ciò che viene inviato sul pin RX verr diretto, via radio, al dispositivo remoto, mentre sul pin TX ritroveremo ciò che viene ricevuto dal dispositivo remoto. Solitamente si usano solo questi tre pin (TX, RX e GND), mentre CTS ed RTS vengono impiegati per il controllo di flusso, ma rimangono comunque disponibili. Nel caso si voglia utilizzare anche CTS ed RTS occorre scollegare il jumper PROG. Il pin CTS può essere anche usato per svegliare il modulo Bluetooth dalla fase di sleep (in cui consuma meno di 2 mA) mediante il passaggio da stato logico 0 a stato logico 1. Il secondo connettore dello shield è quello siglato IO e raggruppa tre degli I/O disponibili nel modulo RN-42; la sua piedinatura è la seguente:
• 1 = GPIO9;
• 2 = GPIO10;
• 3 = GPIO11;
• 4 = GND.
Per leggere o pilotare questi I/O è necessario entrare nella modalit comandi (da seriale locale o direttamente da Arduino). Per controllare tali linee di I/O bisogna fare riferimento al comando S*, in cui word è una stringa esadecimale di 16 bit i cui 8 bit più significativi rappresentano la maschera per determinare i pin di output e di input, mentre gli 8 bit meno significativi corrispondono al valore (1 per portare il pin a livello alto e zero per portarlo a livello basso). La struttura è quella mostrata nella Fig. 4. Per esempio: S*,0202 abilit GPIO9 come output e lo mette al valore 1 - S*,0E00 abilit mette tutti i GPIO dello strip a 0 - Il comando GK restituisce una stringa esadecimale col valore dei pin allo stato attuale; tali pin sono collegati anche ai pin di Arduino.
In particolare:
• GPIO9 è collegato ad A4;
• GPIO10 è collegato ad A3;
• GPIO11 è collegato ad A2.
E adesso passiamo al connettore AD, i cui contatti sono solo ingressi analogici e possono essere utilizzati dal modulo Bluetooth per acquisire alcune informazioni, come ad esempio il livello di tensione sulla batteria. La piedinatura di questo connettore è:
• AIO0;
• AIO1;
• GND.
In questa puntata del corso il connettore IO non viene usato. Passiamo adesso al connettore SPI, la cui piedinatura è:
• 1 = S-MOSI;
• 2 = S- SCLK;
• 3 = S-MISO;
• 4 = S-CS;
• 5 = GND.
Il connettore veicola un bus SPI e tramite esso si può scrivere nella Flash interna al modulo RN-42 in modo da aggiornare o sostituire il firmware; tale connessione non è comunque indispensabile. Nello shield abbiamo anche un connettore siglato PCM, la cui piedinatura è la seguente:
• 1 = GND;
• 2 = P-OUT;
• 3 = P-IN;
• 4 = P-CLK;
• 5 = P-CS.
L’interfaccia PCM offre la possibilit di inviare via radio, ad un altro dispositivo Bluetooth, uno stream audio ad una velocit di trasferimento di 64 kbps. Per i nostri scopi questa possibilit non viene sfruttata. L’ultimo connettore che vediamo è quello USB, che evidentemente veicola una connessione USB; la sua piedinatura è:
• 1 = GND;
• 2 = DP;
• 3 = DM;
• 4 = Vcc.
Collegando questo connettore al PC tramite un cavo USB è possibile utilizzare la modalit HCI over USB del modulo Bluetooth ed ottenere velocit maggiori (fino a 3 Mbps). Tuttavia, questo è possibile utilizzando solo la versione USB del modulo RN-42 (chiamata appunto RN-42-USB) o aggiornando opportunamente il firmware tramite il bus SPI.
- Protocollo Bluetooth: specifiche Bluetooth v2.0 compatibile
- Potenza di uscita: Classe 2
- Compatibile con tutti i prodotti Bluetooth che supportano SPP
- Include i supporti per i protocolli BCSP, DUN, LAN, GAP, SDP, RFCOMM e L2CAP
- UART completamente configurabile
- Velocit di trasferimento dati UART: fino a 3 Mbps
- Velocit trasmissione dati: da 721 kbps a 2 Mbps
- Basso consumo in modalit sleep
- Funzionamento a 3,3 V
- Certificato CE, FCC e RoHS