Thursday, November 19, 2015

Monitor the Boat, remotely

With a FONA connected on the Raspberry PI (where the NMEA Console is running), you can remotely monitor what's going on.
The feature has been implemented - as usual - as a UserExit. This UserExit is in the Desktop repo, the FONA Java interface is here.

Just by sending an SMS, you can retrieve the data read by the Raspberry PI on board, like True Wind Speed, Battery Voltage, Air and Water Temperature, etc, all you need is a smart phone that can send and receive SMSs.

That sounds promising...

This assumes that the boat is docked in a place where there is SMS coverage, of course. I'm working on an Internet version...

Saturday, September 12, 2015

Ephemeris emails

Along with the headless mode, you can now send ephemeris emails to whoever you want.
The email you'd receive would look like this:

Ephemeris for 12 Sep 2015

At N  37°46.00' / W 122°31.00'
Sun Rise:12 Sep 2015 06:52
Sun Set :12 Sep 2015 19:20
Moon Phase: 28 day(s).

Tide at Ocean Beach:
LW Sat Sep 12 04:52:00 PDT 2015 : +0.40 feet
HW Sat Sep 12 11:34:00 PDT 2015 : +5.27 feet
LW Sat Sep 12 17:09:00 PDT 2015 : +1.45 feet
HW Sat Sep 12 23:14:00 PDT 2015 : +5.47 feet

For this, you need to set some preferences:
  • The position is used for the sun rise and set
  • The tide station must be spelled exactly as in the tide application (in the Navigation Console)
  • You can send to several recepients, separated with a semi-column
  • The timezone is used to display the sun ephemeris
  • The email provider refers to the file, see below, this file must be in the all-scripts directory.
The email provider mentionned in the preferences can be in this example yahoo, google, or oracle.
When all this is set, you have to modify the command line that starts the Weather Wizard in headless mode:
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dheadless=true
This will generate the email displayed above every day at 5am local time.
PS: The code is in github, see below for details.

Wednesday, April 8, 2015

GoogleCode going out of business

GoogleCode will close soon, I moved everything on github. For the navigation part, you can build everything for yourself from here.

This could be the opportunity to move things around, and do some cleanup, to make the distribution and the result of such builds identical.
With the integration of the Raspberry PI in the navigation console, the paradign has slightly shifted, the architecture becomes more hub-and-spoke oriented.
It makes the data avaiable to any software able to understand non-serial protocols like TCP, UDP, etc.
OpenCPN, SeaWi, fall in that category, specially that now, I found a way to create an Access-Point network from the Raspberry PI, it makes it available to Android devices.
For the Raspberry, the easiest seems to post SD Card images, like here.

More to come, stay tuned.

Thursday, January 8, 2015

Version available

New version - for both the Weather Wizard and the Navigation Console - is available, at the usual place.
Few new features, minor UI improvements, and big uptake for the Raspberry PI.
A new feature for the Weather Wizard in headless mode, you can download several composites at the same time (one after the other actually). Use the -composite: and -pattern: parameters, separate each value with a comma.
For example, on Windows:
 set PRMS=-composite:./patterns/01.Favorites/01.3.00.Pacific.Sfc.500.Tropic.GRIB.ptrn
 set PRMS=%PRMS%,./patterns/01.Favorites/06.01.AllPac.Faxes.Satellite.ptrn
 set PRMS=%PRMS% -interval:360 
 set PRMS=%PRMS% "-pattern:/yyyy/MM-MMM | | yyyy-MM-dd_HHmmss_z | _Pacific | waz,/yyyy/MM-MMM | | yyyy-MM-dd_HHmmss_z | _Pacific.SatPic | waz"
 set command=java %JAVA_OPTIONS% -client -classpath "%CP%" -Dheadless=true main.splash.Splasher %PRMS%
On Linux and Mac:
 PRMS=$PRMS -interval:360 
 PRMS=$PRMS "-pattern:/yyyy/MM-MMM | | yyyy-MM-dd_HHmmss_z | _Pacific | waz,/yyyy/MM-MMM | | yyyy-MM-dd_HHmmss_z | _Pacific.SatPic | waz"
 command=java $JAVA_OPTIONS -client -classpath "$CP" -Dheadless=true main.splash.Splasher $PRMS

Sunday, December 21, 2014

Un peu de finesse, dans ce monde de brutes

Trois poëtes, trois poëmes

Ah seja como for, seja por onde for, partir!
Largar por aì fora, pelas ondas, pelo perigo, pelo mar.
Ir para Longe, ir para Fora, para a Distância Abstrata,
Indefinidamente, pelas noites misteriosas e fundas,
Levado, como a poeira, plos ventos, plos vendavais!
Ir, ir, ir, ir de vez!

Ah, n'importe comment et n'importe où, partir !
Larguer les amarres hors d'ici, cap sur les vagues, le péril et la mer.
S'en aller au Large, au Dehors, à l'Abstraite Distance,
Indéfiniment, dans les nuits mystérieuses et profondes,
Emporté, comme la poussière, par les vents, par les ouragans !
S'en aller, s'en aller, s'en aller une bonne fois !
(Traduit par Patrick Quillier)

Fernando Pessoa, Ode maritime


Ô Mort, vieux capitaine, il est temps ! Levons l'ancre !
Ce pays nous ennuie, ô Mort ! Appareillons !
Si le ciel et la mer sont noirs comme de l'encre,
Nos cœurs que tu connais sont remplis de rayons !

Verse-nous ton poison pour qu'il nous réconforte !
Nous voulons, tant ce feu nous brûle le cerveau,
Plonger au fond du gouffre, Enfer ou Ciel, qu'importe ?
Au fond de l'inconnu pour trouver du nouveau !

Charles Baudelaire, Les Fleurs du Mal, La Mort, Le Voyage.

Avec ses quatre dromadaires
Don Pedro d'Alfaroubeira
Courut le monde et l'admira
Il fit ce que je voudrais faire
Si j'avais quatre dromadaires

Guillaume Appollinaire, Alcools, Le Dromadaire

Tuesday, August 12, 2014

Raspberry PI on board: the numbers!

Using the Charger Doctor from Adafruit, I was able to see how much the Raspberry PI is drawing when at work.
When it boots, with the 7" RCA screen on, it takes 0.24 Amps.
This remains the same when starting the Headless Console, with user-exits, battery monitoring, and re-broadcasting on HTTP and TCP.
When the small RCA screen is turned off, the consumption drops to 0.19 to 0.20 Amps.

As P = UI, that means that the Raspberry PI at works takes about 1 Watt (5v × 0.2 A).
This even below what the Raspberry PI documentation is saying!

Saturday, June 21, 2014

Raspberry Sailing. How the Raspberry Pi makes sense on board.

A computer can be helpful on board, for several reasons.
  • Some useful navigation softwares need one to run (SailMail, for example, that allows you to receive faxes through the SSB, send and receive emails, all kinds of useful things)
  • Some chart plotter softwares (like OpenCPN, the best) require a computer to run as well, to plot the current position on an electronic chart.
  • The on-board electronics can be read from a computer (through NMEA, or some other proprietary protocols), and the data they emit can be used as parameters for calculations, like performance evaluation, routing, current estimation (tricky, but so useful).

Electricity can be precious on board (specially on a sail boat, where it is in short supply), it is required to run several important devices, like the autopilot, the water maker, and to some extend, the fridge. A laptop can draw a substantial amount of current, specially if its battery is old (2 to 3 amps and more, I have evidences). In those conditions, leaving it on all the time can be questionable. On top of that, turning it down, and turning it back up takes time...

Serial port access

The data we are interested in usually (like in 99% of the cases) come from a Serial port (USB, or 9-pins). A big detail to mention is that a Serial port can only be accessed by one process at a time. That means that when your chart plotter accesses the serial port, no other program can access it, even it is is not the same data the other program is interested in.
The chart plotter will be interested in the GPS data, another soft might be interested in the wind data; but there is no way around, one program, one port.
GPSd does not address this issue (even if it pretends to), and - in my opinion - makes things more complex. It's only interested in GPS data (not in Speed Through Water, not in Wind Data, etc), but it locks the port like everyone else, and just rebroadcasts them in another bloody format! Why isn't it just rebroadcasting the NMEA sentences as they've been read?.., I have no idea.

Introducing the Raspberry PI

The Raspberry PI does much more than the boards like Arduino, Sparkfun, Beaglebones, and others (those are great, don't get me wrong, I am not spitting in the soup), it is a fully featured Linux (Debian) computer, that can - as such - do all a computer can do, like multi tasking, multi threading, remote access (SSH, VNC), network access (Ethernet and Wireless). It only has 512 Mb of RAM. But that is enough, as we will see. Its hard disk is replaced by an SD card, ranging from 4GB to whatever you want. I use 16Gb cards. And at work, it draws less than 500mA, which is ridiculous. You can plug several kinds of screen on the Raspberry PI, a TV screen using an HDMI port, or a rear camera car monitor (3.5", 4.3", or 7") using an RCA port. Turning those screens off when not needed will also contribute to save some energy.
The Raspberry PI can read the serial port - Ok, exclusively - and re-broadcast the data on whatever channel (TCP, HTTP, UDP, RMI, whatever). This way they can be accessed from this channel, the data remaining the same. As soon as a device is turned on, it can join the ad-hoc network created by the Raspberry PI, and immediately read the data it broadcasts.

A program like OpenCPN is smart enough to support several kinds of channels.
HTTP is also an option to consider, smart phones and tablets are ready for that, without any modifications. HTML5 and CCS3 will do the job. Those devices have browsers that understand those technologies. It is very easy to display the data read by the Raspberry PI on an iPhone.
In addition, the Raspberry PI can log the data read from the NMEA Port, its SD card is big enough to log several days of data. Another feature of the Raspberry PI is its GPIO Header. This is the bridge to the world of sensors. For example, the BMP180 will allow the Raspberry PI to read the air temperature and the atmospheric pressure. Those data can very well be injected in the NMEA stream (they both have an NMEA equivalent). Some navigation station already provide this kind of interfaces, but in case yours does not, you will then get those data for less than $10.
See some implementation details here.

Even further, it is not difficult to come up with a small setting the Raspberry PI can use to monitor the tension of the batteries on the boat. This one does not - as far as I know - have an NMEA equivalent. It can be injected in the NMEA stream though, it will be considered as a custom sentence. And it can be logged too, along with the rest.
If needed, the data can be displayed on the Raspberry PI as they are read. I did some tests with a graphical interface, as well as in character mode, just to keep the energy consumption as low as possible. The screen is turned off when not needed, for the same reason.

Useful links

Basically, you can reproduce the settings used during the last Aremica's Cup, for a tiny fraction of their budget! The Raspberry PI is less than $40.
Compare with this...

If it does not work for you, do let me know, it should. I might be able to help.

Wednesday, June 11, 2014

Character Mode Console, for the Raspberry PI

Working on low consumption setup...
The laptop is quite demanding on the batteries, but the Raspberry PI is not.
The thing is that the laptop can do many calculations, for example for the current speed and direction, using real time triangulation, dead reckoning on 1 minute, dead reckoning on 10 minutes, etc...
Being written in Java, the console runs - theorically - also on the Raspberry PI. This is true, but the Swing UI is definitely too demanding on the RasPI.

Well, the is now available in character mode, driven by the file named
3.5" monitor
Notice on the screen, some data come from some sensors that can be attached to the RasPi, like air temperature, atmospheric pressure, battery voltage.
The RasPi can rebroadcast the NMEA - and calculated - data on TCP, UDP, http, etc. So, the laptop can use them (from OpenCPN for example), as well as tablets or other devices, as shown in earlier posts.
All this - along with the routing on archived GRIB files - is available in a new version (, available at the usual place (Navigation Desktop, and Weather Wizard). One detail though, Google Code does not support the downloads anymore, I moved the new ones to Google Drive. Use the link you'll find in the "Featured" section on the project pages.

At work on board, 7" monitor

Monday, June 2, 2014

Introducing the "Archived GRIB Routing"

The idea here is like replacing the pilot charts with some GRIBs stored in some composites you have already archived, to plan a trip for example.
At sea, the GRIBs you will download will provide a reliable forecast for about 3 days. After that, it's more like science fiction...
By looking into your archived composites, you can have a look at the weather that actually happened.
This brings us back to the importance of naming conventions, mentioned in the User's Manual.

Here is a quick step-by-step introduction to the feature.

Click on the images to see them in full size, easier to read.

Open the Weather Wizard as usual, without loading any data.
Re-locate the chart to the desired area, if needed.
Next, plot the start and arrival points. Let's try here to go from the SF Bay Area to the Christmas Island, in the Kiribati Republic.
Next, go to the menu Tools > Routing > Routing from Archived GRIBs
You will be prompted to choose the directory containing the composites containing the GRIBs you are interested in, and the Regular Expression filtering them. Just in case you forgot, ".*" will select everything (no filter).
The application will tell you how many composites your selection will return, they will be used to build one single BIG GRIB document that will be used to compute the routing.
One important thing to be careful with: By default, the application suggests you to start the routing at the current time and date. As you can see on the dialog, the GRIB start and end dates do not contain the current date. You need to change the date you want to start the routing from, so it is within the GRIB date range.
Now, the routing start date is within the GRIB's range.
From now on, the process is the usual routing one. Except that the GRIB will probably not expire.
You can tell by the color of the isochrones that the GRIB did indeed not expire.
Note: Once the big GRIB has been generated, it is loaded in the application, just like if it had been downloaded from the net, or read from the disc. You can re-launch a routing computation without having to re-generate it, until you close the tab it lives in.

This feature is still in development, it will be available very soon.
Hope you will lilke it!

Wednesday, May 14, 2014

Kiting the Bay

Warm weather in the SF Bay Area this week, the wind picks up around 3 in the afternoon, easily reaching 20 knots near Treasure Island.