Strumenti Utente

Strumenti Sito


riservata:radio

Radio

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

Possibili soluzioni:

  • moduli bluetooth e comunicazione Arduino - smartphone
  • moduli XBee su shield Xbee e comunicazione Arduino - Arduino

News

  • 29/10/2014 testati gli shield XBee con i moduli wireless XBee (funzionano)

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:

  • raggio da 40 a 100 metri
  • due modi di funzionamento: seriale o command mode (per la configurazione)
  • sullo shield sono riportati i 6 pin analogici e i pin digitali da 2 a 7 della scheda Arduino; i pin da 8 a 13 sono accessibili direttamente sulla scheda Arduino
  • il funzionamento della seriale dipende dalla posizione di due jumper posti sullo shield:
    • posizione XBee: il uC riceve solo da XBee (non da PC) e invia sia a XBee che al PC via USB
    • posizione USB: XBee comunica direttamente col PC via USB ma solo se è stato rimosso il uC, altrimenti la comunicazione è PC-uC

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:

  • servono due Arduino e due moduli
  • con i jumper nella posizione USB caricare dagli esempi lo sketch Physical Pixel; il programma accende e spegne il LED della scheda Arduino corrispondente al pin 13 in base a ciò che riceve via seriale ('H' accende il led, 'L' lo spegne); testare il programma con la comunicazione seriale PC-Arduino usando il serial monitor dell'IDE Arduino
  • impostare lo shield su XBEE e caricare sull'altra scheda uno sketch che invii i caratteri 'H' e 'L' a intervalli di 1 secondo (solita storia: caricare lo sketch con i jumper in posizione USB poi spostare su XBee)
  • alimentare le schede e provare se funziona la comunicazione seriale Arduino - Arduino via wireless

Altre note:

  • usare 9600 baud negli sketch (è il default per i moduli XBee)
  • print() e println() si usano come al solito ma inviano dati via wireless invece che col cavo USB
  • la configurazione dei moduli si può fare:
    • da Arduino, con comandi AT
    • da PC, con comandi AT o il software XCTU; in questo caso però bisogna togliere il uC dalla scheda
  • per configurare il modulo con i comandi AT si invia la sequenza '+++' senza invio (non credo si possa fare dal serial monitor) poi si usano dei comandi AT (sono documentati nei manuali e nelle guide sul sito di Arduino)

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:

  • il modo più semplice è usare il software XCTU del produttore dei moduli (il manuale è qui)
  • bisogna configurare lo shield per comunicare col modulo da PC. Nei nuovi shield si usa uno switch, in quello vecchio - il nostro - è necessario togliere il uC

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:

  • impostare lo stesso valore del parametro PAN ID nei due moduli
  • segnare i due valori del numero di serie SH e SL dell'end point e copiarli nei parametri DH e DL del coordinator
  • impostare il firmware giusto sui due moduli (ad es. ZNET COORDINATOR AT o ZNET END POINT/ROUTER AT)

Test con i moduli

Primo test effettuato a casa con:

  • Windows 8.1 (64bit)
  • Arduino 1.0.6
  • XCTU Next Generation
  • scheda Arduino Duemilanove con uC rimosso per configurare i moduli da PC
  • scheda Arduino Uno
  • 2 Xbee shield con modulo XBee2 (ZigBee/ZNet 2.5)

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
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information
riservata/radio.txt · Ultima modifica: 2016/01/10 18:54 (modifica esterna)