1
0
mirror of https://github.com/peterantypas/maiana.git synced 2025-05-15 15:00:08 -07:00
2021-11-17 14:32:49 -08:00
2020-10-18 08:07:24 -07:00
2020-10-08 08:30:53 -07:00
2020-10-02 18:52:28 -07:00
2021-11-17 14:48:38 -08:00

MAIANA™: The Open Source AIS Transponder

I started this project around 2015 with the intention of experimenting and eventually building something for my own boat. I was not impressed with commercial AIS class B transponders. They seemed bloated, expensive and some of them were particularly power-hungry. Also, my boat is rather small and I have very little room for "nav" instruments, so I didn't want a huge enclosure inside plus two external RF cables, one for VHF and one for GPS. So I set out to create my own lean and mean design and I sailed with it for 2 years.

Fast forward to 2021, and several other sailors who are looking for the same features in an AIS unit asked me to build it for them. Here are some examples of MAIANA™ installations:

The main difference between MAIANA™ and every commercial transponder is that it's a self-contained unit, and thus its performance is 100% repeatable. The entire transponder circuit, GPS (actually GNSS) and antennas are all in the antenna housing. The design has been validated by fabricating over 30 units and measuring their performance.

So with all the core functionality kept outside and under tight control, the only other thing we need is power and data connections. Now, what's the most common cable that can carry a few signals 50 feet away? If you guessed "Ethernet", you guessed right. Commonplace Cat5 cable can deliver power plus serial data signals anywhere on an average sized pleasure boat. So that's how the exterior unit connects to the cabin, where one of these breakouts offers USB, NMEA0183 or NMEA2000 adapters to connect to the rest of the boat's systems.

Hardware Design

Mechanical

The antenna casing that you see in these photos is a piece of 1" Schedule 40 "furniture" grade PVC pipe. It is simply the most inexpensive UV resistant material available, and it looks great too!

The VHF antenna whip is built using an epoxy wound filament tube coated with high grade US-made irradiated polyolefin ("heat shrink") tubing. The company that makes this tubing (and helped me with this design challenge) also built the landing gear for NASA's Ingenuity helicopter on Mars, so they definitely understand how to deal with harsh environments. The bottomline is that unlike typical fiberglass antenna masts you might see around (or have on your boat already), this antenna is not going to degrade and "blossom" under continuous sun exposure.

The entire outdoor assembly is held together by the same high grade heat shrink tubing, so there is no need for any adhesives! The main water seal is formed by heat shrinking around a specially designed 3D printed cap made of PLA. This part naturally softens when heated and is also compressed by the heat shrink tubin surrounding it, thus forming a permanent, watertight colar around the antenna tube. This blocks rain water and salt spray from the top. A layer of clear heat shrink in the interior forms a secondary water seal encompassing the lower part of the antenna. Finally, the PCB can be sprayed with conformal coating for an added layer of protection.

With no adhesives getting in the way, the unit can actually be opened and serviced by (carefully) cutting through the heat shrink tubing with a knife, then resealing with the same material and method as before.

Electrical

As I mentioned already, the transponder circuit is inside the antenna case. It's a 24mm x 84mm 4-layer PCB:

Image

The core design is based on two Silicon Labs "EZRadio Pro" series ICs. The first IC is a transceiver and the second one is a full-time receiver. Currently, due to the global chip shortage, these ICs are impossible to source. I have secured a small quantity because I placed a direct order with their main US distributor last year, when their lead time was about 16 weeks. It is now 40+ weeks.

The microcontroller on this board is a STM32L4 series (412, 422, 431 and 432 supported). I chose these because the 80MHz clock allows the SPI bus to operate at exactly 10MHz which is the maximum supported by the Silabs RF ICs. This is crucial, as a transponder is a hard real time application so SPI latency must be minimized.

The GNSS is now a Quectel L76L-M33 and relies on a Johansson ceramic chip antenna. It usually takes a minute to acquire a fix outdoors from a cold start. With the latest design, it offers near-navigation grade accuracy (typical HDOP < 1 meter).

The transmitter is based on a power MOSFET typically found in handheld VHF radios and outputs just over 2 Watts (+33dBm). It has a verified range of 10 nautical miles.

The system is designed to run from a 12V battery and exposes a 3.3V-level UART for connecting to the rest of the boat. The UART continuously sends GPS and AIS data in NMEA0183 format at 38.4Kbps. It also accepts certain commands for management. The breakout boxes pictured above deliver this stream via USB, NME0183 (RS422) or NMEA 2000 (CAN). All 3 breakouts feature galvanic isolation of their USB connection to avoid causing unintended problems with laptops and other devices whose power supplies are meant to "float". This also means that you cannot use USB to power MAIANA™ - it must connect to a 12V battery.

In addition, there is now a "bare bones" UART breakout:

This provides the simplest, lowest cost interface to a Raspberry Pi or any other similar system you may want to wire directly.

For the circuit to transmit, it must be configured with persistent station data (MMSI, call sign, name, dimensions, etc). This is stored in an EEPROM and is provisioned over a USB/serial connection via a command line interface. If station data is not provisioned, the device will simply run as a 2 channel AIS + GNSS receiver (is still useful, but less cool).

Firmware implements SOTDMA synchronization based on the very acurate 1 PPS signal from the GNSS and the UTC clock. It does not synchronize itself to other stations because practical experience revealed that it's literally the "Wild West" out there: There are many commercial class A systems in operation today with buggy time slot management, so the simplest solution is to not rely on any of them. That said, MAIANA™ behaves as a "class B" so it will not attempt to reserve time slots. It will just transmit autonomously and independently, based on Clear Channel Assessment, at the schedule permitted for this class of device.

All adapters (except the "bare bones") feature a "silent mode" switch to explicitly disable transmission. If you use the bare bones UART adapter, you can wire one yourself.

In terms of power consumption, the main board draws about 37mA from 12V in receive mode, and spikes up to 650mA during transmission (for only 27 milliseconds). The adapters add an extra 0.5mA - 25mA depending on choice. So MAIANA™'s most power hungry configuration needs about 0.8 Watts, which is a lot less than a typical LED-based cabin light.

Software

The transponder firmware is an Eclipse CDT project that you could clone and build. The code is C++ with a BSP abstraction layer so you need to tweak bsp/bsp.hpp or define one of the required symbols in the preprocessor to build for different board revisions. It contains snippets of STM32Cube generated code, but is does not follow ST's spaghetti structure.

The NMEA2000 adapter also has its own separate firmware project.

CAD

Everything is here.

Building the unit

This is going to be difficult for all but the most technically advanced. The board features all surface mounted components, with 4 QFNs, a few SOT-363s and tightly spaced 0603 passives. The antenna switch is about 0.8 x 1 mm and you'll need a microscope to align it. So unless you're very skilled and well equipped, you will find it difficult to build.

For this reason, I have developed a kit which includes pre-soldered (and programmed) boards. Take a look at the installation instructions here to get a better understanding of what's involved. There is a limited number of these that I can produce (mainly due to the chip shortage), so if you're insterested, send an email to maiana.kits@_dontspam_gmail.com (remove the spambot blocker of course).

License

CAD and transponder firmware are licensed under GPLV3. I chose the most "copyleft" license possible to discourage commercial entities from ripping this off and then "close-sourcing" it.

The NMEA2000 adapter is under MIT license to be consistent with the libraries it depends on.

MAIANA™ will become a registered trademark soon, so if you plan to fork the design while adhering to the GPL then simply use a different name.

Description
No description provided
Readme 128 MiB
Languages
C 94.4%
C++ 4.8%
Python 0.3%
Makefile 0.3%
Assembly 0.2%