Weather fax with world receiver

Jürgen has in Sailing forum presented a weather fax receiver that I would like to introduce here. A simple world receiver and the weather fax app are used to receive weather faxes HF WEATHER FAX used. We recommend the following two world receivers from Sony, which have proven themselves:

  • ICF-2001D
  • ICF-SW7600

Fig .: ICF-2001D

Depending on the area of travel, the corresponding shortwave transmission frequency is set in the world receiver. With the app, the digitally coded broadcast is received via the microphone and displayed accordingly as an image. The coded transmission is a low-frequency signal (LF signal) in the frequency range of the human hearing, which is reminiscent of the old analog modem days. Here is an example of how that sounds:

Weather fax audio example

Fig .: Weather fax app

The paid Android weather fax app HF WEATHER FAX takes care of the following:

  • Manual or auto mode
  • Spectrum analyzer for easy frequency tuning and reception
  • Automatic start and end tone detection (in auto mode)
  • Synchronization at the beginning of the transmission (in auto mode)
  • Automatic storage of weather images on SD card (in auto mode)
  • Automatic correction functions in the event of malfunctions
  • Auto scroll mode
  • Picture zoom function
  • Black and white image with threshold setting
  • Storage of historical weather faxes
  • Timer function for automatic recording

Basically, the app takes away important functions of the reception settings and thus simplifies operation. The weather faxes are sent out over different frequencies and at fixed times, depending on the region. Below is a global overview:

Frequency and transmission plan for weather faxes

DWD weather fax broadcast schedule


Ultrasonic tank sensor with SensESP

Fig .: Ultrasonic level sensor


Fred has another implementation of an ultrasonic tank sensor with him SensESP  and a Wemos D1 mini. The Ultrasonic sensor DS1603L detects liquid levels in a tank and provides the corresponding measured values via SensESP via WiFi SignalK. SensESP is a software framework for the Arduino IDE with which different sensors can be easily integrated into SignalK. The special thing about SensESP is that sensors can be docked in SignalK without a network configuration. A SignalK server is automatically recognized by SensESP and the network configuration for data transmission via WiFi is carried out independently. The level can be visualized in SignalK.

Due to the properties of the sensor, there is no need to drill a hole in the tank, which is why this sensor can be used as a retrofit solution for existing tanks without a level indicator. Thanks to the WLAN connection, no further data cables need to be laid; a 12V supply near the tank to which the microcontroller can be connected is sufficient. The Wemos D1 mini pro module is a microcontroller based on the ESP 8266 with built-in WLAN module. The ultrasonic sensor is connected to the microcontroller. The ultrasonic sensor is glued to the outside of the tank bottom. The liquid level in the tank can then be recorded.

Caution: The sensor must be attached to the bottom of the tank, so it must "ping" from bottom to top in order to record the liquid level. "Pinging" from top to bottom does not work.

The software for the level sensor can be found here:

We have a similar project under DIY ultrasonic level measurement to find. However, it uses its own software that can transmit NMEA0183 data sets via WiFi.

Fig .: Waterproof housing for the level sensor

Electronic modules from Espressif

For hobbyists, the world of electronics offers interesting microcontroller modules with which you can implement many demanding projects. Microcontrollers that can be programmed simply and easily are of particular interest. Atmel offers a range of 8-bit microcontrollers in which many additional functions are integrated such as program memory, data memory, counters, pulse-width modulated outputs (PWM outputs), analog-digilal converters (AD converters), digital-analog converters (DA Converter), serial interface (RS232), various bus systems (I2C) and much more, so that you can implement your own electronic projects without much additional effort. Such microcontrollers are often offered in connection with developer boards, where the microcontroller is soldered onto a circuit board and a peripheral circuit is available for the necessary minimum control. The input and output pins of the microcontroller can be reached via pin headers. The Arduino Uno is such a popular developer board that can only be operated with a USB connection on a PC.

Fig: Arduino Uno R3 (original type)

The USB connection is used for supplying operating voltage as well as for programming and debugging programs. In the past, special and expensive programming devices were required to program the microcontrollers. Today most microcontrollers have a built-in bootloader program with which the programming process takes place via a serial data connection. The serial interface is usually equipped with a USB-serial converter on the developer boards, so that you can use a normal USB connection on the PC. The user program is then loaded into the program memory and then executed. The program remains permanently in the program memory until it is overwritten by another and starts automatically when the operating voltage is switched on. With a programming environment such as the Arduino IDE, the developer board can be programmed in the programming language C or C ++ via the USB connection.

Fig: Arduino IDE

The Arduino IDE contains libraries of various developer boards that can be used to select the developer board used. The libraries provide a large number of functions with which the hardware can be addressed via a program and which relieves the programmer of a lot of work because he does not have to worry about the actual hardware control. Even complex processes such as communication via a serial interface or reading out an analog voltage via an AD converter can be carried out with simple commands. In the past, you had to have detailed hardware knowledge and program the respective functions for controlling the hardware yourself. This is largely done by the libraries, making it very easy for the user. The functions can usually also be transferred to other microcontroller chips and developer boards and can be used there in the same way. Many developer boards are constructed in such a way that the IO pins follow a standardized and defined arrangement. This makes it possible to plug additional hardware modules onto the developer boards. You can use it to significantly expand the range of functions of the circuit. Libraries are usually offered for the additional hardware modules, which also simplify the control of the hardware for the programmer.

In the age of Internet of Thinks (IoT), connected devices are becoming increasingly important. The devices communicate via networks or WiFi and can even be connected to the Internet and exchange their data with remote devices. The simple developer boards with the 8-bit microcontrollers are reaching their performance limits, although some of them can be made IoT-capable with additional modules.

Espressif is a Chinese company that manufactures low-cost 32-bit microcontroller chips for IoT devices (ESP8266, ESP32). The microcontroller chips have network interfaces to WiFi and Bluetooth. They are also much more powerful than 8-bit microcontrollers and have more additional functions. The chips have a built-in boot loader and have a Real Time Operating System (RTOS) in order to be able to implement network functionality and other time-critical program sequences. In combination with a memory chip, the IoT chips are built into small IoT modules the size of postage stamps, which can be easily integrated into your own circuits. Espressif offers variously equipped IoT modules. The IoT modules are used and programmed in the same way as the Arduino Uno. There are a variety of developer boards for the ESP8266 and ESP32. The Arduino IDE can also be used for programming.

The following table compares the two microcontroller chips ESP8266 and ESP32.

property ESP8266 ESP32
Microcontroller Single core Dual core
Register width 32-bit 32 bit
Processor type Xtensa LX106 Xtensa LX6
operating system RTOS RTOS
Max frequency 80 ... 160 MHz 160 ... 240 MHz
Flash 4 MB 4 MB
SRAM 160 KB 520 KB
GPIO 17 36
 Touch sensors -  10
 ADC channels  1  16
 ADC resolution  10-bit  12-bit
 ADC low-noise amplifier -  Yes
DAC (digital-to-analog converter) - 1
WiFi 802.11 b / g / n 802.11 b / g / n
Bluetooth - Bluetooth, BLE
 CAN 2.0  -  1
 I2C  1  2
 PWM channels  8  16
 Temperature sensor  -  Yes
 Hall sensor  -  Yes
 Power Consumption (Active)  80 mA  260 mA
 Operating voltage  2.3 to 3.6V  2.3 to 3.6V
 data sheet  link  link

Tab .: Comparison of ESP8266 vs. ESP32

Thanks to the dual core processor with a higher clock frequency, the ESP32 is more powerful than the ESP8266, but it also consumes more power. Both IoT chips are built into various IoT modules. The following table lists some modules.

picture Type chip IO ports Power supply particularities
ESP-01 ESP8266 6 3.3V smallest DIL module
ESP-07 ESP8266 14 3.3V Ext. Antenna
ESP-12 ESP8266 14 3.3V fewer IO pins than ESP-12F
ESP-12F ESP8266 20 3.3V more IO pins than ESP-12
ESP32 Wroom ESP32 26 3.3V Dual core, slightly larger than ESP-XX modules

Tab .: ESP modules

The ESP modules are built into a number of developer boards. The developer boards pursue different goals and differ in the built-in additional hardware.

picture Type chip programming interface Power supply particularities
Wemos D1 mini ESP8266 Micro USB 5V USB Many plug-in additional modules available
NodeMCU ESP8266 Micro USB 5V USB Widespread
NodeMCU32 ESP32 Micro USB 5V USB Widespread
NodeMCU32S ESP32 Micro USB 5V USB More IO pins
TTGO OLED ESP32 USB-C 5V USB OLED 64 × 128 pixels
TTGO TFT ESP32 USB-C 5V USB TFT 135 x 240 pixels
Heltec WiFi LoRa 32 ESP32 Micro USB 5V USB, LiPo LoRa (SX1276, 868MHz), OLED 64 × 128 pixels
ESP32-CAM ESP32 Serial, 3.3V TTL 5V 2 MPixel camera, SD card reader

Tab .: ESP developer boards

If you are looking for a good introduction to ESP32 programming, you should take a look at this book: The official ESP32 manual There is a detailed description of how to implement projects with the EPS32 and the Arduino IDE. Starting with simple projects such as “Flashing LED”, all important hardware units are explained bit by bit and put into operation with software examples on a plug-in board.

WiFi battery monitor

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

While searching the Internet for a battery monitor for DC voltages, I came across the PZME-017. The Peacefair company is known for various inexpensive battery monitors with LCD displays such as the PZEM-015.

Fig: PZEM-017 (100A version, with shunt and USB-RS485 adapter)

Fig: PZEM-015 (300A version as a pure display variant)

The PZEM-017 has the following features:

  • Voltage measurement 0… 300V DC
  • Current measurement: 10A, 50A, 100A, 200A, 300A (from 50A via external shunt)
  • Display of the current power in watts
  • Energy display in kWh for the current day, previous day and total consumption display
  • Modbus RTU-Interface (RS485, 9600Bd, 8N2, binary data transmission)
  • Supported Modbus commands:
    • 0x03 Read memory register
    • 0x04 Read input register
    • 0x06 Write single register
    • 0x41 calibration
    • 0x42 Reset energy measurement
  • 7 devices can be used on the Modbus via adjustable ID 1… 7, ID 0 broadcast
  • USB-RS485 adapter (CH341)

In contrast to the PZEM-015, the PZEM-017 has no display and transmits the measurement data via the Modbus. The Modbus protocol is open and there are some implementations with an arduino. The website is an example here Solarduino called. There, however, a TTL-RS485 adapter is used to connect to the Arduino. In the area of home automation there are implementations with a Wemos D1 mini (ESP8266) with Tasmota firmware and a data connection via WiFi. However, it cannot be used well as a battery monitor on a boat, as you still need an external power supply of 5V for the Wemos D1 mini.

The Tasmota firmware already has all the important interfaces that you need to be able to build a boat battery monitor:

  • Supports all PZEM modules with Modbus interface via TTL signals with unsoldered RS485 chip (U5)
  • Supports temperature 1-wire modules such as the DS18B20
  • Web configuration
  • Display of the measurement data on the website

After some reengineering of the electronics I was able to modify the circuit so that it does not need an additional 5V supply and only needs a few components such as:

  • Wemos D1 mini with Tasmota firmware
  • 1k resistor
  • 4K7 resistor
  • 7 connection cables
  • DS18B20 temperature sensor

and a stand-alone boat battery monitor has been created that can:

  • Input voltage 10… 38V
  • Voltage measurement accuracy: 0.01V
  • Current measurement: 10A, 50A, 100A, 200A, 300A (from 50A via external shunt)
  • Current measurement accuracy: 50mA
  • Display of the current power in watts
  • Energy display in kWh for the current day, previous day and total consumption display (not power off resistant when completely switched off, details look here)
  • Resettable energy meters
  • Configuration and display of the measurement data via the website
  • Temperature measurement: 1… 3 DS18B20 for battery, charger and inverter (operated in parallel on the 1-Wire bus)
  • Own consumption: 16mA (without WiFi activity), 60mA (with WiFi data traffic, if connected)
  • Reduced power consumption of only 1.0mA when the Wemos D1 mini is switched off (look here)

Circuit modification

 Unsolder IC U5 (MAX485)

The IC U5 is not required because we do not use the Modbus and connect the serial TTL data signals (3.3V) directly to the Wemos D1 mini. The easiest way to unsolder it is with a hot air desoldering station. If you don't have this, you can heat up each pin of the IC individually with the soldering iron and carefully bend it up with a needle. But you have to make sure that the pin is not heated for too long, otherwise the conductor track underneath will become detached from the circuit board. This must be avoided at all costs, as we still need the pads to solder the cables. It is also important to note how U5 was soldered in, as the cables are soldered according to the pin numbers according to Table 1.

Fig: Pin numbers

Fig: Position of U5 (unmodified board)

Solder in 1k resistor

The 1k resistor has to be soldered parallel to R15. R15 is the series resistor for controlling the optocoupler U2 (CT817C Receiving side). With the resistor soldered in parallel, R15 is reduced to 320 Ohm, so that the LED of the optocoupler can be controlled from the Wemos D1 mini with a 3.3V TTL signal.

Fig: 1k resistor

Solder the 4K7 resistor and bridge

The 4k7 resistor serves as the Pull-up resistor for the 1Wire bus. It is soldered to the pads of the missing resistor R19. In addition, a small bridge from R19 to R17 is soldered as can be seen in the picture. This connects the resistor to 3.3V.

Fig: 4k7 resistor with bridge

Solder the 3.3V supply voltage to the Modbus output circuit

Since the Modbus output circuit is operated electrically isolated from the measuring circuit via the optocoupler, an external supply voltage of 5V is required in the original circuit. This is fed in via the Modbus connections. In our case, however, we do not need electrical insulation, as we transmit the data via WiFi and operate the rest of the circuit with the same 3.3V supply voltage as the measuring circuit. For the feed we need a black cable from Z2 to U1 pin 3 and a red cable from plus E1 to C7.

The optocouplers actually no longer make sense. We still need them because the signals from the microcontroller U3 are inverted and we cannot use them directly.

Fig: Supply lines

Solder in the Wemos D1 mini

The connections of the Wemos D1 mini are soldered to the free pads of U5 as follows:

Cable color From Wemos D1 mini To meaning
red 3V3 U5 pin 8 3.3V supply
black G U5 pin 5 Dimensions
green TX (GPIO 1) U5 pin 1 Receive Modbus
green RX (GPIO 3) U5 pin 4 Send Mosbus
yellow D1 (GPIO 5) R19 lower pad 1-Wire data signal

Tab. 1: Cable assignments

Fig: Pin assignment Wemos D1 mini

Fig: Cable on the Wemos D1 mini

Fig: Assignment of the cables to U5

Flash Tasmota firmware

Before the Tsmota firmware is flashed, the following must be observed:

Note! In our modified circuit, the Wemos D1 mini is not operated with the 5V supply, but with 3.3V directly from the measuring circuit. If the Wemos D1 mini is supplied with 5V via the USB connection, the battery monitor must be disconnected from the 12V supply and from the shunt. Otherwise there will be a double feed and the Wemos D1 mini or the PC could be damaged. So all 4 cables must always be disconnected from the measurement connections when working with the USB cable.

The current version of the Tasmota firmware can be downloaded here: The firmware is available in different language versions. The tasmota.bin file would be a good choice for English-language firmware. If you want to know more about Tasmota, you can visit this website: There you will find detailed information about supported hardware and flashing.

The easiest way to flash the firmware is with the software Tasmotizer which are available for different operating systems. It works best with the Windows variant.

When flashing via the USB cable, we must not forget to check the box next to “Self-resetting device”. The Wemos D1 mini is automatically switched to programming mode and automatically reset after flashing.

Fig: Tasmotizer settings

Tasmota configuration

The Tasmota firmware is universal and supports a variety of devices. With the configuration, the firmware is adapted to the specific hardware. After flashing, the Wemos D1 mini starts with its own access point that can be reached under the SSID tasmota_xxxxxx. A password for logging into the WiFi network is not required. The start page can be opened with a web browser at the IP address The respective settings are made under Configuration as shown in the following images.

Fig: Configure WiFi: Enter SSID, password and host name

Fig: Configure tamplate: Select Based on Generic (18), assign the name PZEM-017 and assign GPIOs

Fig: Configure Module: Select module type PZEM-017 (0)

Fig: Configure Other: Assign Device Name Battery Monitor

This completes the configuration and we can see the measured values on the start page of the battery monitor.

Fig: Battery monitor home page

Safe installation in the housing

The Wemos D1 mini can be accommodated in the same housing as the battery monitor. I packed the Wemos D1 mini in a small zip bag. This means that no short circuits can occur with the rest of the circuit and everything is securely packaged. You could of course do the isolation with tape. With the zip bag, however, it is more convenient because you can remove the Wemos Di mini for later software changes.

Fig: Isolation of the Wemos D1 mini in a zip bag

Fig: Closed housing

Connection of the temperature sensor

The DS18B20 temperature sensor can be connected to the connections of the RS485 bus as follows:

Connection RS485 port New function DS18B20
5V 3.3V not used
B. 3.3V red
A. 1-Wire yellow
GND GND black

Tab: Terminal assignment temperature sensor DS18B20

Fig: Test circuit with shunt, load resistor and temperature sensor equivalent to the circuit diagram on the back of the battery monitor

Fig: circuit

Further information

Separate micro USB port

The separate micro USB port on the side of the battery monitor is used for power supply if the battery voltage should drop below 7V. A separate USB cable can then be used to supply an external power supply. As noted in the documentation, this is very dangerous if the battery voltage is greater than 7V. Then the feeding devices can be destroyed via the feed from a PC or a power bank, because the higher voltage is then applied to the feeding devices with the maximum current of the battery. It is therefore not advisable to use this micro USB port. It's just too dangerous.

1-wire port

Up to 3 temperature sensors can be connected in parallel to the 1-Wire port. The sensors can be used, for example, to measure the temperature of the battery, the charger, the solar regulator or the inverter. Any other application would also be conceivable. The Tasmota firmware will automatically detect the additional temperature sensors and display the temperature values below the values from the battery monitor. The assignment of the sensors to the IDs must be found out by testing the sensors.

Power supply

If the battery voltage is less than 10V, the WemosD1 mini will no longer function properly. The Wemos D1 mini gets stuck, especially when switching on with voltages below 10V. Overvoltages above 40V are possible, but should not be present for too long as the power supply heats up significantly.

Current measurement

The current measurement with the PZEM-017 shows an offset of 0.05A for a 100A shunt and thus falsifies the counting of the amount of energy. Only positive measuring currents can be processed. Negative currents through chargers are permitted, but are not taken into account in the energy measurement.

Subsequent change of the shunt value

When the PZEM-017 is delivered, the correct shunt value is entered in the firmware. If you want to use other shunt values, you can reprogram this using the Modbus commands before converting the circuit. It should be noted, however, that the shunts must be designed for 75mV and only the shunt values for currents 50A, 100A 200A and 300A are supported. Switching to other shunt values is done exclusively by software. Internally, only another conversion of the voltage measured at the shunt is carried out. The measurement accuracy is therefore dependent on the shunt used. The measured values for shunts are correspondingly more accurate for smaller currents and less accurate for higher currents.

Setting the shunt value:

01 06 00 03 00 00 79 CA 100A
01 06 00 03 00 01 B8 0A 50A
01 06 00 03 00 02 F8 0B 200A
01 06 00 03 00 03 39 CB 300A
01 06 00 03 00 04 78 09 10A (internal shunt)

01 - ID
06 - write parameters
00 03 - register no.
00 00 - Shunt value (00 00 - 100A)
79 CA checksum


01 06 00 03 00 00 79 CA 100A
01 06 00 03 00 01 B8 0A 50A
01 06 00 03 00 02 F8 0B 200A
01 06 00 03 00 03 39 CB 300A
01 06 00 03 00 04 78 09 10A (internal shunt)

01 - ID
06 - write parameters
00 03 - register no.
00 00 - Shunt value (00 00 - 100A)
79 CA checksum

Energy measurement

The energy measurement is a measurement of voltage and current over time. The product of voltage, current and time interval is formed and the following values are added up. A Peukert factor is not taken into account in the measurement. It is a pure energy measurement.


Measurements on the PZEM-017 with a 100A shunt showed that the battery monitor has precise measurement functions. Only a voltage offset of + 0.01V and a current offset of + 0.05A could be identified as errors. This is completely sufficient for typical applications. In the case of versions with a 200A and 300A shunt, larger errors must be expected as the measurement resolution decreases. A calibration directly on the device via potentiometers cannot be carried out and must be carried out externally with special software from Peacefair. For calibration you need a stable and precise 30V supply and a very accurate 10A power source. Tests with a self-performed recalibration did not produce any better results than the factory calibration.

Storage of measured values

All measured values are lost after the supply voltage is completely switched off and the values of the energy measurement are set to zero. If you want to avoid this, you have to continue to supply the measuring circuit with battery voltage. The pure power consumption of the measuring circuit is only 1mA at 12V. So if you want to continue to receive the energy values, you can only switch off the Wemos Di mini and keep the measuring circuit supplied. This reduces the power consumption from 70mA to just 1mA. For further details see also in the chapter Reduce power consumption.

Reset the counter values

The counter values cannot be reset via a button on the main page of the battery monitor. A little detour via the console is necessary for this. The command EnergyReset 0 entered in the console and confirmed with Enter.

Display decimal places for voltage values

By default, the Tasmota firmware only shows the voltage without decimal places. Up to two decimal places can be displayed if you enter the following command in the console:

VoltRes 2

Set the correct system time

The Wemos D1 mini gets the current time from the Internet via an NTP server. The correct time for Germany can be found on the console with Timezone 99 can be set. Any other time zone can be with Time zone -13 ... + 13 can be set hourly as an offset. In the event that the battery monitor is not connected to the Internet but would like to obtain a current time from an NTP server in its own network, it is possible to redefine several NTP servers. The following commands are required one after the other:

NtpServer 0 (deletes the NTP settings, pay attention to spaces after NtpServer!)

NtpServer1 (sets NTP server 1)

NtpServer2 (sets NTP server 2)

NtpServer2 (sets NTP server 3)

More information about all Tasmota commands can be found here:

Embed measured values in external websites

The measured values of the battery monitor can also be output as formatted data. To do this, you connect to the battery monitor via HTTP

and then receives the following answer

{t} {s} Voltage {m} 0.00 V {e} {s} Current {m} 0,000 A {e} {s} Power {m} 0 W {e} {s} Energy Today {m} 0,000 kWh { e} {s} Energy Yesterday {m} 0,000 kWh {e} {s} Energy Total {m} 0,000 kWh {e

If you want to access this data on third-party websites, you have to CORS (Cross Origin Resource Sharing) in the Tasmota firmware. This is done with the following command via the console:


Any website can then call up the data externally. If you want to use the access a little more restricted, you can also use the following command:


A small example can be found here:

Fig: Integration in your own HTML pages

Integrate measured values in SignalK

The measured values can also be integrated into SignalK and can then be displayed via the instrument panel. How the configuration works in detail is described here:

Fig: Measurement data in the instrument panel

Reduce power consumption

The power consumption of the battery monitor can be reduced quite significantly to 1.0 mA at 12 V if the Wemos D1 mini can be switched off using a small switch (red cable 3.3V). The original measuring circuit then continues to run in the switched-off state and counts the power consumption. Only data transmission and display of the measurement data is then no longer possible. After switching on the supply voltage, all data are transmitted again and displayed correctly. This is very useful when you are not on the boat, so as not to discharge the battery.


Fig: Installation position for the on / off switch

Measurement of the consumption data of the AC shore connection

If you also want to measure the consumption data of the AC shore connection, you can do this with the Sonoff Pow Power Monitoring Switch with the Tasmopta firmware do. The shore connection can also be switched on and off via the module. The newer variant is the Sonoff Pow R2. It has a larger range of functions and can display more measured values and react to limit values. An ESP8266 is already built into these two devices and is only operated with the Tasmota firmware. A modification of the electronic circuit is not necessary as with the battery monitor. The Sonoff Pow R2 is therefore a good addition to the battery monitor.

Fig: Sonoff Pow (R2)

Instrument display


Video used as voltage input with limit alarm:

Standard built-in instruments with a diameter of 52mm are often used to display various measured values on boats. Often these can only be used for very special tasks with very special sensors. Unfortunately, the display layout differs for each task and there is no consistent appearance. While looking for a modifiable display, I came across a built-in instrument for an oil pressure display of 0… 150 psi. This display fulfills a number of requirements for a universal display:

  • Digital display
  • Bargraph
  • Warning when limit value is exceeded
  • Backlight
  • 12V operation
  • Analog signal input for sensors

The display has the following properties:

  • 10… 15V power supply
  • 1.2W power consumption
  • 3x 7-segment displays without decimal point
  • 2x special symbols (alarm, peak)
  • 50 bar graph elements
  • Buzzer for alarms
  • Sensor input 0… 200 Ohm
  • Button for peak reset and for configuration

The display can be parameterized in various ways:

  • Background color
  • brightness
  • Limit values (alarm, peak)
  • Type of peak display (fixed with manual reset, slow running after 1s)
  • Type of bar graph control (column, single element, inverse single element)
  • Buzzer volume
  • Start sequence

The instrument display has the charm that you can do some things quite universally with it if you modify it a little. Without modification the following would be possible:

  • Oil pressure gauge (who needs it)
  • Level display 0… 100% (tank, water, standard encoder 0… 180 Ohm)

And with modification:

  • Voltage display 0… 15 V
  • Temperature display 0… 150 ° C
  • Speed 0 ... 15 kn
  • Depth 0… 150 m
  • Wind direction (graphically via bar graph)
  • Speed 0… 3000 rpm (with multiplier 20)
  • Cooling water flow 0… 15 l / min

I disassembled the part and checked what was installed there. To do this, I had to bend open the black aluminum front frame from behind and remove it from the display housing. If you do it carefully, you can reattach the front frame later and continue to use it. The simplest microcontroller technology is built into the display itself:

The microcontroller processes 0… 5V voltage signals at the analog input AIN3, whereby only 0… 2.5V is used as the actual useful signal. This then corresponds to 0… 100% of the display value (or 0… 200 Ohm from the sensor). Voltages greater than 4.6V are recognized as a faulty sensor signal and the numbers "- - -" appear. There is a place on the circuit board where you can feed your own sensor signal 0 ... 2.5V if the sensor is not connected. The ground reference is GND of the supply voltage. For your own applications you would have to generate a voltage signal of 0 ... 2.5V that is proportional to the measured variable. The sensor signal could be recorded with an ESP8266, for example, and transferred to the display as an analog output value. With a little skill you can even get it into the same housing. It would also be conceivable to print a separate housing that is slightly longer towards the rear and could accommodate the additional electronics. If you spin a little further, you could also send any measured values from SignalK via WLAN to the display and display them. With a suitable cover or a black marker pen, you could mask out the elements that are not required so that you can no longer see them. A new lettering could also be provided on the faceplate. EasyESP would be the ideal candidate for a software connection to SignalK, as there is almost finished software for this.

If you buy such a display, you have to be careful to buy the right one. The display is offered in different versions. With other versions, the modification must look different. I have currently seen the following variants:

Oil pressure 0… 150 psi (version used)
Oil pressure 0 ... 100 psi
Voltage 8 ... 18V
Tube charging pressure -30 ... + 30 psi

Notes on modification

The analog input for measuring the sensor voltage is pin 13 (AIN3) of the STM8 microcontroller. The input voltage signal can be picked up on the upper pad of JP5. Pin 1 is not used on the 3-pin sensor connector. The signal from pin 1 can be picked up on the lower pad on the adjacent, non-built-in resistor RV12V. With a cable from RV12V to J5, an input voltage of a sensor signal (0… 5V) can be fed to the analog input (AIN3) of the microcontroller. When soldering the cable, care must be taken not to short-circuit the pads with solder.

Cable bridge to sensor input P2

Signal feed to JP5 upper pad

The sensor cable can still be used. You only need to put the red cable on the free pin. To do this, you lift the small plastic tongue with a needle and pull the cable out to the back. The cable then automatically locks into place in the adjacent pin when it is pushed in.

Sensor cable before the conversion

Terminal assignment

Sensor input P2 unmodified (top left)

Pin code colour meaning
1 unused
2 red Sensor signal (0 ... 200 Ohm)
3 black GND

Modified sensor input P2 (top left)

Pin code colour meaning
1 red Sensor signal (0 ... 2.5V)
2 Sensor signal (0 ... 200 Ohm)
3 black GND

Push button input P1 (top right)

Pin code colour meaning
1 black GND
2 red Button

Power supply P4 / P3 (bottom left / right)

Pin code colour meaning
1 black GND
2 yellow lighting
3 White ignition
4 red + 12V


For commissioning, the red, yellow and white cables must be connected to + 12V and the black cable to GND. P3 or P4 can be used equally. An additional display can be supplied with power with an enclosed bridge cable. Alternatively, the red and yellow cables can be permanently connected to + 12V and the black to GND. When the white wire (ignition) is then connected to + 12V, the display comes on. Before that it is in stand-by and consumes approx. 10 mA. All settings made via the button are not lost after a complete power cut-off.

Further considerations

Since the display and processing unit are basically separate, the green circuit board with the STM8 could also be replaced by a dedicated circuit board with an ESP8266. The display chip HT1621B, the lighting and the buzzer can be controlled via the connector JP1. The only problem is to find out which segments of the LCD display are assigned to which bit in the HT1621B. However, this should be quite easy to do with a test program that controls all segments one after the other. The advantage of having your own circuit board would be that you then have it in your own hands how to control the display and which values are displayed.

Theoretically, you could also have an LCD built in China according to your own requirements. For a pure LCD display, no more than 5 ... 10 euros are called for small quantities. Basically, the display is almost perfect except for the missing decimal point and the representation of the unit. Theoretically, you could also remove the fixed numbers and the lower name in the display and replace them with bright areas. Then you could create panels with transparent laser-printed plastic films with which the light areas are covered again. So you could design the display very flexibly and create new scales and labels. Unfortunately, the scale and the lettering below are not just printed elements of the display. Then you could have easily removed the labels afterwards. As a manufacturer, Bezel uses different LCD glasses for its various instruments, which are adapted to the special tasks.

More pictures

Open instrument display


Electronics stack

Display control board

Display with display control


Rigid ladder to the display

Measurement and control board in front

Measurement and control board at the rear

Inputs for measuring signal 0… 2.5V

Low budged energy monitor

Stefan Kaufmann has on his website presented an inexpensive energy monitor that is also interesting for boat enthusiasts. He originally built the energy monitor for his camper in order to be able to monitor the energy supply. The system is based on components from Victron on. The centerpiece is a Raspi with the free Venus OS firmware from Victron, which is also included in commercial hardware runs, but in this case on an inexpensive Raspi3B. The Raspi is then the control and visualization center for the energy monitor. Operation is web-based using a mobile phone, tablet or PC. In his building instructions he uses a 7 ″ Raspi display on the back of which the Raspi is docked. The Victron components are connected to the Raspi via Bluetoth and use it to exchange data.

Basically, the following things can be done with it:

  • Display of the energy flows between generators (generator, solar cell, charger), storage (lead-acid battery, LiFePo4, etc.) and consumers
  • Remote diagnosis via the Internet
  • Reporting system in the event of device malfunctions
  • Supported devices from Victron:
    • Victron battery computer BMV712
    • Victron MPPT solar charge controller of the Smart-Solar series
    • Victron inverters of the Phoenix series
    • Victron 230V charger of the Phoenix series

Stefan has described his project in great detail on his homepage. In multi-part videos, he describes exactly how the system is set up and what needs to be taken into account. There should hardly be any questions left unanswered.

Venus OS by Victron

Built-in components


Integrate Ruuvi Sensor Tag in SignalK


The Ruuvi sensor day is a small, smart sensor device. This allows the following data to be recorded:

  • temperature
  • Humidity
  • Air pressure
  • 3-axis acceleration sensor
  • waterproof case
  • Data storage in mobile phone app
  • Android and iPhone app available

The data is sent to a data terminal at defined time intervals to save energy via Bluetooth Low Energy. This can be a cell phone, for example, where you can view the data. But there is also a gateway with which the data can also be transferred to other systems such as:

  • SignalK
  • Grafana
  • Io tool
  • Steamr
  • TTN network
  • Node Red
  • and many more services

The Ruuvi Sensor Tag has a large 1000mAh rechargeable battery in the form of a CR2477 battery. This means that data can be recorded for up to 3 years depending on the recording rate, with the data being saved with the current firmware 2.5.9 delivered externally and not in the Ruuvi Sensor Tag. Either the cell phone or a gateway is used to transfer the data to other systems. From the Beta firmware 3.29.3 then the internal storage of the data also works. The case has 2 buttons and two LEDs and measures 52mm in diameter, is 12.5mm thick and weighs 25g. A exact specification is here to find. The Ruuvi Sensor Tag was created as part of a coupon funding campaign and pursues an open strategy of open hardware and open source. Much of the Construction documents are freely available. Various Firmware versions can be downloaded for different applications.

The integration of the sensor tag in SignalK takes place via the signal-ruuvitag-plugin. The corresponding sensor tag can be selected via the plug-in based on its ID and easily assigned to a sensor scheme in SignalK. The received data can then be displayed live in the instrument panel. Long-term evaluations can be carried out with Grafana via the InfluxDB in SignalK.

The Finnish company of the same name Ruuvi is offering the Sensor Tag for 35 euros in over 100 countries.

Long-term evaluation with Grafana

Front Ruuvi Sensor Tag

Extension connections of the Ruuvi Sensor Tag on the back

Visualization with Grafana



Data display in mobile phone app

Related Links

Weather forecast with AZ-Touch

The AZ touch Mod is a small 2.4 ″ touch color display with 320 x 240 pixels. On the base board can be used as a control unit ESP32C or a Wemos D1 mini be attached. A small breadboard allows you to set up your own circuits to expand the display.

The AZ-Touch has the following features:

  • Wall housing 120mm x 80mm x 35mm (W x H x D)
  • Resistive touchscreen 2.4 inch (6.14 cm) color TFT with 320 x 240 pixels (ILI9341)
  • For D1mini or ESP32 Dev-Kit C V2 / 4
  • built-in piezo buzzer
  • Integrated 5V voltage regulator (input voltage 9 - 35V DC)
  • Power consumption approx. 0.7W

On the website of you can find the full description and the Circuit diagram about the AZ-Touch as well as some software examples.

The weather forecast is available in two versions. Once for the ESP32C and once for the Wemos D1 mini. The weather data is downloaded from the Internet by logging the display into an Internet-enabled WLAN.

Here is a little video about it:


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

SensESP is a library that facilitates the integration of ESP8266 and ESP32 based sensors and actuators in a signaK network. The framework is based on PlatformIO and is mainly written in C ++. In principle, recurring and important functions are mapped by the framework, so that programming and connecting your own sensors to SignalK is very easy. There are currently several well-documented examples of different sensors such as:

  • Tank sensor (10 ... 180 Ohm)
  • Temperature sensors (DS18B20, SHT31)
  • Temperature sensors with a thermopile sensor for higher temperatures up to 500 ° C
  • Voltage measurement 0… .15V
  • BME280 environmental sensor (temperature, air pressure, humidity)
  • Frequency counter (e.g. for wind speed, motor speed, shaft speed)
  • Heading sensor (9DOF)
  • GPS coordinates with speed and direction
  • Battery monitoring with INA219
  • Brightness sensor
  • Speed sensor
  • Relay control as output when measured values exceed limit values

The repository also contains a universal board for an ESP8266 to which various sensors can be connected.

custom-built ESP32 development board in a waterproof enclosure

Here is a software example for a flow sensor:

#include "sensesp_app.h"
#include "wiring_helpers.h"

ReactESP app ([] () {
SetupSerialDebug (115200);

// create a new application for flow meter
sensesp_app = new SensESPApp ();

// setup the fuel flow meter on two pins
// ESP8266 pins are specified as DX
// ESP32 pins are specified as just the X in GPIOX
#ifdef ESP8266
uint8_t pinA = D5;
uint8_t pinB = D6;
1TP3 Telif defined (ESP32)
uint8_t pinA = 4;
uint8_t pinB = 5;

// setup flow meter
setup_fuel_flow_meter (pinA, pinB);

// start application
sensesp_app-> enable ();

Example circuit diagram (Fritzing)

Realization on breadboard

Realization as a circuit board (Gerber Files)

Here is a more professional one Board with ESP32 and breadboard for your own circuits

Order shop for the board:

Additional information



Thread (german sailing-forum)

Background stories:

Multifunction display OBP 60

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

Display in action

open boat projects LIVE:
Video presentation in German on the OBP 60 multifunctional display (45min presentation, 30min discussion)

After we have dealt with the M5Stack as a multifunction display in 2019 and could show and were able to show some applications at Boot 2020, we are taking a new approach to a new multifunction display here. The M5Stack was not bad, but was subject to certain limitations for which some marine applications were not possible.

The disadvantages of the M5Stack include:

  • Display that is too small and not suitable for sunlight
  • Only 3 control buttons
  • Not waterproof
  • Too low battery power for standalone applications

However, some useful applications could be implemented:

The M5Stack is very flexible to use and well documented, but could not convince in the large number of marine applications. Following the widely used and popular ST60 series of instruments from Raymarine, a new attempt was made to build a more suitable multifunction display. In terms of housing dimensions, the new multifunction display is identical to the ST60 device series. Thus, the multifunction display can serve as a direct replacement for old and defective devices. By supporting old bus systems like NMEA0183 and SeaTalk, a bridge to the new world with NMEA2000 is provided, so that older systems can still be operated. The WLAN capability also allows to go completely new ways in signal transmission with connection e.g. to SignalK. Commercially there is a good selection of multifunction displays, but they are very limited in terms of expandability and adaptability to individual needs. You can only do things with the multifunction display for which the manufacturer has provided functions. Unfortunately, nothing can be modified or extended by the user. The goal of the whole development should be an open system where the user has access to all functions of the multifunctional display and can implement his own ideas by adapting the software and additional hardware. The standard electronics is designed in such a way that in the future it will be possible to replace it by other housings of other device series. Thus, maximum flexibility and openness is given.

Currently, the project is still in development.


In the design of the new display, emphasis was placed on the following points:

  • Standard size for a multifunctional display (110 x 110 mm)
  • Suitable for daylight
  • Waterproof
  • 6 keys
  • Support of the following bus systems:
    • NMEA0183
    • NMEA2000
    • SeaTalk
    • I2C
    • 1Wire
  • Low power consumption
  • WiFi-capable
  • Bluetooth-capable
  • Expandability via I2C bus and 1Wire
  • Hardware extensions via I / O port
  • Autarkic usable with battery pack for several days
  • Standard electronics for compatibility with other device series (NASA, Clipper, Navman, etc...)
  • Freely designable housing and therefore adaptable to other device series
  • Openness (OpenSource, OpenHardware)
  • Rebuildability with hobby means due to simple construction
  • Use of ready-made electronic modules
  • Adaptability to different needs
  • Software library for the Arduino IDE (similar to M5Stack)
  • Software updates via micro USB and WiFi

Video of the construction of the multifunctional display

Video to PCB


Specifically, the multifunction display was implemented with the following components and the following specification:

  • NodeMCU-32S as CPU unit
  • E-Ink display (400 x 300 pixels, 4.2″, suitable for daylight)
  • SeaTalk (full duplex)
  • NMEA 0183 (RX or TX, configurable)
  • SeaTalk (full duplex)
  • I2C
  • 1Wire
  • 8x I / O expansion port (internal)
  • 6x touch keys (swipe capable)
  • 2x digital out (12V, 4A)
  • 2x digital in (12V)
  • 2x Analog In (tank sensor 0...180 Ohm, battery etc.)
  • Battery monitor (12V voltage measurement)
  • Acoustic signal generator (buzzer)
  • Optical signal generator (red LED)
  • LED display lighting (red LEDs)
  • BME280 (temperature, air pressure, humidity)
  • GPS receiver (NEO-6M with internal mini GPS antenna)
  • WiFi 2.4GHz (HTTP, TCP)
  • Bluetooth
  • Power consumption approx. 2W (without backlight)
  • Power consumption approx. 3W (with backlight)
  • Battery deep discharge protection <9.0V (Deep Sleep, 0.2W)
  • Low Power Mode (Deep Sleep with WeakUp 0.2W, 15mA @ 12V)
  • Connections for optional LiPo battery pack (50Wh, approx. 24h self-sufficient)
  • Extension connections 8x digital IO, RX, TX, I2C, 5V 0.5A, GND

The next figure shows a schematic of the function blocks and their interconnection.

Fig. Functional diagram

The board is equipped with various SMD components and will therefore no longer be solderable without further ado. Some electronic modules can be assembled individually ( E-Ink-Display, NodeMCU-32S, BME280, GPS) The board will be offered for sale later fully assembled without electronic modules.

Fig. Front side of the circuit board

Fig. Rear of the circuit board


Fig. Electronics front

Fig. Electronics with e-ink display

Fig. Electronics rear

Fig. Front housing with display disc and contact springs for keyboard

Fig. Rear of the MFD

Circuit diagram

Possible uses

In principle, the following things could be realized with the multifunction display:

  • Instrument display of bus data from NMEA2000, NMEA0183, SeaTalk, WiFi
  • Gateway between NMEA2000, NMEA0183 and SeaTalk
  • Export of all sensor data via WiFi for tablets
  • SignalK connection
  • Weather display with weather history (BME280)
  • GPS display
  • Current position display in sea chart (with internet connection via OpenSeaMap)
  • Wind display (true wind)
  • Simple GPS autopilot (with DC motor as actuator)
  • Anchor watch
  • Battery monitor (with I2C current sensor also charge monitor)
  • Solar monitor (with I2C current sensor)
  • Motor diagnostics (temperature, speed)
  • Speedometer (with common pulse sensor)
  • AIS display graphically (with AIS receiver)
  • Info display for email, messenger services
  • Display for clock (UTC, local time), date, sunrise and sunset
  • Sailing timer (distance and time to start line)
  • Watch timer
  • Next Treckpoint indicator with XTR and audible alarm
  • Tank level indicator
  • Bilge monitoring with pump control
  • Alarm system with notification via WLAN including GPS tracker
  • Weather forecast (with internet connection)
  • Boat automation (with Sonoff components)
  • Reception of commands from a Bluetooth remote control with
  • Receiving Bluetooth wind sensor signals from Raymarine (if the signals can be decoded)
  • Control of audio media players (DLNA)
  • Firmware update via WiFi
  • and, and, and ....

In order to realize the possible applications, however, software is required that still has to be programmed and transferred to the multifunction display in the form of firmware. However, the firmware will not be able to implement all functions at the same time. Depending on the application, a suitable firmware is loaded onto the device via USB or WiFi connection and can then implement one or more functions. We hope that the multifunction display will find a lot of interest and that some will participate in the software development.

Current status

In the meantime, the first firmware has now been implemented. Thanks to the great software project NMEA2000 gateways from Andreas I was able to use core software that already covers many parts that I also needed for my firmware. The NMEA2000 gateway contains a complete gateway for converting the data between NMEA2000 and NMEA0183 and supports the transmission layers CAN bus, RS485, RS422, TCP and USB serial. The core software was written by Andreas for ESP32 microcontrollers in C ++ and was originally for one M5Stack Atom thought. Since the multifunction display also uses an ESP32 as a CPU, I decided to program extensions for Andreas Gateway software. This allows the hardware functionalities of the multifunction display to be used and data to be displayed. Andreas had to add various extensions and software functionalities in his software for me. Within a short time, a very useful firmware for the multifunction display was created with the following functionality:

  • Instrument display of bus data from NMEA2000, NMEA0183, WiFi, USB
  • Gateway between NMEA2000, NMEA0183
  • Generation of any user-defined XDR data for NMEA0183
  • WiFi access point for configuration
  • Web user interface (password protected)
  • Status line in the display
  • Red background lighting that can be switched on and off
  • Simple dashboard for displaying and diagnosing bus data
  • Firmware update via WiFi and USB
  • Export of all sensor data via WiFi for tablets
  • Weather display (BME280)
  • GPS display
  • Simple battery monitor (voltage display)

At the moment all display pages are programmed and cannot be changed by the user through the web configuration. But that should be possible in one of the next versions. The current firmware can be found on GitHub:

A detailed description of how to install the firmware is in the project for NMEA2000 gateway to find.





One of the biggest hurdles was the lighting of the e-ink display for night operation. It can only be illuminated from the front and requires special front glass that deflects the light coupled into the side via LEDs onto the e-ink display by 90 °. Making it yourself as a maker was not that easy. Industrially manufactured e-ink displays with lighting use front glasses that are microstructured. Such glasses cannot be bought in normal specialist shops. The aim was to apply the microstructuring yourself with the help of a laser. Laser devices that can be bought for makers do not have such a high resolution and we had to make some compromises with regard to efficiency and visibility. The best results came after many attempts a dithered laser point laser with an introduced point density gradient. A laser point is a disruptive body on the surface of the windshield, which deflects the light in all directions. The efficiency is not particularly good, since the light cannot be deflected in a directional manner and is only emitted from all sides in the room, so that only a small part of the scattered light can be used. We were able to achieve a minimum point size of approx. 200 µm with the laser. To create a gradient, we used a graphics program and created a gray level wedge with a 0… 12% gray component and then dithered it. The image resolution was 600 dpi. We used this image template for the laser process. Due to the high number of points, the laser process with a laser with XY traversing unit took a good 45 minutes, as the laser had to build up the image line by line. The result is impressive. The light is deflected as desired onto the surface of the e-ink display.

Fig.Laser points under the microscope (1% gray portion)

Fig .: Dithered image template for the laser process

Fig. E-Ink front lighting

A 3 mm thick Plexiglas pane is used as the front pane. The laser-structured side is on the outside. Alternatively, you can also use special Plexiglas panes for the advertising industry. This plexiglass is used to shine through advertising posters from behind and is often used in showcases or for illuminated pictures. This special Plexiglas is transparent and you can couple light into the front edge of the pane from the side, which is then scattered. The entire volume of the plexiglass acts as a diffuser. The Röhm company produces such special glasses under the name Plexiglas LED plate 0E010SM (4 mm). However, the lighting results are not as good as with the laser-structured windshield. The contrast of the illuminated display is too low and the picture is noisy.

Fig. Left laser-structured disk, right Röhm disk

In addition to protecting and lighting, the plexiglass pane has another task. It should protect the e-ink display from UV radiation (UVB, UVC) so that the display does not go blind. According to the specification, the e-ink display must not be exposed to direct sunlight or UV light. The reason for this is that the small pre-charged color balls in the display lose their charge due to UV radiation and can then no longer be aligned. Ordinary plexiglass has the useful property of suppressing UV light.

Fig. UV transmission of different glasses (2nd from plexiglass)


Fig.Multifunctional display with loaded demo nautical chart

Fig. Allen countersunk head screws as touch buttons

Fig. Viton seal as moisture protection

Fig.Raymarine standard mountings

Fig. Closing seal opposite the cockpit wall with 2mm thick Mosgummi

Fig. Total thickness corresponds to the original

Fig. 3D printing process

Fig. 3D front housing


Fig. Front housing with e-ink display


Fig. Illuminated e-ink display