Open source · Embedded systems

EV batteries.
Vehicle-to-Home.
Renewable energy integration.

Embedded Rust engineer working on open-source tooling for EV battery repurposing, bidirectional charging, solar inverter integration, and high-voltage cell management. Protocols: CAN, RS485, CHAdeMO, Modbus.

Rust Embassy-rs RTIC no_std C/C++ STM32 ESP32 BeagleBone CAN bus RS485 I²C / SPI Svelte Python

Featured work

Major Projects

Maxim HV Cell Management

MAX17841B · MAX17823 · MAX17854

STM32 and ESP32 firmware with Arduino and Rust drivers for the Maxim MAX17841B UART bridge, MAX17823 and MAX17854 12-channel high-voltage battery management ICs. Supports per-cell voltage and temperature measurement across high-voltage battery packs. Dual CAN / RS485 connectivity. RTIC real-time scheduler. Arduino library and no_std async Rust crate releasing soon.

RustC/C++STM32ESP32CAN busRS485RTICEmbassy-rsno_stdHV DAQ
Arduino & Rust libraries releasing soon

BeagleBone V2H Charger

Bidirectional CHAdeMO · Reverse engineered

4

Bidirectional Vehicle-to-Home CHAdeMO charging system running on BeagleBone Green. Reverse-engineered from an Indra commercial V2H unit. Implements the full CHAdeMO handshake over dual CAN channels — one for EV control, one for inverter coordination. Written in async Rust with real-time control loops.

RustBeagleBoneCAN busCHAdeMOV2HAsyncEmbedded Linux

Toucan CAN Protocol Converter

STM32F407 · EV battery → ESS inverter

STM32F407-based firmware that translates EV battery CAN protocols into the formats expected by stationary energy storage inverters. Enables repurposing of EV battery packs — such as those from the Nissan LEAF — into domestic energy storage. Built with Embassy-rs async runtime and RTIC concurrency framework.

RustSTM32F407CAN busEmbassy-rsRTICESSEV battery
private — available on request

Open source

Libraries & Drivers

Published crates and protocol documentation

chademo-rs

3

A no_std Rust crate implementing the CHAdeMO DC fast charging protocol to IEEE Std 2030.1.1-2021. Tested with a Nissan Leaf ZE0. Suitable for embedded targets without an OS.

Rustno_stdCHAdeMOEVCAN

sc16is752

3 5

A no_std embedded-hal driver for the NXP SC16IS752 dual-UART and GPIO expander over I²C. Async-compatible, tested on STM32 targets. Community-adopted with 5 forks.

Rustno_stdI²CUARTembedded-halNXP

solax_can_bus

17

Comprehensive documentation and implementation of the Solax and FoxESS solar inverter CAN bus protocol at 500 kbps. The most-starred resource of its kind, widely used by the home energy community for custom integrations.

CAN busSolar inverterSolaxFoxESSProtocol docs

as8510

1

A no_std async Rust driver for the AS8510 dual-channel current and voltage measurement IC over SPI. Supports measurement ranges from ±77 A up to +2076 A. Suitable for battery pack monitoring applications.

Rustno_stdSPIembedded-halCurrent sensorHV

Home energy

IoT & Energy Integration

Inverter gateways, MQTT bridges, and Home Assistant integrations

FoxESS Work Mode

A Home Assistant custom integration that controls the work mode of FoxESS hybrid solar inverters via the cloud API. Allows time-of-use scheduling and battery dispatch control from within HA automations.

PythonHome AssistantFoxESSSolarCloud API

ABB Aurora → MQTT

1

Rust gateway that reads power and energy data from ABB Aurora / Power-One solar inverters over RS485 and publishes to an MQTT broker. Suitable for local monitoring and Home Assistant integration.

RustRS485MQTTSolar inverterABB Aurora

Nissan LEAF → MQTT

Rust gateway that reads live battery and charge state data from a Nissan LEAF's CAN bus and publishes it to an MQTT broker. Useful for monitoring battery state during V2H or stationary storage operations.

RustCAN busMQTTNissan LEAFEV

Samsung Heat Pump Controller

CLI tool for reading and controlling a Samsung MID heat pump via RS485 Modbus. Exposes setpoint, mode, and sensor data. Developed for integration with home energy management systems.

RustRS485ModbusHeat pumpSamsung

Research

Data & Protocol Analysis

CAN bus captures, battery logs, and protocol tooling

Renault Zoe CAN Data

3

CAN bus capture logs and Python analysis scripts for the Renault Zoe ZE40 (40 kWh) and ZE22 (22 kWh) battery packs. Covers cell voltage, temperature, SOC, and BMS protocol details. Useful for repurposing Zoe batteries into stationary storage.

PythonCAN busRenault ZoeEV batteryBMSProtocol analysis

gvret-canet-rs

Rust implementation of the GVRET (Generalized Vehicle Reverse Engineering Tool) protocol for CAN bus adapters. Enables CAN data capture and replay using compatible hardware with SavvyCAN and similar tools.

RustCAN busGVRETSavvyCANProtocol

Stack

Skills & Technologies

Languages

RustCC++PythonJavaScript / Svelte

Platforms

STM32ESP32BeagleBone GreenRaspberry Pi

Frameworks

Embassy-rsRTICno_stdembedded-hal

Protocols

CAN busCHAdeMORS485ModbusI²CSPIUARTMQTT

Domains

EV batteriesV2H / V2GSolar invertersBMSHV cell managementHome energy

Tools

SavvyCANprobe-rscargo-embassyHome AssistantWireshark