Skip to main content

← All posts

Field Report

Switchback, Reviewed: Eight Relays and Eight Picket Inputs on the CAN Bus

· 5 min read

Switchback is the TrailCurrent module that listens to the CAN bus and switches loads. Eight relays rated 10 A, eight optoisolated inputs, an isolated CAN transceiver, all in a screw-mount case sized like a paperback. This week's video on the open-source channel is the hardware review of Switchback: what is inside the box, how the firmware uses it, and the one design decision that quietly knocks a part off the TrailCurrent bill of materials.

The board inside

Switchback's hardware is the Waveshare ESP32-S3-ETH-8DI-8RO-C. We picked it because it is a finished product instead of a bare dev board: ESP32-S3 in the middle, eight SPST relays rated 10 A at 250 VAC or 30 VDC down one side, eight bidirectional optoisolated inputs down the other, an isolated CAN transceiver on a screw terminal, and a W5500 Ethernet port for a wired link. The whole thing ships in a finished ABS housing with four 4.5 mm corner mounting holes, so it screws to a wall, a cabinet, or the floor of an equipment bay with M4 machine screws or #8 wood screws. Power is 7 to 36 V through a screw terminal, so 12 V or 24 V house bank wiring feeds it directly. USB-C is there for first-time flashing and serial debug. There is no custom PCB to lay out, no enclosure to print, and no power input to design. That is exactly why Switchback exists as a published module: the hard parts of the hardware are already done, and the firmware is what makes it ours.

The headline feature is the isolation. Every input runs through its own optocoupler. The CAN side is on a galvanically isolated transceiver. Relay coils are on their own driver stage, not pulled straight off ESP32 pins. On an automotive bus, where ground potential between two ends of the chassis can wander by a couple of volts under load, that matters. A bare relay board hanging off a generic ESP32 is a brownout looking for an excuse.

The CAN-bus I/O node, or BCM, framing

Professional automotive folks call the box that reads switches and switches loads a body control module, or BCM. It is the unglamorous brain that watches the door pins, the courtesy switches, the cargo lights, and the wipers, and turns relays on and off accordingly. Every modern vehicle has one or several, talking to the rest of the vehicle on CAN.

Switchback fills that exact role on TrailCurrent. Wire the eight inputs to cabinet switches, door pins, slide-out limit switches, awning travel sensors, hitch detection. Wire the eight relays to interior lights, fans, slide motors, lock actuators, anything 12 V you want to switch on or off. The firmware listens for CAN frames addressed to it and toggles the matching relay. It publishes the input state and the relay state back on the bus on a heartbeat, so the rest of the system has a current picture of what is closed and what is on. Anything else on the CAN bus, a dashboard, a phone, a logic node, can both read and command.

Switchback sits next to Torrent, our power distribution module, without overlapping it. Torrent is a custom PCB with eight MOSFET-switched channels, per-channel current sensing, and PWM dimming. It earns its custom board because dimming and current telemetry matter for a power distribution box. Switchback is just on or off, with a real relay click and a clean isolated bus interface. Different jobs, both on the same CAN bus, neither one fighting for the other's territory.

What is in the video

The review walks Switchback in the order you would meet it on the bench. Unboxing first, because the case matters and so does the connector layout. Then a hardware tour: the relay block, the optoisolated input block, the CAN transceiver, the W5500 Ethernet, the USB-C, the wide-input power stage. Then the practical part. Wiring it from a 12 V house bank. Dropping it onto a CAN bus alongside a Headwaters gateway. Sending CAN frames to toggle a relay and watching the click line up with a status frame coming back. Wiring a reed switch to one of the inputs and seeing the frame land in Headwaters as if it had come from a Picket node. The kind of end-to-end loop that, once it is working, is what a software defined vehicle actually feels like to use.

The honest pros and cons sit at the back. Short version: the isolation and the enclosure are why we picked this hardware for Switchback, the lack of current sensing and dimming are why we still build Torrent as a custom board for power distribution. They are complementary, not competing.

Mount it inside, not outside

Switchback is an interior module. The ABS housing is not sealed against salt spray or driving rain. The screw terminals are exposed at the top. Mount it in the electrical bay, behind a wall panel, under a seat, or inside a cabinet. It does not go on the outside of the rig, and it does not go on a boat deck. For an exposed-exterior install you want a properly IP-rated enclosure, and that is a different conversation.

For inside the vehicle, where 95 percent of the I/O on an RV or van conversion actually lives, the form factor is great. Four 4.5 mm corner holes through the case let you screw it straight to a wall, a cabinet wall, or the floor of an equipment bay with M4 machine screws or #8 wood screws. The screw terminals accept ferrules cleanly and the case keeps the relay click contained.

Specs worth pinning down

  • MCU. ESP32-S3, dual-core Xtensa LX7 at 240 MHz, with 2.4 GHz WiFi and Bluetooth LE on board.
  • CAN. Isolated CAN transceiver on the -C variant. The non-C ships with RS485 in the same slot.
  • Ethernet. W5500, 10/100 Mbps RJ45, wired TCP/IP as an alternative or backup to WiFi.
  • PoE. Unpopulated header on the -C. If you want PoE without soldering a module, order the ESP32-S3-POE-ETH-8DI-8RO-C variant which ships with IEEE 802.3af built in.
  • Relays. Eight SPST, rated 10 A at 250 VAC or 30 VDC.
  • Inputs. Eight bidirectional optoisolated digital inputs. Source or sink, either polarity, your choice per channel.
  • Power. 7 to 36 V DC screw terminal for vehicle power, or 5 V via USB-C for bench work.
  • Extras. Onboard buzzer, RGB status LED, USB-C for flashing and debug.
  • Mounting. Four 4.5 mm corner holes through the ABS case. Screws to a wall, cabinet, or the floor of an equipment bay with M4 machine screws or #8 wood screws.
  • Firmware. Arduino, ESP-IDF, and PlatformIO supported. ESPHome configs exist for the Home Assistant crowd, though that is not how we use it here.

One board, two roles, one fewer SKU on the BOM

The reason this review matters more than just "another ESP32 relay board" is what the Switchback firmware does on the input side. Each of the eight optoisolated inputs is debounced and broadcast on the CAN bus at 5 Hz, with the frame format taken byte-for-byte from Picket, our dedicated reed-switch sensor module. Switchback at address 0 publishes its inputs as PicketStatus8. Address 1 publishes as PicketStatus9. Address 2 publishes as PicketStatus10. Headwaters decodes those frames through the same path it already uses for a real Picket node, with no extra configuration and no separate handler.

That collapses two part numbers into one. A build that previously needed both a Picket module on the dedicated Waveshare ESP32-S3-RS485-CAN board and a separate relay node now needs a single Switchback. Up to three Switchback modules can share the bus, which gets you twenty-four Picket-format inputs and twenty-four relay channels off one SKU instead of two. The flasher dropdown on flash.html already lists it as Switchback · 8-Channel Relay + 8 Picket Inputs, which is the part the dropdown was telegraphing all along.

For the builder, the payoff is concrete. Fewer enclosures to mount, fewer power feeds to land, fewer connectors to crimp, and one less bin of parts on the shelf. For us, it means we can keep the Picket reference design exactly as it is for installs that want a small, cheap, dedicated reed-switch node, while pointing builders who need both inputs and relays in the same equipment bay straight at Switchback. The Picket wire format is the contract between them. The board choice is yours.

The behind-the-scenes channel

The review is on @trailcurrentopensource, the second TrailCurrent YouTube channel. The main @trailcurrent channel covers what the system does and what it is like to live with on a rig. The open-source channel is for the part underneath: hardware reviews, firmware deep dives, design decisions, and the bench work. If that is what you came for, that is the channel to follow.

How to put one on your bus

The board is direct from Waveshare at waveshare.com/esp32-s3-eth-8di-8ro-c.htm. That link carries our affiliate tag, which costs you nothing and sends a small cut back to the project. If you would rather skip the tag, strip ?aff_id=Trailcurrent off the URL.

Once it arrives, the rest of the path is on this site. The Switchback product page has the wiring diagram, the CAN message table, and the assembly steps. The TrailCurrent Flasher writes the firmware straight from your browser over USB-C, with three address variants on the dropdown so you can run up to three on the same bus. After the first flash, every update from then on lands over the air through the CAN bus, the same OTA path the rest of the platform uses.

Land it on a Headwaters gateway, wire a reed switch to one of the eight inputs, hang an interior light off one of the eight relays, and the click on this board is now tied to whatever the sensor on the other side has to say. That is the part of a software defined vehicle that is hard to feel from a spec sheet and easy to feel the first time a cabinet light comes on because the door opened.