martedì 24 gennaio 2012

Calcolare la distanza geodetica tra due punti

Due le coordinate in gradi decimali la distanza geodetica tra due punti si puo' calcolare con il metodo descritto qui

la traduzione in Python e' la seguente
-------------------------------------------------------------------------------

import math


def distanza(lat1,lon1,lat2,lon2):
    la1 = math.radians(lat1)
    la2 = math.radians(lat2)
    lo1 = math.radians(lon1)
    lo2 = math.radians(lon2)
    dLat = la1-la2
    dLon = lo1-lo2
    a = math.sin(dLat/2)*math.sin(dLat/2)+math.sin(dLon/2)*math.sin(dLon/2)* math.cos(la1) * math.cos(la2)
    c = 2*math.atan2(math.sqrt(a),math.sqrt(1-a))
    dist = 6378137*c
    return dist


print distanza(45,11,46,10)

-------------------------------------------------------------------------------
lo script calcola la distanza tra i due punti a coordinate lat=45°,lon=11° e lat=46°,lon=10° con il risultato di una distanza di 135786.09 metri.

L'errore di calcolo derivante dall'impiego della formula e' stimato in circa allo 0.3% il che equivale a 3 m per chilometro

Il valore di 6378137 m e' il raggio terrestre secondo il sistema WGS-84.

Il calcolo sopra ripòrtato e' impostato considerando la terra sferica; per una maggiore precisione e' necessario usare la formula ellissoidica di Vincenty (qui)


Stavo andando a giro per l'hard disk con Midnight Commander quando ho dato Invio su un file .apk e mi sono accorto che di fatto e' solo un file zip con una diversa estensione....


lunedì 23 gennaio 2012

Nello stesso momento ........

Nello stesso momento in cui usciva Next sui computer dei mortali si vedevano queste immagini.




Un po' di tempo fa

ebbene si', anche io sto leggendo la biografia di Steve Jobs e sono arrivato al punto in cui vende Next ad Apple..mi sono incuriosito di vedere un sistema operativo su cui di fatto non ho mai messo le mani (non per eta' anagrafica ma per eccessiva rarita' delle macchine Next)

Avvio del SO




Desktop



Applicazioni Demo

Editor di testo


L'immancabile (negli anni 90) Mandelbrot

domenica 22 gennaio 2012

Dati su seriale tra Arduino e PC con Python

Questo esempio e' in preparazione di uno scambio di dati tra telefono Android ed Arduino.
Partendo dal caso piu' semplice (ovvero PC + Arduino) si puo' caricare sulla Arduino il seguente sketch
che in sostanza accende il led sul pin 13 quanto trasmette la stringa "hello"
--------------------------------------------------------------------

void setup() {                
  Serial.begin(9600);
  pinMode(13, OUTPUT);     
}


void loop() {
  digitalWrite(13, HIGH);   
  delay(1000);              
  int bytesSent = Serial.write("hello\n");
  digitalWrite(13, LOW);    
  delay(1000);              


}

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

il programma di lettura su PC (in Python) e' semplicemente, usando la libreria Pyserial
--------------------------------------------------------------------
import serial
arduino = serial.Serial('/dev/ttyUSB2', 9600)
i = 1
while (1):
print str(i) + ": " + arduino.readline()
i= i + 1
--------------------------------------------------------------------
il prossimo tentativo e' quello di far arrivare i dati direttamente ad Android mediante la modifica USB Host del Kernel ed un cavo USB OTG (On The Go)

Attenzione: il comando readline di Python richiede la lettura di una stringa terminata con un ritorno di new line, se la scheda trasmette sulla seriale ma non manda mai il newline il PC non intercetta mai la trasmissione

sabato 21 gennaio 2012

DRONIX su Huawei 8150 Ideos

Circa 15 giorni fa avevo installato la Dronix 0.4 con una procedura non lineare e non ero riuscito con lo stesso metodo ad inserire la 0.5.4 sul mio Ideos

Oggi ho trovato un metodo decisamente piu' lineare che merita di essere descritto

Prima di tutto ho installato l'app Rom Manager dall'Android Market ed ho scaricato il file zip del nuovo firmware sulla schedina microSD. Nella app ho selezionato di installare la Clockworkmod recovery e successivamente ho selezionato l'installazione da file zip indicando quella precedentemente salvata sulla SD (il programma permette di mettere la Cyanogenmod che presente il vantaggio di avere Android 2.3 ma lo svantaggio di non essere dichiarata stabile...peraltro io ho bisogno di testare l' USB Host Mode che e' sicuramente incluso nella Dronix e non e' certo sulla Cyanogenmod)

Qualche minuto di attesa e tutto e' andato a posto...direi anche troppo facile

venerdì 20 gennaio 2012

Log su Py4a

per loggare l'attivita' sullo script per il debug mandando delle stringhe su logcat si puo' usare il seguente comando
-------------------------------------------------------------
droid.log("test")
-------------------------------------------------------------

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