martedì 15 marzo 2022
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.
Vediamo quali sono i passi per effettuare la nostra digitalizzazione:
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.
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 :
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.
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
- 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
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).
lunedì 26 novembre 2018
Twitter Monitor bot
Nuovo bot di telegram TwitterMonitor.
- 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.
Se avete già telegram vi basta avviarlo accedendo a questo link: http://telegram.me/twittermonbot
venerdì 29 giugno 2018
NavPlotter_PRO arriva l' E.T.A.
![]() |
Aggiungi didascalia |