15 October 2009

Airmar PB200 WeatherStation power usage

I've measured actual power usage for the expensive but all-encompassing-all-but-dancing-and-singing Airmar PB200 WeatherStation NMEA 2000 sensor.

It is officially stated as a 13 LEN device which means that it could use up to 13 * 50 = 650 mA @ 12 V = 7 W, but it actually only uses 2.5 W, e.g. 4 to 5 LEN. That's OK for a sensor that does all of the following:
  • GPS (WAAS, EGNOS) (it even claims to do GLONASS according to its PGN 12029)
  • Heading (rate stabilised)
  • Pitch & Roll
  • Wind direction and speed
  • Temperature
  • Air pressure

Airmar PB200 support for Packetlogger

A new release for packetlogger, with support for the PGNs created by the Airmar PB200 Weatherstation.

I've added support for the following NMEA 2000 data fields and records (PGNs):

  • PGN 65410 (Airmar Device Information, 90%)
  • PGN 126988 (Configuration Information, 90%)
  • PGN 127251 (Rate of Turn, 99%)
  • PGN 127257 (Attitude, 99%)
  • PGN 129034 (Datum, 50%)
  • PGN 130311 (Environmental Parameters, 90%)
  • PGN 130323 (Meteorological Station Data, 90%)
  • PGN 130880 (Airmar: Additional Weather Data, 90%)
  • PGN 130881 (Airmar: Heater Control, 60%)
  • PGN 130944 (Airmar: POST, name only)


The files can be downloaded here:

11 October 2009

Packetlogger for Linux

I've ported the packetlogger program to Linux. At the moment the only interface that I have hooked up is the Lawicel CAN-USB, as I plan to use the Actisense interface on Microsoft Windows and thus have no need (yet) for it to run on Linux.

It turns out that the Lawicel (like the Actisense) uses an FTDI chip to interface to USB. I could not get the FTDI D2xx libraries to work properly on Debian (Lenny). The workaround was simple: interface to the pseudo serial port directly, that works fine and is just about the same amount of work. It also means there is less interference of additional layers of software. My code uses a separate process to do the reading anyway, and uses the UNIX pipe mechanism to transport the data to further processing layers.

Now I shall have to start implementing the real application, which is storing the data permanently in a database on a USB stick and upload the same data to a server on the Internet. It will have to use some sort of configuration file that tells the code what data needs to be stored, and how often.

Something like:

local:
heading: every 300 seconds or 10 degree course change
location: every 300 seconds or 100 m change


internet:
location: every 300 seconds or 100m change