Wren is an altimeter small enough to fit in a standard 18mm model rocket. It is designed to be assembled by JLCPCB for as low of a price as possible. The altitude, velocity and acceleration are sampled and saved at 50Hz. The battery should last for tens of hours while waiting for a launch and is charged through USB-C
A 12mm x 34mm 4 layer PCB, designed to only use components from JLCPCB's stock. Single sided assembly with only a debug connector and battery pads on the back.
-
MCU: A low-power nRF52833.
-
Accelerometer: A LIS2DH rotated 45° allowing it to measure accelerations up to 22.5G instead of the typical 16G limit.
-
Barometer: A BMP390 for altitude measurements.
-
Flash Memory: 4Mbit of onboard flash. Should log ~10 flights at 50Hz.
-
Battery: LiPo charging at 30mA.
The onboard firmware is developed in Rust using the Embassy framework.
Before flashing the firmware, you must first flash the bootloader. Navigate to the firmware/bootloader/ directory and run:
cargo run --releaseOnce the bootloader is installed, navigate to the firmware/ directory and run the same command:
cargo run --releaseNote: You only need to flash the bootloader once unless you modify it.
Once the bootloader is flashed, you can update the firmware directly over USB.
Generate a binary file suitable for flashing:
cargo objcopy --release -- -O binary firmware.binThis will create firmware.bin in the current directory.
-
Connect the board to a USB port.
-
Run the firmware updater script:
python firmware_updater.py ../firmware/firmware.bin
-
Power cycle the board – The updater intercepts the boot process to load the new firmware.
To run a native test build with mock drivers, use:
cargo run --target x86_64-unknown-linux-gnu(Or any other architecture that supports the Rust standard library.)
To fetch data and manage the altimeter, use the dashboard:
python dashboard/main.py


