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 :