I wanted an extra way to control my boat's Raymarine autopilot, so I built a simple remote control using an ESP32, MCP2515 CAN Bus module, and some buttons. The remote sends commands to the autopilot over the NMEA2000 network.
The remotes capabilities are basic, but it gets the job done. It has buttons for AUTO, STANDBY, +10 degrees, and -10 degrees. The remote connects to the NMEA2000 network using a MCP2515 CAN Bus module.
This remote costs around 15€ to build, which is significantly cheaper than buying a commercial remote (730€ as of writing this).
The remote connects to the NMEA2000 network, so you need to connect your SeaTalkNG network to your NMEA2000 network, with a NMEA2000 adapter cable.
It currently only works with Raymarine autopilots that support the NMEA2000 protocol, such as the EV-100 and EV-200 series. (I have tested it with EV-100).
-
ESP32 + Expansion board - Amazon affiliate Link
-
MCP2515 CAN Bus Module - Amazon affiliate Link
-
Jumper wires Amazon affiliate Link
-
DC Cable Amazon affiliate Link
-
NMEA2000 Cable (Cut the female port off) - Amazon affiliate Link
-
Buttons - Amazon affiliate Link
-
Diode WS2812B Amazon affiliate Link
-
Active Piezo Buzzer Amazon affiliate Link
I designed the case using blender and printed it with BambuLab PLA Matte. You can find the STL files in the case directory of this repository.
| ESP32 Pin | MCP2515 Pin | Description |
|---|---|---|
| GPIO5 | CS | Chip Select |
| GPIO18 | SCK | Serial Clock |
| GPIO19 | SO | Master In Slave Out |
| GPIO23 | SI | Master Out Slave In |
To power the MCP2515 module, connect the VCC and GND pins to a 5V power on the expansion board. NMEA2000 power goes to the expansion board through a type b connector.
NMEA white and blue wire go to the MCP2515 module, blue wire to CANL and white wire to CANH.
Wiring for buttons:
| Button | ESP32 Pin | Description |
|---|---|---|
| AUTO | GPIO13 | Button Input |
| STANDBY | GPIO12 | Button Input |
| +10 | GPIO14 | Button Input |
| -10 | GPIO26 | Button Input |
Wiring for buzzer:
| Buzzer Pin | ESP32 Pin | Description |
|---|---|---|
| + | GPIO4 | Buzzer Input |
| GND | GND | Ground |
This project is built using PlatformIO.
The raymarine pilot commands are greatly inspired by this project.
- Install PlatformIO IDE in Visual Studio Code.
- Clone this repository to your local machine.
- Open the project in Visual Studio Code.
- Connect your ESP32 to your computer via USB.
- Select the correct board and port in PlatformIO.
- Click the "Upload" button in PlatformIO to compile and upload the code to your ESP32.
- Install PlatformIO IDE in Visual Studio Code.
- Clone this repository to your local machine.
- Open the project in Visual Studio Code.
- Open PlatformIO and hit the Build button.
This project is provided as-is without any warranties. Use it at your own risk. The author is not responsible for any damage or issues that may arise from using this project.
- Timo Lappalainen NMEA2000 library and MCP library: GitHub Link
- Seeed-Studio CAN library: GitHub Link