Da circa un anno sto "giocando" con i moduli MaxStream (ora DiGi) XBee, radiomodem economici operananti in banda ISM (i soliti 2.4GHz di WiFi e Bluetooth) particolarmente efficaci per comunicazioni a corto raggio e a basso consumo.
I moduli XBee sono ben noti a chi utilizza Arduino, grazie all’XBee Shield che consente di dotare Arduino Diecimila di questa comoda interfaccia wireless.
Uno dei vantaggi principali di questi moduli è che essi permettono la comunicazione punto-punto o punto-multipunto (cosa non fattibile con i moduli Bluetooth in circolazione) in maniera estremamente rapida, avendo tempi di discovery e di join molti brevi. Alcune versioni inoltre, se equipaggiate con antenne opportune, consentono di coprire oltre 1km in spazio aperto. Apposite interfacce XBee-USB consentono di collegare gli XBee ad un PC e la comunicazione si gestisce attraverso una comune connessione seriale (standard o USB-Serial).
Lavorando con Arduino è facile prendere familiarità con gli XBee e mettere su una piccola rete in grado di connettere tanti dispositivi in modo estremamente rapido. Sembra, però, che ad oggi non esista alcun cellulare che disponga di un modulo simile (o compatibile) a bordo, dunque vien meno la possibilità di avere accesso diretto a questo tipo di rete direttamente da device mobile.
Poiché sia per Bluetooth che per XBee si tratta di connessioni seriali, è facile predisporre un piccolo circuito che svolga le funzioni di gateway tra le due reti: un modulo XBee "standard" e un modulo Bluetooth server (seriale) e le rispettive connessioni seriali incrociate tra loro, un piccolo regolatore di tensione che fornisca l’alimentazione necessaria a far funzionare i due moduli.
Il primo prototipo è estremamente semplice. Il modulo XBee è montato su un adattatore XBee Simple Board sviluppato dall’italiana Droids, che fornisce un regolatore di tensione a 3.3V e un layout dei PIN compatibile con le breadboard (2.54mm). Il modulo può essere alimentato con una tensione massima di 12V e la tensione di 3.3V in uscita dal regolatore di tensione (con cui è alimentato il modulo XBee) è disponibile per eventuali device esterni, con un assorbimento massimo di circa 300mA (che si riducono a 100mA se si utilizzano moduli XBee Pro). Utilizzando questa tensione, si alimenta un modulo Bluetooth Sena Parani ESD200, ai cui terminali RX-TX sono connessi i terminali TX-RX del modulo XBee.
Una batteria a 9V e una piccola breadboard completano il circuito, costituito da 4 fili e un connettore di alimentazione.
La modalità di utilizzo è inevitabilmente monodirezionale: il terminale mobile, dotato di client Bluetooth, si connette al modulo Bluetooth del gateway; quest’ultimo, attivata la connessione, dirige il traffico della seriale RFCOMM verso il modulo XBee, che a sua volta lo inoltra sulla rete wireless. Analogamente, i dati ricevuti dal modulo XBee sono inoltrati al modulo Bluetooth che a sua volta li passerà al telefono cellulare. Non è possibile iniziare la comunicazione in direzione opposta, a meno che non si utilizzi un modulo Bluetooth che implementi un client SDP e un software sul device XBee che supporti il protocollo di configurazione dello stesso modulo Bluetooth.
La presenza del modulo Bluetooth è del tutto trasparente per il modulo XBee: sarà dunque possibile configurarlo direttamente dal terminale mobile (che ovviamente dovra’ implementare il protocollo di comunicazione definito da MaxStream).
Il modulo Parani ESD200 prevede quattro modalità operative, che stabiliscono la procedura di connessione e lo stato di visibilità sulla piconet. L’impostazione di default prevede che il modulo non sia discoverable, per cui occorre impostare il MODE3 affinchè il cellulare possa trovarlo e connettersi. Per la configurazione si può sfruttare il gateway così com’è: è sufficiente utilizzare un secondo modulo XBee connesso via USB al PC e impostare il programma di configurazione del Parani affinchè "punti" alla porta seriale virtuale associata all’XBee. Questa possibilità, però rappresenta anche una importante falla di sicurezza di questo progettino: così come il modulo Bluetooth è trasparente per quello XBee, così quest’ultimo lo è per il primo. Un nodo malevolo, dunque, potrebbe mandare al gateway comandi per modificare la configurazione del modulo Bluetooth e renderlo inutilizzabile. Per ovviare a questo problema si potrebbe mettere tra i due moduli un microcontrollore dotato di due porte seriali buffered (ad esempio, un Atmel ATmega162), che filtri il flusso dal modulo XBee a quello Bluetooth, impedendo che a questo giungano comandi di configurazione (se necessaria, la configurazione sarà fatta aprendo una connessione seriale fisica a falle di tale microcontrollore).