Waveshare ESP32‐S3‐RS485‐CAN
MCU / flash: ESP32-S3 R8 (Xtensa LX7 dual-core, 240 MHz) with 8 MB octal/OPI PSRAM, 16 MB flash.
The Waveshare ESP32-S3-RS485-CAN is an affordable and easy to source board. It supports 1x CAN channel, and 1x RS485 port. It comes with a DIN mountable case, and accepts an input voltage between 7-36V.

Where this hardware shines~
On setups that require RS485, and have CAN controlled contactors (E.g. Tesla Battery with a Fronius inverter), it's a plug and play solution. This board is a more future proof alternative compared to the LilyGo T-CAN485.
| GPIO | Function |
|---|---|
| 0 | BOOT button — long-press options available |
| 1 | I2C display SDA (Configurable port = I2C Display SSD1306) |
| 2 | Status LED (default) — or I2C display SCL (I2C Display SSD1306) |
| 3 | Positive contactor output — or inverter disconnect contactor output |
| 4 | Negative contactor output |
| 5 | Precharge contactor output — or HIA4V1 precharge control |
| 6 | BMS Power output; held at its driven level across a firmware-initiated reset/OTA reboot |
| 7 | Equipment stop input |
| 8 | Second battery contactors output — or battery wake-up 1 (WUP1) |
| 9 | SMA inverter contactor enable input — or battery wake-up 2 (WUP2) |
| 10 | MCP2518FD CAN FD add-on: SCK |
| 11 | MCP2518FD CAN FD add-on: SDI |
| 12 | MCP2518FD CAN FD add-on: SDO |
| 13 | MCP2518FD CAN FD add-on: CS |
| 14 | MCP2518FD CAN FD add-on: INT |
| 15 | Native CAN TX |
| 16 | Native CAN RX |
| 17 | RS485 TX |
| 18 | RS485 RX |
| 21 | RS485 direction control (SP3485 DE and /RE tied together, HIGH = transmit) |
Purchase link~
The hardware can be bought via sites like Amazon, AliExpress, or the official Waveshare shop.
Limitations~
As can be seen from the pin mapping table above, this board has a single CAN channel and single RS485 port. The 4-pin SH1.0 connector on the board exposes GPIO1 and GPIO2, which can be configured in firmware settings as either a status LED or an I2C display (see below).
Internal header exposes pins to be used for GPIO controlled contactors and an additional CAN interface.
IMPORTANT
You can build a maximum double battery setup with this unit when used with an RS485 inverter, using its onboard CAN and a second CAN interface, as this will mostly max out the available GPIOs on the internal pin header. No way to add a third CAN interface to this board.
A Waveshare ESP32-S3-RS485-CAN with a second CAN interface and external contactors control for a double battery setup:

The plastic case has a bit of a headroom above the USB-C socket which allows for a small cutout to lead the cables from the header:


Optional accessories~
Expansion header~
The board has pads for a 20-pin 2.0mm pitch pin header:

Pigtail cable: AliExpress.
Another version, cut in half: AliExpress.
And yet another: AliExpress.
2.0 to 2.54mm dupont wires: AliExpress
Socket for own soldering: AliExpress.
Choose the 2x10p version!
Status LED (NeoPixel via GPIO2)~
The 4-pin SH1.0 connector (located directly behind the USB C connector) can power an optional Adafruit NeoPixel (or any WS2812-compatible single LED) connected to GPIO2, providing a visual status indicator. Please note that the Waveshare only outputs 3.3v!

Once wired, open the Settings page in the web interface and set GPIO 1/2 function to Status LED (this is the default).

NOTE
The status LED and I2C display are mutually exclusive — only one can be active at a time.
See also~
- BOOT button for special features to enable AP, wipe wifi settings or factory reset the device
- CAN add-on MCP2518FD for an additional CAN interface
CAUTION
Working with high voltage is dangerous. Always follow local laws and regulations regarding high voltage work. If you are unsure about the rules in your country, consult a licensed electrician for more information.