Sail Instrument Plugin for AVnav

The idea of this AVnav plugin is to display an instrument that contains all the basic information needed for sailing. With the possibility of showing this display directly on the map at the boat position, the sailor has all the information at a glance. The laylines give you the quickest bearing to a waypoint upwind, and when displayed on the chart you can follow those lines.

If you want to know what laylines are, you can find some information here:

Fig: Sail Instrument Plugin for AV nav

The inspiration for the instrument is based on B&G's Sailsteer instrument. There is a project on GitHub for the Sail Instrument where you can find all the important information about the plugin.



Anchor light automatic with Shelly 1

Fig. Shelly 1

Anyone who anchors is obliged to set an anchor light so that you can be recognized on the open water surface in the dark. Typically, the light is switched on manually at dusk and off again at sunrise. There is no problem switching it on. But you often forget to switch it off and the anchor light is then permanently on and consumes electricity unnecessarily.

With a Shelly 1, an automatic anchor light can be built that can switch the anchor light on and off independently. To do this, the Shelly obtains the time from the Internet and calculates the sunrise and sunset times and switches the anchor light accordingly. For this to work, the following conditions must be met:

  • Shelly V1 or V3 with original firmware
  • Permanent WiFi connection to the internet via port WiFi or mobile internet router to get the current time
  • Permanent power supply of the Shelly 1 with 12V (0.08W stand-by relay off, 0.2W relay on)
  • Connection of the switching contact from the Shelly with the switch for the anchor light (parallel connection)

The project is aimed at laypeople with little experience. The Shelly does not have to be modified or rebuilt for this. It is used as purchased and the main work is to configure the Shelly and connect it to the boat's electrical system. No major modifications will be made to the existing electrical system and an existing switch for the anchor light can continue to be used as before. The instructions presented here only work for the Shelly 1 V1 and V3. The Shelly 1 V2 cannot be used because the switch contact is not potential-free.

Basically, the Shelly can be used in two operating modes. Once with a cloud connection and once without a cloud connection. A cloud connection is not necessary for our project and the automatic anchor light also works without it. If you want to control or switch the anchor light from home via the Internet, you can also use the cloud. If you enjoy it, you can also use the Shelly1 via the cloud Control Amazon Alexa or Google Home with voice commands. The following description shows how to prepare the Shelly for the automatic anchor light.

Set Shelly to 12V supply

When delivered, the voltage selector is set to 230V AC. We have to set the jumper to the position for 12V according to the picture and supply the Shelly with 12V via N and L. But watch out! N is not equal to ground but 12V, whereas L is ground. On average, the Shelly consumes only 0.08W when the relay is not activated. However, this only works if the latest firmware V1.11.8 or newer installed and Eco mode activated.

Fig: Meaning of the pin headers


Fig: Assignment of the supply voltages for 12V


Bring Shelly 1 into your own network

How this works in detail is explained in ShellyDocumentation sufficiently well described. A static IP address does not have to be assigned. The field can remain disabled. If a usable port WiFi is available, you can use its login details. In order to be able to use the automatic anchor light regardless of location, we recommend connecting to the Internet via a mobile UMTS or LTE router. Alternatively, a disused mobile phone can also be used in hotspot mode.


Fig: Start page

Fig: Internet & Security page

Danger! You have to be careful when entering the network parameters. If you entered the WiFi SSID or password incorrectly, you will lock yourself out and no longer be able to connect to Shelly. A hard reset to factory settings is only possible via a cumbersome procedure. To do this, you have to switch the power supply off and on again and then press the switch at the SW input 5 times within one minute. The right timing is a matter of luck and requires several attempts to be successful. In the worst case, the Shelly can no longer be activated and you have to flash the firmware again. How to do that is in this one Flash guide described.

After the Shelly is in the network with Internet access, you should update the firmware, since the Shelly has been on the market for a long time and some models with old firmware are still available. The latest firmware offers some more functionalities and has been corrected for errors. The firmware update can be found at Settings ->Firmware update make.

Fig: Firmware update

Set the source of the system time

By default, the time is automatically fetched from the Internet and the correct time zone is set, provided there is an Internet connection. At the top right of the start page you can check whether the system time is set correctly. If this is not the case, you can go to Settings -> Time Zone and Geo Location make the necessary settings.

Fig. Setting the source of the system time

The Shelly does not require a permanent internet connection to update the time. It is sufficient to fetch the system time from the Internet once after the start. A port WLAN is completely sufficient. The time continues to run in Shelly even without internet. However, you should be careful not to switch off the Shelly without an Internet connection, otherwise the time cannot be fetched when you restart and the switching function can no longer be carried out correctly.

Set switching function

Via the configuration page Weekly schedule the switching function for the anchor light can be set. A timer is added for switching on and off and fixed times are set, or you can also use the sunrise and sunset times as a source. This is very practical, as the switching times are automatically adjusted to the actual position of the sun. If you want, you can change the switching times individually with an offset.

Fig: Set switching functions for sunset and sunrise

Fig: Settings for sunset

Fig: Setting for sunrise

Automatic anchor light circuit

Depending on the type of Internet access for the Shelly, you must either connect the power supply of the Shelly directly to the main switch or you can use a group switch on the control panel such as the refrigerator switch. The Shelly's potential-free switching contact is switched on the control panel in parallel with the switch for the anchor light. You can switch the anchor light either via the Shelly or directly via the switch on the control panel, whereby the switch on the control panel always has priority and can override the switching status of the Shelly. There is a problem though, when the Shelly has the anchor light on, you can't turn it off with the switch on the control panel. Either you then de-energize the Shelly or deactivate the switching states in the Shelly.

Fig: Automatic anchor light circuit

Additional information

A few other functions on board can be automated in a similar way, such as heating, ventilation, battery charging or bilge drainage. Anyone who has activated the cloud connection can then also control all functions remotely via the Internet and, if necessary, be informed by e-mail. For the Shelly 1 can be found at Thingiverse 3D printing templates for a DIN rail holder. In this way, the installation can be carried out professionally in a sub-installation.

Fig: DIN rail holder for Shelly 1 with temperature addon module

Here is some additional information about Shelly:



Lilygo T-Watch 2020 with connection to SignalK

Fig. Lilygo T-Watch 2020 (Lilygo)


Jan Dytrych has started a software project to be able to display data from SignalK and receive alarms with a smart watch. Not just any common clock under Android is used as a smart watch. He uses the smart watch Liligo T Watch 2020. The special feature of this clock is that it has an ESP32 installed as a processor and can be programmed via the Arduino IDE or PlatformIO. The manufacturer Liligo supports the watch with a number of libraries that make programming much easier.

The Liligo T-Watch 2020 has the following components:

Fig. Hardware Lilygo T-Watch 2020 (Lilygo)

  • CPU: ESP32, dual-core MCU, 240MHz
  • FLASH: QSPI Flash 16MB
  • WiFi 802.11bgn 2.4GHz
  • Bluetooth 4.2 BR/EDR, BLE
  • Display: 1.54 inch color TFT, capacitive touchscreen, 240 x 240 pixels
  • 3-axis accelerometer BMA423
  • RTC clock: PCF8563
  • IR receiver
  • speaker
  • Button: power button
  • USB to TTL: CP2104 (Micro USB)
  • Lithium battery 380 mAh, 3.7 V, exchangeable Type: YX-W9A
  • Operating temperature range: -40 ~ +85 degrees
  • metal body
  • Water tightness none
  • Silicone strap 270mm
  • Weight: 58.5g

A USB cable is supplied with the T-Watch 2020, which can be used to charge the watch and transfer programs. The watch has an aluminum metal case and the design is based on the Apple I-Watch. The watch is comfortable to wear with the non-replaceable silicone strap. The only weak point is that the watch is not waterproof.

Properties of the firmware

The firmware for the clock is at GitHub hosted and has the following features:

  • Clock function main screen with status bar
  • Setup screen for Date, Time, Alarm time, WiFi, SignalK
  • Custom screens for values from SignalK
  • SignalK events wake up the clock and display messages
  • Sleep mode with display off for long operation up to 24 hours
  • Wake up the display with a tap or twist of your wrist
  • Day/night mode via double tap
  • Language customization via source code
  • pedometer

Fig. Start screen, warning message and SignalK values

Settings and Configuration

The basic settings can be made on the watch via the display. The program is available for designing user-defined image content for SignalK values TWatchSK Designer for Linux, Mac and Windows. This makes it very easy to create new display pages for SignalK and transfer them to the clock via a USB connection. The configurator allows a wide variety of representations and color selection for the values to be displayed.

Fig. TKWatchDesigner with result


With his open source software project, Jan Dytriych has developed a cool application with which it is possible to view and monitor data from SignalK on the wrist. The alarm messages in particular are a useful function for being informed about limit value violations. The project is very well documented on Github and those interested should find all the necessary information. With the T-Watch 2020, Lilygo has provided interesting hardware for little money, with which a large number of projects can be implemented. The use of the popular CPU ESP32 simplifies software development for makers, as they can develop in familiar environments with known knowledge. The only downside of the T-Watch 2020 is that it is not waterproof. Whether this is a KO criterion remains to be seen in practical use on the boat. Let's hope that Liligo will also release a waterproof T-Watch in the future.


Project Homepage:

TWatchSK Designer:

Lillygo T Watch 2020:


Fig. Lilygo T-Watch 2020 (Lilygo)

Fig. Opened cover, lithium battery on the right

Magnetix - a digital compass with NMEA2000


I've always found the idea of not only showing the course on my plotter when the boat is moving, but also when it's bobbing along quietly, I've always found it exciting.

After searching the I-Net for different manufacturers, it quickly became clear that I might not need an e-compass on board at current prices. Due to the corona restrictions and the more free time being spent at home, the idea of building the compass myself came up.

The construction of the electronic compass with an output to the NMEA2000 network was inspired by a post by Andreas in the "" forum.
Thanks to many tips in different forums, it was successful. The compass is ready, but not yet tested on the boat (status: 2022.01).


Magnetix is an electronic compass that transmits its data on the MNEA2k bus. A CMPS14 serves as a basis as a sensor, an ESP32 as a calculator, a Waveshare SN65HVD230 (don't forget to break out the resistor) as a link to the bus and an LM2596 as a voltage converter. A 0.91 inch OLED with 132×32 pixels is used for the display in the housing.

The housing for the electronics is a Bocube from "". Both the bracket and the housing were 3D printed for the sensor. The brackets for the OLED and the touch sensors (VA screws) were also created with a 3 printer.

The connection between the compass sensor and the ESP is made via a KAT5 network cable, in which two cables are always connected to form a pair. Although the protocol between the CMPS and the ESP is a short range protocol (I2C), I have no problems with a cable length of ~70cm

Power is supplied via the NMEA bus and is ~1LEN. A built-in plug from Techno-Spark is used to connect to the network.

The ESP gets the data via the I2C bus, converts the whole thing into an NMEA2K data set (127250) and sends it to the network.

The compass identifies itself on the bus as "Magnetix Alpha" and can also be found under that name in the network's sources.

variables in the code

Complete source code
devotion []
is an array with 36 possible entries. A deviation table can be stored in it, which automatically corrects the given course for the respective courses.
This can be used to set a - horizontal - correction for a deviation of the compass line from the boat axis.

[-] Values for a port correction

[+] Values for a starboard correction


Operation is limited to the two touch surfaces (screws):

touch surface function
1 auto calibration on
2 autocalibration off
1 & 2 initiate new calibration


The display is divided into three areas:

Left (in 90° rotated font)
Current function of the sensor
"calib" the sensor is currently being calibrated, which was triggered by touch 1&2.
"inacc" if the sensor is not fully calibrated (not all sensor responses are 1) “inaccurate” will appear. The HDM data was not switched off, as messages 0 occur very often.

It may have to be adjusted after field tests on board

"ON" The sensor is in "autocalibration" mode
OFF The "autocalibration" mode is switched off
S Sensor system status followed by two numbers
A. 'Status of the accelerometer
M Magnetic sensor status
The three details are each specified by the following numbers:
00 nothing is OK
11 everything OK
01 or 10 partially OK
(Unfortunately, what these numbers mean exactly is not clear from the documentation of the CMPS14)
Right of the line
M magnetic course
R roll of the sensor
P pitch of the sensor

construction and assembly

I built the whole thing in a standard housing in which I built a base plate as a support for the perforated plate and the voltage converter. The only thing to note when assembling is that the terminating resistor on the CAN module (Waveshare SN65HVD230) has to be broken out. Otherwise the Waveshare SN65HVD230 terminates the entire NMEA bus. The wiring can be in the Circuit diagram to be checked.

Unfortunately, in the first version, I placed my brackets for the display and the touch surfaces flush with the upper edge of the case. However, since the cover “pulls” itself completely over the lower housing, it no longer closes. 🙁


2022-03-01 New bracket for the case with a wall bracket to compensate for a wrong horizontal installation -> Thingiverse


the libraries used appear in the header of the INO file and are not discussed further here.

Links and Materials

All 3D printing components
ESP-32 Dev Kit C V4
Wave share SN65HVD230
0.91 inch OLED I2C display 128 x 32 pixels
LM2596S DC-DC power supply adapter step down module
PCB Board Set breadboard breadboard circuit board×4-stuck

However, I can't find my measurements in the list there!

PG - bushings

(think of mother)

Micro-C chassis connector
basics This year's winter tinkering: A NMEA heading sensor or electronic compass pitch and roll compensated

touch functions
NMEA basics AK Homberger Workshop (ESP -> NMEA2k)

Examples I2C NMEA


qtVlm navigation and weather routing software

Where the name qtVlm for the navigation and weather routing software comes from is not known. In any case, qtVlm is worth a look for those who are looking for a freeware navigation software with basic functions. Depending on further wishes, the software can be expanded with add-ons that are subject to a fee. If you need it, you can also book telephone or email support for a fee. The software is available for the following operating systems:

  • Linux PC
  • Linux Raspi
  • Mac
  • Windows PC
  • Android app
  • Android wearables (smart watches)

Suitable maps are:

  • Vector Maps (S57, S63)
  • Raster maps (kaps, geotiff, mbtiles)
  • Grib weather maps as an overlay
  • Current data as an overlay


  • route routing
  • weather routing
  • Collision warning via AIS
  • regatta features
  • Display of sensor data
  • Performance optimization with polar plot data
  • NMEA multiplexer with input and output

qtVlm can process the following on signal sources:

  • NMEA0183 In/Out over TCP/UDP
  • NMEA0183 In/Out via USB, RS232
  • AIS as NMEA0183
  • GPSd over TCP

In addition to an integrated NMEA multiplexer, filter functions can also be defined for the respective signal sources. However, as with OpenCPN, operation is designed for desktop applications and requires a mouse and keyboard. In the Android app, many setting functions are optimized for touch operation.

This is what the makers of qtVlm say about their software:

“Many options are available, such as B. Multi-routing to find the best date and departure time according to different parameters, routing on a path or considering motorized segments. Winds, currents and waves and some other weather variables are used during the calculation. Boat performance can be fine tuned, for example polar efficiency at night or the time it takes to tack or gybe. Multiple grib files can be loaded simultaneously to route with different parameters (e.g. wind, current and swell) or to compare grib models. Weather fax images can also be loaded onto grids. A start line mode maintains a regatta start line with chronometer, distance and time calculations, and displays a safe zone. qtVlm can also be used in simulation mode. In this mode, qtVlm uses wind and current data from grib to simulate navigation. All instruments are usable and real live AIS targets are received from the internet. Be careful not to collide with a real fishing boat or any other qtVlm boat!”


Freeware is not the same as open source. Anyone looking for open source software for navigation applications is wrong with qtVlm. Nevertheless, it is worth taking a closer look at the program, as it offers a very extensive range of functions and some extras for regatta sailors and long-distance sailors. The good one deserves special mention English language documentation which describes in detail all functions of the program. The program is based on Qt and is therefore available for all common operating systems. However, the desktop versions require a mouse and keyboard and are intended more for applications at the card table. With the Android app, the program is also available for tablets and can therefore also be used directly at the helm. Using the NMEA Out function of the multiplexer, for example, server data can be forwarded from the Raspi to the Android app on the tablet. This means that the same data is available both at the chart table and at the helm station.

Link to website:

Air pressure level sensor

Fig. Control box with pump, pressure sensor and valves

In the Facebook group Raspberry Pi for Boats I saw a cool solution for level measurement. Erik from Finland constructed a monitoring system for 4 tanks with an air pressure sensor. The functional principle is based on the displacement of liquids in a measuring tube. A corresponding air pressure then builds up in the measuring tube, which is proportional to the level. The system uses a pump that builds up pressure in a hose system until the air flows out at the end of the hose in the tank. Depending on the length of the hose, the pump works for between 5 and 10 seconds, after which the static pressure in the hose system is measured, which is proportional to the static pressure of a column of liquid. So that you can control 4 tanks, 5 valves are built into the system, which establish a connection to the respective tank from which you want to determine the fill level. With this cool solution, he circumvents the problem of pressure loss in the hose system, because before each measurement he briefly starts the pump and refills the air that has escaped. At that time I had also experimented with hose systems and considered the solution to be unusable because I could not compensate for the pressure loss. The problem was that air has a very low density and can diffuse through hoses or escape at hose connectors. The air pressure can then not be maintained for several days or weeks. You can get around this by using continuous metal lines without connectors, which then makes the whole thing more complex. At the time I was involved in my project Engine diagnosis decided to install the pressure sensor directly in the tank and measure the liquid column directly.

Erik's solution has the advantage that there are no dangerous voltages on the tank and, in principle, you can monitor any number of tanks with the method. He uses a Raspberry Pi as an evaluation unit and displays the measurement results on a website. He housed all the electronics on a simple strip circuit board. Erik has the project on his Homepage described.

You can find one in the sailing forum interesting discussion with further information on this topic.

Fig. Pneumatic system structure


Fig. Hose end in the tank


Fig. Pump and valve control

Fig. Display and control unit

Volvo Penta NMEA2000 interface

First of all, a few important notes that you should definitely pay attention to.

Disclaimer: The descriptions of the wiring and the pin assignments correspond to what I found in my boat. Therefore, if you want to recreate the interface, you have to make sure that the wiring and pin assignments on your own boat are identical or adapt the interface accordingly. The entire description of this solution is in an experimental state and comes without any guarantee. Changes to the cabling of the boat or the electrical and electronic conditions can lead to damage or critical situations. You do so at your own risk.



The basic installation of a Volvo Penta engine (engines D1 and D2) with EVC consists of various sensors on the engine that are connected to the EVC / MDI (electronic vessel control / motor data interface) are connected. These data are sent from the MDI to the speed instrument via a CAN bus. Often there is only the tachometer with a small LCD display to show data. However, additional instruments can be purchased and connected behind the rev counter via the so-called Easy-Link.




The speed is displayed continuously. Other values, such as cooling water temperature and charging voltage, are only alerted in the event of an error, but are not displayed continuously. The interface described here connects the engine's CAN bus with an NMEA2000 bus. The information in the VP-CAN bus, which is available as J1939 datagams, is read, evaluated and written to the NMEA2000 bus as NMEA2000 datagrams. The data implemented so far are

  • Engine speed
  • Charging voltage
  • Cooling water temperature
  • Engine hours

In the NMEA2000 bus, the information can be displayed, for example by a plotter, and provided with warning levels.

When my boat was transferred over the Unterems in the direction of DEK, that saved me from very big problems. Due to the large amount of sediments in the Ems, the outer cooling circuit was increasingly clogged. Via my plotter (MFD) I was able to notice the temperature rise early on and react accordingly. Without the interface and the display in the MFD, the alarm would have come at some point, and then I would hardly have had any options for action, that there would have been no opportunities to moor or anchor. I should have continued driving with the risk of the machine overheating.



The Volvo Penta - N2K Interface consists of hardware and software components.


To physically connect the interface to the VP-CAN bus of the engine, you need an adapter cable with a Y-branch. The connection of the cable from the MDI to the tachometer are so-called 6-pin 'Deutsch plugs', male and female. (e.g. You connect the six pins of the plug with those of the socket. In addition, one derives 12v +, GND Can high and CAN low.

In order to physically connect the interface to the N2K bus (either Seatalk NG or NMEA2000), you also need a suitable cable. My interface is connected to a Raymarine Seatalk NG network. So I cut through a STNG standard spur cable to get a cable with a plug and an open end.


CAN bus transceiver

I use an SPI-MCP2515-CAN-Transceiver-TJA1050 to connect the interface to the engine's CAN bus at protocol level. This transceiver is controlled by the MCP_CAN_lib from Cory J. Fowler.

To connect the interface to the N2K bus at the protocol level, I use a Waveshare SN65HVD230. This transceiver is controlled by Timo Lappalainen's NMEA2000 library.

Since the ESP32 requires a voltage supply of 5V and the CAN bus is supplied with 12V, you also need a stepdown converter to 5V.




The code is available here:

It is based on code from:

Timo Lappalainen

Andreas Koritnik

Cory J. Fowler


These libraries are required:



Volvo Penta - N2K Interface: How to proceed

  1. Obtain the hardware components
    • ESP32 development module
    • MCP2515 CAN transceiver
    • SN65HVD230 CAN transmitter / receiver
    • DC-DC step-down converter 5V
    • A pair of 6-pin "Deutsch plugs" (male / female)
  2. Create the Y-branch cable. (See page 3)
  3. Carry out the wiring. (See page 4)
  4. Obtain the required libraries.
  5. Compile and flash the software.
  6. Install everything on your boat.
  7. Have fun!


Connection of the interface to the VP CAN bus


The tachometer with integrated LCD display is connected to the engine's MDI via a cable harness and a 6-pin Deutsch connector. The connection is called “Multi-Link” at Volvo Penta. The data are provided as CAN-based J1939 datagrams.



A Y-branching cable is required for connection to the bus. The cable is connected between the connector of the cable harness and the speedometer.


Pin assignment:

  • 1 not used
  • 2 CAN low
  • 3 not used
  • 4 minus
  • 5 CAN high
  • Plus, 5V




Assembly instructions wind sensor Yachta

3D view* (Click on the picture, wait for the download and move the object with the mouse)

The wind sensor Yachta is used to measure wind speed and wind direction on boats. It is installed on the mast and supplied with 12V. The data transmission of the NMEA0183 telegrams takes place wirelessly via WiFi. The wind sensor contains an access point and a small web server. A mobile phone with a web browser is used to display the measured values. The measurement data can also be displayed in other programs such as SignalK, AvNav, OpenCPN, Navionics or similar that can process NMEA0183 data.

Copyright and Licenses

The copyright and the licenses must be observed when replicating. The wind sensor can be reproduced by anyone free of charge, as long as there are no commercial intentions and money is earned with it. With commercial intentions Contact with open boat projects be included. We will then clarify what options there are for commercial, non-exclusive exploitation.

If these instructions were helpful to you, we would be delighted if you would support us with a donation. This way we can publish other interesting projects. You also help ensure that this site continues to be available to the general public free of charge.

area License comment
documentation CC-BY-NC-SA All online and print documents
hardware CC-BY-NC-SA 2D, 3D CAD files
software GPL V3.0 Firmware, app

Difficulty level and time required

Level of difficulty 4
Time required [h] 2…3
mechanics 2
electronics 6
software 2
network technology

The assembly instructions are aimed at those with technical skills. If you want to solder the electronics together, you should have experience in assembling SMD components. Without such experience, it is better to purchase a fully assembled board. Programming the ESP8266 microcontroller requires some experience in dealing with microcontrollers and programming adapters, but is not a major hurdle for beginners. If you want to modify the software yourself, you should be familiar with the programming language C and programming environments such as the Arduino IDE or PlatformIO. Since data is transferred via WiFi networks and TCP / IP, you should have knowledge of the configuration of WiFi routers and network technology.

Tools, aids and consumables

Tools use Source of supply
Cutter knife / scalpel
Allen set
Open-end wrench set
Screwdriver set
Fine pliers
Electronics side cutter
Electronics soldering iron
Desoldering pump
USB cable (mini USB) programming
USB serial adapter (3.3V) programming
Digital multimeter Function test
Laptop / pc programming
mobile Function test with app
Oscilloscope (optional) Function test
Tin solder D 1mm
Desoldering braid (optional)
Silicone oil / fine oil
Dupli-Color Aerosol Art, clear lacquer matt Protective varnish for plastic parts
2K adhesive Weicon RK-1300
Alcohol 99% Drugstore, hardware store
Q tips Drug store


The wind sensor Yachta is an anemometer with a rotating cup wheel. The wind direction is measured using the wind vane. The wind vane aligns itself according to the wind direction. There is a neodymium magnet on the underside of the axle, whose magnetic field is measured by a non-contact magnetic field sensor (AS5600), which is located on the green circuit board in the middle. The angles are divided into 4096 partial steps per 360° and transmitted to the ESP8266 microcontroller via the I2C bus, resulting in an angular resolution of approx. 0.1°. The wind speed is measured using the shell wheel, on whose upper axis there is a ring with several small magnets. During rotation, the magnets move past a Hall sensor and trigger a digital switching signal that is evaluated by the ESP8266. The firmware of the wind sensor contains an access point and a small web server with which the measurement data can be transmitted via WiFi. With a mobile phone you can log into the WiFi network of the wind sensor and view the measurement data with a web browser. There is also an Android app with which the measurement data can be displayed. The wind sensor can also be connected to other evaluation and display software that is able to evaluate NMEA0183 data via TCP port 6666.

For mechanical details, you can explore the functional principle in the 3D view.

3D view* (Click on the picture, wait for the download and move the object with the mouse)

Project documents

Helpful links

Important instructions

Before you start the project, take the time to read these tips to avoid the most common mistakes. Before you get started, try to understand how the wind sensor is constructed and how it works. Use the contact options if you have any questions or are unclear. In this way you will be able to successfully implement your project.

PETG is ideal as a filament for the 3D parts. It has a higher temperature stability than PLA and can be processed just as well. Be careful not to use any dark filaments, as the wind sensor can heat up considerably when exposed to the sun and the plastic can become soft. The dimensional stability of PETG is only given up to 70°C. White filaments have been found suitable. Black PETG filaments, on the other hand, are unsuitable. If you absolutely want to build a black wind sensor, then it is best to use ABS. However, the printing is a bit more complicated than PETG and requires experience in handling ABS.

The printed parts of the wind sensor are not waterproof and must be painted afterwards. Otherwise there is a risk of water penetrating the wind sensor and damaging the electronics. Just any paint cannot be used as paint, since ordinary paint does not adhere to plastic parts. The paint listed in the component list is particularly suitable for direct plastic coating without pre-treatment. It is easy to process and achieves a good painting result. If you use alternative paints, check the suitability on test objects before you paint the wind sensor.

Note that the adhesive used must have a certain residual elasticity in order to be able to compensate for the expansion or shrinkage of different components when the temperature changes. After all, temperature changes of approx. 100 ° C (-10… 90 ° C) can occur between summer and winter and this can break adhesive bonds.

If you have little experience with SMD electronics, buy an assembled and programmed board. This saves you a lot of time and effort when troubleshooting.

If you want to program the electronics yourself, make sure you use a USB-to-serial converter with a 3.3V TTL signal level. Converters with a 5V TTL level are unsuitable and can destroy the electronics. Basically, you should be careful with the electronics and not unintentionally bring them into contact with metal parts. This can lead to short circuits and damage the electronics. Also, be careful not to be electrostatically charged. There is a particular risk in winter when the air humidity is low. Before working on the electronics, you can discharge yourself on a metallic water pipe or a heating pipe.


The following component list refers to the assembly with a ready-equipped and possibly also programmed circuit board. If you want to assemble the circuit board yourself, you will find a parts list for the electronic components in the GitLab repository.

The sources of supply listed in the component list may no longer be up-to-date. Then it is best to look for alternative procurement options on the Internet.

Mechanical assembly

For mechanical assembly there is one in the GitLab repository picture gallery as a zip file that you can download. The pictures are quite helpful and show in detail how to proceed. Below is an X-ray of how the internal parts are installed.

Fig: Arrangement of the inner parts in the wind sensor Yachta

If you want a more detailed view, you can go to Online CAD program Onshape Sign up for free and search for “Yachta” in the public repository. The entire project can be copied to your own workspace and viewed from all sides. Components can be clicked on and the components can be switched to transparent using the right mouse button. If you want to change the wind sensor according to your own wishes, you can do it yourself in Onshape. By exporting with STL, files can be exported that a slicer can prepare for a 3D printer.


EPTG is a plastic that cannot be painted directly due to its surface properties. The substrate must be specially pre-treated. However, there are special paints that can be applied directly to EPTG without priming and pre-treatment. Dupli-Color's recommended Aerosol Art Clear Varnish (matt or gloss) is a polymer varnish containing acetone and n-butyl acetate in a 400ml aerosol can. It can be applied directly to EPTG in several layers without drying time.

The painting can be done in two ways. Either by painting with a brush or by spray can. In principle, 3 layers should be applied with each method. Appropriately thinner should be applied to the fits. In principle, the layer structure should be thin and not have any running noses. Run noses are to be removed when wet.

If possible, spray painting should be done outdoors, as more paint is sprayed on the side than on the component. A piece of cardboard should be placed in the background to absorb the excess paint. Depending on the paint manufacturer's recommendation, a minimum distance of 30 cm from the component should be maintained when painting. Otherwise you wear too much paint and it comes to runs. the Parts are slowly rotated continuously while spraying or moved, so that all areas can be reached. Painting the inside of the shell is a bit more difficult because you can't really see how much paint has been applied. You should be more cautious here, as you tend to apply too much. The correct layer thickness is reached when the wet paint starts to shine.

The paint is touch-dry after a short time and finally dry after 24 hours.

Cup wheel

The shells can best be slid into the base from below. To get it all the way in, it may be necessary to use a hammer for the last millimeters. You just have to be careful not to break the shells.

The M5 nut goes into the recess in the lower part of the base. To prevent it from falling out during assembly, the nut can be fixed in the recess with a drop of superglue.

Yachta Schalenrad

Magnet holder and lower bearing

The 695 ball bearing is inserted from below and the 625 ball bearing from above up to the respective edge in the lower part of the wind sensor.

Unterteil des Yachtasensors mit Kugellagern

The magnets can be glued relatively easily in the magnet holder with superglue. When installing the magnets, ensure that the polarity is correct.

To simplify assembly, you can temporarily stick adhesive tape on the inside of the magnet holder and then press the magnets into the recesses from the outside. The adhesive tape can be removed again as soon as the superglue has dried. The M5 x 60 mm screw can then be fed through the magnet holder and secured from below with a nut. The holder can then be inserted through the lower part.

Magnethalter und Unterteil des Yachtasensors

In the last step, only the shell wheel has to be screwed on. Here you should be careful not to screw the whole thing too tight, so that the bowl wheel can turn easily. When the desired ease of movement is achieved, the screw on the lower nut can be secured with Loctite.

Kompletter Unterbau des Yachtasensors

Wind vane and substructure

The substructure of the wind vane consists of an upper and a lower part. The 625 ball bearing is inserted into the top of the lower part, the M5 x 25 countersunk screw is inserted from below and secured with a nut. At this point, too, make sure that the clamped screw can turn easily. The upper part is then screwed onto the lower part with four M3 x 10 screws to hold the ball bearing in place.

Windfahnenbasis des Yachtasensors

In the next step, an M5 nut is inserted into the recess of the wind vane and can also be fixed there with glue.

Windfahne des Yachtasensors

The base of the wind vane can now be placed on the substructure that has already been installed and then fixed with the wind vane.

Windfahne des Yachtasensors

Finally, the 5 x 5 x 5 mm magnet must be glued to the countersunk screw. It is also important to ensure that the magnet is correctly aligned. The outer edges of the magnet should be aligned parallel to the wind vane. If there is still an alignment error, it can be corrected using a Offset under Device Settings Getting corrected.

Magnet in der Windfahne

Standpipe and base

The aluminum tube slides into the base of the sensor and can then be holed in place for the cables. Then the circuit board with the already soldered cables for the power supply can be inserted into the recess provided. To do this, the cables must first be routed into the aluminum tube. If everything is in the right place, the circuit board can be attached with four M3x10 screws.

Platine in Basis



The software was programmed in C with the Arduino IDE. Compiling the firmware yourself requires experience in using the Arduino IDE and installing the required software libraries in the correct version. Due to the high complexity, the firmware has already been compiled and made available to the user as a binary file. This saves you the hassle of compiling the firmware yourself.

Firmware installation

The firmware can be installed on the ESP12-E before soldering in using a programming adapter or on the fully equipped circuit board.

Fig: ESP8266 programming adapter for external programming

Fig: Programming adapter for programming on the circuit board

When using a programming adapter for programming on the circuit board, make sure that the signal levels for TX and RX support 3.3V TTL levels. 5.0V TTL levels cannot be used as this can damage the ESP12-E. The programming adapter is to be connected as shown in the picture. You have to make sure that RX is connected to TX and TX to RX. Otherwise you will not be able to carry out any other program transfer.

Fig: programming circuit

Programming instructions

  1. Build the programming circuit together
  2. Connect PRG and GND
  3. Connect the USB programming adapter to the laptop or PC
  4. Connect the 9V battery block
  5. Programming software NodeMCU Flasher start on laptop or PC and load firmware
  6. Start the programming process
  7. If programming is successful, disconnect USB and switch off 9V
  8. Separate PRG and GND
  9. Disconnect the programming circuit from the circuit board
  10. Switch on 12V and check firmware via WiFi connection

NodeMCU Flasher

The easy-to-use Windows tool NodeMCU Flasher be used. The EXE file can be started directly without any special installation. The tool can be used for both external and in-circuit programming. The first thing to do is take Advanced made the following settings.

After that, under Config the Current firmware file firmware_Vx.xx.wsb selected.

You open up to flash surgery and selects the corresponding interface to which the adapter is connected. Then you press Flash and wait until the firmware is loaded.

The progress of the transfer is displayed during the flashing.

If the firmware has been successfully loaded, the following screen will appear.

After the transfer, the programming tool can be closed and the adapter removed.

To start the new firmware, the wind sensor needs a reboot. After the restart, the wind sensor provides a WiFi network called NoWa, which you can log into 30 s after the restart with a mobile phone and the password 12345678. The blue LED then goes out briefly 3 times when the web server is ready. If you then call up the website of the wind sensor with the Android app (, you should see the following. If access data from an access point is entered under WLAN Client SSID and WLAN Client Password, the wind sensor logs into this WiFi network. The blue LED will then turn off to indicate a successful connection. If measurement data is retrieved via port 6666 from a program such as OpenCPN or similar, the blue LED always flashes briefly when a telegram is transmitted.

The last thing that needs to be done in the firmware is the correct type of wind sensor Yachta must be selected in the configuration so that the data is displayed correctly.

Fig: Device Settings for Yachta

Fig: Measured values for Yachta


Function test

The function test is limited to checking whether the sensors are giving off correct signals. The instrument view is best suited for this. More detailed information on the wind sensor is available below device info to find.



The wind direction display is incorrect

Depending on how the 5x5x5 mm magnet for the wind direction display is glued in, there may be a deviation in the display instrument. That's not too bad, because about a Offset under Device Settings the error can be corrected.

The true wind readings are incorrect

The wind sensor Yachta can only display the relative wind, as there are no reference values for the movement of the boat in the wind sensor. The true wind can only be displayed correctly if the wind sensor is installed as a stationary weather station on land with the correct north orientation. On a moving boat, only relative wind or apparent wind can be displayed.

The wind direction indicator does not respond

  • Is the magnet installed the right way round? (correct north-south orientation)
  • Is the field strength of the magnet strong enough? (Magn. Flux Density must be greater than 1000 mT)
  • Is the distance between the magnet and the chip small enough? (approx. 1 mm distance)
  • Is the right one Wind sensor type under Device Settings selected? (Yachta)

The wind speed display does not work properly

  • Is the Hall sensor close enough to the magnetic ring? (approx. 1 mm distance)
  • Are the magnets installed the right way round? (correct north-south orientation)
  • Does the axle have too much play? (The magnetic rim must not swing back and forth and change the distance to the Hall sensor)

The wind speed display shows twice the speed

The problem is often caused by incorrect alignment of the magnets in the magnetic ring. The magnets must have alternating polarity. If all magnets are aligned in the same way, 4 impulses are recognized instead of 2 impulses. The speed is therefore too high by a factor of 2. It is easiest if you stick the magnets together before installation and remove them individually and mark one of the sides that are sticking, eg always the left side. This makes it very easy to check the alignment of the magnetic field during installation. With a hand compass this would also be possible, albeit a bit more difficult.

The Android app cannot be installed on Android 11

As of Android 11, the security settings have been tightened and apps (apk files) can no longer be installed from external sources. This is to prevent programs from being installed unintentionally via Internet sites. Every time an apk file is downloaded, its file extension is automatically renamed and the file can no longer be started for installation. Subsequent renaming of the file in apk under Android is not possible. In order to be able to install the app on Android 11 anyway, a small detour via the file transfer function has to be made. To do this, the apk file is downloaded to a PC and transferred to the mobile phone's download folder using a USB cable. The apk file can then be installed with the internal data manager of Android 11.

It is not possible to connect to the wind sensor via WiFi

After the wind sensor is supplied with 12V, the WiFi network of the wind sensor opens after 30s with the name NoWa. The password is 12345678. Some mobile phones and tablets cannot correctly deal with the wind sensor's AsseccPoint not having an internet connection. Whenever you see the website wants to call up, the request is routed to the Internet instead of to the wind sensor. The routing in the mobile phone or tablet is incorrect. The same problem occurs with the Android app as well. To fix the error, you can disconnect the mobile phone's mobile connection to the Internet. Then the wind sensor Yachta is found again.

When I switch on the voltage, the wind sensor is not automatically connected in AVnav or OpenPlotter

If AVnav or OpenPlotter is used on a Raspi and the Raspi also provides the access point to which the wind sensor is to be connected, it takes a certain amount of time after switching on the supply voltage until the Linux operating system has started up and the access point is ready. The boot phase can last 2…3 minutes. If the supply voltage of the wind sensor is switched on at the same time, the wind sensor tries to log into the external WiFi network of the Raspi for 30s. However, since the Raspi needs much more time to boot than the wind sensor, the WiFi connection fails. The connection timeout can be set from 30s to 2 min or more under Device Settings. The wind sensor then waits correspondingly longer until the connection timeout occurs. The WiFi connection can be checked with the blue LED on the circuit board. If the LED is off, the wind sensor has logged into an external WiFi network as a client. When data is being transferred, the blue LED flashes briefly.

The display of the data from the wind sensor is very sluggish

If the shell wheel does not turn, the transmission interval of the data telegrams is increased from 1s to 3s in order not to send too much data unnecessarily, because when there is no wind it does not make much sense to send the same data continuously. If the wind sensor is tested at home without wind, it can take up to 3s for wind speed data to come when you turn the shell wheel. The demo mode is very well suited for tests at home, in which constantly simulated data for wind direction and wind speed are generated. The settings can be found under Device Settings on the server mode be made.

I don't see any temperature readings

if under wind values no temperature value is displayed, then it is probably the Temp sensor type under Device Settings not properly selected. The value must be up DS18B20 stand. Temperature sensors other than the DS18B20 are not supported by the wind sensor Yachta.

I don't see any readings for humidity and barometric pressure

The temp sensor type BME280 cannot be used with the wind sensor Yachta because it is not installed on the circuit board. Humidity and air pressure cannot be displayed.

I found another error, what can I do?

If you have discovered an error, you are welcome to inform us using the contact form on the website. If possible, describe the error in such a way that it can be reproduced. We forward the error report to the respective project owner and ask them to correct it. But you can also have one yourself Bug report as issue at GitLab submit on the project page. GitLab then automatically informs the project owner.

I didn't find a solution to my problem here

If you haven't found a solution to your problem here, you can look it up at GitLab under Issues known unresolved issues check. Also look below Closed Issues to. Some solutions to errors that have occurred are also described there. If you want, you can also get help from other sailors in German german sailing forum to fetch. There are many interested people who have already successfully assembled a wind sensor Yachta and can help you. You can communicate there in German or English.

Technical specifications

description Value / range of values comment
Measurement data
Wind speed 0 ... 40 m / s, 0 ... 78 kn
Start speed 1 m / s
Wind direction 0… 360 °
Wind direction resolution 0.1 °
Function type magnetic
calibration Slope, offset
Environmental conditions
Ambient temperature 0 ... 60 ° C
Storage temperature -10 ... 80 ° C
humidity 0…100 %
Weight class IP63, IPX3 protected against spray water
Power supply
Supply voltage 7…25V reverse polarity protected
Power consumption 0.4W typical
Data transfer
Network type WiFi 11 bgn 2.4 GHz
Data rate 3 Mbit / s
Range approx. 50 m in the free field
AccessPoint Yes max. 3 clients
Web server yes, port 80 Operating pages
JSON data server yes, port 80 Control data
TCP data server yes, port 6666 NMEA0183 data stream
Serial interface yes, 3.3V level NMEA0183, debug data, parameterizable
mDNS Yes can be switched off
NMEA0183 Sentences
MWV Wind data
VWR Wind data
VPW Performance data
INF Custom code
Supported software
Linux AvNav, OpenPlotter, OpenCPN
Android Wind sensor app, AVnav, OpenCPN, Navionics, WinGPS pro
Windows WinGPS
iOS NMEAremote, Navionics
Dimensions 175 x 120 x 150 mm without pipe and foot
weight 150 g with pipe and foot
plastic PETG: housing parts painted
Metals Alu: holding tube anodized
V2A: tip, screws, nuts
CE no
UL no
guarantee no
Licenses CC-BY-NC-SA Hardware, documentation
GPL 3.0 software

Opinions and tips

We hope that these instructions were of help to you in successfully implementing the project. Your opinions and tips are important to us. Please let us know if you got along with the instructions, had difficulties or have any tips on where we should improve the documentation. It is best to use our contact form. In this way we can enable a high quality of the replication instructions and a successful project implementation.


* Requires a 3D graphics card WebGL supports

Ventus W132 - conversion to NMEA2000 wind sensor

First of all, a few important notes that you should definitely pay attention to.

Fig .: Exterior view

  • NMEA0183 and NMEA2000
  • Only three other parts (ESP32, roll pin, CAN BUS) are required
  • Angular resolution in 0.1 ° steps
  • Data can be displayed in the browser (in AP mode even without an external network)
  • Code fully commented on GitHub

This project describes the conversion of the replacement anemometer Ventus W132 with minimal material expenditure. The entire project, including the purchase of the W132, can be implemented for less than € 50.

The detailed documentation for the conversion as well as the commented software can be found on GitHub:

The corresponding thread in the SegelForum can be found here:

Since existing hardware is modified here, many critical work steps such as printing the housing or post-processing for weather resistance are no longer necessary.

The wind speed is measured by a Hall sensor, the direction by a magnetic rotation sensor. This enables extremely precise information, especially with regard to the wind direction.

The size of the housing allows the use of an ESP32, which enables the creation and transmission not only of NMEA0183 datagrams via WiFi, but also, for the first time, of NMEA2000 data.

In addition, the data can be displayed graphically in the browser. The sensor can be calibrated or the transmission of NMEA2000 data activated / deactivated via a settings page.

A software update via the network is also possible.


Fig .: Circuit diagram


Fig .: List of materials


Fig .: Settings