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)



mercoledì 11 gennaio 2012

OS/2


 Quando gli uomini erano uomini ed il West era selvaggio esisteva OS/2...solo pochi fortunati lo hanno visto in esecuzione con i suoi task protetti (con Win3.1 ed MS/DOS suoi contemporanei si usava ancora il tasto di accensione/spengimento per terminare un processo)

 Adesso il tutto rivive in macchina virtuale...ma e' chiaro che tutto sarebbe stato diverso se non avesse vinto Windows




Debian+ACPI+BIOS+OldLaptop=Kaboom

una brutta esperienza con un portatile debianizzato...
il calcolatore ha installato Debian 6 ed ha funzionato correttamente per un po' quando una volta spento non si e' piu' riacceso. Niente Nada Nix. Nessuna schermata del BIOS, monitor nero e solo il led verde di presenza di tensione.
Mi sono ricordato che tempo prima su un portatile circa dello stesso periodo e funzionante con una vecchia versione di Debian era accaduta la stessa cosa una volta effettuata una installazione ex-novo della Debian 6.

Che il BIOS venga corrotto da Linux??? ci sono diversi post a giro per internet che dicono cio' ma sono per lo piu' molto specifici su modelli di macchine con BIOS con presenza di BUG

dopo averle provate di tutte ho smontato il portatile, rimosso la batteria della CMOS per una notte insieme alla batteria (che non funziona piu' ma volevo evitare che potesse comunque erogare un minimo di corrente per tenere in vita il BIOS) e riprovato il giorno successivo.


Giusto per avere un'idea smontare la batteria della CMOS nel portatile in esame non e' proprio una passeggiata...si deve prima smontare la tastiera, rimuovere un pannello in metallo per accedere alla motherboard, poi rimuovere una flat (quella di colore marrone in basso nella fotografia) e poi si riesce ad intravedere la batteria che e' ancora mezza nascosta dallo chassis


Il computer e' ripartito in splendida forma.
Il problema potrebbe essere individuato nel sistema di gestione dell'alimentazione..magari ha tentato di mandare in sleep un computer che non prevede quel determinato comando BIOS ed ha mandato a pallino tutto.

Per sicurezza ho quindi rimosso dal GRUB la gestione del risparmio energetico mettendo acpi=off nel file

cd /etc/default/grub

la stringa da modificare e'

GRUB_CMDLINE_LINUX="acpi=off"  

per rendere operativa la modifica si deve poi digitare

update-grub 

il calcolatore al momento non esegue lo spengimento in automatico (fa lo shutdown ma e' necessario l'intervento dell'utente per togliere la corrente mediante il pulsante di accensione) ma almeno sembra lavorare in modo corretto


IBM 380 DX

Nella ricerca di mettere in piedi vecchi portatili mi sono imbattuto in un IBM 380 DX, un computer datato 1997 con un processore P2 a 233 MHz, disco fisso da 1 Gb, memoria RAM di 96 Mb (la massima installabile !!!), un Cdrom ed una porta USB

In origine supportava Win 3.11, Win 95

Ho provato in tutti i modi possibili a renderlo vivo ma alla fine la scelta e' andata su PuppyLinux e Damn Small Linux; per la prima la poca esperienza ha fatto diventare l'installazione un inferno di reboot e tentativi, con la seconda una volta impostata il parametro FB800x600 al boot tutto ha funzionato alla mervaglia considerato il modesto hardware





Memoria in uso 14 Mb!!!

Accesso della memoria da cui si puo' sostituire la batteria CMOS (i due fili che escono a destra della foto)

Disgraziatamente il portatile soffre di grossi problemi di BIOS per cui alcune volte gli errori di boot sono superabili mentre in altri casi la macchina si pianta e non accenna ad andare in POST (in particolar modo dopo averla impiegata per circa un'ora diventa non piu' recuperabile)

martedì 10 gennaio 2012

Un visualizzatore di immagini veloce (molto)

Mi sono imbattuto un po' per caso in questo visualizzatore di immagini .... avendo da sfogliare gallerie molto grandi derivanti dalla fotocamera e' estremamente utile la velocita'.. consigliatissimo



domenica 8 gennaio 2012

Le mie applicazione Android

Una lista delle applicazioni per Android di cui non fare a meno:

  1. Aldiko (e-book reader)
  2. Bluetooth file transfer
  3. ConnectBot (Client SSH)
  4. Google Docs
  5. eGeo Compass (Bussola geologica)
  6. Emulatore di terminale
  7. File Expert (File Manager)
  8. Google Sky Map (planetario)
    gStrings (accordatore chitarra)
  9. Mame4droid (Mame)
  10. My Backup
  11. Orux Maps (gestore GPS con cartografia Google offline)
  12. Python per Android
  13. QuickPic (visualizza iimagini)
  14. RunKeeper (allenatore podistico)
  15. SL4A
  16. Stato GPS
  17. Waw (cracca password Alice)
  18. Tape-a-talk (registratore vocale)
  19. Navigon (navigatore stradale)

venerdì 6 gennaio 2012

Exim + Dovecot su localhost

Per lavoro ho la necessita' di provare un programma che impiega il protocollo Imap per cui mi sono dovuto montare un server Imap sul portatile per le prove....non e' poi cosi' banale come sembra.

I server che hanno dato meno problemi di configurazione sono stati

Exim come MTA
Dovecot come IMAP

Exim smista la posta su localhost senza nessuna modifica alle configurazioni.
I file della posta non sono nella home degli utenti ma di default vanno in /var/mail

per questo motivo il file di configurazione di Dovecot deve essere modificato come segue
-------------------------------------------------------------------------------------------

protocols = imap imaps
listen = localhost
disable_plaintext_auth = no
shutdown_clients = yes

mail_location = mbox:~/mail:INBOX=/var/mail/%u
protocol imap {
}
protocol pop3 {
}
protocol lda {
  postmaster_address = postmaster@example.com
}
auth default {
  mechanisms = plain
  passdb pam {
    args = "*"
  }
  userdb passwd {
  }
  user = root
}
dict {
}
plugin {
}


--------------------------------------------------------------------------------------------

per testare il programma si possono mandare le mail tra due utenti (per esempio root e l'utente non privilegiato). Per farlo si puo' usare il vetusto comando mail da linea di comando
mail - s titolo luca
premendo invio due volte si puo' scrivere il testo del messaggio. Per terminare bisogna battere invio andando su una riga vuota e successivamente premere CTRL+D

per testare se il server funziona si puo' usare il programma Mutt dei bei vecchi tempi con l'interfaccia a caratteri. Per collegarsi con il protocollo Imap si deve usare la sintassi
mutt -f imap://luca@localhost
La prima volta viene richiesta di accettare la chiave di identificazione del server e successivamente si deve inserire la password dell'utente (la stessa del login dell'utente Linux)

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...