Another full module build guide is up. Solstice now has a detail page that covers the solar and battery gateway from a pile of parts to a running module on the CAN bus, and the two-piece enclosure is printable with a single click on MakerWorld.
What's on the page
Same shape as Headwaters, Bearing, and Peregrine before it. A bill of materials with every part called out by name, every quantity, and every source link with the affiliate IDs we actually use. Dimensioned orthographic drawings pulled directly out of the FreeCAD assembly. Studio renders of the full module, the case bottom, and the case cover on their own. A step-by-step assembly walkthrough paired with an assembly animation that shows every part dropping into place in the right order. A full CAN message table with IDs, directions, cadences, and payloads.
Dimensions came straight out of the CAD. Print settings came straight out of the Bambu Studio project we actually use. The CAN map came straight out of main.c. If something on the page is wrong, the CAD or the firmware is wrong too, and we want to know.
What Solstice actually is
Solstice is a small black box that sits between the Victron side of your rig and the TrailCurrent CAN bus. One UART talks VE.Direct to a Victron MPPT solar charge controller. A second UART reads VE.Direct from a Victron shunt in parallel. The ESP32-S3 parses both serial streams and republishes the numbers as CAN messages at 30 Hz so Headwaters, the PWA dashboard, Farwatch, and Peregrine all see the same live data.
It also listens. If something on the bus sends the load-control message, Solstice writes a VE.Direct HEX SET to the MPPT's load-output register. Turn the Victron load relay on, off, or back to its default schedule from anywhere in the system, including by voice.
This is the module that absorbed Ampline last week. If you missed that post, the short version is: Ampline was a battery-shunt bridge, Solstice was a solar bridge, and they were running nearly identical firmware on nearly identical hardware. Collapsing them into a single module was an obvious win. Full context in Solstice Absorbs Ampline.
A few things about Solstice that are worth flagging
- The board is the Waveshare ESP32-S3-RS485-CAN. Wide 6 to 36 V DC input, on-board CAN transceiver, screw-terminal I/O, and a 2×10 GPIO pin header at 2.0 mm pitch. The wide input range is the reason there is no buck converter inside the case. The board handles the vehicle rail natively.
- The ribbon cable is generic. A 20-position IDC ribbon at 2.0 mm pitch that matches the Waveshare header. One end crimps onto the board. The other end breaks out into two VE.Direct pigtails, one to the MPPT and one to the shunt. The wire-to-GPIO mapping lives in
solstice-ribbon-cable.svgso you can build one from whatever parts are in your bin. - The shunt UART is RX only. Most Victron shunts expose VE.Direct TEXT broadcasting continuously, so Solstice just reads. The extended registers that require HEX GET (temperature, midpoint voltage, alarm reason, historical counters) are not populated; their CAN fields are sent as zero on purpose. If your shunt has a spec we are not reading yet and you want it on the bus, open an issue.
- Any Victron shunt with a VE.Direct port works. Pick the amperage that matches your bank. We run a SmartShunt on our reference build, but the firmware does not care which model it is as long as it speaks VE.Direct TEXT.
- Two Deutsch DTM04-4P connectors on opposite short ends. One carries 12 V / GND / CAN-H / CAN-L to the vehicle bus. The other carries the VE.Direct pairs out of the case to the Victron devices. Same silver-plated pins, same orange wedge lock, same sealed housing we use on every module.
The enclosure is on MakerWorld
The two-piece case has its own MakerWorld listing with a ready-to-print Bambu Studio project. Black ABS, 0.2 mm layer height, 2 walls, 15% grid infill, tree supports on the bottom half, cover prints flat with no supports. Single filament. No multi-color swap on this one; the embossed TrailCurrent logo on the cover is a raised relief that reads cleanly in any color, so we printed ours in pure black to match the case.
Prefer raw STL? Both parts are in the CAD folder on GitHub along with the .3mf project file and the original FreeCAD source.
Why this one matters
Solar and battery state is the most-looked-at data in the whole rig. You want to know what the panels are pulling in, what the bank is sitting at, and how long you have before the inverter kicks off. Solstice puts all of that on the bus once, in one place, with a single module and a single enclosure. From there it shows up on the Milepost dashboard, the PWA, Farwatch, and any voice query Peregrine is willing to take.
Next up
Four full build pages down: Headwaters, Bearing, Peregrine, Solstice. The rest of the lineup is queued. Torrent, Tapper, Borealis, Picket, Aftline, Plateau, Therma, Fireside, Spotter. Each one gets the same treatment at the same level of detail. Same format every time: exactly what to buy, exactly how to put it together, exactly which files to print and flash, and a CAN map that matches the firmware.
If the Solstice write-up is what you have been waiting for to start a build, this is the page. If you just want to print the case and come back to the electronics later, it's one click away.