
RP2040 minimal r2
WURocketry/Electrical_2023-2024
Electrical Repository for 2023-2024 Competition Year

Custom RP2040 PCB with a IAM-20680 IMU, IIS2MDC Magnetometer and BMP581 Barometer for Sensor Fusion applications. Repository also contains code for 100Hz Kalman and Madgwick Sensor fusion with complete hard/soft-iron calibration for demo purposes.
Senfusion is an open-source printed circuit board by shrekwes, from the shrekwes/Sensor-Fusion-PCB repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 37.7 × 50.5 mm with 64 parts on 61 nets, routed with 645 tracks and 147 vias.
It is built around the RP2040, BMP581 and W25Q128JVSIQ, with the ICM-20602 and ABM8-272-T3 among its other parts. Its parts include 26 capacitors, 13 resistors, 6 ICs, 3 connectors and 2 diodes. It belongs with the sensors and measurement boards and the RP2040 boards of this library.
A compact, custom-fabricated two-layer sensor fusion PCB built around the Raspberry Pi RP2040. Integrates a 6-axis IMU, 3-axis magnetometer, and barometric pressure sensor on a single board — programmable natively in MicroPython.
| Component | Part | Interface | Address |
|---|---|---|---|
| Microcontroller | RP2040 (dual-core Cortex-M0+, 133MHz) | — | — |
| IMU | IAM-20680HV (6-axis accel + gyro) | I2C1 — GP2/GP3 | 0x68 |
| Magnetometer | IIS2MDCTR (3-axis AMR) | I2C0 — GP8/GP9 | 0x1E |
| Barometer | BMP581 (pressure + temperature) | SoftI2C — GP6/GP7 | 0x46 |
| Flash | W25Q128JVS (128Mbit QuadSPI) | QSPI | — |
| Crystal | ABM8-272-T3 (12MHz) | XIN/XOUT | — |
| Regulator | NCP1117-3.3 (5V → 3.3V LDO) | — | — |
The board is a two-layer design captured in KiCad 9.0. Layout decisions were driven primarily by the sensitivity requirements of the three MEMS sensors.
IMU (IAM-20680HV) Placed on a mechanically stable region of the board, away from mounting holes and connectors. Requires a solid ground plane beneath it for noise reduction — copper fill is maintained under this device. The exposed ground pad is connected to the ground plane via multiple vias.
Magnetometer (IIS2MDCTR) Highly sensitive to magnetic fields from nearby copper currents. Ground plane and copper pours are cleared on both layers in the region surrounding this device. High-current traces and switching components are kept at a distance.
Barometer (BMP581) Isolated from large copper regions on both layers to prevent thermal gradients and mechanical stress from influencing pressure readings.
Decoupling — All bypass capacitors placed within 1–2mm of their associated VDD pins, with short via stubs to the ground plane, in accordance with each sensor's datasheet.
Crystal — ABM8-272-T3 placed as close as practical to the RP2040 XIN/XOUT pins. Load capacitors are inline. A copper pour guard ring tied to GND prevents switching-noise coupling into the oscillator.
USB differential pair — USBDP/USBDM routed as a 90Ω differential pair (0.8mm track width, 0.15mm gap on a 1mm substrate) per the RP2040 hardware design guide.
GPIO header — 23 pins expose selected RP2040 GPIO signals for external interfacing via UART, SPI, or I2C, making the board extensible rather than a closed system.
BOOTSEL and RESET — dedicated push-buttons for bootloader entry and manual reset.
The IAM-20680HV KiCad footprint files were not available at the time of design. The ICM-20602 footprint was used as a drop-in substitute — the two devices share an identical package and pin layout. The assembled board uses the IAM-20680HV component on the ICM-20602 footprint without modification.
Before manufacture the following checks were completed in KiCad:
All firmware is written in MicroPython and runs directly on the RP2040. The board was developed and flashed using Thonny IDE.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 15 | 0.1u | Capacitor_SMD:C_0402_1005Metric | C3, C4, C5, C6, C7, C8, C9, C11, C12, C14, C18, C19, C20, C25, C28 |
| 7 | TestPoint | TestPoint:TestPoint_Pad_D1.5mm | TP1, TP2, TP3, TP4, TP11, TP12, TP13 |
| 5 | 1k | Resistor_SMD:R_0402_1005Metric | R3, R4, R7, R8, R9 |
| 4 | 4.7k | Resistor_SMD:R_0402_1005Metric | R10, R11, R14, R15 |
| 3 | 10u | Capacitor_SMD:C_0603_1608Metric | C1, C2, C26 |
| 3 | MountingHole | MountingHole:MountingHole_2.2mm_M2 | H1, H2, H3 |
| 2 | 15p | Capacitor_SMD:C_0402_1005Metric | C15, C16 |
| 2 | 1u | Capacitor_SMD:C_0402_1005Metric | C10, C13 |
| 2 | 27.4 | Resistor_SMD:R_0402_1005Metric | R1, R2 |
| 2 | 5.1k | Resistor_SMD:R_0402_1005Metric | R5, R6 |
| 2 | LED | LED_SMD:LED_0402_1005Metric | D1, D2 |
| 2 | SW_Push | Button_Switch_SMD:SW_Push_1P1T_NO_CK_KMR2 | FLASH, RESET |
| 1 | 0.47u | Capacitor_SMD:C_0402_1005Metric | C29 |
| 1 | 10n | Capacitor_SMD:C_0402_1005Metric | C30 |
| 1 | 2.2u | Capacitor_SMD:C_0402_1005Metric | C24 |
| 1 | 220n | Capacitor_SMD:C_0402_1005Metric | C27 |
| 1 | ABM8-272-T3 | ABM8_rpipico_ul:ABM8-272-T3_ABR | X1 |
| 1 | BMP581 | BMP581_ul:QFN10_BMP581_BOS | U7 |
| 1 | Conn_01x05_Pin | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J5 |
| 1 | Conn_01x18_Pin | Connector_PinHeader_2.54mm:PinHeader_1x18_P2.54mm_Vertical | J3 |
| 1 | ICM-20602 | ICM_20602_ul:LGA16_I62_IVS | U4 |
| 1 | IIS2MDCTR | IIS2MDC_ul:LGA-12_2X2X0P7_STM | U5 |
| 1 | LOGO | clippy:clippy_10mm_2 | G*** |
| 1 | NCP1117-3.3_SOT223 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U2 |
| 1 | RP2040 | Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mm | U1 |
| 1 | USB_C_Receptacle_USB2.0_14P | Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | J1 |
| 1 | W25Q128JVS | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | U3 |

WURocketry/Electrical_2023-2024
Electrical Repository for 2023-2024 Competition Year



Sadrita404/Node-Zero
Node Zero is an rp2040 based micro-controller unit that consist of the rp2040 micro processor, the 16Mbit SPI NOR Flash, a crystal oscillator that synchronizes communication in the board between the USB abd rp2040, a…


ikajdan/katia
A split keyboard with 6 by 3 column staggered keys and 3 thumb keys, based on the Crkbrd design

alvarop/swd2usbc
Have you ever wanted to debug your device over USB-C? Sometimes there's not enough room for a JTAG/SWD connector, or even Tag-Connect pads!

It measures 37.7 × 50.5 mm and has 2 copper layers, 1.6 mm thick.
64 parts, built around the RP2040, BMP581, W25Q128JVSIQ and ICM-20602. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the shrekwes/Sensor-Fusion-PCB repository on GitHub, at the commit this page was made from: the board is senfusion.kicad_pcb and its schematic senfusion.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).