Progetto Cartografico con Raspberry PI2

Su Naos esiste una classica strumentazione elettronica per una barca da crociera: GPS (non cartografico), VHF, ricevitore AIS, strumentazione RAYMARINE serie ST60 (tridata, wind). Ho voluto ampliare ed integrare questo sistema con un sistema sviluppato da me sfruttando progetti opensource disponibili in rete e hardware che gia’ avevo in mio possesso. Il risultato e’ stato un sistema altamente configurabile e comparabile a soluzioni esistenti sul mercato a prezzi elevati. Qui un breve riassunto di quanto e’ stato fatto e quanto ancora e’ da fare.

La vecchia configurazione la si puo’ trovare qui: Cartografico 2014

[Alcune considerazioni su questo progetto sono state fatte sul forum.amicidellavela.it]

Desiderata

  • Sistema low power e low cost, utilizzando l’harware gia’ presente in barca (strumenti SeaTalk Raymarine, GPS Garmin e VHF/AIS Radio) e indipendente il piu’ possibile dagli strumenti presenti, in modo che sia riproducibile su barche con strumentazione differente.
  • Sistema cartografico opensource (OpenCPN) collegato agli strumenti della barca (GPS, AIS, Seatalk) fruibile sia da tablet, smartphone e pc via wifi (tipo RayControl Raymarine), anche contemporaneamente, con client VNC o via browser con noVNC, oppure direttamente tramite lcd touch screen (tipo classico sistema cartogrfico integrato con gli strumenti di bordo).
  • Possibilita’ di utilizzare il proprio OpenCPN per Android (tablet o smartphone) e configurare come sorgente di input lo stream gpsd generato dal raspberry a partire dalla strumentazione presente in barca.
  • Sistema di monitoraggio ambientale (temperatura, pressione e umidita’) e dati di bordo (velocita’ e direzione barca, velocita’ e direzione vento, profondita’)  e visualizzazione in real time via browser su dashboard (pagina web di controllo)  su ogni dispositivo mobile connesso, sia a bordo che da remoto (se connesso 3G). Questi dati devono anche essere fruibili via sito www.housenaos.it
  • Creazione rete wifi della barca a cui poter accedere ai vari servizi e possibilita’ di navigare in internet tramite connessione 3G con sistema di routing ad hoc da tutti i device connessi (Pc, tablet, smartphone) anche simultaneamente  (tipo i Router WiFi 3G o 4G commerciali). Utile quando si prende una scheda SIM dati per esempio all’estero. Possibilita’ di connettere il modem alla rete 3G tramite dashboard.
  • Sistema di monitoraggio e allarmistica posizione barca (anchor alarm), basato su dati GPS, profondimetro, velocita’ e direzione vento e velocita’ e direzione barca. Possibilita’ di configurare tramite dashboard soglie e tipi di allarme. Allarmi e monitoraggio sia locale che remoto (se connesso 3G). Inoltre viene creata la traccia dell’imbarcazione sulla mappa visualizzata sul sito www.housenaos.it
  • Sistema di ricezione navtex e visualizzazione tramite dashboard
  • Bello esteticamente, integrato nella zona carteggio (grazie all’ospitalita’ e alle macchine di TheFabLab)
  • Connessione Bluetooth per tastiera e mouse (niente cavi sul tavolo carteggio).
pi_board_big

Raspberry PI2 Model B: central unit di tutto il sistema

Hardware e connessioni

  • Per questa seconda versione ho scelto Raspberry Pi2 Model B (RaspberryPi.org) collegato a :

bigPicture2015

  • Bridge nmea per lettura dati seatalk e GPS (gadgetpool.de) .bridgeSeatalk Il Bridge e’ collegato via seatalk agli strumenti Raymarine della barca e all’input nmea al GPS. Viene preso anche il dato dal GPS per poter aver questo dato anche con VHF spento, per esempio durante la notte. Funziona anche se strumenti seatalk spenti e viene letto solo GPS. L’output nmea e’ collegato al RS232 – USB che va al Raspberry Pi2
  • Uscita NMEA Radio VHF Navicom 650 per GPS e AIS via cavo USB RS232 collegato al Raspberry Pi2. Per le connessioni ho seguito i manuali del VHF/AIS  quello del GPS, con l’aiuto di questo utile documento (in francese)
  • IMG_20150430_163000Display LCD 16×2 e weatherboard (Temperatura, Pressione e Umidita’) di Hardkernel connesso tramite GPIO al Raspberry Pi2
  • GPS Garmin 78 collegato sia a radio VHF che bridge NMEA
  • USB WiFi
  • USB Bluetooth
  • HUB USB alimentato
  • Touchscreen lcd 10” (HDMI e USB)
  • Ricevitore Navtex Nasa Marine collegato via cavo USB – RS232 all’odroidnavtex
  • Modem UMTS Huawei collegato via USB
  • Modulo RTC per avere orologio di sistema sempre sincronizzato
  • Speaker collegato via jack 3.5mm
  • 2 Alimentatori trasformatori 12V-5V per HUB USB, speaker, LCD, Raspberry Pi2trasformatore

 

 

Software Server Raspberry Pi2 su Naos

  • Sistema operativo Raspbian. Servizi attivi al boot (vedi dopo): server web, NodeJS, GPSD, OpenCPN, VNC server, hot spot (hostapd, dnsmasq, dhcp server), programma lettura dati sensori, programma lettura dati via GPSD, MySQL in sync (master / slave) con il server remoto, VPN client per collegamento da remoto.
  • Programma GPSD che legge la seriale alla quale e’ collegato il bridge (quindi dati GPS e strumentazione barca via Seatalk) con anche pagina web visualizzazione stato (fix e numero satelliti). Viene usato GPSD in quanto i dati di questa seriale occorrono a diversi programmi, sia OpenCPN che i vari programmi in Python per la collezione dei dati.
  • MySQL database master che ospita i dati correnti e lo storico.
  • Programma in Python per collezionare i dati letti da GPSD (direzione e velocita’ vento, profondita’ e temperatura mare, latitudine e longitudine, velocita’ e direzione barca) e popolare DB Mysql.
  • Programma in Python per collezionare i dati letti dai sensori locali (temperatura, pressione e umidita’) e popolare DB Mysql.
  • Programma in C per display LCD 16×2 con i dati dei vari sensori (Video Display LCD 16×2)
  • Programma nodeJS per dashboard per poter gestire localmente via web allarme ancoraggio (punto di fonda e lunghezza calumo) e connessione 3G/UMTS, tramite wvdial e vnstat per controllo traffico di rete.
  • Server web Apache per pagina web con mappa in real time (con mappe scaricate in locale con Openseamap) per monitoraggio ancoraggio (con raggio uguale alla lunghezza calumo e posizione imbarcazione) Anchor alarm e visualizzazione dati collezionati nel DB MySQL con grafici basati su mesowx Naos RealTime. Nella stessa pagina link a NoVNC per collegarsi con il browser via VNC senza installare nessuna applicazione sul client (smartphone, tablet, pc)  e poter consultare cartografico di OpenCPN
  • OpenCPN configurato per ricevere dati da GPSD (dati GPS e strumentazione barca) e seriale in arrivo da VHF (con AIS, GPS)
  • Access point wifi con hostpad (DHCP e DNS)
  • Programma in Python per ricevere via seriale i bollettini NavTex e pagina web per visualizzarli via dashboard
  • VNC server per consentire visualizzazione e interazione di OpenCPN Remoto
  • OpenVPN client per permettere al server remoto (OpenVPN server) di collegarsi per sincronismo dati.

Software Server Remoto Linux con IP pubblico (housenaos.it)

  • MySQL Slave per copia dati MySQL master presente in barca. Sia per una visualizzazione remota, sia per il monitoraggio/allarmistica da remoto ed infine come backup remoto.
  • OpenVPN server
  • Server web Apache con replica delle pagine in locale create sul server remoto da MySQL Slave: pagina web con mappa in real time (con mappe Openseamap) per monitoraggio ancoraggio (con raggio uguale alla lunghezza calumo e posizione imbarcazione) Anchor alarm e visualizzazione dati collezionati nel DB MySQL con grafici basati su mesowx Naos RealTime
  • Programma Python per aggiornamento continuo itinerario sulla mappa OpenSeaMap in real time dai dati longitudine e latitudine presenti in MySQL. Viene creato un file GPX per ottenere la Traccia della rotta
  • VNC server per consentire solo la visualizzazione di OpenCPN Remoto

Risultalto finale Release n.2

 

Allarmistica locale e remota (da completare)

Ci sono vari allarmi che vengono attivati e configurati indipendentemente tramite dashboard:

  • Anchor watch con profondimetro e posizione. Analisi anche della direzione del vento ed eventuale velocita’ di scarroccio della barca
  • Allarme attivato da AIS
  • Allarme se velocita’ vento sopra una certa soglia o se gira di un certo angolo
  • Allarme variazione significativa della pressione atmosferica in un certo intervallo di tempo

Le notifiche di allarme vengono anche esse attivate e configurate indipendentemente tramite dashboard:

  • Allarme sonoro in barca tramite speaker
  • Notifica client connessi con app dedicata per Android
  • Via SMS
  • Via Telegram
  • Via Mail

Client locale sulla barca (PC, tablet, smartphone)

Una volta connesso al SSIDnaos‘ protetto in WPA2, il client a bordo puo’ accedere ai seguenti servizi:

  • Accedere ad Internet tramite unica SIM dati inserita nel modem dell’unita’ centrale (comoda all’estero)
  • Accedere al cartografico OpenCPN tramite browser e NoVNC, senza installare nulla.  Oppure con un qualsiasi VNC client installato sul client
  • Accedere alla dashboard tramite browser
  • Accedere con browser alla pagina di monitoring in realtime dei vari sensori: velocita e direzione vento (sia apparente che reale), profondimetro, velocita’ e direzione barca, temperatura, pressione, umidita’

Client remoto connesso ad Internet (PC, tablet, smartphone)

Tramite il sito housenaos.it qualsiasi client puo’ accedere a:

Download

TODO

  • Fare un nuovo pannello in legno massello e uguale colore a quello presente in barca
  • Monitoraggio consumo elettrico della barca attaccandomi alla shunt del battery monitor NASA BM-1 tramite i GPIO del Raspberry PI
  • Monitoraggio caricabatterie Quick SBC con GPIO del Raspberry PI
  • Mettere telecamera motorizzata ip per esterno, in modo da pilotarla via web-nodejs
  • Mettere  inclinometro per bolina e bussola (triple axis and gyroscope) per avere direzione prua quando e’ ferma la barca o all’ancora, e per eventualmente bloccare la telecamera su un certo angolo (scoglio?) in caso di sorveglianza con software motion
  • Fare una scheda PCB da mettere su Raspberry con LCD, weatherboard, triple axis and gyroscope, RTC.
  • web alert in modo che android notifichi un allarme inviato dal sistema centrale. Scrivere una propria app per android che funzioni sia locale quando si e’ a bordo, sia da remote tramite server con ip pubblico. Via push arriva la notifica/allarme con anche la descrizione dell’allarme (vento sopra soglia, profondita’ cambiata, posizione cambiate, velocita’….)
  • allarme ancora con piu’ dati: direzione vento, direzione velocita’ barca, profondita’, calumo
  • abilitare funzione dei tastini vicini al display LCD 16×2 per cambiare il dato dello strumento visualizzato (come il Tridata Repeater della Raymarine)
  • portare la luce dei led di stato sul pannello e dargli un significato (connesso in rete, allarme ancora attivato, ….)
  • Inserire nella dashboard la possibilita’ tramite le polari dell’imbarcazione, i dati del vento reale e il punto di arrivo, di avere la miglior rotta da seguire.
  • Inserire nella dashboard la possibilita’ di abilitare/disabilitare  i client connessi via WiFi  a navigare in internet
  • Rendere il sistema modulare e facilmente configurabile, in modo che sia replicabile su altre imbarcazioni anche da non addetti ai lavori

Aggiornato 16/03/2016

 

Invia commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *