Home
Accesso / Registrazione
 di 

Arduino: progetto per un accelerometro wireless

L'accelerometro wireless progettato con Arduino invia dati al computer

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

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di stewe

Bellissimo... la già

Bellissimo... la già potente Arduino può essere estesa con moduli interessanti e dalle svariate possibilità!
Notevole!

ritratto di Alex87ai

Se rovisti sul sito della

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!!

ritratto di stewe

In effetti in questi giorni

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!

ritratto di Alex87ai

Progetto interessante che

Progetto interessante che mette ulteriormente in evidenza le potenzialità di Arduino! Ottimo!

ritratto di mingoweb

Che bel progetto! Lo volgio

Che bel progetto! Lo volgio provare subito :-)

ritratto di Fabrizio87

L'applicazione sicuramente

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.

ritratto di stewe

Qualche tempo fa ho

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!

ritratto di stewe

Il linguaggio Python è

Il linguaggio Python è usato solamente per l'applicativo (che riceve i dati) che gira su PC...
Arduino si programma in C!

ritratto di linus

geniale

come progetto e anche innovativo visto l'utilizzo di ZigBee. Chissà se potrò e riuscirò a realizzarlo.

ritratto di gaetech45

viva l'open source

gaetech45
Non vedo l'ora di mettere le mani su uno degli arduino in palio per realizzarlo e usare il mio linguaggio preferito Python!!!!

ritratto di stewe

Mmmm... dall'articolo non si

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ì...

ritratto di Alex87ai

In effetti è proprio

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.

ritratto di stewe

OK: le mie supposizioni sono

OK: le mie supposizioni sono state confermate! Grazie

ritratto di giuskina

Phyton

ANIE kinect si programma così qualcuno si dedica a kinect?

ritratto di giuskina

nessuno commenta ???

centra qualcosa con kinect ??!

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 5 utenti e 76 visitatori collegati.

Ultimi Commenti