u/Feisty_Strawberry294

Image 1 — ESP32 Marine Multi Funtion Display incl. EV1 Autopilot control
Image 2 — ESP32 Marine Multi Funtion Display incl. EV1 Autopilot control
Image 3 — ESP32 Marine Multi Funtion Display incl. EV1 Autopilot control
Image 4 — ESP32 Marine Multi Funtion Display incl. EV1 Autopilot control
Image 5 — ESP32 Marine Multi Funtion Display incl. EV1 Autopilot control
Image 6 — ESP32 Marine Multi Funtion Display incl. EV1 Autopilot control
Image 7 — ESP32 Marine Multi Funtion Display incl. EV1 Autopilot control
Image 8 — ESP32 Marine Multi Funtion Display incl. EV1 Autopilot control
Image 9 — ESP32 Marine Multi Funtion Display incl. EV1 Autopilot control
Image 10 — ESP32 Marine Multi Funtion Display incl. EV1 Autopilot control
Image 11 — ESP32 Marine Multi Funtion Display incl. EV1 Autopilot control

ESP32 Marine Multi Funtion Display incl. EV1 Autopilot control

Hi r/boatbuilding,

I want to share a project I’ve been working on for the past months: a **Marine Multi‑Function Display (MFD)** based on a modified **ESP32‑4848S040** touch display (≈25€ on AliExpress). It connects directly to the NMEA2000 bus and replaces several analog instruments.

## ✨ What it can do

- **Instrument pages**: Depth, SOG, STW, water temp, heading (analog compass + digits), wind (AWS/AWA + TWS/TWA)

- **Raymarine EV‑1 autopilot control**: STBY, AUTO, WIND, TRACK, ±1°/±10° course changes, Tack Port/Starboard

- **Waypoint info**: Name, DTW (nm), ETA – shown on the TRACK page

- **Touch navigation**: Swipe left/right → next/previous page, swipe up → Home, swipe down → Autopilot screen

- **Colour‑coded data freshness**: teal (fresh), muted yellow (old), grey (invalid)

- **Watchdog** prevents complete freezes

All software is written in C++ using LVGL and the NMEA2000 library. The device also has a simulation mode to test the UI without a real NMEA2000 network.

## 🛠️ Hardware modification (the fun part)

The original display comes with a 220 V power supply and relays – I removed all that, added a 12 V→5 V DC‑DC converter, a SN65HVD230 CAN transceiver, and a **male M12 NMEA2000 connector** to the back. The wiring uses **GPIO1 (CAN_TX)** and **GPIO2 (CAN_RX)**. Detailed step‑by‑step pictures are in the GitHub repo.

## ⚠️ Honest warning (please read)

Because the ESP32‑4848S040 drives the RGB display without a dedicated GRAM, **horizontal flicker and occasional ghosting** can appear. This is a hardware limitation that I cannot fix with software. If that would annoy you, this project is not for you.

Otherwise – everything works reliably: NMEA2000 reception, autopilot commands, waypoint tracking.

## 🔗 Links & how to join

- **GitHub repo**: [github.com/HugoJunkers/Marine-MFD-ESP32-4848S040](https://github.com/HugoJunkers/Marine-MFD-ESP32-4848S040)

(full source code, wiring guide, 8 hardware photos + 11 screen shots)

- **Discussions**: Ask questions, show your build, suggest features

- **Issues**: Report bugs (except the known flicker)

I would love to get feedback, hear about your own NMEA2000 setups, and maybe find some early testers or contributors. The project is fully open‑source (MIT license).

**Let me know what you think – would you install something like this on your boat?**

⛵ Fair winds,

TOM.

u/Feisty_Strawberry294 — 4 days ago