Prerequisites
Hardware
| Part |
Qty |
Location |
Vendor |
Notes |
| BNO055 9-DOF IMU |
6 |
wrists, upper arms, chest, thigh |
Adafruit 4646 |
I2C, 0x28/0x29 addresses |
| STM32F405 Feather Express |
1 |
vest, primary MCU |
Adafruit 4382 |
168 MHz, 2x I2C, 6x ADC |
| KB2040 (RP2040) |
1 |
vest, co-processor |
Adafruit 5302 |
133 MHz, 2x I2C, UART |
| MyoWare 2.0 Muscle Sensor |
2 |
forearm flexor, lumbar erector |
SparkFun DEV-13723 |
0-1 V analog output |
| FSR 402 force sensor |
4 |
heels/toes, both feet |
Interlink 402 |
0.1"-4.5" sensing region |
| Qwiic cables (I2C) |
12+ |
sensor connections |
Adafruit |
100 mm length recommended |
| Jumper wires M-F |
20+ |
ADC, UART connections |
— |
200 mm breadboard wires |
| USB-C cables |
2 |
power + data |
— |
data-capable (not charge-only) |
| 3.7 V LiPo battery |
1 |
vest power |
Adafruit 2011 |
or USB power bank |
| Intel RealSense D435i |
1 |
helmet (ground truth) |
Intel |
USB 3.0 required |
| Adafruit BMP390 |
1 |
backordered |
Adafruit 4816 |
altitude; optional |
| Tool |
Required |
Install |
| PlatformIO |
Yes |
platformio.org — VS Code extension or CLI |
| Python 3.12+ |
Yes |
system or uv (astral.sh/uv) |
uv (Python env) |
Recommended |
curl -LsSf https://astral.sh/uv/install.sh \| sh |
| RealSense SDK 2.0 |
Optional |
pip install pyrealsense2 |
| Logic analyzer |
Optional |
Saleae Logic 8 or similar, for UART/I2C debugging |
| Multimeter |
Optional |
continuity checks, pull-up verification |
Software setup
cd wearable_har_v2
# Create Python venv with all dependencies
uv venv .venv --python 3.12
uv pip install -r requirements.txt
# Verify
.venv/bin/python -c "from host.protocol import crc32; assert crc32(b'123456789') == 0xCBF43926; print('OK')"
Assumptions
- You can solder header pins onto the STM32F405 and KB2040 boards
- You have a USB-C data cable (not charge-only)
- You are comfortable with PlatformIO's project-per-directory model