
Volete costruire un accelerometro wireless con Arduino? Ecco come fare! Vi serviranno: XBee 2mW serie 2.5, Arduino XBee (con modulo XBee serie 2.5), USB Explorer XBee e ADXL330. XBee vi servirà per leggere i dati in arrivo dall’accelerometro. Poi, seguendo alcuni semplici passaggi, potrete portare a termine il vostro progetto. Cosa state aspettando? Questa è proprio la settimana giusta per iniziare!
Tutto quello che vi serve per l’accelerometro wireless
Un accelerometro wireless con Arduino: volete provare a costruirlo? Ecco quello che vi serve: XBee 2mW serie 2.5, Arduino XBee (con modulo XBee serie 2.5), USB Explorer XBee, ADXL330.
La prima cosa da fare è configurare e aggiornare il firmware di XBee. Per fare questo, avrete bisogno di X-CTU che, purtroppo, è disponibile solo per Windows. Ma, funziona benissimo da VMware. Per prima cosa, dovete collegare XBee al computer per leggere i dati in arrivo dall’accelerometro wireless.
Inserite uno degli XBee in Explorer (è anche possibile farlo da Arduino spostando i due XBee/USB a USB e rimuovendo l’MCU) e collegarlo alla porta USB. Ora accendete la X-CTU e selezionate la porta di comunicazione USB. Fate clic su "Modem Configuration" e poi "Read". Questo servirà a determinare con cosa sarà collegato XBee e quale firmware c’è sul dispositivo. Adesso selezionate "Always update firmware" e cliccate su "Download new versions".
Selezionate la versione più recente di ZNet 2,5 Router/Device API Fine. La versione API è necessaria per leggere i dati in arrivo sul computer. Solo il firmware API scrive i dati dei sensori in arrivo su UART in modo che possano essere letti attraverso la porta USB.
Fate clic su "Write". È possibile che si ottenga un messaggio di errore dopo la scrittura, ma è normale. Questo perché avete cambiato il modo in cui XBee comunica tramite UART. Tornate alla scheda "PC Settings", selezionate "Enable API" e quindi cliccate di nuovo su "Read" nella scheda "Modem Configuration". In "Networking", cambiate NI (Node Identifier) in qualcosa come "Arduino". Cliccate su "Write" e collegatelo al computer. Questo è l’XBee a cui il vostro accelerometro invierà i dati.
Ora bisogna collegare XBee all'accelerometro wireless. Seguite la stessa procedura di prima fino ad arrivare alla selezione del firmware. Selezionate la versione più recente di ZNet 2.5 Router/End Device. In "Networking", cambiate l’NI in qualcosa come "Accelerometer”. Su "I/O Settings", cambiate D0-D2 in 2-ADC. Questi pin saranno utilizzati per leggere l'accelerometro.
Ancora in "I/O Settings," cambiate la IR (frequenza di campionamento) in 1F4 (esadecimale per 500 millisecondi). Cliccate su "Write". Andate nella scheda "Terminal". Per attivare la modalità di comando su XBee, inviate "+++", ma non premete invio). Risponderà con "OK". Poi digitate "ATDNARDUINO" (o come avete chiamato l’altro vostro XBee). Questo definirà il nodo di destinazione per XBee. Dovrebbe rispondere "OK". Successivamente, inviate "ATWR": questo consentirà di scrivere le impostazioni di memoria in modo che non vadano perse quando XBee è spento.
Infine, collegate XBee e ADXL330. È possibile alimentare entrambi con 3.3V. Purtroppo, gli XBee 2.5 series ADC accettano solo tensioni nel range di 0-1.2V. Per ottenere risultati migliori, è necessario aggiungere i divisori di tensione sugli assi X, Y e Z.
Test finale dell’accelerometro wireless
Ora, si dovrebbe essere in grado di testare che l’accelerometro wireless funzioni. Connettete XBee Arduino con il terminale X-CTU. Se l’accelerometro XBee è acceso, dovreste vedere molti dati. I dati vengono trasmessi in pacchetti API su UART di XBee, sul chip FTDI, fino al dispositivo USB del computer. La specifica del pacchetto API è nel manuale XBee 2.5. Esiste una XBee Python Library, ma attualmente non supporta i moduli di serie 2.5.
import serial # pySerial import struct import sys THRESHOLD = 5 tty = sys.argv[1] s = serial.Serial(tty, 9600) movement = None while True: if s.read() == chr(0x7e): # Packet start indicator. length, api_id = struct.unpack('>Hc', s.read(3)) if api_id == chr(0x92): # IO packet type. # Lots of bytes we don't care about followed by 3 shorts. z, y, x = struct.unpack('>xxxxxxxxxxxxxxxHHH', s.read(length - 1)) print z, y, x if (movement is not None and abs(z + y + x - movement) > THRESHOLD): print 'You moved!' movement = z + y + x
Un’ultima nota tecnica… Le antenne chip sono abbastanza direzionali, perciò le interferenze potrebbero creare dei problemi all'accelerometro wireless.
La scheda Arduino disponibile da Farnell


Bellissimo… la già potente Arduino può essere estesa con moduli interessanti e dalle svariate possibilità!
Notevole!
Progetto interessante che mette ulteriormente in evidenza le potenzialità di Arduino! Ottimo!
Che bel progetto! Lo volgio provare subito 🙂
L’applicazione sicuramente interessante,
Ma cosa che mi dispiace un po’ e l’utilizzo di un sistema proprietario per i la comunicazione wireless, nel nostro caso IEEE 802.15.4 ZigBee che non lo rende compatibile con tutti i dispositivi ma si potrebbe sostituire molto facilmente col dispositivo Bluetooth attualmente molto più diffuso,
Trovo interessante l’uso del accelerometro come ADXL330 che è lo stesso che montato nei joystick della wii.
E finalmente si comincia usare il linguaggio Python.
come progetto e anche innovativo visto l’utilizzo di ZigBee. Chissà se potrò e riuscirò a realizzarlo.
gaetech45
Non vedo l’ora di mettere le mani su uno degli arduino in palio per realizzarlo e usare il mio linguaggio preferito Python!!!!
Mmmm… dall’articolo non si capisce molto, ma se non ho inteso male vorresti programmare l’Arduino con Python… Non mi pare che questo sia ad oggi possibile!
Non è che tramite Arduino (programmato normalmente in C) e modulo xbee si invia in wireless lo stato dell’accellerometro e poi da pc (con programmino python) si vanno a leggere i dati ricevuto dal secondo modulo xbee?
Io l’ho intesa così…
Qualche tempo fa ho acquistato questo accelerometro ripromettendomi di integrarlo in un progetto che andava a creare un “autopilota” per i miei aeromodelli… non ho mai avuto il tempo di cimentarmi!
In effetti è proprio così…Arduino, al momento, si programma in C tramite l’IDE derivato da Prcessing e scaricabile liberamente dal sito ufficiale della casa produttrice. Al contrario, con Python si è programmata l’interfaccia software lato PC. Tra l’altro, sempre sul sito ufficiale di Arduino, esistono delle API già adattate in linguaggio Python che permettono la comunicazione tra Arduino e il pc tramite porta seriale RS232. Ovviamente, nel caso dell’articolo qui proposto, la comunicazione via cavo è stata sostituita con una wireless Zigbee 2.5, ma è il mezzo fisico che cambia, il protocollo di collegamento è sempre e comunque RS232.
OK: le mie supposizioni sono state confermate! Grazie
Il linguaggio Python è usato solamente per l’applicativo (che riceve i dati) che gira su PC…
Arduino si programma in C!
ANIE kinect si programma così qualcuno si dedica a kinect?
Se rovisti sul sito della Sparkfun trovi delle shield di espansione Arduino compatibili per tutte le esigenze applicative, spaziando dai moduli Ethernet ai driver per motori step e servomotori, ai sensori o alla utilissima minibreadboard su cui adattare i componenti che vuoi e far fare ad Arduino ciò che detta la tua fantasia. E’ impressionante come ci si sia impegnati a far crescere la fama di Arduino, un sistema di sviluppo finalmente italiano!!
In effetti in questi giorni sto indagando sugli shield disponibili… impressionante: si può fare proprio di tutto in pochissimi passaggi! Questi moduli pronti all’uso sono la manna dal cielo per prototipizzare nuove idee!
centra qualcosa con kinect ??!