giovedì 12 gennaio 2012

Datalogger (prima versione funzionante)

Uno degli obbiettivi che mi sono posto nella programmazione in Python SL4A e' quello di realizzare un sensore a basso costo (una sorta di datalogger con la possibilita' anche di invio dei dati via Internet)
Il primo passo e' quello di registrare i dati ed inserirli in DB

Di seguito il programma ed una prima prova

Struttura del Database



Script Python SL4A
Il programma registra le accelerazione e le inclinazione sui tre assi del telefono e li inserisce in DB SQLite
------------------------------------------------------------------------------------------------------
import android, time, sqlite3
from time import strftime

droid = android.Android()
conn = sqlite3.connect('/sdcard/datalogger.db')
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS dati (accx  REAL,accy  REAL,accz  REAL,tiltx REAL,tilty REAL,tiltz REAL,id INTEGER  PRIMARY KEY AUTOINCREMENT,tempo DATETIME)")


droid.startSensingTimed(1,1000)
time.sleep(3)
while True:
accx = str(droid.sensorsReadAccelerometer().result[0])
accy = str(droid.sensorsReadAccelerometer().result[1])
accz = str(droid.sensorsReadAccelerometer().result[2])
az = str(droid.sensorsReadOrientation().result[0])
pitch = str(droid.sensorsReadOrientation().result[1])
roll =  str(droid.sensorsReadOrientation().result[2])
orario = strftime("%Y-%m-%d %H:%M:%S")
sql_string = "INSERT INTO dati (accx,accy,accz,tiltx,tilty,tiltz,tempo) VALUES ('"+accx+"','"+accy+"','"+accz+"','"+az+"','"+pitch+"','"+roll+"','"+orario+"')"
cursor.execute(sql_string)
conn.commit()
time.sleep(1)

droid.stopSensing()
conn.close()
----------------------------------------------------------------------------------------------

Grafico della prima prova
La prima prova e' stata eseguita salendo e scendendo due rampe di scale (in rosso l'asse Z)