giovedì 18 settembre 2025

Decodificare messaggi DSC con .NET: il mio nuovo progetto open source

Negli ultimi giorni mi sono divertito a mettere insieme due mondi che mi affascinano da sempre: la programmazione e la radio. Da questo mix è nato un nuovo progettino che ho deciso di condividere con tutti: TAOSW.DSC_Decoder.

Chi bazzica il mondo delle comunicazioni marittime probabilmente ha già sentito parlare di DSC (Digital Selective Calling). È quel sistema che le navi usano per scambiarsi messaggi digitali via radio, ad esempio per fare chiamate di soccorso, o semplicemente per mandarsi informazioni senza dover stare in ascolto continuo.

L’idea

Volevo costruire una libreria che facesse il “lavoro sporco” di decodifica direttamente dal segnale audio, così da poter essere riutilizzata in altri progetti senza dover reinventare la ruota ogni volta e costatando che online non ci sono molte risorse e librerie da utilizzare.

La libreria prende in ingresso l’audio proveniente da una radio SDR o da un ricevitore HF in modalità USB (SSB), e da lì tira fuori i messaggi DSC in chiaro.

Insomma: SDR → audio → libreria .NET → messaggi DSC belli pronti.



Cosa fa al momento

  • Riesce a sincronizzare e decodificare il bitstream in tempo reale.

  • Interpreta i messaggi secondo lo standard DSC.

  • È scritta in C# e gira in ambiente .NET, quindi facile da integrare in altri software.

  • È open source, quindi migliorabile da chiunque voglia sporcarcisi le mani.

Perché pubblicarla?

Perché so che là fuori ci sono tanti appassionati di SDR e di radio che magari hanno voglia di sperimentare, integrare o semplicemente curiosare dentro il codice. E poi, diciamocelo: i progetti lasciati chiusi in un hard disk non servono a nessuno.

Vuoi provarla?

Il codice è su GitHub:
https://github.com/alemassimo/TAOSW.DSC_Decoder

Se ti va di testarla, dammi feedback, apri issue o, ancora meglio, manda una pull request. Anche solo una ⭐ è benvenuta!


Per me questo è solo l’inizio: l’obiettivo è aggiungere nuove funzioni, magari un’interfaccia grafica con livello del segnale e waterfall, mappa con le posizioni delle stazioni e delle navi, e chissà cos’altro. Intanto, se ti interessa il mondo radio e ti piace smanettare con .NET, fai un giro sul repo e dimmi cosa ne pensi.

E come si dice in radio… 73! 

lunedì 23 giugno 2025

LocalMapHtml: Un Mini Tool per l'Analisi Marittima

LocalMapHtml è un progetto open-source ospitato su GitHub, creato per facilitare l'analisi marittima attraverso un'interfaccia web interattiva. Questo strumento consente agli utenti di aggiungere, visualizzare e gestire funzionalità geografiche su una mappa in modo semplice e intuitivo.


Caratteristiche Principali

- **Inserimento di Poligoni**: Permette di definire zone marittime o aree di interesse inserendo una lista di coordinate.

- **Aree Circolari**: Aggiunge aree circolari specificando un centro e un raggio, ideale per visualizzare zone di sicurezza.

- **Marker Personalizzati**: Consente di posizionare marker personalizzati sulla mappa caricando immagini locali.

- **Etichette e Linee**: Aggiunge etichette e disegna linee tra punti sulla mappa, mostrando lunghezza e direzione.

- **Clipboard di Coordinate**: Mostra le coordinate correnti e permette di copiarle facilmente.

- **Reset Completo**: Rimuove istantaneamente tutti gli elementi dalla mappa.


Come Utilizzarlo


1. Scarica o clona il repository da GitHub https://github.com/alemassimo/LocalMapHtml.

2. Apri il file `map.html` nel tuo browser web.


Non è necessaria alcuna installazione o server esterno; tutte le funzionalità sono disponibili localmente.


Casi d'Uso Tipici

- Pianificazione e analisi di aree marittime.

- Visualizzazione di zone di sicurezza o esclusione.

- Annotazione della mappa con etichette e marker.


Requisiti


- Un browser web moderno (Chrome, Firefox, Edge, Safari, ecc.).

- Connessione internet per caricare le mappe (OpenStreetMap e OpenSeaMap).


LocalMapHtml è stato sviluppato per marittimi, ricercatori ed appassionati che necessitano di un modo rapido e interattivo per analizzare e annotare mappe marittime localmente.

Spero torni utile a qualcuno.

Per altre info contattatemi pure alemassimoChiocciolaYahoo.it .

giovedì 29 dicembre 2022

Sailboat Polar Chart Builder . Nuovo rilascio.

 Cosa è Sailboat Polar Chart Builder è spiegato in questo precedente articolo : https://elettromente.blogspot.com/2022/06/sailboat-polar-chart-builder-ti-aiuta.html

La novità è che adesso è presente una nuova versione del Software con alcune migliorie che rendono l'uso più facile e intuitivo.



Oltre alla correzione di alcuni bachi riporto qui alcune delle nuove funzionalità:

  • E' possibile adesso espandere a pieno schermo l'applicazione con il conseguente ingrandimento del grafico polare per una migliore consultazione.
  • Sono state introdotte delle scritte che descrivono più chiaramente lo stato di connessione/disconnessione e di acquisizione dei dati.
Il link per il download è sempre lo stesso: https://www.dropbox.com/s/5yolkhd31j2ai17/SPCB_beta.rar?dl=0

Come sempre qualunque feedback da parte vostra è più che gradito.

Buon vento!

giovedì 16 giugno 2022

Sailboat Polar Chart Builder helps you to create polar diagram for your sailboat

First of all , sorry for my bad english ... 

The boats are very different from each other, as are the styles of the captains who lead them: there is the loner, the regatta man and who enjoy the journey without considering speed at all. This does not mean that having a reference, and therefore a diagram of how our boat proceeds according to the weather conditions, allows us to better plan our routes with more safety.

What I propose is the use of a free software Sailboat Polar Chart Builder very easy to use which, with the help of your onboard GPS (or Water sensor if present) and your wind station, will record the boat's performance for you and compile a file with the polar of the boat (CSV) to be used in other planning software or you can print your polar chart to always have it at hand.

At the moment the software is released in BETA version completely free of charge and therefore all your feedback is more than appreciated.





note: The data displayed in the image are not true as they are obtained from a simulation.


How does it work.

Sailboat Polar Chart Builder collect the data coming from a connection (TCP) on which the NMEA messages travel by taking the important ones in order to plot the polar chart which are:

WIMWV - this type of message contains the intensity and direction of the wind data relative to boat.

GPRMC - the message contains data relating to speed and position of the boat.

What you need to do is connect to a TCP server that can provide such data (for example an outgoing connection from OpenCPN) and begin collecting data from the boat for a long enough period to be able to have the amount of information necessary to create a detailed polar chart of the boat.

Requirements

At the moment the software has been tested to work only on the Windows 10/11 operating system and does not require any particular performance from the PC.
In the future, a Mobile App could be created that does the same job but more affordable for everyone.

Tutorial. How to use.

The first thing to do is to have software that provides wind and gps data, in this tutorial we will use OpenCPN.
First of all, let's create an outgoing connection from OpenCPN where we will publish all the NMEA messages and therefore also the messages coming from our wind and GPS station:


It is important to enter the IP 0.0.0.0 in the network address which indicates to openCPN that it must be a Server to which our software will have to connect.

Once this is done we can start our software and configure the connection to our server:

In box 1 shown in the image above we must put the IP address of our server (e.g. where OpenCPN resides), if our software runs on the same machine we can write localhost and in the Port Number field we will put the same port number used by the our server (eg 10112) at this point we can click on the Connect button which, if all goes well, will change its wording to Disconnect (see first image). We are now ready to receive the data we need.

Box 2 of the image above shows the section where the acquisition of data arriving from the instruments is managed.
First of all we choose the interval with which these data are collected, too small interval can collect data too quickly respect to variations of navigation conditions, a good compromise is to set 60 to 120 seconds as an interval for each acquisition, if you provide for long periods of navigation this value can also be set much higher.
Once the interval has been set, we can press the START button to start the acquisition and if everything works as it should, the "Number of measures" counter should begin to increase its value. It is important that the acquisitions are stopped when you intend to moor, anchor or in general not to use the sails of the boat.

Also from box 2 it is possible, through the SAVE, LOAD and RESET buttons, respectively
save the "raw" data acquired on a file and then resume the measurements at another time,
load the previously saved acquisitions to be able to integrate them with the new ones arriving from the server,
reset and then delete all the acquired data that the software keeps in memory.

When we have a considerable number of data: that is, when we have acquired data of the boat in all speeds and for different wind intensities we can proceed (in box 3 of the image) to the data analysis to build our graph and our file csv with polars.

We first proceed in choosing the intervals between one wind speed and another and immediately afterwards it is possible to generate the graph through the CALCULATE button.

Here you have 2 possible choices:
print the graph obtained through the PRINT button
or create the file with the polars in CSV format that you can use with your planning software: one above all qtVlm.
Before using the file it is necessary to look at its content, if inside there are values marked as null then it will be necessary to integrate by making other detections or alternatively add manually the missing values.


04/01/23 New release

In addition to fixing some bugs, here are some of the new features:

- It is now possible to expand the application to full screen with the consequent enlargement of the polar graph for better consultation.

- Texts have been introduced that describe the connection/disconnection and data acquisition status more clearly.


Installation

Download the software from this link:

Those who do not have a DropBox account can still download the file by clicking at the top left on DOWNLOAD always on the link page above.

Unzip compressed file into a folder with everything you need to run the software inside.

Run the PolarChartGUI.exe file.

For any info / help or bug report you can contact me on the email alemassimo[@]yahoo.it ( remove [ ])


Fair wind!

mercoledì 15 giugno 2022

Sailboat Polar Chart Builder ti aiuta a creare diagramma polare per la tua barca a vela

Come ben descritto sulla pagina di  https://www.boatsnews.it/.
Per le barche a vela, il polare è una rappresentazione grafica che esprime la velocità di una barca in funzione della direzione e della forza del vento. In generale, questo grafico ha la forma di un diagramma semicircolare, in quanto i risultati sono considerati identici entrambe i lati della barca.
In altre parole, se conoscete l'intensità e l'angolo del vento, il polare vi dirà quanto velocemente dovrebbe andare la vostra barca.

Le barche sono molto diverse tra di loro, come sono diversi gli stili dei capitani che le conducono: c'è il solitario , il regatista, quello dal Gennaker facile e quelli che si godono il viaggio non considerando affatto al velocità. Ciò non toglie che avere un riferimento , e quindi un schema di come la nostra barca procede asseconda delle condizioni meteo, ci permette di pianificare al meglio le nostre rotte con più sicurezza.


Quello che vi propongo ( detta così sembra che vendi pentole) è l'uso di un software gratuito Sailboat Polar Chart Builder molto semplice da utilizzare che, con l'aiuto del vostro GPS di bordo ( o se disponibile dal LOG) e della vostra stazione del vento, registrerà per voi le prestazioni della barca e compilerà per voi un file con le polari della barca (CSV) da poter utilizzare in altri software di pianificazione oppure potete stampare il vostro grafico polare per averlo sempre a portata di mano. 


Al momento il software viene rilasciato in versione BETA del tutto gratuitamente e quindi ogni vostro feedback è più che apprezzato.

NB : I dati visualizzati nell'immagine non sono veritieri in quanto ottenuti da una simulazione.
Ci tengo comunque  a precisare che il software "Sailboat Polar Chart Builder":

IL SOFTWARE VIENE FORNITO "COSÌ COM’È", SENZA GARANZIE SALVO PER QUANTO ESPLICITAMENTE INDICATO NEL PRESENTE. Tao Energy srl NON CONCEDONO ALCUNA GARANZIA PER IL SOFTWARE O LA RELATIVA DOCUMENTAZIONE IN TERMINI DI CORRETTEZZA, ACCURATEZZA, AFFIDABILITÀ O ALTRO. Tao Energy srl  DECLINA ESPLICITAMENTE EVENTUALI GARANZIE IMPLICITE, INCLUSE, IN VIA DEL TUTTO ESEMPLIFICATIVA, GARANZIE IMPLICITE RELATIVE AL TITOLO, ALLA DISPONIBILITÀ, ALLE PRESTAZIONI, ALLA NON INFRAZIONE, ALLA COMMERCIABILITÀ O ALL’ADEGUATEZZA A SCOPI SPECIFICI. L’UTENTE SI ASSUME TOTALMENTE IL RISCHIO IN TERMINI DI RISULTATI E PRESTAZIONI DEL SOFTWARE.


Come funziona.

Sailboat Polar Chart Builder non fa altro che collezionare i dati provenienti da una connessione (TCP) su cui viaggiano i messaggi NMEA prelevando quelli importanti al fine della tracciatura del grafico polare che sono:

  • WIMWV - questa tipologia di messaggio contiene al suo interno i dati relativi alla intensità e alla direzione del vento rispetto alla barca
  • GPRMC - il messaggio contiene i dati relativi alla velocità e alla posizione della barca
  • IIVHW - messaggio dal sensore LOG che indica la velocità relativamente all'acqua
Quello che bisogna fare e connettersi ad un server TCP che possa fornire tali dati ( come potrebbe essere per esempio una connessione in uscita da OpenCPN) e cominciare a raccogliere i dati provenienti dalla barca per un periodo abbastanza lungo da poter avere la quantità di informazioni necessaria a creare un grafico polare abbastanza dettagliato della barca.

Requisiti

Al momento il software è stato testato per funzionare solo su sistema operativo Windows 10/11 e non necessita di particolari prestazioni da parte del PC. 
In futuro si potrebbe creare una App Mobile che faccia lo stesso lavoro ma più alla portata di tutti.

Tutorial. Come si usa.

La prima cosa da fare è avere un software che fornisca i dati relativi a vento e gps, in questo tutorial useremo OpenCPN.
Per prima cosa quindi creiamo una connessione in uscita da OpenCPN dove pubblicheremo tutti i messaggi NMEA e quindi anche i messaggi provenienti dalla nostra stazione del vento e del GPS:


Importante è inserire nell'indirizzo di rete l'IP 0.0.0.0 che indica a openCPN che deve fungere da Server a cui il nostro software dovrà poi collegarsi .

Per altre info sulle connessioni vi rimando alla pagina di OpenCPN .

Fatto ciò possiamo avviare il nostro software e configurare la connessione verso il nostro server:

Nel riquadro 1 mostrato nell'immagine sopra dobbiamo mettere l'indirizzo IP del nostro server ( es. dove risiede OpenCPN) , se il nostro software viene eseguito sulla stessa macchina possiamo scrivere localhost  e nel campo Port Number metteremo lo stesso numero di porta utilizzato dal nostro server (es 10112) a questo punto possiamo cliccare su bottone Connect che , se tutto va bene , cambierà la sua dicitura in Disconnect (vedi prima immagine) . Ora siamo pronti a ricevere i dati che ci servono.

Il riquadro 2 dell'immagine sopra mostra la sezione dove viene gestita l'acquisizione dei dato che arrivano dagli strumenti. 
Innanzi tutto scegliamo l'intervallo con cui questi dati vengono prelevati, un intervallo troppo piccolo può raccogliere dati troppo velocemente rispetto alle variazione delle condizioni di navigazione della barca, un buon compromesso è impostare da 60 a 120 secondi come intervallo per ogni acquisizione, se si prevedono periodi lunghi di navigazione tale valore può essere impostato anche molto più alto.
Impostato l'intervallo possiamo schiacciare il bottone START per avviare l'acquisizione e se tutto funziona come deve il contatore "Number of measures" dovrebbe cominciare a incrementare il suo valore. E' importante che le acquisizioni vengano STOPpate quando si ha intenzione di ormeggiare, ancorare o in generale non utilizzare le vele della barca.

Sempre dal riquadro 2 è possibile , attraverso i bottoni SAVE LOAD e RESET, rispettivamente 
  • salvare i dati "grezzi" acquisiti su un file per poi riprendere le misurazioni in un altro momento
  • caricare le acquisizione precedentemente salvate per poterle integrare con le nuove che arrivano dal server 
  • resettare e quindi cancellare tutti i dati acquisiti che il software tiene in memoria.
Quando avremo un numero considerevoli di dati : e cioè quando avremo acquisito dati della barca in tutte le andature e per diverse intensità di vento possiamo procedere ( nel riquadro 3 dell'immagine) all'analisi dei dati per costruire il nostro grafico e il nostro file csv con le polari.

Procediamo per prima cosa nello scegliere gli intervalli tra una velocità di vento e un'altra e subito dopo è possibile generare il grafico attraverso il pulsante CALCULATE.

Qui avete 2 possibili scelte:
  • stampare il grafico ottenuto attraverso il bottone PRINT 
  • oppure creare il file con le polari in formato CSV che potete usare con i vostri software di pianificazione : uno su tutti qtVlm .
Prima di utilizzare il file è necessario guardare il suo contenuto, se al suo interno vi sono valori marcati come null allora sarà necessario integrare effettuando altre rilevazioni oppure in alternativa aggiungere manualmente i valori che mancano.


Installazione

Scaricare il software da questo link :

Chi non ha un account DropBox può comunque scaricare il file cliccando in alto a sinistra su SCARICA sempre nella pagina del link qui sopra.

Scompattare in una cartella il file compresso con all' interno tutto quello che serve per eseguire il software.

Eseguire il file PolarChartGUI.exe .

Per qualsiasi info / aiuto o segnalazione di bug potete contattarmi sull'email alemassimo[chiocciola]yahoo.it


Buon vento!

martedì 9 febbraio 2021

Dalla carta nautica cartacea a quella digitale.

Si, si può creare una carta nautica elettronica a partire dall'immagine o meglio da una sua scansione.


La prima cosa da fare è ottenere una scansione della mappa nautica cartacea attraverso uno scanner in modo da ottenere una immagine proporzionata su tutti i lati della mappa, o in alternativa è possibile scattare una foto e poi correggere le proporzioni con una delle diverse app presenti sui nostri telefonini ( Office Lens per citarne una... qui un post che ne spiega il funzionamento).
Inutile dire che migliore sarà la scansione e maggiore sarà la nitidezza della mappa digitale da utilizzare poi sul nostro plotter.

Adesso è necessario procurarsi il software che ci permetterà di effettuare tale migrazione, il nome del nostro programmino è imgcalkap ed è possibile ottenerlo gratuitamente da questa pagina https://github.com/dgiardini/imgcalkap/releases/tag/0.3 . 
Una volta scaricato lo Zip file non è necessario avviare nessuna installazione, ma bisogna scompattarlo in una qualsiasi cartella e il programma è così già pronto per il suo utilizzo.


Vediamo quali sono i passi per effettuare la nostra digitalizzazione:

Per prima cosa bisogna avviare l'eseguibile imgcalkap.exe , quello che vedremo è una finestra come nell'immagine che seguente.

Cliccando da una qualsiasi parte dell'immagine centrale si apre una nuova finestra che ci permette di importare la nostra immagine precedentemente scansionata della carta nautica.
Fatto questo vedremo la nostra immagine nella finestra del programma:

Noterete la presenza di una piccola finestra sulla sinistra che visualizza una sezione ingrandita della parte su cui si trova il puntatore del mouse, questo ci servirà per selezionare in modo preciso dei punti sulla mappa.
E infatti la prima cosa che dobbiamo fare è inserire i punti di calibrazione , questi serviranno poi per ottenere le informazioni necessarie per il corretto posizionamento della mappa sul nostro plotter.
Per aggiungere un punto di calibrazione bisogna puntare con il mouse un punto della mappa di cui si conoscono con precisione le coordinate ( latitudine e longitudine) e premere il tasti , a questo punto comparirà sulla mappa un marcatore rosso che indica che il punto è stato marcato.
Si può eliminare il punto appena selezionato puntando il nostro marcatore e successivamente premendo il tasto D.
Invece cliccando col tasto destro sul nostro marcatore rosso sarà possibile specificare qual è la sua posizione in termini di latitudine e longitudine.
Per l'ottenimento della nostra mappa digitale è necessario specificare almeno 2 di questi punti di calibrazione, ancora meglio se tali punti sono posizionati sugli angoli opposti della mappa. 

A questo punto possiamo specificare quelle che sono le informazioni generali della nostra mappa, per fare ciò possiamo cliccare con il destro del mouse su una qualsiasi parte della mappa, si aprirà una nuova finestra chiamata Chart info in cui bisogna specificare il tipo di proiezione, la scala ecc...
Solitamente i soli 3 campi da riempire sono i primi tre: nome, descrizione e scala.

A questo punto il programmino ha tutti i dati necessari per generare la nostra carta nautica digitale. 

L'ultimo passo da eseguire è premere il tasto S che aprirà una nuova finestra la quale ci permetterà di scegliere la cartella di salvataggio.
Verranno prodotti di fatto 2 file , uno con estensione .KAP e un altro con stesso nome ma con estensione .TXT. 
Entrambe i file sono adesso pronti per essere utilizzate dal vostro plotter.
Naturalmente quello che abbiamo ottenuto è una carta piatta ( una immagine) e non una carta vettoriale.
Ho provato l'utilizzo dei file generati come mappe su openCPN senza nessun problema.

Aspetto i vostri feedback!





Troppo complicato? Contatta la TAO Software  attraverso il modulo contatti, per pochi euro offre il servizio (bisogna fornire una foto o una scansione con la migliore risoluzione possibile della mappa cartacea). 


martedì 2 febbraio 2021

Pilota a barra per barca con nodemcu

Piccolo progetto sviluppato durante il periodo di lockdown di questo maledettissimo 2020.


Di cosa si tratta: avevo un vecchio pilota automatico a barra (autohelm 800) per la mia piccola barchetta a vela che ormai non funzionava più e le uniche parti recuperabili erano l'involucro, la pulsantiera e il motorino con attuatore lineare, mi sono detto " e se rimpiazzo tutta la logica con una scheda arduino compatibile?", da questa semplice domanda ho fatto la lista della spesa cercando di riciclare quello che avevo già in casa ( cioè una schedina nodemcu con wifi e il modulo di controllo L298N per motori in cc), quindi ricapitolando :

- scheda di sviluppo open source ESP8266 NodeMCU
- ponte H L298N per pilotare il motore 
- motore cc già presente originale
- pulsantiera già presente originale

Mi sono orientato su questa funzionalità:
ricevere i dati nmea del navigatore attraverso il collegamento wifi su protocollo UDP della scheda nodemcu e utilizzare questi dati per pilotare il braccio dell'autopilota. Risultato PERFETTO! 

Ma vediamo i dettagli cominciando dall'hardware :
Come già detto del vecchio autohelm 800 ho riutilizzato il motore (in corrente continua), l'involucro plastico e la pulsantiera provvista di un led rosso molto comodo.

Mi sono studiato la pulsantiera e sono riuscito a mappare i collegamenti di ogni pulsante, attraverso l'uso di una breadboard ho testato il funzionamento mediante l'uso di una libreria per arduino scritta appositamente per tale scopo, trovate i dettagli a questo indirizzo Keypad library .

Qui di seguito lo schema elettrico della pulsantiera e di come è stata connessa alla scheda nodemcu:

Adesso passiamo al circuito per pilotare il motore in cc. Per tale scopo ho utilizzato un  ponte H ed esattamente il circuito L298N che oltre a fornire la componentistica per pilotare il motore ha anche una uscita da +5v ( pilotandolo con i 12v della batteria)  da utilizzare per alimentare la piccola scheda nodemcu.
I collegamenti sono molto semplici : il negativo della batteria è comune sia al L298N che alla scheda di controllo nodemcu, mentre l'alimentazione di quest'ultima viene prelevata dall'uscita da 5v del ponte H ( L298N).
A questi collegamenti vanno aggiunti quelli di controllo ( pin 1 e 2 ) che asseconda che essi sia in stato alto ( +5 v) o basso ( 0 v) determinano il senso di rotazione del motore secondo questo schema:

1 basso , 2 alto -> senso orario
1 alto , 2 basso -> senso antiorario
1 basso, 2 basso -> motore fermo 

A questo punto i collegamenti sono finiti e non resta che studiare bene come inscatolare il tutto.


Adesso passiamo al software:
Per un risultato ottimale quello che serve è un algoritmo basato sul controllo Proporzionale-Integrale-Derivativo, tale algoritmo consente un pilotaggio privo di oscillazioni e permette di effettuare le giuste correzioni di rotta.
L'algoritmo PID meriterebbe un post apposito per la piena comprensione ( perchè no ...).

Ma vediamo sia lo pseudo codice che il codice effettivo poi sviluppato per il nostro autopilota:

previous_error = 0
 integral = 0 
 start:
   error = setpoint - measured_value
   integral = integral + error*dt
   derivative = (error - previous_error)/dt
   output = Kp*error + Ki*integral + Kd*derivative
   previous_error = error
   wait(dt)
   goto start

I parametri fondamentali da settare sono Kp ( azione proporzionale), Kd ( azione derivativa)  e Ki (azione integrale).

Dopo diverse prove i valori che più hanno soddisfatto le mie attese sono stati questi :

float DT = 500;

float KP = 1.2;

float KI = KP/DT * 0.8;

float KD = KP*DT * 100;

dove DT è l'intervallo di tempo (millisecondi) tra una azione compensativa e l'altra.

Quello che segue è l'implementazione del pseudocodice appena visto adattato allo specifico utilizzo sull'autopilota a barra:


void calculateTargetMotorPosition()
{
  
  float headingDiff = targetHeading - Heading;
  if ( headingDiff > 180 ) headingDiff -= 360;
  if ( headingDiff < -180 ) headingDiff += 360;
  
  Error = Error + (headingDiff * DT);
  if ( Error > MaxError) Error = MaxError;
  if ( Error < MinError) Error = MinError;
  
  //Compute error derivative
  ErrorDer = (headingDiff - prevError)/DT;
  prevError = headingDiff;

  //Compute correction 
  Correction = KP * headingDiff;
  Correction += KD * ErrorDer;
  Correction += KI * Error ;
  if ( abs(Correction) > MaxCorrection) Correction = MaxCorrection;

  if ( abs(Correction) > MinCorrection ) moveMotor(abs(Correction), Correction > 0);
}

Il codice completo è disponibile a questo indirizzo: https://www.dropbox.com/s/5554l3br1wuzzof/AutopilotaPID.ino?dl=0

E' importante ricordarsi di configurare correttamente la connessione all hotspot Wifi della barca o del plotter nell'apposita sezione ( linee 12 e 13 del codice):

//WiFi Config

#define WIFI_SSID  "wifiSSIDName" 

#define WIFI_PASS "WifiPassword"


e configurare il plotter in modo tale che i dati relativi alla rotta da seguire e alla posizionje (gps) siano correttamente trasmessi all'autopilota sulla porta 10112 ( modificabile) su protocollo UDP :

unsigned int UDPPort = 10112;

In questo post potete trovare le informazioni per configurare OpenCPN  in modo tale da inviare le informazioni necessarie all'autopilota per poter funzionare. In particolare i messaggi NMEA che servono al pilota per funzionare sono ECAPB per l'ottenimento della rotta da seguire e ECRMC per acquisire quella che è la direzione attuale della barca (COG) .

Per chi non lo sapesse OpenCPN è un software open source disponibile per diversi sistemi operativi.  Questo software è in grado di trasformare un computer ( PC o mini computer come Raspberry) in un sistema cartografico.

Ma come funziona una volta programmato e montato ? 

Molto semplice: appena acceso l'autopilota può essere mosso attraverso i tasti +10 +1 -10 -1 della pulsantiera che muovono il braccio in maniera proporzionale al numero premuto.

In questa modalità la barra rimarrà ferma e il pilotaggio sarà totalmente manuale.

Per attivare il pilota automatico bisognerà premere il tasto AUTO ( rosso ), solo a questo punto il pilota automatico proverà a connettersi alla rete wifi, precedentemente configurata, e, se tutto funziona a dovere, comincerà a ricevere i dati di navigazione dal plotter, l'intermittenza del led confermerà che questo stia accadendo.

Il progetto è notevolmente migliorabile e sicuramente può essere arricchito di tante funzionalità ...

Aspetto i vostri feedback.



giovedì 6 febbraio 2020

Aggiornato twitterMonitor bot

Il bot su telegram per il monitoraggio delle attività di twitter è stato aggiornato per la risoluzione di alcuni problemi relativi alla visualizzazione dei tweets.

Ricordiamo quali sono le features al momento supportate dal bot :

  • monitoraggio attività di un determinato utente su twitter
  • vengono notificati nuovi tweet relativi ad un criterio di ricerca
  • viene notificata l'entrata di un specifica parola nei trends di una determinata area
Qui il link al bot : http://telegram.me/twittermonbot

martedì 18 dicembre 2018

Fatturazione elettronica obbligatoria dal 1° gennaio

Il nuovo obbligo parte, per tutti, il prossimo primo gennaio 2019 sia verso la Pubblica Amministrazione (PA) e sia tra privati (B2B).

La fattura elettronica è una fattura in formato digitale, introdotta dalla legge finanziaria, in cui l’Unione Europea invita gli Stati membri a prevedere un quadro normativo e tecnologico adeguato a gestire in maniera elettronica tutto il sistema di fatturazione e controllo fiscale.
La fattura elettronica può essere emessa verso la pubblica amministrazione e in questo senso l’obbligo di fatturazione elettronica esiste dal 2016 e riguarda tutti i soggetti con P.IVA.  

L’obbligo di fatturazione elettronica viene esteso al B2B (tra privati) dalla manovra dello scorso anno (legge 205/2017), e l’Agenzia delle Entrate ha  pubblicato le regole tecniche con la circolare del 30 aprile 2018. 
L’obbligo scatta dal 1 gennaio 2019, con l’unica esclusione delle piccole partite Iva in regime dei minimi o con regime forfettario.

L’intento del governo di estendere l’obbligatorietà della fatturazione elettronica a partire dal 2019 rappresenta uno dei più importanti tentativi di lotta all'evasione fiscale. E’ in effetti questo uno dei motivi fondamentali per i quali l’Italia ha chiesto alla Commissione Europea di poter introdurre nell'ordinamento nazionale l’obbligo di emettere fatture elettroniche anche nel settore privato.

La fatturazione elettronica consiste nell'utilizzare uno standard previsto che viene descritto in questa pagina appositamente creata sul portale https://www.fatturapa.gov.it , che stabilisce il formato (xml) e le modalità per lo scambio e la successiva conservazione delle fatture intercorrenti tra i titolari di partita IVA e la Pubblica Amministrazione.

Come Tao Software abbiamo già sviluppato dei moduli software gestionali per la generazione e l'invio delle FE e offriamo assistenza a tutti i possessori di partita iva per adempiere a tale obbligo scegliendo lo strumento software più adatto e provvedendo alla formazione per il suo utilizzo.

Per ulteriori informazioni e per contatti puoi accedere alla pagina facebook 

Oppure utilizzare il modulo contatti sul nostro sito https://www.taoe.it/software/

lunedì 26 novembre 2018

Twitter Monitor bot

Nuovo bot di telegram TwitterMonitor.

Vi presento questo nuovo bot di telegram appena sfornato che si chiama TwitterMonitor.
Già dal nome si può intuire il suo utilizzo, infatti si tratta di un bot che, opportunamente impostato, ti notifica ad esempio se un utente ha postato un tweet, magari contenente una determinata parola, oppure se c'è un nuovo tweet relativo ad una particolare ricerca o ancora se una determinata parola è entrata nei trends.

Per ottenere ciò bisogna configurare i così detti monitor che sono divisi in 3 tipologie distinte: 
  • Users -> per monitorare l'attività di un particolare utente ed essere avvisati se vengono postati tweet contenenti termini particolari oppure tutti i tweets.
  • Search -> per monitorare una particolare ricerca su twitter e ricevere una notifica quando un nuovo tweet inerente alla ricerca viene postato.
  • Trends -> monitorare le parole di tendenza in un particolare luogo ed essere avvisati se una particolare parola entra ad essere di tendenza e in quale posizione essa si posiziona.

Ma vediamo quali sono i possibili comandi e a cosa servono:

/mtrend -  Imposta il monitoraggio delle parole di tendenza
/muser - monitoraggio di un particolare utente di twitter
/msearch -monitoraggio di una ricerca particolare
/mdelete - cancellare uno dei monitoraggi impostati
/mlist - ricevere la lista dei monitoraggi configurati e abilitarli/disabilitarli opportunamente
/esc - uscire da una qualunque configurazione.

A questo link trovate il bot sul telegram bot store : https://storebot.me/bot/twittermonbot

Se avete già telegram vi basta avviarlo accedendo a questo link: http://telegram.me/twittermonbot

Per aiuto o info lasciate pure un commento!
Alla Prossima.


venerdì 29 giugno 2018

NavPlotter_PRO arriva l' E.T.A.

Aggiungi didascalia

E.T.A. ovvero estimated time of arrival.

Come fattomi notare da un utente/tester del mini navigatore NavPlotter_pro per windows 10 e Windows mobile, mancava una funzionalità abbastanza importante e utile: l'ora di arrivo (E.T.A.) stimata.
Tale ora di arrivo viene calcolata in base alla distanza che l'imbarcazione deve ancora percorrere per raggiungere l'ultimo WayPoint e alla velocità attuale (T = D / V) .

Con l'aggiornamento dell' App sullo Store di Microsoft, insieme alla risoluzione di alcuni bachi che mirano a rendere stabile e meno pesante il sistema uscirà questa nuova funzionalità.
Sarà visibile una textbox che fornirà l'ora di arrivo e asseconda dei casi anche la data.

Compatibilmente con i miei impegni spero in futuri di dare la possibilità di utilizzare anche mappe ti terze parti, visto che per l'italia la copertura delle mappe di OpenSeaMap risulta alquanto scarsa e priva di numerosi dettagli ( esempio le batimetriche).

Fortunati invece gli utilizzatori d'oltre oceano ( America del Nord) dove le mappe del NOAA sono molto dettagliate e aggiornate.
Ricordo che per poter utilizzare le mappe dell'uno o dell'altro provider ( NOAA o OpenSeaMap) è necessario settare l'apposito valore nel tab Conf dell'applicazione.

Buon Vento!

giovedì 19 ottobre 2017

NavPlotter_PRO aggiornamento.

Nuovo aggiornamento per il mio piccolo navigatore marino NavPlotter_PRO .


Oggi viene rilasciato un nuovo aggiornamento per il piccolo navigatore NavPlotter_PRO presente sul windows store. 
Sono stati risolti diversi problemini, ma direi che i più vistosi sono:
  1. il fastidioso sfarfallio delle mappe che si notava ogni volta che veniva aggiornata la propria posizione (fading) 
  2. risolti alcuni crash che rendevano l' applicazione instabile quando usata in modo prolungato.
Come suggeritomi da alcuni utenti nel prossimo aggiornamento punto a introdurre un parametro che stima , in base alla velocità, il tempo necessario per il raggiungimento dei waypoint (E.T.A.) .

Buona navigazione ... per i velisti... Buon vento!







mercoledì 12 luglio 2017

Navplotter_PRO

Navplotter_PRO è la versione a pagamento del mio piccolo navigatore marino.

E' possibile acquistare sullo Store di Windows a l'esorbitante prezzo di 0.99 € il nuovo navigatore marino che offre notevoli vantaggi rispetto al suo fratellino minore (gratuito) NavPlotter .

Vediamo quali sono le novità introdotte:

Mappe OFFLINE

Innanzi tutto è possibile utilizzare le mappe (di openseamap.org) anche in assenza di una connessione ad internet, come è noto accada in alto mare! Tale funzionalità viene abilitata andando nella scheda CONF e selezionando l'opzione Download Map Locally, fatto ciò il programma scarica in maniera trasparente all'utente le mappe localmente per poi essere utilizzate.

Salvataggio delle tue Rotte

E' stato predisposto un database locale dove poter conservare le proprie rotte in modo da poterle poi utilizzare quando servono.
A questo scopo sono stati aggiunti 2 bottoni vicini al bottone per impostare i waypoints.

Prossime features
Vediamo ora cosa c'è in programma con i prossimi rilasci:
  • possibilità di aggiungere punti di interessi e note personali sulla mappa in modo da avere sempre a portata di mano le proprie info relative ad un determinato posto.
  • Posizione delle navi con attivo il sistema AIS. In questo modo si potrà viaggiare più in sicurezza... qui vi è il limite invalicabile che deve essere presente una connessione ad internet per avere gli aggiornamenti sulle posizioni delle imbarcazioni. Potrebbe essere utile un avviso acustico nel momento in cui una nave è troppo vicina alla nostra posizione e un algoritmo che dia una posizione stimata delle imbarcazioni in base a  rotta e velocità dell'ultima rilevazione disponibile... vedremo.

Non vi rimane che provare l'App :


venerdì 9 giugno 2017

Navplotter è su windows store

NavPlotter è finalmente disponibile sullo Store di windows 10.

Già da qualche giorno il piccolo navigatore marino NavPlotter è disponibile sullo store di Windows 10 sia per mobile che per PC. 
Rispetto alla versione di test sono state aggiunte alcune funzionalità che rendono l'app più utile e fruibile.
Innanzi tutto è stato introdotto il nuovo strumento "Righello" che permette la misura delle distanze offrendo così l'opportunità di pianificare al meglio i propri spostamenti in mare. 
L'allarme ancora ( che avvisa se la tua ancora sta arando) è ora attivabile direttamente dalla visuale principale cliccando sul bottone a forma di ancora che emetterà un breve suono per avvisare quando esso è attivo.
La distanza di sicurezza dall'ancora è configurabile accedendo al tab NAV, tale distanza è di default settata a 20 m.
Al momento è necessario pianificare il proprio viaggio avendo a disposizione una connessione ad internet per poter visualizzare i segnali, i fari e i fanali marini forniti da OpenSeaMap.org, ma presto sarà possibile scaricare le mappe in locale.
Appena vengono inseriti i waypoint in alto a sinistra della mappa vengono visualizzati i dati relativi alla Rotta vera da seguire e la distanza necessaria per raggiungere il prossimo waypoint.
Sulla destra invece avremo sempre a disposizione i dati istantanei relativi alla nostra imbarcazione : posizione,Rotta vera corrente e velocità in Nodi.

Non vi resta che provare ad utilizzare questo semplice ma utile strumento sulla vostra barca. Ah... è gratuito e senza pubblicità!

giovedì 25 maggio 2017

NavPlotter 1.0


NavPlotter 1.0 è questo il nome di questo piccolo navigatore marino di facile utilizzo che permette di pianificare il tuo viaggio in barca ( a vela o a motore) fornendoti costantemente la posizione , la velocità e la rotta vera.
Prima di descrivere la GUI voglio elencare quelle che sono le funzionalità al momento presenti:
  • posizione gps con latitudine e longitudine
  • velocità effettiva
  • possibilità di aggiungere e rimuovere waypoints, in questo caso verrà mostrata quella che è la rotta desiderata per raggiungere il prossimo way point.
  • avviso sonoro quando un waypoint è stato raggiunto
  • segnalazioni marittime e mappe sono recuperate da openseamap.org
  • allarme  sonoro ancora, viene riprodotto un suono (allarme) quando la barca si sposta troppo dalla posizione di ancoraggio (l'ancora ara)
Provo a scrivere un piccolo manuale d'uso:

La schermata principale è naturalmente la mappa( Tab Map ) dove viene mostrata la nostra posizione,la direzione corrente (rotta vera) e la velocità effettiva ( in alto a destra).
L'opzione "follow me" consente di avere la mappa sempre centrata sulla nostra posizione.
E' possibile inserire un waypoint semplicemente cliccando su un punto della mappa e subito dopo cliccare su bottoni "Add New Waypoint" che compare in alto alla mappa.
Dopo aver aggiunto un waypoint in alto a sinistra della mappa compare quella che è la direzione della rotta(vera) da seguire.



Nellla schermata "NAV" è possibile rimuovere tutti i waypoints oppure abilitare l'allarme ancora (Anchor alarm) impostando quella che è la massima distanza entro la quale la barca deve rimanere per non far scattare l'avviso sonoro.







L'ultima schermata è quella di configurazione dove è possibile definire la distanza minima  entro la quale il sistema ritiene raggiunto un waypoint e quindi passa a fornire la rotta del prossimo waypoint.
Con l'opzione "Sound near waypoint" si può decidere se ricevere una segnalazione sonora quando un waypoint è stato raggiunto.














Naturalmente si tratta di uno strumento ancora privo di molte funzionalità e tra i CONTRO annovera il fatto di dover avere una connessione ad internet quando viene pianificato un viaggio per visualizzare tutti i dettagli della mappa.

Per chi volesse provarlo basta impostare innanzi tutto la modalità sviluppatore sul proprio dispositivo :

 Dopo di che si può scaricare e installare il software ( in pochi secondi) da questo link:
Scarica NavPlotter 

Se hai problemi nel download... prova anche dal seguente link 
Scarica NavPlotter

Naturalmente si accettano critiche, osservazioni e suggerimenti!

lunedì 6 marzo 2017

RiskioBot il bot di telegram che ti dice se sei in pericolo.



RiskioBot è il bot di telegram che ti avvisa in tempo reale se ti trovi vicino a una situazione potenzialmente pericolosa.

Eh si, l'idea è proprio quella! Un bot che in base alla tua posizione ti avvisa se ti trovi in una zona dove è segnalata una situazione pericolosa come potrebbe essere una fuga di gas, una sparatoria in corso, una valanga, ecc...
Ma come fa il bot a sapere dov'è il pericolo? Semplice, gli utenti che lo utilizzano possono essi stessi segnalare i pericoli che però prima di essere resi pubblici saranno validati dagli amministratori che potranno scegliere se cancellare, accettare o segnalare come Fake (fasulla) la segnalazione. Gli utenti avranno un punteggio che li renderà più o meno attendibili asseconda della veridicità delle segnalazione inviate.

Per le prossime versioni il bot sarà in grado di generare autonomamente alcuni tipi di pericoli in base a fonti terze di acquisizione. Ad esempio i terremoti possono essere "rilevati" direttamente attraverso il database dell INGV, ma anche gli eventi meteorologici o incidenti stradali sono ricavabili da dati che è possibile trovare online.

Ogni situazione di pericolo ha un certo tempo e area geografica di validità, quindi un evento pericoloso sarà notificato agli utenti che si trovano nell' area di influenza. Non avrebbe senso ad esempio notificare una fuga di gas ad un utente lontano decine di chilometri.

Vi invito a provare il bot che neturalmente sarà più affidabile se il numero di utilizzatori sarà maggiore.
AVVIA RISKIO BOT

Se l'idea vi piace potete lasciare un voto sul botStore:
https://storebot.me/bot/riskiobot

Prossimamente scriverò un articolo con un tutorial per il suo utilizzo.
Alla prossima!



venerdì 3 marzo 2017

Nuovo Generatore eolico.

Ho avuto modo di poter vedere di persona il prototipo di generatore eolico basato su di un nuovo princio davvero interessante.

Sul mercato si trovano due tipi di generatori eolici: quelli ad asse orizzontale e quelli ad asse verticale con riferimento alla posizione rispetto al terreno.
Le pale eoliche ad asse orizzontale solo quelle più diffuse sul nostro territorio e sfruttano generalmente alte velocità del vento per funzionare, al contrario di quelle ad asse verticale che possono funzionare anche a basse velocità.

Generatore asse orizzontale
Generatore ad asse verticale.


Il prototipo di cui parliamo non appartiene a nessuna delle dua categorie, infatti si chiama Generatore eolico ad asse orbitante il cui principio di funzionamento, spiegato in quet'altra pagina web http://oawindgenerator.blogspot.it/ ,  si basa sull'idea che le pale girino anche sul proprio asse in modo da essere in una posizione attiva rispetto al vento e mai resistenti nella generazione dell'energia.
Guardando il video si può notare come le pale ruotino intorno a se stesse in modo da non oppore mai resistenza al vento.

I primi dati sperimentali sono molto incoraggianti, si è evidenziato infatti che anche con basse velocità del vento è possibile raggiungere alte velocità di rotazione dell'asse centrale del generatore.
Il progetto ben si presta per lo sviluppo di nuovi generatori mini-eolici sia per soggetti privati che per aziende.

Al momento sono in corso contatti con aziende del settore per lo sviluppo di nuovi prototipi da presentare alla produzione industriale.

Potete seguire il progetto anche dalla pagina Facebook .


giovedì 4 agosto 2016

BandoBot il bot di telegram che cerca tra Bandi e Concorsi

Voglio parlarvi di questo piccolo progetto nato da esigenze personali che poi ho messo a disposizione di tutti gli utenti di Telegram. Si tratta di un Bot ( vi rimando a questo articolo per sapere cosa sono i bot http://www.mobileworld.it/2016/01/20/15-migliori-bot-telegram-63769/ ) che in base alle direttive che gli vengono impartite cerca per te tra oltre 250 fonti ( siti web) gli articoli riguardati bandi.

Vediamo come si configura:

Esitono 4 comandi principali :

/aiuto
/sottoscrivi
/elenco
/cancella

Attraverso il comando /aiuto possiamo avere la lista completa dei comandi supportati dal bot.
 Un comando particolarmente utile è /segnala che permette di interagire direttamente con gli amministratori del sistema in modo da segnalare un problema, chiedere aiuto oppure inviare un suggerimento.

Il comando /sottoscrivi è sicuramente il più importante da comprendere. Attraverso tale comando possiamo infatti configurare il bot in modo da fargli cercare per noi gli articoli che c' interessano, vediamo quali sono i passi da seguire.
Appena inviato il comando /sottoscrivi ci viene chiesto di dare un nome alla nostra sottoscrizione, in tal caso possiamo scegliere un nome qualsiasi magari indicativo di quello che stiamo cercando.
Inviato il nome ci tocca scegliere l'area geografica che ci interessa, si possono scrivere più aree separando le parole con una virgola. Le aree che possono essere scelte sono Regioni o Città , oppure possiamo scegliere di inserire Italia per avere sotto controllo tutto il territorio nazionale. Un errore molto frequente è inserire aree geografiche comprese già in altre. Scrivere Italia,Lazio non ha nessun senso in quanto il Lazio è già presente in Italia .
Subito dopo aver scelto l'area ci viene chiesto di indicare le parole chiave che devono essere contenute nel bando o nel concorso per essere ritenuto interessante e quindi essere notificato dal bot. Un consiglio molto importate in questo step è quello di scegliere il maggior numero di parole o frasi caratterizzanti e utilizzare sia il singolare che il plurale delle parole, per esempio un utente che alla ricerca di lavori di fotomontaggi video potrebbe inserire le seguenti parole: Video,Cortometraggi, cortometraggio, montaggi video,film, riprese video, ripresa video.
Concluso anche questo step e inviate le parole chiave il nostro bot ci dirà che la sottoscrizione è andata a buon fine e che ci avviserà quando troverà articoli interessanti.
Gli altri due comandi rimasti sono /elenco e /cancella che servono rispettivamente ad avere l'elenco delle sottoscrizioni create dall'utente e cancellarne una in particolare.
Una pagina Facebook è stata appositamente creata per fornire supporto agli utenti e raccogliere i loro feedback.
Se a qualcuno tale servizio è risultato interessante e vuole valorizzarlo ancora di più può lasciare il suo voto sullo Bot Store di telegram !