Indice

Radio

Idee per un progetto finale con Arduino che sfrutti la comunicazione wireless.

Possibili soluzioni:

News

Bluetooth

Abbiamo dei moduli bluetooth RN-42 ma ci manca una scheda breakout per usarli. Bedei ha ordinato degli shield (o schede breakout?) per poterli interfacciare con Arduino. Saranno comunque da saldare e non è facile.

Al momento è la soluzione più difficile per i problemi hardware.

XBee Shield

Nel lab 12 abbiamo degli shield XBee con moduli XBee della Digi International. Sono shield obsoleti - il modello attuale è questo - ma funzionano bene e si trova documentazione online.

Gli shield montano moduli XBee S2 (product number XB24-BCIT-). Non è facile identificarli perché ne esistono di varie tipologie e il product number per l'identificazione è indicato sotto il modulo (bisogna toglierlo dallo shield per leggerlo). Ad ogni modo si tratta del modello non PRO (cioè a corto raggio) della serie 2, con il quale è possibile creare anche reti mesh usando i protocolli ZigBee o ZNet 2.5. Questi moduli sono più difficili da usare di quelli della serie 1 che non richiedono configurazione1). Sul sito di Arduino ci sono pagine sui due shield (vecchio e nuovo modello) e guide su come usarli (vedi i link in fondo alla pagina).

Note dalla pagina sullo shield XBee

Caratteristiche:

Il resto della pagina non interessa perché è sui moduli della serie 1.

Note dalla guida sullo shield XBee

Anche la guida dello shield Xbee fa riferimento a moduli della serie 1. Per la serie 2 c'è un dead-link nella pagina a un PDF che dovrebbe essere questo ma non è molto utile.

Per testare la comunicazione wireless:

Altre note:

Note dalla guida sui moduli ZB (serie 2)

Questa guida fa riferimento a moduli della serie 2 - i nostri - ma è scritta per il nuovo wireless shield.

I moduli della serie 1 (802.15.4) non sono compatibili e permettono solo topologie a stella ma sono molto più facili da usare (la configurazione è opzionale). I moduli della serie 2 possono usare il protocollo ZigBee o quello ZNet 2.5 con la stessa radio; l'impostazione si fa cambiando il firmware; i due protocolli non sono compatibili. E' necessaria una configurazione via firmware anche per una connessione point-to-point dove un nodo va impostato come coordinator e l'altro come end-point/router (in una rete ZigBee ci vuole sempre un solo coordinator che gestisce la rete, e degli end point che comunicano direttamente col coordinator o attraverso dei router).

Configurazione via firmware:

La guida fa riferimento alla vecchia versione di XCTU (ancora disponibile come versione legacy); quella nuova sembra molto migliore. In ogni caso da XCTU si può rilevare il modulo, leggere e scrivere la configurazione. Per una comunicazione unicast (due soli moduli) bisogna:

Test con i moduli

Primo test effettuato a casa con:

XCTU funziona bene e sembra molto completo (vedi il video). La scheda viene riconosciuta (autodetect o cerca) ed è possibile leggere i parametri e salvarli come profilo.

L'end point montava il firmware 1347 (ZNet 2.5 Router/End device API) che non risponde ai comandi AT; lo sostituisco col firmware 1247 (ZNet 2.5 Router/End device AT) così posso interagire con il modulo da un altro terminale o direttamente dal uC2). Per aggiornare il firmware bisogna prima identificare la product family indicata da una sigla posta sotto il modulo (nel nostri moduli si legge XB24-BCIT- che corrisponde alla famiglia XB24-B in XCTU). Imposto la seconda scheda come 'ZNet 2.5 coordinator AT' (firmware 1047).

I parametri principali dell'end-point e del coordinator prima della riscrittura del firmware erano:

parametroend-pointcoordinator
CH (channel)0F
ID (PAN ID)234234
MY (16bit network address)FFE0
SH (serial nuber high)13A20013A200
SL (serial nuber low)407B6C64407B6BEF
BD (baud rate)96009600
DH 0
DL 0

Nel dubbio ripristino i default e parto da zero. In pratica basta segnare i parametri SH e SL dell'end-point, e controllare che BD e ID corrispondano nei due moduli; per tutto il resto si può lasciare il valore di default. I moduli sembrano associarsi (il coordinator lampeggia ogni secondo e l'altro due volte al secondo). Per creare una rete unicast bisogna specificare l'indirizzo dell'end-point nel coordinator copiando i valori SH e SL dell'end-point nei parametri DH e DL (con il valore di default il coordinator trasmette in broadcast).

Sposto il jumper dello shield dell'end-point su XBEE e carico sul suo Arduino lo sketch Physical pixel (da Esempi|Communication). Il programma accende il led del pin 13 quando riceve via seriale - in questo caso tramite il modulo XBee - il carattere 'H' e lo spegne quando riceve il carattere 'L'. Non so perché ma non riesco a caricare lo sketch con lo shield inserito (avevo appena caricato Blink con lo shield inserito senza problemi). Tolgo lo shield, carico il programma e rimetto lo shield; poi alimento da alimentatore invece che da USB (non si sa mai).

Collego al PC lo shield del coordinator, inserito nella scheda senza uC e con il jumper su USB, e provo a inviare i caratteri 'H' e 'L' all'altra scheda dal terminale di XCTU. Funziona! Rimetto il uC sulla scheda con il modulo coordinator e carico un programma che invia i due caratteri a intervalli di un secondo (vedi la guida per i moduli serie 2, qui il codice). Rimetto lo shield e sposto il jumper su XBee. Funziona! Le due schede comunicano con una normale connessione seriale ma via wireless.

Riferimenti

1)
serie 1 e serie 2 non sono compatibili
2)
la versione API permette di sfruttare altre funzionalità da XCTU come la mappatura della rete