martedì 22 ottobre 2013

Linux Day 2013 - Pistoia

In preparazione per il Linux Day 2013 a Pistoia. L'intervento sara' dalle 11.30 alle 12.00 ma spero di esserci sia prima che dopo per fare due chiacchere



Problemi su Mediacom 850i


Ieri sera il bambino stava guardando un film su tablet Mediacom 850i quando si sono esaurite le batterie.
Ho messo in carica il tablet ed il led di ricarica ha funzionato in modo corretto

Il giorno successsivo, con ricarica completa, ho provato a riaccendere il dispositivo. Niente da fare, completamente morto.


Stavo gia' pensando di ricomprare un tablet quando per puro divertimento ho provato a ripetere la procedura per flashare la ROM gia' presentata in questo precedente post
Curiosamente, con lo schermo completamente oscurato, il tablet era gia' in modalita' di recovery e quindi e' stato facile rimontare la ROM e riavviare il sistema. Certo che non si tratta di un tablet per principianti

lunedì 21 ottobre 2013

Lettura valori analogici su Arduino Uno ed Arduino Due

Un amico mi ha chiesto la possibilita' di monitorare uno strumento da laboratorio per taglio anulare (si tratta di una strumentazione geotecnica) mediante Arduino

Lo strumento e' sostanzialmente un Force Gauge SM 1000-N capace di misurare carichi fino a 1000 N.
I collegamenti sono piuttosto semplici. Vi e' una alimentazione da 15 Vcc e due cavi di misura

Il problema e' il tipo di uscita dello strumento che risulta essere di pochi milliVolt (al massimo di qualche decina di milliVolt) al contrario dello strumento visto in questo post


Per questo motivo avevo escluso a priori l'utilizzo dell'Arduino Uno perche' ha una sensibilita' (nel migliore delle ipotesi) di 5 mV

Arduino Due invece dovrebbe avere una sensibilita' nettamente superiore perche' monta un convertitore analogico digitale da 12 bit (4096 livelli al contrario dell'ADC a bit 10 e 1024 livelli della Uno) ed ha un fondo scala a 3.3 V (5.0 V Arduino Uno). Per questo motivo, con un rapido conto, la minima lettura dell'Arduino Due doveva essere 3.3V/4095 = 0.8 mV...perfettamente in linea con le tensioni che avevo bisogno di misurare

Una volta connessa l'Arduino Due al Force Gauge ed un multimetro per riferimento e' stato chiaro che qualcosa non tornava. Per tensioni misurate di circa 7 mV la risposta della Arduino Due era compresa tra 3-4 (in linea teorica doveva essere circa il doppio ovvero tra 8 e 9)

Frugando su Internet ho trovato questo interessante post che entra nel dettaglio dell'ADC di Arduino Due mostrando come l'offset possa essere anche molto alto (20 mV) rendendo difficoltose le misure di tensioni molto basse. Fra le altre cose e' interessante l'influenza di avere una tensione di riferimento stabile anche per l'Arduino oltre che per lo strumento di misura

venerdì 18 ottobre 2013

Controllo remoto di rele' mediante Raspberry

Recentemente un amico mi ha chiesto un metodo per poter gestire in remoto (dove per remoto si deve intendere accendere una caldaia negli USA stando in Italia) usando una Raspberry.

La cosa e' piuttosto semplice da fare con Php ma visto che la ruota e' gia' stata inventata, e funziona bene, ho preferito usare questo strada

Prima di tutto la parte collegamenti
La Raspberry, con montata una Raspbian, e' stata collegata al rele' alla porta GPIO #23 (porta S del rele') e i classici +5V e GND


Per la parte software ho impiegato WEBIOPI , uno script in Python che crea un piccolo webserver interfacciato con le GPIO

Prima prima cosa di sscaricare il file
wget http://webiopi.googlecode.com/files/WebIOPi-0.6.0.tar.gz

e lo si scompatta
A questo punto da utente root si digita
./setup.sh
(attenzione, durante questa fase la Raspberry deve essere connessa ad internet perche' vengono scaricate eventuali librerie non gia' presenti nel sistema...l'operazione dura qualche minuto)

al termine si puo' digitare (sempre da root)
/etc/init.d/webiopi start

a questo punto collegandosi all'indirizzo della macchina sulla porta 8000 (od in localhost:8000) si accede ad una interfaccia di questo tipo

La username di default e' "webiopi" e la password "raspberry"

All'inizio tutte le porte sono di Input. Quindi si deve cliccare sulla casellina grigia accanto alla porta di interesse (nel mio caso #23) e porta in modalita' output (OUT). Fatto cio' cliccando sul numero della porta si interagisce con il rele' aprendo e chiudendo il contatto


Nel video si osserva il led luminoso del rele' che si accende quando si apre il contatto via web

Per rendere il sistema sempre avviato all'accensione del sistema si deve digitare


update-rc.d webiopi defaults

mercoledì 16 ottobre 2013

Google Chrome, Proxy Server e Debian

Questo riepilogo non è disponibile. Fai clic qui per visualizzare il post.

Problemi con Google Chrome per Linux su Debian

Cercando di installare Google Chrome su una macchina virtuale Debian con la procedura che ha sempre funzionato oggi sono comparsi alcuni errori



di fatto l'installazione con dpkg si blocca a causa di alcune dipendenze non risotel
-----------------------------------------------
 google-chrome-stable : Dipende: lib32gcc1 (>= 1:4.1.1) ma non è installabile
                                     Dipende: lib32stdc++6 (>= 4.6) ma non è installabile
                                     Dipende: libc6-i386 (>= 2.11) ma non è installabile
-----------------------------------------------

La versione beta 31.0.1650.16-1 funziona invece correttamente.

lunedì 14 ottobre 2013

Configurazione Debian minimale su IBM X20


In questo post viene mostrato come ho configurato in modo minimale (ma abbastanza completo) l'IBM X20 visto in questo post in modo da avere un compromesso tra la modesta potenza della macchina  e la necessita' di renderla comunque operativa


Per prima cosa sono partito dal primo CD di installazione di Debian togliendo le opzioni Ambiente Desktop e Server di Stampa ed impostando Server SSH.

Al successivo riavvio si ha la sola shell senza ambiente grafico

Si procede quindi con l'installazione di alcuni programmi a linea di comando

apt-get install alpine sqlite3 lynx mc imagemagick
apt-get install moc (player musicale basato su ncurses che si lancia con il comando mocp)

e di alcuni tool di sviluppo che di solito uso
apt-get install build-essential codeblocks codeblocks-contrib openjdk-7-jdk ant subversion git

a questo punto si installa X Windows in configurazione minimale
apt-get install x-window-system-core

seguito dall'installazione di Openbox minimale
apt-get install openbox obconf obmenu
apt.get install conky tint2

per attivare conky e tint due si deve procedere come segue
touch ~/.config/openbox/autostart.sh
chmod 700 ~/.config/openbox/autostart.sh


il contenuto del file autostart e' il seguente
----------------------------------------------------
# Run the system-wide support stuff . 
$GLOBALAUTOSTART 
(sleep 1 && tint2) & 
(sleep 1 && conky) & 
------------------------------------------------------

di default conky si aggiorna una volta al secondo ma non e' di interesse e ruba abbastanza cicli alla CPU cosi' ho modificato il valore update_interval in /etc/conky/conky.conf portandolo a 15.0

con questa configurazione ed Openbox in esecuzione si ha una occupazione della RAM di 46 MB (aprendo una shell di XTerminal si passa a circa 51 Mb con una occupazione di spazio disco di circa 1.5 Gb).
Tramite OBConf ho impostato una sola finestra di desktop

Per gestire la reti wireless in modo umano ho montato come network manager wicd
apt-get install wicd 


che deve essere attivato con il comando
wicd-client

(attenzione: se non e' presente deve essere inserita a mano la scheda wlan0 all'interno della configurazione)

Un paio di programmi di comune utilizzo su X (un leggero browser ed editor di testo)
apt-get install midori
apt-get install leafpad
apt-get install mupdf (visualizzatore pdf)

Per effettuare degli screenshot ho installato scrot
apt-get install scrot

che si usa con la seguente sintassi
scrot -d 5 (salva lo schermo con un ritardo di 5 secondi)

Data che X non sara' sempre usato, per massimizzare lo schermo della consolle testuale, si puo' modificare GRUB in modo che in partenza la shell sia in modalita' 1024x768 editando il file /etc/default/grub, togliendo il commento a  GRUB_GFXMODE=640x480 e portandolo a 1024x768.
Si deve poi aggiungere la linea
GRUB_GFXPAYLOAD_LINUX=keep

per rendere le modifiche operative si lancia poi
update-grub2

A questo punto si possono togliere un po' di demoni che non servono. Visto che la batteria non e' funzionante e che il BIOS non accetta la modalita' Speedstep si puo' rimuovere ACPI
apt-get remove acpi
Visto che non e' previsto di utilizzare dischi di rete mappati NFS via anche questo servizio
apt-get --purge remove nfs-common rpcbind
Il sistema non ha un modulo Bluetooth e potrei disinstallare il demone ma visto mi potrebbe servire per un dongle USB Bluetooth lo disattivo semplicemente dal boot  modificando /etc/default/bluetooth ed editando
BLUETOOTH_ENABLED=0

Via anche il client di CUPS (di solito non stampo)
apt-get remove cups 

Per il demone Avahi ho preferito disattivarlo piuttosto che disinstallarlo perche' puo' sempre tornare utile. Si digita quindi il file 
sudo update-rc.d -f avahi-daemon remove

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