Arduino/accelerometro adxl345
L'accelerometro a tre assi adxl345 è un oggetto di basso costo (circa 6€ su ebay), perfettamente compatibile con arduino.
Ammette due modalità diverse di utilizzo, attraverso i protocolli I2C (più lento, ma molto più semplice, perché scambia dati attraverso due fili soltanto) e il protocollo SPI. Può anche essere pilotato attraverso due canali di interrupt per realizzare effetti particolari, come il doppio click.
<video controls> <source type="video/mpeg"
src="http://www.cloc3.net/pnlug/adxl345.mp4"></video>
<object data="http://www.cloc3.net/pnlug/adxl345.mp4"
type="video/mpeg" width="164" height="140">
</object>
L'uso didattico
Trasformare un accelerometro in uno strumento di rilevazione dei movimenti tellurici è un'applicazione didattica elementare, perché si esaurisce nella gestione dell'input output con il sensore.
Sono molte però le cose che si possono imparare anche con un obiettivo tanto limitato. Per esempio:
- Imparare a consultare la documentazione esistente su internet.
- Imparare a scrivere alcuni programmi semplici per gestire la comunicazione tra il sensore e arduino.
- Imparare a gestire la comunicazione tra arduino e il terminale di un computer esterno, attraverso la porta seriale.
- Imparare a redirigere i dati su web e a raccoglierli con una applicazione per il browser.
Alcune informazioni spicciole
È infinita su internet la documentazione che ne descrive l'uso.
Notevole, ad esempio, questo tutorial che insegna a programmare autonomamente le librerie dalla lettura diretta delle specifiche.
Su github, il codice della adafruit consente un utilizzo pressochè immediato del dispositivo.
cd ~/arduino/librerie git clone git://github.com/adafruit/Adafruit_ADXL345
Il file Adafruit_ADXL345/examples/sensortest/sensortest.pde contiene uno script pronto per l'uso.
Una volta generato un flusso attraverso la porta seriale di arduino, possiamo porci il problema di trasferirlo via web.
netcat è uno strumento prezioso per realizzare la cosa in un fiato.
sudo while true; do nc -l -p80 -q1</dev/arduino ;done & wget localhost -O - 2>/dev/null
Se si desidera, è possibile di evitare il sudo liberando l'accesso in scrittura alla porta 80 ad un utente non privilegiato con l'uso di authbind.
Riportiamo le istruzioni acquisite da questo howto:
cd /etc/authbind/byport touch 80 chmod 500 80 chown utente_nc 80
L'utente dovrà creare il flusso in questo modo:
while true; do authbind nc -l -p80 -q1</dev/arduino ;done