giovedì 29 ottobre 2015
mercoledì 28 ottobre 2015
Sharp ElsiMate EL-5809 e regolo calcolatore
Per la modica cifra di 10 euro il mio museo di strumenti di calcolo ha avuto due nuovi ingressi
Una Sharp ElsiMate EL-5809 in condizioni perfette con scatola, libretto e custodia (si parla di un oggetto del 1978)
Una Sharp ElsiMate EL-5809 in condizioni perfette con scatola, libretto e custodia (si parla di un oggetto del 1978)
ed un regolo calcolatore tascabile con manuale di istruzione in cui e' riportato l'utilizzo per rilievi tachiometrici (il libro e' del 1940, il regolo dovrebbe essere degli anni 60)
lunedì 26 ottobre 2015
Lighttable editor
Sono stato un utente di CODA, fino a quando ho potuto usarlo licenziato. Adesso pero' sono costretto a trovare un degno sostituto
Per aprire file in modo rapido (ovvero non usando la combinazione Cmd+Shift+O) si puo' usare il Workspace. Per abilitare tale modalita' si preme CTRL+SPACE) e si seleziona Workspace: Toggle Workspace Tree, a questo punto si apre un pannello sulla destra in cui clicccando destro si puo' selezionare
la directory in cui sono contenuti i file del progetto HTML
Un'altra soluzione e' quella di usare CTRL+SPACE e digitare Navigate: Open Navigate
Una volta aperto il sorgente si puo' splittare lo schermo in due porzioni con la combinazione CTRL+SPACE e selezionando Tabset:Add tabset. A questo punto lo schermo si divide in due lasciando una porzione libera a destra. Per visualizzare il browser della pagina html aperta si clicca CTRL+SHIFT+ENTER
Il browser si apre nel settore sinistro..basta prendere il tab dal titolo (nella parte superiore dove compare il nome del file) e trascinarlo a destra. Si avra' cosi' la visione affiancata tra il sorgente ed il browser
Se si modifica la pagina sorgente a sinistra e' sufficiente premere CTRL+ENTER per vedere l'aggiornamento nella parte sinistra
Puo' essere utile aprire nella parte bassa la console in modo da visualizzare eventuali errori. Questa operazione si effettua con CTRL+SPACE e Console: Toogle Console
Altri comandi
CTRL+SEGNO MENO : Zoom out
CTRL+F : Find
CTRL+SHIFT+TAB : cicla fra i tab di uno stesso tabset
CTRL+W : chiude il tab attuale
CTRL+numero : vari al tab numero..
Attenzione : su Mac la combinazione Command (CTRL+SPACE) e' gia' mappata per aprire Spotlight. Dato che non la uso mai ho disattivato lo shortcut dalle Impostazione di Mac/Tastiera/Abbreviazioni
Per aprire file in modo rapido (ovvero non usando la combinazione Cmd+Shift+O) si puo' usare il Workspace. Per abilitare tale modalita' si preme CTRL+SPACE) e si seleziona Workspace: Toggle Workspace Tree, a questo punto si apre un pannello sulla destra in cui clicccando destro si puo' selezionare
la directory in cui sono contenuti i file del progetto HTML
Un'altra soluzione e' quella di usare CTRL+SPACE e digitare Navigate: Open Navigate
Una volta aperto il sorgente si puo' splittare lo schermo in due porzioni con la combinazione CTRL+SPACE e selezionando Tabset:Add tabset. A questo punto lo schermo si divide in due lasciando una porzione libera a destra. Per visualizzare il browser della pagina html aperta si clicca CTRL+SHIFT+ENTER
Il browser si apre nel settore sinistro..basta prendere il tab dal titolo (nella parte superiore dove compare il nome del file) e trascinarlo a destra. Si avra' cosi' la visione affiancata tra il sorgente ed il browser
Se si modifica la pagina sorgente a sinistra e' sufficiente premere CTRL+ENTER per vedere l'aggiornamento nella parte sinistra
Puo' essere utile aprire nella parte bassa la console in modo da visualizzare eventuali errori. Questa operazione si effettua con CTRL+SPACE e Console: Toogle Console
Altri comandi
CTRL+SEGNO MENO : Zoom out
CTRL+F : Find
CTRL+SHIFT+TAB : cicla fra i tab di uno stesso tabset
CTRL+W : chiude il tab attuale
CTRL+numero : vari al tab numero..
Attenzione : su Mac la combinazione Command (CTRL+SPACE) e' gia' mappata per aprire Spotlight. Dato che non la uso mai ho disattivato lo shortcut dalle Impostazione di Mac/Tastiera/Abbreviazioni
GPS : L1, L1+WAAS, L1+Raw, L1+L2
In questo post vengono riassunte un po' di esperienze su vari tipi di posizionamento GPS con antenne di costo medio e basso (dove per antenna si intende l'accoppiamento della ricevente piu' l'orologio interno al sensore)
(nella figura i risultati di una prova; in giallo i due punti medi di una acquisizione con Garmin 12 XL in modalita' Raw con la sua area di errore in rosso, in blu i dati del Garmin 12 XL in modalita' NMEA e in verde l'area di un MTK3339 in modalita' non WAAS; l'andamento a griglia deriva da una interpolazione delle cifre significative del dato)
Antenna L1 : i ricevitori con antenna L1 (1575.42 MHz) si trovano comunemente per cifre comprese tra i 10 ed i 20 euro. Hanno una connessione seriale con in uscita stringhe in protocollo NMEA e non hanno nessun tipo di correzione. I dati non possono essere post-processati perche' il dato NMEA puro non puo' essere post-processsato in quanto gia' derivante da un algoritmo di calcolo interno al ricevitore che varia da antenna ad antenna e da produttore a produttore. Il sensore MTK3339 senza la correzzione WAAS attivata ha una ellisse degli errori (espressa come standard deviation) pari a circa 3.5 m in Latitudine e 7.5 m in Longitudine (vedi paragrafo successivo per confronto)
Antenna L1 + WAAS : una versione migliorata di un sensore L1 (ma sempre con i limite della non possibilita' di fare post-processing) e' quella che implementa la ricezione dei segnali di correzione (EGNOS per noi europei, WAAS per il Nord America). In caso di funzione WAAS attivata il sensore MTK3339 (Adafruit GPS Breakout) mostra una ellisse degli errori pari a 1.88 m in Latitudine e 0.61 m in Longitudine. Il costo sale verso circa 50 euro. Attenzione : questo dato viene espresso come standard deviation attorno al punto medio e non come nel caso successivo come Sigma95%. Se si osserva la nuvola dei punti la dispersione dei punti e' molto ampia al pari del caso precedente
Antenna L1 + Raw data: in questo caso l'acquisizione non prevede solo la trasmissione delle stringhe NMEA ma anche i dati di pseudorange. Tali dati possono essere post processati e si ha un incremento notevole della precisione. Lo stesso sensore (Garmin 12 XL) fatto lavorare in modalita' NMEA ha mostrato una ellisse degli errori di circa 7 m per asse. In modalita' raw data, con acquisizione corta ovvero inferiore ai 10 minuti non si ha un reale miglioramento della distribuzione dell'errore con assi dell'ellisse intorno a 5-6 m; passando ad acquisizioni piu' lunghe, ovvero oltre l'ora, sono stati misurati errori di 1.2 e 1.1 m rispettivamente su Latitudine e Longitudine. Il costo di un ricevitore L1 con possibilita' di Raw Data parte da 80 euro per andare su qualche centinario di euro
Antenna L1+L2 : e qui, come ho trovato scritto su un forum, bisogna vendersi un rene per fare misure GPS in doppia banda L1 + L2 (1227.60 MHz) perche' i costi vanno verso le migliaia di euro (diciamo a partire da 5000 euro). Il posizionamento e' pero' di estrema di precisione ovvero al centimetro con tempi di acquisizione di qualche decina di secondi
A costi ragionevoli l'unica strada percorribile sembra essere quella di usare un sistema L1+Raw con post processing:
Ho fatto una prova eseguendo in due giorni differenti con lo stesso ricevitore una acquisizione di circa un'ora e 20 minuti
I risultati sono stati
Acquisizione 1 : Lat 43°50'0.5968" +- 2.195 m Lon 11°18'37.9074" +-1.248 m
Acquisizione 2 : Lat 43°50'0.6584" +- 1.219 m Lon 11°18'37.7559" +-1.149 m
Si vede che l'area dell'errore (calcolato come 95% Sigma) e' molto modesta. Andando a calcolare pero' la distanza in metri tra i due punti si osserva che e' di circa 4. Considerando l'ellisse dell'errore le due misure, peraltro vicine, non si sovrappongono. Quindi il metodo tende ad essere preciso ma non necessariamente accurato (non ho una antenna L1+L2 per verificare la posizione al centimetro)
(nella figura i risultati di una prova; in giallo i due punti medi di una acquisizione con Garmin 12 XL in modalita' Raw con la sua area di errore in rosso, in blu i dati del Garmin 12 XL in modalita' NMEA e in verde l'area di un MTK3339 in modalita' non WAAS; l'andamento a griglia deriva da una interpolazione delle cifre significative del dato)
Antenna L1 : i ricevitori con antenna L1 (1575.42 MHz) si trovano comunemente per cifre comprese tra i 10 ed i 20 euro. Hanno una connessione seriale con in uscita stringhe in protocollo NMEA e non hanno nessun tipo di correzione. I dati non possono essere post-processati perche' il dato NMEA puro non puo' essere post-processsato in quanto gia' derivante da un algoritmo di calcolo interno al ricevitore che varia da antenna ad antenna e da produttore a produttore. Il sensore MTK3339 senza la correzzione WAAS attivata ha una ellisse degli errori (espressa come standard deviation) pari a circa 3.5 m in Latitudine e 7.5 m in Longitudine (vedi paragrafo successivo per confronto)
Antenna L1 + WAAS : una versione migliorata di un sensore L1 (ma sempre con i limite della non possibilita' di fare post-processing) e' quella che implementa la ricezione dei segnali di correzione (EGNOS per noi europei, WAAS per il Nord America). In caso di funzione WAAS attivata il sensore MTK3339 (Adafruit GPS Breakout) mostra una ellisse degli errori pari a 1.88 m in Latitudine e 0.61 m in Longitudine. Il costo sale verso circa 50 euro. Attenzione : questo dato viene espresso come standard deviation attorno al punto medio e non come nel caso successivo come Sigma95%. Se si osserva la nuvola dei punti la dispersione dei punti e' molto ampia al pari del caso precedente
Antenna L1 + Raw data: in questo caso l'acquisizione non prevede solo la trasmissione delle stringhe NMEA ma anche i dati di pseudorange. Tali dati possono essere post processati e si ha un incremento notevole della precisione. Lo stesso sensore (Garmin 12 XL) fatto lavorare in modalita' NMEA ha mostrato una ellisse degli errori di circa 7 m per asse. In modalita' raw data, con acquisizione corta ovvero inferiore ai 10 minuti non si ha un reale miglioramento della distribuzione dell'errore con assi dell'ellisse intorno a 5-6 m; passando ad acquisizioni piu' lunghe, ovvero oltre l'ora, sono stati misurati errori di 1.2 e 1.1 m rispettivamente su Latitudine e Longitudine. Il costo di un ricevitore L1 con possibilita' di Raw Data parte da 80 euro per andare su qualche centinario di euro
Antenna L1+L2 : e qui, come ho trovato scritto su un forum, bisogna vendersi un rene per fare misure GPS in doppia banda L1 + L2 (1227.60 MHz) perche' i costi vanno verso le migliaia di euro (diciamo a partire da 5000 euro). Il posizionamento e' pero' di estrema di precisione ovvero al centimetro con tempi di acquisizione di qualche decina di secondi
A costi ragionevoli l'unica strada percorribile sembra essere quella di usare un sistema L1+Raw con post processing:
Ho fatto una prova eseguendo in due giorni differenti con lo stesso ricevitore una acquisizione di circa un'ora e 20 minuti
I risultati sono stati
Acquisizione 1 : Lat 43°50'0.5968" +- 2.195 m Lon 11°18'37.9074" +-1.248 m
Acquisizione 2 : Lat 43°50'0.6584" +- 1.219 m Lon 11°18'37.7559" +-1.149 m
Si vede che l'area dell'errore (calcolato come 95% Sigma) e' molto modesta. Andando a calcolare pero' la distanza in metri tra i due punti si osserva che e' di circa 4. Considerando l'ellisse dell'errore le due misure, peraltro vicine, non si sovrappongono. Quindi il metodo tende ad essere preciso ma non necessariamente accurato (non ho una antenna L1+L2 per verificare la posizione al centimetro)
venerdì 23 ottobre 2015
NodeMcu Lua ESP8266 ESP-12E WIFI Development Board
Questo dispositivo e' un microcontrollore con abbinato capacita' WiFi a basso costo simile ad Arduino, che si puo' programmare con Arduino....ma non e' Arduino (ha piu' o meno le dimensioni di una Arduino Nano)
Il costo di ogni kit e' di circa 7 Euro (sui vari ecommerce cinesi per esempio Banggood)
Per la programmazione su Windows Xp e' necessario prima scaricare il driver della porta CP210x da questo link
In seguito e' conveniente flashare il modulo mediante il programma (senza questa operazione non riuscivo a comunicare con la scheda) che puo' essere reperito a questo link (cartella WIN32/Realease/ESP8266Flasher.exe) .
La scheda mi e' arrivata con questo firmware
NodeMcu 0.9.2 build 20141207 powered by Lua 5.1.4
(i firmware di sviluppo si scaricano da questo indirizzo)
Con il primo firmware c'era sempre un errore sul comando tmr, con il secondo firmware tutti gli script che si trovano su internet funzionano correttamente
L'uso e' molto semplice, basta selezionare la porta COM e lanciare l'operazione che dura un paio di minuti
Come dice il nome il metodo di programmazione della scheda e' in LUA e si puo' utilizzare il programma LuaLoader
Per connettersi con la scheda si deve andare nel menu Settings/COMM Port Settings e selezionare la porta virtuale (nel mio caso la Comm37) e poi effettuare il Connect. In caso di connessione diventa verde il box in alto a sinistra.
Esiste anche un'altro ambiente di sviluppo ESPlorer (non e' stato impiegato durante la scrittura di questo post)
Per caricare i programmi questi si scrivono in un editor di testo ed poi effettuato l'upload con il comando Upload File. Per mandare in esecuzione il programma si seleziona dal menu a tendina lo script desiderato e si lancia dofile
Attenzione : tutti i file di cui si fa l'upload rimangono in memoria. Per rimuoverli si devono selezionare dal menu a tendina e poi eseguire remove. Per visualizzare la memoria libera si puo' cliccare sul pulsante Heap
Per mandare in esecuzione automatica un programma all'accensione si deve nominare come init.lua. Questo espone ad un rischio ovvero che se il programma va in loop inifinito non c'e' modo di riprendere il controllo della scheda (i file sopravvivono ad un flash della scheda) . Conviene scrivere un init.lua che comprenda righe del tipo
-----------------------------------------
tmr.alarm(0, 1000000, 0, function()
dofile("mioprogramma.lua")
end)--------------------------------------------------
in modo da ritardare la partenza di mioprogramma.lua di 10 secondi e poter nel frattempo premere il comando tmr.stop per interrompere l'esecuzione automatica
Il pinout della scheda e' il seguente
Per modificare lo stato dei pin digitali si puo' eseguire le seguenti chiamate
In questo caso si setta a 1 il pin GPIO 1 ovvero D10
pin=1
gpio.mode(pin, gpio.OUTPUT)
gpio.write(pin, gpio.HIGH)
e per invece settare 0 sul pin 1
gpio.write(pin, gpio.LOW)
La scheda ha una tensione di lavoro di 3.3 V per cui lo stato 1 vale 3.3 V
Ovviamente avendo una scheda WiFi e' interessante sfruttare la connessione di rete
Con questo script la scheda diventa un web server
-------------------------------------------------------------
-- Simple NodeMCU web server (done is a not so nodeie fashion :-)
--
-- Written by Scott Beasley 2015
-- Open and free to change and use. Enjoy.
--
-- Your Wifi connection data
local SSID = "XT1032 3365"
local SSID_PASSWORD = "XXXXXXXX"
local function connect (conn, data)
local query_data
conn:on ("receive",
function (cn, req_data)
query_data = get_http_req (req_data)
print (query_data["METHOD"] .. " " .. " " .. query_data["User-Agent"])
cn:send ("Hello World from ESP8266 and NodeMCU!!")
-- Close the connection for the request
cn:close ( )
end)
end
function wait_for_wifi_conn ( )
tmr.alarm (1, 1000, 1, function ( )
if wifi.sta.getip ( ) == nil then
print ("Waiting for Wifi connection")
else
tmr.stop (1)
print ("ESP8266 mode is: " .. wifi.getmode ( ))
print ("The module MAC address is: " .. wifi.ap.getmac ( ))
print ("Config done, IP is " .. wifi.sta.getip ( ))
end
end)
end
-- Build and return a table of the http request data
function get_http_req (instr)
local t = {}
local first = nil
local key, v, strt_ndx, end_ndx
for str in string.gmatch (instr, "([^\n]+)") do
-- First line in the method and path
if (first == nil) then
first = 1
strt_ndx, end_ndx = string.find (str, "([^ ]+)")
v = trim (string.sub (str, end_ndx + 2))
key = trim (string.sub (str, strt_ndx, end_ndx))
t["METHOD"] = key
t["REQUEST"] = v
else -- Process and reamaining ":" fields
strt_ndx, end_ndx = string.find (str, "([^:]+)")
if (end_ndx ~= nil) then
v = trim (string.sub (str, end_ndx + 2))
key = trim (string.sub (str, strt_ndx, end_ndx))
t[key] = v
end
end
end
return t
end
-- String trim left and right
function trim (s)
return (s:gsub ("^%s*(.-)%s*$", "%1"))
end
-- Configure the ESP as a station (client)
wifi.setmode (wifi.STATION)
wifi.sta.config (SSID, SSID_PASSWORD)
wifi.sta.autoconnect (1)
-- Hang out until we get a wifi connection before the httpd server is started.
wait_for_wifi_conn ( )
-- Create the httpd server
svr = net.createServer (net.TCP, 30)
-- Server listening on port 80, call connect function if a request is received
svr:listen (80, connect)
-------------------------------------------------------------
Un altro aspetto e' quello di settare l'ESP8266 come un Access Point con i comandi
-------------------------------------------------------------
cfg.pwd="xxxxxxxxxxxxxi"
wifi.ap.config(cfg)
wifi.setmode(wifi.SOFTAP)
-------------------------------------------------------------
Il costo di ogni kit e' di circa 7 Euro (sui vari ecommerce cinesi per esempio Banggood)
Per la programmazione su Windows Xp e' necessario prima scaricare il driver della porta CP210x da questo link
In seguito e' conveniente flashare il modulo mediante il programma (senza questa operazione non riuscivo a comunicare con la scheda) che puo' essere reperito a questo link (cartella WIN32/Realease/ESP8266Flasher.exe) .
La scheda mi e' arrivata con questo firmware
NodeMcu 0.9.2 build 20141207 powered by Lua 5.1.4
ed e' stata aggiornata a
NodeMCU 0.9.5 build 20150318 powered by Lua 5.1.4(i firmware di sviluppo si scaricano da questo indirizzo)
Con il primo firmware c'era sempre un errore sul comando tmr, con il secondo firmware tutti gli script che si trovano su internet funzionano correttamente
L'uso e' molto semplice, basta selezionare la porta COM e lanciare l'operazione che dura un paio di minuti
Come dice il nome il metodo di programmazione della scheda e' in LUA e si puo' utilizzare il programma LuaLoader
Per connettersi con la scheda si deve andare nel menu Settings/COMM Port Settings e selezionare la porta virtuale (nel mio caso la Comm37) e poi effettuare il Connect. In caso di connessione diventa verde il box in alto a sinistra.
Esiste anche un'altro ambiente di sviluppo ESPlorer (non e' stato impiegato durante la scrittura di questo post)
Per caricare i programmi questi si scrivono in un editor di testo ed poi effettuato l'upload con il comando Upload File. Per mandare in esecuzione il programma si seleziona dal menu a tendina lo script desiderato e si lancia dofile
Attenzione : tutti i file di cui si fa l'upload rimangono in memoria. Per rimuoverli si devono selezionare dal menu a tendina e poi eseguire remove. Per visualizzare la memoria libera si puo' cliccare sul pulsante Heap
Per mandare in esecuzione automatica un programma all'accensione si deve nominare come init.lua. Questo espone ad un rischio ovvero che se il programma va in loop inifinito non c'e' modo di riprendere il controllo della scheda (i file sopravvivono ad un flash della scheda) . Conviene scrivere un init.lua che comprenda righe del tipo
-----------------------------------------
tmr.alarm(0, 1000000, 0, function()
dofile("mioprogramma.lua")
end)--------------------------------------------------
in modo da ritardare la partenza di mioprogramma.lua di 10 secondi e poter nel frattempo premere il comando tmr.stop per interrompere l'esecuzione automatica
Il pinout della scheda e' il seguente
Per modificare lo stato dei pin digitali si puo' eseguire le seguenti chiamate
In questo caso si setta a 1 il pin GPIO 1 ovvero D10
pin=1
gpio.mode(pin, gpio.OUTPUT)
gpio.write(pin, gpio.HIGH)
e per invece settare 0 sul pin 1
gpio.write(pin, gpio.LOW)
La scheda ha una tensione di lavoro di 3.3 V per cui lo stato 1 vale 3.3 V
Ovviamente avendo una scheda WiFi e' interessante sfruttare la connessione di rete
Con questo script la scheda diventa un web server
-------------------------------------------------------------
-- Simple NodeMCU web server (done is a not so nodeie fashion :-)
--
-- Written by Scott Beasley 2015
-- Open and free to change and use. Enjoy.
--
-- Your Wifi connection data
local SSID = "XT1032 3365"
local SSID_PASSWORD = "XXXXXXXX"
local function connect (conn, data)
local query_data
conn:on ("receive",
function (cn, req_data)
query_data = get_http_req (req_data)
print (query_data["METHOD"] .. " " .. " " .. query_data["User-Agent"])
cn:send ("Hello World from ESP8266 and NodeMCU!!")
-- Close the connection for the request
cn:close ( )
end)
end
function wait_for_wifi_conn ( )
tmr.alarm (1, 1000, 1, function ( )
if wifi.sta.getip ( ) == nil then
print ("Waiting for Wifi connection")
else
tmr.stop (1)
print ("ESP8266 mode is: " .. wifi.getmode ( ))
print ("The module MAC address is: " .. wifi.ap.getmac ( ))
print ("Config done, IP is " .. wifi.sta.getip ( ))
end
end)
end
-- Build and return a table of the http request data
function get_http_req (instr)
local t = {}
local first = nil
local key, v, strt_ndx, end_ndx
for str in string.gmatch (instr, "([^\n]+)") do
-- First line in the method and path
if (first == nil) then
first = 1
strt_ndx, end_ndx = string.find (str, "([^ ]+)")
v = trim (string.sub (str, end_ndx + 2))
key = trim (string.sub (str, strt_ndx, end_ndx))
t["METHOD"] = key
t["REQUEST"] = v
else -- Process and reamaining ":" fields
strt_ndx, end_ndx = string.find (str, "([^:]+)")
if (end_ndx ~= nil) then
v = trim (string.sub (str, end_ndx + 2))
key = trim (string.sub (str, strt_ndx, end_ndx))
t[key] = v
end
end
end
return t
end
-- String trim left and right
function trim (s)
return (s:gsub ("^%s*(.-)%s*$", "%1"))
end
-- Configure the ESP as a station (client)
wifi.setmode (wifi.STATION)
wifi.sta.config (SSID, SSID_PASSWORD)
wifi.sta.autoconnect (1)
-- Hang out until we get a wifi connection before the httpd server is started.
wait_for_wifi_conn ( )
-- Create the httpd server
svr = net.createServer (net.TCP, 30)
-- Server listening on port 80, call connect function if a request is received
svr:listen (80, connect)
-------------------------------------------------------------
Un altro aspetto e' quello di settare l'ESP8266 come un Access Point con i comandi
-------------------------------------------------------------
cfg={}
cfg.ssid="LucaInno"cfg.pwd="xxxxxxxxxxxxxi"
wifi.ap.config(cfg)
wifi.setmode(wifi.SOFTAP)
-------------------------------------------------------------
mercoledì 21 ottobre 2015
Garmin 12 XL e GPS Differenziale
A lavoro utilizzo un vecchio Garmin 12 XL, un modello piuttosto datato visto che risale circa al 1998 con un modesto ricevitore a 12 canali
Lo ho sempre usato come sistema di campagna speditivo ma ho scoperto che e' possibile ottenere i dati raw delle acquisizione (non quindi le semplici stringhe NMEA) mediante dei comandi non documentati.
Per fare cio' si puo' utilizzare il programma descritto a questo link e che puo' essere scarica da qui (il programma e' piuttosto vecchio, datato 2000, ma e' ancora funzionante su Linux ...ps il programmatore e' ancora contattabile per mail ma risponde che non mantiene piu' il programma quindi bisogna arrangiarsi da soli)
Il dispositivo deve essere collegato al PC mediante il cavo seriale con un connettore proprietario di Garmin (dato che l'altro lato ha un connettore DB9 attualmente e' necessario usare un cavo USB2Serial ma non sono stati riscontrati problemi)
Sul GPS deve essere impostato nel Menu Principale/ Menu Setup/Interfaccia in modalita' GRMN/GRMN.
Per iniziare l'acquisizione si collega il GPS al PC e si lancia il comando
./async_1_23 -a -r -rinex -t 1200 -p ttyUSB1
il parametro -t 1200 indica il tempo di acquisizione in secondi (20 minuti)
il parametro -p ttyUSB1 indica la porta seriale
viene quindi creato un file binario con estensione .g12
Per passare dal formato binario al formato RINEX si digita
,/gar2rnx_1_48 file.g12 -area FIRE -f
viene quindi creato un file con estensione .15O il cui nome inizia per la sigla FIRE (puo' essere modificata)
Il contenuto di questo file e' in formato RINEX
-----------------------------------------------------------------------
2 OBSERVATION FILE GPS NAVSTAR RINEX VERSION / TYPE
GAR2RNX 1.48 Any GPS12 Owner Wed Oct 21 10:20:44 PGM / RUN BY / DATE
** gar2rnx (Garmin to Rinex) generates Rinex2 files COMMENT
** from a GPS12 (or XL) (Copyright Antonio Tabernero) COMMENT
** Generated from G12 data file: 286475.g12 COMMENT
** Options: -area FIRE -f COMMENT
Garmin MARKER NAME
Number of Antenna marker MARKER NUMBER
Your name here Your boss here OBSERVER / AGENCY
096 GPS 12XL SOFTWARE 4.58 REC # / TYPE / VERS
0 GPS12 Internal Antenna ANT # / TYPE
** Position from first 3D fix of the receiver COMMENT
4523901.4321 898264.7768 4390920.8765 APPROX POSITION XYZ
0.0000 0.0000 0.0000 ANTENNA: DELTA H/E/N
1 0 WAVELENGTH FACT L1/2
2 C1 L1 # / TYPES OF OBSERV
2015 10 21 7 35 0.002589 GPS TIME OF FIRST OBS
1 INTERVAL
END OF HEADER
15 10 21 07 35 0.0025890 0 6G16G20G21G26G27G29
22487277.418 7 3534097.662 7
23082055.829 7 3802321.421 7
21737892.870 8 3820190.731 8
21215257.724 9 3725662.773 9
24786222.492 7 3158539.883 7
22957023.360 7 4097166.888 7
15 10 21 07 35 1.0026085 0 6G16G20G21G26G27G29
22493017.729 7 3564265.832 7
23088238.244 7 3834813.615 7
21744098.021 8 3852799.017 8
21221310.975 9 3757472.446 9
..............................................
-----------------------------------------------------------------------
A questo punto si puo' utilizzare il file per inviarlo a qualche servizio gratuito di postprocessing per ottenere il DGPS. Ed a questo punto sorge un problema. Molti dei servizi (come OPUS e Trimble) richiedono che sia presenti nel file RINEX anche le informazioni di L2 mentre il ricevitore Garmin riporta solo quelle L1 (peraltro non ci sono nemmeno limiti minimi del tempo di acquisizione come su Trimble).
Per fortuna il servizio National Resource Canada non ha questa limitazione ed invia per mail il risultato dell'elaborazione (esiste il limite che e' disponibile solo il datum NAD83 che si ritrova anche sul Garmin 12XL)
Aumentando il tempo di acquisizione il valore del Sigma95% si riduce sensibilmente anche se la precisione e' ben lontana dal valore centimetrico (cio nonostante la precisione ottenuta e' nettamente migliore di quella derivante dall'analisi dei dati NMEA del medesimo ricevitore)
Lo ho sempre usato come sistema di campagna speditivo ma ho scoperto che e' possibile ottenere i dati raw delle acquisizione (non quindi le semplici stringhe NMEA) mediante dei comandi non documentati.
Per fare cio' si puo' utilizzare il programma descritto a questo link e che puo' essere scarica da qui (il programma e' piuttosto vecchio, datato 2000, ma e' ancora funzionante su Linux ...ps il programmatore e' ancora contattabile per mail ma risponde che non mantiene piu' il programma quindi bisogna arrangiarsi da soli)
Il dispositivo deve essere collegato al PC mediante il cavo seriale con un connettore proprietario di Garmin (dato che l'altro lato ha un connettore DB9 attualmente e' necessario usare un cavo USB2Serial ma non sono stati riscontrati problemi)
Sul GPS deve essere impostato nel Menu Principale/ Menu Setup/Interfaccia in modalita' GRMN/GRMN.
Per iniziare l'acquisizione si collega il GPS al PC e si lancia il comando
./async_1_23 -a -r -rinex -t 1200 -p ttyUSB1
il parametro -t 1200 indica il tempo di acquisizione in secondi (20 minuti)
il parametro -p ttyUSB1 indica la porta seriale
viene quindi creato un file binario con estensione .g12
Per passare dal formato binario al formato RINEX si digita
,/gar2rnx_1_48 file.g12 -area FIRE -f
viene quindi creato un file con estensione .15O il cui nome inizia per la sigla FIRE (puo' essere modificata)
Il contenuto di questo file e' in formato RINEX
-----------------------------------------------------------------------
2 OBSERVATION FILE GPS NAVSTAR RINEX VERSION / TYPE
GAR2RNX 1.48 Any GPS12 Owner Wed Oct 21 10:20:44 PGM / RUN BY / DATE
** gar2rnx (Garmin to Rinex) generates Rinex2 files COMMENT
** from a GPS12 (or XL) (Copyright Antonio Tabernero) COMMENT
** Generated from G12 data file: 286475.g12 COMMENT
** Options: -area FIRE -f COMMENT
Garmin MARKER NAME
Number of Antenna marker MARKER NUMBER
Your name here Your boss here OBSERVER / AGENCY
096 GPS 12XL SOFTWARE 4.58 REC # / TYPE / VERS
0 GPS12 Internal Antenna ANT # / TYPE
** Position from first 3D fix of the receiver COMMENT
4523901.4321 898264.7768 4390920.8765 APPROX POSITION XYZ
0.0000 0.0000 0.0000 ANTENNA: DELTA H/E/N
1 0 WAVELENGTH FACT L1/2
2 C1 L1 # / TYPES OF OBSERV
2015 10 21 7 35 0.002589 GPS TIME OF FIRST OBS
1 INTERVAL
END OF HEADER
15 10 21 07 35 0.0025890 0 6G16G20G21G26G27G29
22487277.418 7 3534097.662 7
23082055.829 7 3802321.421 7
21737892.870 8 3820190.731 8
21215257.724 9 3725662.773 9
24786222.492 7 3158539.883 7
22957023.360 7 4097166.888 7
15 10 21 07 35 1.0026085 0 6G16G20G21G26G27G29
22493017.729 7 3564265.832 7
23088238.244 7 3834813.615 7
21744098.021 8 3852799.017 8
21221310.975 9 3757472.446 9
..............................................
-----------------------------------------------------------------------
A questo punto si puo' utilizzare il file per inviarlo a qualche servizio gratuito di postprocessing per ottenere il DGPS. Ed a questo punto sorge un problema. Molti dei servizi (come OPUS e Trimble) richiedono che sia presenti nel file RINEX anche le informazioni di L2 mentre il ricevitore Garmin riporta solo quelle L1 (peraltro non ci sono nemmeno limiti minimi del tempo di acquisizione come su Trimble).
Per fortuna il servizio National Resource Canada non ha questa limitazione ed invia per mail il risultato dell'elaborazione (esiste il limite che e' disponibile solo il datum NAD83 che si ritrova anche sul Garmin 12XL)
Aumentando il tempo di acquisizione il valore del Sigma95% si riduce sensibilmente anche se la precisione e' ben lontana dal valore centimetrico (cio nonostante la precisione ottenuta e' nettamente migliore di quella derivante dall'analisi dei dati NMEA del medesimo ricevitore)
martedì 20 ottobre 2015
IBeacon con AC-BT-V4
Il modulo AC-BT-V4, visto nel precedente post, conosciuto anche come HM-10 e basato su CC2540 puo' funzionare non solo come scanner di beacon ma effettuare anche il broadcast come IBeacon (attenzione, io ho usato la versione V540, il firmware puo' essere richiesto con il comando AT+VERR?)
In questo caso non e' necessario utilizzarlo come una Arduino ma puo' essere utilizzato un semplice cavo FTDI-USB
Per effettuare il broadcast del beacon basta cambiare il ruolo
AT+ROLE0
si puo' modificare sia l'UUID che il Major ed il Minor. Per esempio con i due comandi sottostanti si imposta sia il Major che il Minor a 255
AT+MARJ0x00FF
AT+MINO0x00FF
Le impostazioni permangono anche se si toglie l'alimentazione. Al successivo riavvio si troveranno impostati i propri valori di Major e Minor ed il dispositivo iniziera' ad effettuare subito broadcast senza necessita' di ulteriori comandi
In questo caso non e' necessario utilizzarlo come una Arduino ma puo' essere utilizzato un semplice cavo FTDI-USB
Per effettuare il broadcast del beacon basta cambiare il ruolo
AT+ROLE0
si puo' modificare sia l'UUID che il Major ed il Minor. Per esempio con i due comandi sottostanti si imposta sia il Major che il Minor a 255
AT+MARJ0x00FF
AT+MINO0x00FF
Il primo beacon osservato e' il dispositivo AC-BT-V4 |
Le impostazioni permangono anche se si toglie l'alimentazione. Al successivo riavvio si troveranno impostati i propri valori di Major e Minor ed il dispositivo iniziera' ad effettuare subito broadcast senza necessita' di ulteriori comandi
Iscriviti a:
Post (Atom)
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...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...