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
Questo sito Web utilizza i cookie. Utilizzando il sito Web, l'utente accetta la memorizzazione dei cookie sul proprio computer. Inoltre riconosci di aver letto e compreso la nostra Informativa sulla privacy. Se non sei d'accordo, lascia il sito.Maggiori informazioni sui cookie
riservata/radio.txt · Ultima modifica: 2020/07/03 15:56 da 127.0.0.1