giovedì 7 novembre 2013

Differenze pratiche tra LM358 e LM741

Sto lavorando ad amplificare il segnale del Force Gauge gia' visto in questo post

Gli integrati di cui si trovano informazioni e tutorial (non molti peraltro) su Internet sono sostanzialmente due:
LM741 e LM358 (con il primo piu' datato e quindi con meggiore supporto dalla rete)



Ho provato entrambi e ci sono alcuni aspetti che fanno propendere per l'uso dell'LM358
  1. LM358 ammette una alimentazione a due fili (Vcc e GND) e puo' essere alimentato anche da una comune pila a 9 V (puo' essere alimentato direttamente anche da Arduino). LM741 necessita invece di trasformatore a tre uscite (V+, GND e V-) e viene indicato di usare una tensione di 15 altrimenti non e' garantito che l'integrato funzioni (alcuni sembra di si' ,altri no)
  2. LM358 ha un doppio operazionale mentre LM741 ne ha uno solo (con lo stesso numero di piedini)
  3. LM741 ha in piu' il controllo dell'offset mediante gli appositi piedini OFFSET NULL

Pinout LM741


Pinout LM358
Il circuito di amplificazione e' gia' pronto e lo mostrero nei seguenti post (e' basato su LM 358)

lunedì 4 novembre 2013

Android e Linux su I-Mate PDA 2K

Ho ritirato fuori per caso dall'archivio del materiale obsoleto questo terminale datato 2004 come anno di uscita che all'epoca era la formula 1 degli smartphone (tanto per dare un'idea l'Iphone sarebbe uscito nel 2007)
La caratteristica principale e' la tastiera QWERTY a scomparsa, la presenza di GPS, Bluetooth, WiFi con 128 Mb di Ram ed ha montato come sistema operativo supportato Windows Mobile 6.1 (incredibilmente lento)

Su questo terminale sono stati sviluppati molti progetti per effettuare il porting di altri sistemi operativi. Quello piu' interessante ed incredibile e' far girare Android 2.3.6 (uscito nel settembre 2011) su un terminale con specifiche di 7 anni prima. L'usabilita' non e' il massimo ma non e' peggio di Windows Mobile 6.1

Istruzioni per la configurazione di Android a questo link
Home di Android 2.3.6


Info su Android 2.3.6





Altrimenti e' possibile far girare sullo smartphone anche Linux con la versione Angstrom/QTopia.
In questo caso il progetto e' piuttosto vecchio e non e' piu' aggiornato dal 2007 (qui i file)

Boot di Angstrom


Qtopia





Amanita Cesarea e Trombette di morto


Di ritorno da un giro nel bosco

Amanita Cesarea

Trombetta di morto (Craterellus cornucopioides)
ed alla fine il tramonto su Firenze


giovedì 31 ottobre 2013

USB Key Read Only


Un amico mi ha portato questa chiavetta USB pubblicitaria perche' era interessato ad utilizzarla per i propri file visto il taglio da 17 Gb. Il problema e' che l'unita' si mostrava sempre come in sola lettura e quindi sostanzialmente non usabile per scopi differenti dal vedere il filmato pubblicitario

La cosa mi e' sembrata subito strana dato che non ho mai visto a giro tagli di memoria di questo tipo (o 16 o 32 Gb per esempio)


Ho provato a smontare il dispositivo per vedere se era nascosto uno switch. Sulle prime USB era comune trovare un interruttore a slitta vicino al connettore ma dopo aver rimosso 4 viti, una cucitura ed una tonnellata di colla nessun risultato

Rimontato il tutto ho riprovato ad inserire il dispositivo nella mia Debian Box le cose si sono un po' chiarite.
Sono visibili due partizioni: la prima da 18 Mega (e non 17 Giga!!) a sola lettura ed una seconda da 944 Mega di spazio libero liberamente scrivibile. Si tratta quindi di una comunissima USB Key da 1 Giga.
A questo punto rimane il problema della partizione a sola scrittura. Non puo' trattarsi di un blocco hardware perche' un eventuale switch di blocco scrittura avrebbe agito su tutta l'unita' disco e non su una sola partizione. Non si tratta nemmeno dell'impostazione dei permessi del sistema operativo (ho provato ad usare GParted per cancellare le partizioni ma l'operazione non e' permessa)

La possibile soluzione e' che il firmware della scheda sia stato modificato in modo proprietario per far apparire le due partizioni di cui una bloccata in scrittura (qualcosa di simile e' possibile con le chiavette SANDISK..ho provato il loro tool di formattazione a basso livello launchpadremoval.exe ma senza successo). Mi sa che la riconsegno cosi' com'e'

mercoledì 30 ottobre 2013

Cambio sistema di coordinate geografiche

Ogni tanto mi ricordo di essere un geologo con un po' di esperienza in telerilevamento.
Per un studio che sto facendo nei ritagli di tempo sto usando delle immagini Landsat 7 e non avendo una licenza Envi e ArcGis mi sto adattando ad usare QGis

Caricando i dati Landsat Toscana-Emilia (TIF georiferite) direttamente in QGis queste vengono inserite nel sistema di riferimento EPSG:32632 (WGS84 UTM Zona 32 N)


LE71920292001046EDC01
Gli shapefile che invece mi servono sono tutti nel sistema di riferimento EPSG 3003 (Monte Mario Italy Zona 1)

Invece di convertire le immagini e' possibile traslare il sistema di riferimento degli shapefile usando i tools GDAL in particolare con il comando

dove
wgs.shp e' il nome dello shape risultato dell'elaborazione
boaga.shp e' il nome del file shape da convertire
-s_srs e' il sistema di riferimento di partenza
-t_srs e' il sistema di riferimento finale

ogr2ogr wgs.shp boaga.shp -s_srs EPSG:3003 -t_srs EPSG:32632

martedì 29 ottobre 2013

Compressione video

Il video originale dell'intervento al Linux Day 2013 e' stato ripreso con una micro camera Go Pro a risoluzione Full HD. Il risultato e' che l'intervento della durata di circa 16 minuti corrisponde ad una occupazione su disco di circa 3.7 Gb... un po' troppo per pensare di effettuare l'upload su Youtube



Ho quindi provato a comprimere il file mediante il software ffmpeg e la seguente stringa

ffmpeg -i luca.mp4 -s 720x480 -acodec copy luca.mkv

al termine della compressione il file e' risultato essere di circa 30 Mb con una compressione di oltre un fattore 1000. La conversione e' stata fatta su un IBM T61 dual core con 2 Giga di Ram e per ogni secondo di video erano necessari circa 3-4 secondi di calcolo

Personalizzazione di Webiopi

Il sistema di gestione Web delle porte GPIO di Raspberry presentato in questo post puo' essere anche customizzato nell'aspetto dell'interfaccia per esempio per mostrare un solo pulsante



Un esempio viene riportato al Wiki di Google Code ...peccato che sia sbagliato

Dopo un po' di ricerche ecco una pagina funzionante che accende e spenge il solo pin GPIO 25. L'aspetto fondamentale e' che prima di usare il pin questo deve essere dichiarato come output
Il file deve essere posizionato in /usr/share/webiopi/htdocs
------------------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="viewport" content = "height = device-height, width = 420, user-scalable = no" /> 
        <title>WebIOPi | Demo</title>

        <script type="text/javascript" src="/webiopi.js"></script>
        <script type="text/javascript">
        webiopi().ready(function() {
webiopi().setFunction(25,"out");

                var content, button;
                content = $("#content");
                               
                button = webiopi().createGPIOButton(25, "SWTICH");
                content.append(button); // append button to content div
                       
           

webiopi().refreshGPIO(true);
                
        });
                
        function mousedown() {
                webiopi().digitalWrite(7, 1);
        }
        
        function mouseup() {
                webiopi().digitalWrite(7, 0);
        }
        
        function outputSequence() {
                var sequence = "01010100110011001100101010" // S.O.S. morse code or whatever you want
                // output sequence on gpio 7 with a 100ms period
                webiopi().outputSequence(7, 100, sequence, sequenceCallback);
        }
        
        function sequenceCallback(gpio, data) {
                alert("sequence on " + gpio + " finished with " + data);
        }
        
        function callMacro() {
                var args = [1,2,3] // or whatever you want
                // call myMacroWithArgs(arg)
                webiopi().callMacro("myMacroWithArgs", args, macroCallback);
        }
        
        function macroCallback(macro, args, data) {
                alert(macro + " returned with " + data);
        }
        
        </script>
        <style type="text/css">
                button {
                        display: block;
                        margin: 5px 5px 5px 5px;
                        width: 160px;
                        height: 45px;
                        font-size: 24pt;
                        font-weight: bold;
                        color: black;
                }
                
                input[type="range"] {
                        display: block;
                        width: 160px;
                        height: 45px;
                }
                
                #gpio7.LOW {
                        background-color: White;
                }
                
                #gpio7.HIGH {
                        background-color: Red;
                }
        </style>
</head>
<body>
        <div id="content" align="center"></div>
</body>
</html>

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