Come gestire e controllare i nostri dispositivi senza usare cavi – Parte 1 – Il controllo seriale wireless e´ alla portata di tutti con i moduli XBee!

In una precedente lezione del nostro corso di programmazione PicMicro in C abbiamo visto come è semplice utilizzare la porta seriale del nostro PC per impartire e ricevere comandi da un picmicro. Sicuramente la possibilità di avere il controllo di un’apparecchiatura tramite il PC è entusiasmante ma… Quel cavo! A volte può essere davvero di intralcio.

Immaginate di voler comandare un robot: a meno che non si tratti di un’applicazione specifica, avere il cavo non è il massimo del “comfort”, figuriamoci poi se dobbiamo realizzare un sistema di telemetria su un robot autonomo, oppure  ancora immaginate tutte quelle applicazioni avanzate in cui vogliamo che più apparecchiature comunichino tra loro in una rete e senza l’ingombro di cavi.

La risposta è una sola: dobbiamo utilizzare un controllo wireless. Non sempre però è facile (ed economico) ottenere un controllo senza fili. Esistono numerosi moduli in commercio dedicati a questa operazione (che non è affatto una cosa semplice) ma su molti di questi abbiamo bisogno di implementare noi un sistema di codifica/decodifica (la codifica Manchester ne è un esempio) affinchè non vadano persi preziosi bit durante la trasmissione. Oltre al metodo di codifica dei dati, dovremo poi stabilire anche il modo (il linguaggio) con cui i dati vengono trasmessi e ricevuti. Teniamo poi conto che molti moduli wireless in commercio non sono bidirezionali: c’è un modulo che trasmette e uno che riceve… Ma a noi “robottari” serve ben poco un sistema che comunica in un solo senso.

Ci sono tanti sistemi di trasmissione wireless che implementano già una codifica/decodifica via hardware, c’è il bluetooth, c’è il wi-fi, ma non sono sistemi facili da usare (e sono anche piuttosto dispendiosi), così come non è per niente facile scrivere dei software lato pc che utilizzino tali protocolli di comunicazione.

Immaginiamo ora di voler utilizzare proprio una comunicazione RS232 ma senza cavo, che possiamo implementare in maniera molto semplice sia sul nostro pc che sul nostro microcontrollore dotato di usart e di avere inoltre un sistema hardware che effettui da sé, senza il nostro intervento, tutte le operazioni di codifica/decodifica e controllo errori. Tutto questo è realtà e si chiama XBee!

In questo articolo, diviso in due parti, vedremo come implementare una semplicissima comunicazione seriale wireless con il minimo sforzo: capirete come è semplice fare una cosa del genere a patto di avere gli strumenti giusti.

Alla fine di questa prima parte saremo in grado di far scambiare dati tra due computer senza usare cavi. La seconda parte sarà  invece incentrata su una semplice applicazione wireless tra PC e PicMicro.

I Moduli XBee ed il protocollo ZigBee

I moduli XBee sono una vera manna dal cielo per chi adora smanettare con i microcontrollori ed il pc. Tali moduli, davvero molto piccoli e con prezzi abbordabili, per poter comunicare tra loro utilizzano le specifiche ZigBee e operano in Italia sulla frequenza di 2,4GHz. Tale specifica prevede che i dispositivi che la utilizzano siano a basso consumo e quindi per contro non abbiano transfer rate elevati.

In rete si possono trovare tutte le informazioni che si vogliono su tale protocollo di comunicazione:

Wikipedia – Zigbee

Zigbee.org

I Moduli XBee, quindi, sfruttano il protocollo ZigBee ed implementano una comunicazione seriale come quella presente sulla porta RS232 del pc (ovviamente con diversi livelli di tensione). Esistono vari tipi di moduli ZigBee e ogni tipo di modulo può essere richiesto con un particolare tipo di antenna: cambiano le caratteristiche, le potenze in gioco ecc. Alcuni tipi di moduli, anche se diversi, possono comunicare tra loro.

Anche se alcuni moduli XBee hanno dichiarate potenze di trasmissione che permettono loro di arrivare a ben 3Km di distanza, non dobbiamo dimenticarci che ci troviamo in Italia e i prodotti che arrivano nel nostro Stato sono soggetti alle sue leggi e quindi i nostri XBee saranno limitati nella loro potenza massima.

L’utilizzo degli XBee, poi, è davvero semplice: la codifica/decodifica di trasmissione è già eseguita via hardware; noi non dovremo fare assolutamente nulla se non fornire il dato seriale da trasmettere via usart.

Per questo tutorial utilizzerò due moduli XBee PRO (attualmente i più potenti e i più ricchi di caratteristiche) con antenna integrata a chip, distribuiti da Robot-Italy:

Moduli XBee Pro con antenna integrata a Chip confrontati con una moneta da 2Euro
Particolare dell’antenna a Chip

Come potete vedere dalle foto, i moduli sono molto compatti (questo è il modulo “PRO”, i moduli serie 1 e serie 2 sono ancora più piccoli ma hanno minor potenza di trasmissione).

Tali moduli pur essendo così compatti riescono a raggiungere elevate distanze di trasmissione con un’efficienza davvero sorprendente, molto difficile da raggiungere con i comuni moduli via radio.

I Moduli XBee sono prodotti dalla società Digi International Inc (ex MaxStream). Collegatevi al loro sito per avere l’elenco completo delle caratteristiche di ogni tipo di modulo.

Difficoltà elettriche e meccaniche dell’utilizzo dei moduli XBee – Sistemi di adattamento

Al primo utilizzo con un modulo XBee dovremo scontrarci con le prime due “difficoltà”:

  • I Moduli XBee hanno una piedinatura con passo da 2mm, più piccola della classica da 2,54mm alla quale siamo abituati normalmente.
  • I Moduli XBee funzionano a 3,3Volts, per cui anche i livelli logici vanno di pari passo.

Anche se per alcuni questo non è un problema, lo è (e vi assicuro che è davvero grosso) per chi è alle prime armi e sperimenta con prodotti “standard” e stradiffusi come basette millefori, breadboard, regolatori tipo il 7805 e connettori con passo da 2,54mm.

Fortunatamente questi due piccoli-grandi ostacoli possono essere aggirati molto facilmente dal momento che esistono apposite schede di adattamento: Robot-Italy ha difatti in catalogo dei semplicissimi ed economici adattatori, ideati dalla Droids, che ci permettono di utilizzare tali moduli senza fare fatica e addirittura su una basetta breadboard!

La scheda di adattamento denominata XBee Simple Board accetta i vari tipi di moduli XBee mantenendo dimensioni molto contenute (è solo qualche mm più grande del modulo XBee che andrà ad ospitare):

Ovviamente non si tratta di una “semplice” scheda di adattamento: ha a bordo i condensatori e il regolatore di tensione a 3,3V (accetta una tensione in ingresso fino a 18Volts sul pin denominato Vin) e due led per monitorare la comunicazione.

Detto tra noi: per quello che costa questa scheda non vale la pena a stare li ad impazzire nel collegamento dei moduli XBee con sistemi arrangiati o volanti che rischierebbero pure di danneggiare il nostro modulino wireless che di per se è già delicato. Senza tener conto che tale scheda è davvero di ottima manifattura e curata in ogni dettaglio.

E’ inoltre possibile inserire due normali strip maschio a 12 poli con passo da standard da 2,54mm che riporteranno tutti i segnali del modulo Xbee (i moduli XBee oltre a fornire funzioni di trasmissione seriale via radio hanno anche dei pin di I/O), oppure possiamo inserire uno strip maschio da 9 poli a 90° su una estremità che riporta soltanto i segnali principali per la comunicazione seriale (serigrafati anche sulla scheda):

Fate riferimento al sito di Robot-Italy per maggiori informazioni e per la piedinatura di tale schedina.

Tale scheda risulterà molto utile non solo in fase di prototipazione ma anche quando andremo a realizzare le nostre applicazioni definitive consentendoci di fare il minor numero di collegamenti possibili e semplificarci il lavoro (e chi progetta da sè i propri circuiti stampati con tools come Eagle ben conosce le difficoltà!).

Un’altra scheda molto utile, che è quella che utilizzerò in questo tutorial è denominata 1000Pads Mini XB Board:

Come vedete unisce le caratteristiche della scheda vista in precedenza (regolazione di tensione e led) con il fatto di avere un’area di prototipazione millefori che ci permetterà di ottenere dei collegamenti più stabili e sicuri rispetto a quelli offerti da una bredboard. Su tale scheda sono inoltre riportati, affianco al connettore dell’XBee, anche i nomi di tutti i segnali.

La caratteristica di quest’ultima scheda, inoltre, è quella di far parte di un sistema modulare denominato 1000Pads,  che permette a tali schede di impilarsi in maniera semplice  usando dei distanziali in quanto aventi tutte le stesse dimensioni e posizioni dei fori di fissaggio. Data l’enorme praticità e facilità d’uso utilizzerò anch’io questo sistema, che vedremo in dettaglio successivamente.

Adattamento dei livelli logici dei moduli XBee con i livelli logici TTL

Le schede di adattamento viste ora ovviamente non adattano i livelli logici perchè tale operazione su una scheda del genere non avrebbe senso: potremmo difatti voler utilizzare una logica a 3,3 Volts anche nella nostra applicazione, che è comunque uno standard per questo tipo di dispositivi (molti picmicro nonchè altri tipi di microcontrollori sono in grado di funzionare anche a tale tensione).

Tuttavia utilizzerò questi moduli con i nostri beneamati picmicro alimentati alla tensione standard di 5Volts e la soluzione è più semplice di quanto si possa immaginare.

Ovviamente partiamo da un concetto basilare che purtroppo ho notato essere trascurato da molti ragazzi alle prime armi: le linee di massa (0Volt, GND) dei sistemi che devono comunicare tra loro vanno messe in comune.

Per la comunicazione da XBee verso il PicMicro non faremo nessun adattamento: il picmicro difatti , essendo un dispositivo TTL, riconosce come livello logico alto una qualsiasi tensione superiore a 2Volt, avendo l’XBee il livello logico alto posto a 3,3 Volt il problema di adattamento non sussiste. Alcuni mettono una resistenza di pullup: è assolutamente inutile.

Da PicMicro verso Xbee, invece, dovremo adattare il segnale in quanto il livello logico alto del PicMicro è  5 Volt e quindi fornire i 5 Volt direttamente all’XBee causerà sicuramente un bel danno! La soluzione consiste nell’utilizzare un semplicissimo partitore di tensione fatto con due resistenze. Il  circuito di adattamento sarà quindi il seguente:

Sappiamo bene che il partitore, fornendo il livello logico TTL alto (5V), in uscita ci darà:

Al posto di R1=10KΩ ed R2=18KΩ possiamo anche utilizzare R1=12KΩ e R2=22KΩ

Bene, fatte queste premesse vediamo passo passo come implementare la nostra applicazione wireless.

Fase 1 – Interfacciamento dei moduli XBee con il PC

I moduli XBee necessitano di essere impostati prima del loro utilizzo, anche se alcuni dicono che tale operazione non è necessaria per un semplice utilizzo, io invece la consiglio fortemente altrimenti i moduli non vengono sfruttati appieno ed è comunque necessario impostarne la velocità di comunicazione per poterla adattare a quella del picmicro.

Il collegamento con il PC, inoltre, verrà comunque sfruttato dal momento che ho intenzione di far comunicare la mia applicazione PICMicro con il computer.

Il collegamento del Modulo XBee con il PC è molto semplice, qualora avessimo a disposizione una porta seriale sul computer è sufficiente frapporre un classico circuito di adattamento TTL/RS232 (con un MAX232) adattando opportunamente i livelli col partitore di tensione.

Nota importante
Utilizzando adattatori RS232/TTL “fatti in casa” o comunque non appositamente realizzati per i moduli XBee dovete sempre fare attenzione a montare il partitore di tensione sulla linea che arriva al segnale “RX” dell’XBee.

Fate inoltre attenzione a come sono indicate le linee TX e RX sul vostro modulo di adattamento. In particolare se utilizzate l’adattatore TTL/RS232 versatile presentato nel nostro sito, la linea indicata come RXD sullo stampato  (pin n°3) andrà collegata proprio al terminale RX del modulo XBee attraverso il partitore.

Difatti sul mio schema, come specificato nell’articolo, ho segnalato i pin con lo stesso nome con il quale devono andare collegati al picmicro (TX con TX e RX con RX)… Lo so che questo ad alcuni può creare confusione ma ho notato che in qualsiasi modo venga fatto c’è sempre qualcuno che si confonde… Ci sono comunque le frecce che indicano il verso giusto dei segnali.

Comunque per ovviare a problemi riporto qui lo schemino di collegamento tra la mia scheda RS232/TTL e la scheda Xbee Simple Board così come l’ho utilizzato io con successo:

Fate riferimento alla vostra scheda di adattamento RS232/TTL in quanto non tutte si collegano in questo modo!

Sulle schede di adattamento XBee viste prima sono riportati sui connettori i nomi dei segnali dell’XBee che andremo a sfruttare per la classica comunicazione seriale (TX/RX che fanno capo ai pin dell’XBee denominati Dout (2) / Din (3) ).

Se vogliamo renderci le cose ancora più facili senza correre il rischio di fare danni, su Robot-Italy c’è un’apposita scheda RS232/XBee (se la acquistate, ricordate che essendo la scheda un dispositivo DTE, per comunicare con il PC avrà bisogno di un cavo null-modem: collegandola direttamente alla seriale del PC non funzionerà).

Personalmente ho scelto una soluzione più elegante che mi permetterà di utilizzare l’XBee anche sul portatile che non ha la porta seriale e ho quindi optato per una stupenda XBee USB Board:

Tale scheda monta il noto chip FT232R prodotto dalla FTDI che ha il compito di emulare una porta seriale RS232 su connettore USB (e, a mio modesto parere, uno dei pochi chip che riesce davvero bene in questo compito).

Se non innestiamo il modulo XBee possiamo utilizzare tale scheda anche come un normale adattatore USB/Seriale TTL (a 3,3Volts) sfruttando le connessioni inferiori magari con uno strip maschio da 5 poli a 90°:

Ripeto: se volete sfruttare quest’altra funzionalità offerta da tale scheda, il modulo XBee non deve essere montato.

La trattazione che segue riguarda l’installazione di tale interfaccia USB, se non avete intenzione di usarla e piuttosto utilizzare una normale interfaccia RS232, potete saltare tutta questa parte e andare direttamente alla Fase 2.

Per poter utilizzare tale scheda è necessario installare i driver, che possiamo scaricare dal sito della FTDI in questa pagina.

L’ultima versione dei driver del chip FT232R, al momento in cui questo articolo viene redatto, è la 2.06.02

Scarichiamo i driver ed estraiamo il file zip, verranno fuori alcuni files di non immediato utilizzo (non c’è nulla da cliccare o lanciare, teniamoli qui per ora).

La descrizione dell’installazione farà riferimento a Windows XP. Per sistemi operativi differenti fate riferimento al manuale del vostro sistema operativo.

Senza collegare il modulo XBee alla scheda, colleghiamola al pc tramite un cavetto USB con il connettore USB Mini-B, apparirà la classica notifica:

e si presenterà la finestra di installazione guidata:

In questa finestra dobbiamo selezionare la voce “Installa da un elenco o percorso specifico (per utenti esperti)” e clicchiamo sul tasto Avanti. Apparirà la finestra di ricerca dei driver:

Clicchiamo sul tasto “Sfoglia” e cerchiamo la cartella in cui abbiamo estratto il file .zip scaricato dal sito della FTDI, notiamo che selezionando la cartella, il tasto OK si attiva:

Premiamo OK e verremo riportati nella finestra precedente:

Clicchiamo sul tasto Avanti, Windows XP comincerà a cercare i driver nella cartella che gli abbiamo specificato:

Il processo di ricerca può durare qualche minuto, una volta trovati i driver adatti comincerà l’installazione:

Per poi terminare:

Clicchiamo Fine. Si presenterà nuovamente la finestra di ricerca del driver in quanto il sistema operativo troverà un altro dispositivo (USB Serial Port), in pratica dovremmo ripetere, in parte, la procedura fatta fin’ora: selezioniamo ancora “Installa da un elenco o percorso specifico (per utenti esperti)” e andiamo avanti: questa volta non ci sarà bisogno di cliccare “Sfoglia” in quanto il percorso giusto è già inserito: ci basterà cliccare avanti e attendere fino a che non apparirà la finestra che recita “Installazione del software completata per: USB Serial Port” e infine la classica icona di notifica che ci conferma che tutto è finito e andato a buon fine:

Andando in Start -> Impostazioni -> Pannello di Controllo -> Sistema -> Hardware -> Gestione periferiche possiamo vedere che alla voce “Porte (COM e LPT)” abbiamo una porta seriale che prima non c’era:

A me l’interfaccia è stata installata come COM9. Rimanendo in questa schermata e staccando la  scheda potete vedere come la porta seriale sparisca.

A differenza di altre periferiche, questa qui staccandola dalla porta USB e collegandola su un’altra porta USB diversa dalla prima, non richiede nuovamente l’installazione dei drivers e soprattutto rimane identificata come COM9.

Riuoviamo la scheda dalla porta USB, beviamo qualcosa, e teniamoci pronti per la fase 2.

Fase 2 – Configurazione dei moduli XBee: Funzionamento di base di X-CTU

Adesso abbiamo bisogno del software che ci permette di impostare ed effettuare la diagnostica dei moduli XBee . Andiamo sul sito della Digi a questo indirizzo: http://www.digi.com/support[…]

Dal momento che non è facile trovare il software in questione sul sito della DIGI e che nel frattempo che leggete questo articolo l’indirizzo potrebbe essere cambiato, la cosa più semplice è cercare la parola “XCTU” o “X-CTU” nel modulo di ricerca del sito… è il sistema che ho usato io. Purtroppo il sito non è affatto strutturato in maniera intuitiva.

Scarichiamo il programma XCTU

Nel momento in cui scrivo, l’ultima versione di XCTU è la 5.1.4.1

L’installazione del software in questione non è proprio piccola: si tratta di circa 25Mega per cui potreste metterci un po’ a scaricarlo. Finitolo di scaricare, lanciamo l’installazione. La procedura non ha nulla di particolare, dobbiamo solo leggere la licenza e dichiarare di essere d’accordo selezionando “I Agree”. Sulla schermata successiva verrà richiesto se installare il programma per tutti gli utenti del computer o meno, possiamo lasciare il settaggio di default ed andare avanti.

Alla fine verrà mostrata una finestra che ci richiederà se vogliamo controllare sul sito della DIGI l’eventuale presenza di aggiornamenti firmware (dei dispositivi prodotti dalla DIGI, tra cui pure gli XBee).

Come vedete già da questo gli XBee sono molto diversi dagli ordinari moduli via radio a cui molti sono abituati: hanno anche un proprio firmware aggiornabile.

Personalmente ho risposto di si. Se rispondete Yes apparirà la finestra di protezione di Windows: cliccate su “Sblocca”. Il programma comincerà a scaricare gli aggiornamenti firmware dei vari dispositivi XBee: a me ci ha messo un quarto d’ora buono.

Nel frattempo è consigliabile scaricare il manuale di funzionamento di X-CTU da questa pagina sul sito della DIGI. Tra i vari download è quello indicato con “User Guide: XCTU Configuration & Test Utility Software”. Il link diretto è il seguente:

http://ftp1.digi.com/support/documentation/90001003_A.pdf

Scaricate inoltre anche il datasheet dei moduli XBee dal sito della digi effettuando la ricerca. Ad ora l’indirizzo da cui scaricare l’ultimo manuale è questo:

http://ftp1.digi.com/support/documentation/90033931_a.pdf

Ma fate sempre riferimento al sito ufficiale perchè l’indirizzo potrebbe cambiare oppure potrebbero uscire nuove revisioni dei manuali! Quindi i link diretti potrebbero portare a “roba vecchia”.

Alla fine comparirà una finestra che segnala la fine dell’installazione: premiamo sul tasto “Close”.

Inseriamo quindi un modulo XBee nella nostra scheda di comunicazione seriale e colleghiamo la scheda al pc.

Attenzione!
Collegate il modulo XBee sulla scheda nel verso giusto! Se state usando l’adattatore USB/XBee il verso giusto è con l’antenna rivolta dal lato opposto del connettore USB. L’orientamento del modulo è comunque anche serigrafato sulla scheda.

Se state usando la scheda di adattamento USB di Robot-Italy, il led “ASSOC” lampeggia.

Avviamo XCTU:

Selezioniamo la porta seriale sulla quale è collegata la scheda (potrebbe essercene più d’una) e,  essendo il primo “avvio” del modulo XBee e presentando questo la configurazione di default, lasciamo le impostazioni così come sono (Baud=9600 ecc, come mostrato nell’immagine):

Premiamo il tasto “Test/Query”: XCTU interrogherà il modulo XBee e apparirà una finestra recante il tipo di modulo connesso e la versione del firmware presente sul modulo:

Nota: I moduli di comunicazione vengono giustamente identificati con il nome “Modem” dal software. Sono in effetti modem a tutti gli effetti: non confondiamoci con il modem usato sul pc per il collegamento a internet; anche se concettualmente sono dispositivi che modulano/demodulano un segnale, il loro utilizzo è ben diverso.

Premiamo Ok: siamo sicuri che il sistema è funzionante!

Ora andiamo nel tab “Modem Configuration”, che è quello che ci permette di impostare tutti i parametri di funzionamento del nostro Modem (ripeto: del nostro XBee). In realtà non andremo ad impostare nulla ma è meglio che familiarizziamo con esso perchè potrebbe tornarci utile anche per diagnosticare problemi o per impostare opzioni avanzate.

Abbiamo una zona denominata “Modem Parameters and Firmware”: il tasto read ci permette di leggere la configurazione attuale del modulo XBee, il tasto Write di scriverla e il tasto Restore di ripristinarla ai valori di default, la checkbox “Always update firmware” consiglio di NON tenerla selezionata.

Quindi ripeto: ogni modifica che andremo a fare alla configurazione non sarà attiva fino a che non premiamo il tasto “Write”: solo in quel momento la nuova configurazione sarà scritta sul modulo XBee.

Ora clicchiamo sul tastino “Read”, verrà letta l’attuale configurazione del modem e se vogliamo ne possiamo modificare i parametri:

I tastini Save e Load ci permettono di salvare e caricare le impostazioni (sul PC, non sull’XBee) permettendoci quindi di creare vari “profili” e caricarli dal pc per poi salvari sull’XBee.

I parametri scritti in verde sono quelli che possono essere modificati, quelli scritti in nero sono parametri di sola lettura (numero seriale, indicatore di forza del segnale ricevuto ecc). In questa schermata che ho riportato come esempio sono indicati i primi parametri del mio modulo XBee PRO, diversi moduli (come quelli Serie 1 o Serie 2) hanno alcune impostazioni mancanti o differenti.

In particolare i parametri “Modem”, “Function Set” e “Version” consiglio di non cambiarli altrimenti, quando andremo a scrivere la configurazione, cambierà il comportamento del modulo e per una persona alle prime armi non è facile districarsi.

In particolare il parametro “Interface Data Rate” imposta il BaudRate del modulo, che di default è settato a 9600, mentre io qui l’ho cambiato:

Cambiare questo parametro può essere buono qualora necessitiamo di doverci collegare ad un picmicro rispettando un determinato BaudRate; se però modifichiamo tale impostazione dobbiamo assolutamente ricordarne il valore altrimenti XCTU non sarà più in grado di comunicare con l’XBee. Mi spiego meglio:

Se cambiamo questo parametro (ad esempio lo impostiamo a 1200) e salviamo  (premendo il tasto “Write”), ora XCTU non può comunicare con il modulo perchè abbiamo impostato l’XBee per lavorare a 1200 mentre XCTU sta ancora lavorando a 9600. In questo caso se proviamo a comunicare con il modulo, tentando ad esempio di rileggere la configurazione, si presenterà la seguente finestra che potrebbe mandare in panico una persona alle prime armi:

Da ciò che si legge in questa finestra, per i moduli XBee viene consigliato di premere il pulsante di reset. Sulla nostra scheda il pulsante di reset non è presente, è comunque possibile effettuare il reset del dispositivo portando a massa il pin denominato appunto “Reset” (Pin n°5 del modulo). Personalmente non ho effettuato questa operazione, mi sono limitato a leggerla nel manuale dell’XBee. La terremo presente come ultima spiaggia nel caso sia impossibile riuscire a comunicare con il modulo.

Se abbiamo combinato questo “pasticcio” (che pasticcio non è ma potrebbe sembrarlo) basta che andiamo nella prima schermata del programma (scheda “PC Settings”) e cambiamo il baudrate reimpostandolo su quello che abbiamo salvato nel modulo XBee.

C’è anche un programmino apposito, chiamato “Remember me XBee” che permette di trovare le impostazioni di comunicazione di un XBee collegandolo alla seriale:

http://www.robot-italy.net/roboforum/blog.php?b=52

In ogni caso è sempre possibile riportare il modem alle impostazioni di default premendo il tastino “Restore” (ma deve  comunque esserci sempre la comunicazione tra modulo e programma ovvero stesso baudrate sia sul pc che sul modulo).

Quindi, ripeto: se cambiamo il baudrate del modulo, ricordiamoci bene a che valore lo abbiamo impostato altrimenti non possiamo comunicare!

Diamo un altro sguardo ad altri parametri di configurazione:

Qui abbiamo la possibilità di cambiare il canale di trasmissione, che di default è settato su C. E’ buona norma cambiare questo parametro nel caso che nell’area ci siano più moduli che trasmettono sullo stesso canale e quindi tale canale potrebbe risultare “affollato” diminuendo le prestazioni di trasmissione. All’interno di un canale, poi, è possibile anche definire una Personal Area Network (PAN) identificata anch’essa da un numero.

E’ importante ricordare che potranno comunicare tra loro tutti i moduli appartenenti alla stessa PAN e allo stesso canale.

Mettiamo che adesso vogliamo fare in modo che due moduli (A e B) debbano comunicare soltanto tra loro ignorando (e facendosi ignorare) da altri eventuali moduli XBee nel raggio d’azione.

Se mettiamo in un’area 10 moduli XBee ai quali non abbiamo cambiato la configurazione, tutti potranno comunicare con tutti. Se il modulo X invia un messaggio, quindi, saranno in grado di riceverlo tutti gli altri 9 moduli. Questo può essere un bel problema nel caso dovessimo gestire più applicazioni indipendenti tra loro. E non è nemmeno una cosa semplice da realizzare con altri tipi di moduli Wireless. Fortunatamente l’XBee ci permette di fare questa operazione concettualmente complicata con un paio di semplici passaggi:

Colleghiamo, ad esempio il modulo A al computer e andiamo in questa zona (a voi i numeri in nero scritti tra parentesi saranno diversi):

I due parametri SH e SL costituiscono la parte alta e la parte bassa dell’identificativo del nostro modulo, Destination Address High (DH) e Destination Address Low (DL) sono la parte alta e la parte bassa dell’identificativo del modulo con cui vogliamo comunicare. Di default DH e DL sono impostati a zero: in questo modo è possibile comunicare con qualsiasi modulo. Se voglio fare in modo che il modulo A invii i suoi dati solo al modulo B dovrò fare un’operazione molto semplice:

  1. Collego il modulo B al computer e faccio un “Read”
  2. Leggo SH e SL del modulo B e me li annoto su un foglietto
  3. Stacco il modulo B e collego il modulo A, faccio un “Read”
  4. Nel campo Destination Address High vado a scrivere il valore SH che ho annotato
  5. Nel campo Destination Address Low vado a scrivere il valore SL che ho annotato
  6. Salvo la configurazione sul modulo (Write)

Adesso quando il modulo A invierà un messaggio, soltanto il modulo B sarà in grado di riceverlo, il modulo B invece, non avendolo impostato sull’indirizzo di A potrà inviare i dati a tutti.

Abbiamo visto qui soltanto le impostazioni principali che ci possono essere utili sin da subito. Fate riferimento al datasheet e al manuale di XCTU per capire come impostare altre funzioni avanzate.

A questo punto se in casa abbiamo due computer, due moduli XBee e due schede di adattamento Xbee/Seriale o USB possiamo pure fare un semplicissimo esperimento per vedere come è semplice trasmettere dei dati via wireless. Se non avete a disposizione questo materiale, potete saltare questo passaggio e attendere la seconda parte dell’articolo.

Fase 3 – Primo test di trasmissione tra due computer

Partiamo dal presupposto che:

  1. Abbiamo due computer con su installato XCTU (in realtà non è necessario installare XCTU per questa prova, andrebbe bene pure Hyper Terminal in quanto vogliamo soltanto fare una comunicazione seriale).
  2. Abbiamo installato i driver per eventuali adattatori USB
  3. I due moduli sono impostati correttamente per comunicare tra loro: stesso baudrate, stesso canale, stessa PAN e indirizzi di destinazione impostati a zero o impostati ognuno sull’indirizzo dell’altro
  4. Abbiamo collegato correttamente un modulo XBee ad un pc ed un altro modulo XBee ad un altro pc

Io per la mia prova ho utilizzato sul portatile un modulo XBee montato sulla scheda XBee USB Simple Board e sul pc fisso il mio adattatore RS232/TTL con il modulo XBee montato sulla XBee Simple Board nel modo in cui ho specificato più in alto e collegata al pc tramite cavetto nullmodem:

Come vedete ho alimentato la scheda RS232/TTL con un alimentatore (da 12V) sfruttando il regolatore di tensione e ho utilizzato il connettore a vite per riportare i 12Volts all’ingresso dell’alimentazione della XBee simple board (pin denominati Vin/GND). Per il collegamento ho scelto di montare il connettore a 90° sui pin inferiori in modo da occupare il minor spazio possibile.

Per saldare il connettore usate il saldatore con la punta più piccola che avete a disposizione, non usate la “zappa” mi raccomando!

Voglio far presente che un XBee l’ho piazzato in garage e un altro in cucina: una distanza di circa 10 metri in linea d’aria con 3 muri spessi frapposti all’interno dei quali passa di tutto.

Accendiamo le schede: i led ASSOC lampeggiano.

Avviamo XCTU su entrambi i PC, controlliamo che XCTU comunichi correttamente con il modulo XBee e dopo di ciò portiamoci su entrambi i computer sulla schermata “Terminal”.

Quello che scriveremo su un PC “come per magia” apparirà nella schermata dell’altro PC:

Il dato trasmesso viene evidenziato in Blu, il dato ricevuto in rosso. In questa immagine potete vedere  a sinistra come appariva la schermata di XCTU sul portatile (che utilizzava la XBee USB Board: notate come i segnali CTS, CD e DSR siano attivi) e a destra come appariva sul pc fisso (utilizzante la mia scheda di adattamento seriale: i segnali CTS, CD e DSR sono spenti).

Come vedete: nulla di più semplice!

Se la comunicazione a voi non avviene: rileggete l’articolo, controllate i collegamenti e controllate bene come va collegata la vostra scheda XBee/Computer.

Nella seconda parte di questo articolo vedremo come interfacciarci con un picmicro.

Se questo articolo ti è piaciuto, condividilo su un social:
Se l'articolo ti è piaciuto o ti è stato utile, potresti dedicare un minuto a leggere questa pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)