Donglegon: USB Hexpansion host
Wouldn't it be nice* to plug any of those amazing hexpansions directly into your phone or laptop, perhaps for development or use outside of the field when you haven't got a badge handy?
Welcome to Donglegon. You can do anything with Donglegon. Well. Almost**.
Status: concept. Test board designed, but not started on software.
* Insert hexpansions into your high-value devices at your own risk.
** It probably won't work on iOS, and at least this first iteration does not have the GPIO expander and LED driver so may not run all types of hexpansions, nor those relying on direct connection to ESP32 peripherals.
- Donglegon v1 BOM,
v1 MVP 2026-05-22, 1.6mm HASL yellow
Updates
May, 2026
The quickly thrown-together board borrows heavily from the 2024 badge. For the first prototype I'm keeping it small and sticking to a single hexpansion connector (three would be nice for a future iteration), and skipping the I2C multiplexer, GPIO expander, and ESD protection diodes. I also don't expect to populate the inverter, current limiting switch for hexpansion power, and maybe not even the 3v3 regulator. There are individual jumpers and test pads to bypass these for initial development and testing.
It turns out the 20 pin CH32V003/006 has just enough pins to do I2C, enough GPIOs for one hexpansion connector, detecting and switching hexpansion power, a debug LED, and USB. The firmware will have to present as a low-speed USB serial port or HID (human interface device) in software (there is no USB peripheral on these low-end chips). It should accept commands from the host to read or write to I2C devices on the hexpansion and control the GPIO pins. It will probably lean heavily on rv003usb and its port of TinyUSB, although I've no experience with low level USB interfaces yet and haven't tried this at all. The MCU is very cheap and should just be powerful enough, but if it can't be made to work it may be easier to just add an ESP32 of some kind.
Ultimately I'd love to see this being connected to a simulator for the rest of the badge (perhaps eventually running in WebAssembly in web browsers). I'm sure that could be hacked to talk to an external API for I2C and GPIO interactions. I also imagine some hexpansion developers might like to make a web page that can communicate with their board without emulating the MicroPython app running on the actual badge.
