Skip to the content
PCBKitNew board
2 layers21 × 51 mmPico2w imu, the printed circuit board in 3D

WIP Repo for a prototype sensor board thing...

Size
21 × 51 mm
Copper layers
2
Thickness
1.6 mm
Parts
39
Nets
55
Pads
191
Tracks, vias
686, 60
Pours
4
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
24 Jun 2025
Updated
15 Mar 2026

Overview

Pico2w imu is an open-source printed circuit board by iwanders, from the iwanders/pico2w_thing_91c27 repository on GitHub, published under the BSD-3-Clause licence. It is a 2-layer board of 21 × 51 mm with 39 parts on 55 nets, routed with 686 tracks and 60 vias.

It is built around the BME280, DMG2305UX and ICM-42688-P, with the ICS-43434 among its other parts. Its parts include 11 capacitors, 11 resistors, 4 connectors, 3 ICs and 1 transistor. It belongs with the sensors and measurement boards and the RP2040 and RP2350 boards of this library.

Main components

4

README

board/README.md

Board

Notes for myself mostly.

Connections & Information

Table of relevant connections & information.

DevicePin(#)Rpi PinRpi GPIO/FunComment
Led Indicator31GPIO26/ADC0Blue, center of board
ICM-42688AP_SDO (1)6GPIO4/SPI0_RXSPI Serial data output
ICM-42688INT1 (4)9GPIO6Interrupt 1
ICM-42688INT2 (9)2GPIO1Interrupt 2, push/pull or open drain
ICM-42688AP_CS (12)7GPIO6/SPIO0_CSnSPI Chip Select
ICM-42688AP_SCL (13)4GPIO2/SPI0_SCKSPI Serial Clock
ICM-42688AP_SDI (14)5GPIO3/SPI0_TXSpi Serial data Input
LSM6DSV320XSDO (1)16GPIO12/SPI1_RXSPI Serial data output
LSM6DSV320XINT1 (4)19GPIO14Programmable Interrupt
LSM6DSV320XINT2 (9)20GPIO15Programmable Interrupt
LSM6DSV320XCS (12)17GPIO13SPI Chip select
LSM6DSV320XSCL (13)14GPIO10/SPI1_SCKSPI Serial clock
LSM6DSV320XSDA (14)15GPIO11/SPI1_TXSPI Serial Data Input
ICS-43434WS (1)10GPIO7Serial Data-Word Select I2S
ICS-43434LR (2)Channel select solder jumper GND
ICS-43434SCK (4)11GPIO8Serial Data Clock I2S
ICS-43434SD (6)12GPIO9Serial Data Output I2S
BME280SDI(3)26GPIO20 /I2C0_SDAI2C SDA, 4.7k pullup
BME280SCK(4)27GPIO21/I2C0_SCLI2C SCL, 4.7k pullup
MX25L25645GM2ICS (1)22GPIO17 / SPI0_CSnChip Select
MX25L25645GM2ISO (2)21GPIO16 / SPI0_RXSerial Data Output
MX25L25645GM2ISCLK (6)24GPIO18/SPI0_SCKClock Input
MX25L25645GM2ISI (5)25GPIO19/SPI0_TXSerial Data Input
SDCARDCD (2)32GPIO27 / ADC1Chip Select
SDCARDCMD (3)25GPIO19/SPI0_TXSerial Data Input
SDCARDCLK (5)24GPIO18/SPI0_SCKClock Input
SDCARDDAT0 (7)21GPIO16 / SPI0_RXSerial Data Output
SDCARDDET_A (10)29GPIO22Connects to GND with card (use internal pullup)
MCP73833STAT1 (3)Charging, Orange
MCP73833STAT2 (4)End of Charge, Red
MCP73833PG (7)Power Good, Green
MCP73833PROG (6)Charge current, 2.5k with two parallel 5k, 400mA default, 200mA if trace cut

Dimension notes

Pin 1 is at the origin, such that we can conveniently use a 2.54mm grid. Note to self; nothing ended up aligned on a 2.54 grid.

Vertical Center is thus at 17.78 / 2 = 8.89mm.

Top of board is at -(51-48.26)/2 = -1.37mm.

Left edge of board is at -(21-17.78) / 2 = -1.61mm

Right edge of board is at 21 - 1.61 = 19.39mm

Bottom edge of board is at 51 - 1.37 = 49.63mm

Top left mounting hole is at x: 8.89 - 11.4 / 2 = 3.19, y: 2 - 1.37=0.63mm

Top right mounting hole is at x: 8.89 + 11.4 / 2 = 14.59, y: 2 - 1.37=0.63mm

Bottom mounting holes at y: 51 - 2 - 1.37

Hole clearance: (3.8 - 2.1) / 2 = 0.85mm.

Debug headers are NOT at full 2.54mm offset.

Y value is 1.6mm off the botom edge; 49.63 - 1.6=48.03mm

For the 2w; debug gnd at x: 19.39-7.3759=12.0141mm, y at 49.63-19.8= 29.83mm.

Swdio thus atx: 12.0141 + 2.54=14.5541mm, swclk at 12.0141-2.54 = 9.4741mm.

Pico 2W

Battery Charger

Chip is MCP73833. Only the part ending in 33 has the power good pin, 34 is the timer flavour, which we don't want.

Is a DFN package... It has various flavours, digikey only carries VReg of 4.20v, going with no timer such that we can charge large batteries if necessary, with preconditioning, but no timer (in case we want to charge a large battery): MCP73833-AMI/MF in full.

Likely going to use a small LiPo battery, 180 mAh; like 30mm by 12mm, charge at 1C, gives about 200 mA charge current.

Equation 5-1, p17 of datasheet;

math
I_\text{reg} = \frac{1000V}{R_\text{prog}}

With $I_\text{reg}$ in mA and $R_\text{prog}$ in kOhm.

To get 200mA current, we need $R_\text{prog}$ to be 5k Ohm.

To get 400mA current, we need $R_\text{prog}$ to be 2.5k Ohm.

Modified this to be two resistors of 5k, with one trace that's easily cut to drop from 400mA to 200mA.

When the voltage at the VBAT pin reaches the regulation voltage, VREG, constant voltage regulation begins. The regulation voltage is factory set to 4.20V, 4.35V, 4.40V, or 4.50V with a tolerance of ± 0.75%.

If temperature monitoring is not required, place a standard 10 kΩ resistor from THERM to VSS.

Capacitor C8, decoupling on vbat:

Verified pin inputs.

LEDs

Lets go with OSRAM SMARTLED® 0603 series, they seem made for diffuse indicator lights. Effectively Kx EELP41.xx with x changing depending on the color. Digikey filter link; search on series and EELP.

This application note AN041 is helpful.

Key takehome is that it is not known which brightness we get when ordering, but a particular reel has a particular brightness group. Using this code on the reel, one can pick the resistor value.

Lets go for a nice traffic light, easy to remember, and with battery disconnected we see a green LED:

  • Power Good: Green, PG pin on battery charger
  • Charging: Orange, STAT1 pin on battery charger
  • EOC: Red, STAT2 pin on battery charger

Positive voltage at the 'round' pin, negative voltage at the flat side.

Red

VBus is from USB, so 5V, the pin sinks.

Brightness groups:

  • P1 is brightness group 45-56 mcd at 20mA. (~50)
  • 4 more groups here.
  • R2 brightness group 140-180 mcd at 20mA. (~150)

Average of all groups is ~100 mcd at 20mA.

Forward voltage groups:

  • 1.6V - 2.0V
  • 2.0V - 2.4V Nominal is 2V.

Relative luminous intensity is a straight line. Lets say aim is 10mcd?

  • P1 brightness group needs 10/50 * 20mA = 4mA, so $R=\frac{V_s - V_f}{I_f}$, (5-2)/4e-3 = 750 ohm.
  • Avg needs 10/100 * 20mA = 2mA, so $R=\frac{V_s - V_f}{I_f}$, (5-2)/2e-3 = 1500 ohm.
  • R2 brightness group needs 10/150 * 20mA = 1.3mA, so $R=\frac{V_s - V_f}{I_f}$, (5-2)/1.3e-3 = 2250 ohm.

Note; 3.3k ohm seems to be more than bright enough. 6.8k also works. 10k is dim, but still easily visisble, makes the 'dot' visible. Lets go with 4.3k

Orange

, VBus is from USB, so 5V, the pin sinks.

Brightness groups:

  • Q1 is brightness group 71-90 mcd at 20mA. (~80)
  • 4 more groups here.
  • S2 brightness group 224-280 mcd at 20mA. (~252)

Average of all groups is ~166 mcd at 20mA.

Forward voltage groups:

  • 1.6V - 2.0V
  • 2.0V - 2.4V Nominal is 2V.

Relative luminous intensity is a straight line. Lets say aim is 10mcd?

  • Q1 brightness group needs 10/80 * 20mA = 2.5mA, so $R=\frac{V_s - V_f}{I_f}$, (5-2)/2.5e-3 = 1200 ohm.
  • Avg needs 10/166 * 20mA = 1.2mA, so $R=\frac{V_s - V_f}{I_f}$, (5-2)/1.2e-3 = 2500 ohm.
  • S2 brightness group needs 10/252 * 20mA = 0.8mA, so $R=\frac{V_s - V_f}{I_f}$, (5-2)/0.8e-3 = 3750 ohm.

10k is dim, but still easily visisble, makes the 'dot' visible. 5.1k is present, but not overly bright. 3.3k is also fine. Doesn't seem to be super bright like the green one is. 2k is definitely getting to 'no longer an indicator light'

Green

VBus is from USB, so 5V, the pin sinks.

Brightness groups:

  • S2 brightness group 224-280 mcd at 20mA. (~252)
  • 2 more groups here.
  • U1 brightness group 450-560 mcd at 20mA. (~505)

Average of all groups is ~378 mcd at 20mA.

Forward voltage groups:

  • 2X 2.3V - 2.4V
  • 6 more groups
  • 4Y 3.0V - 3.1V Nominal is 2.7V.

Relative luminous intensity is not a straight line, graph is non uniform, but not by much... 7.5mcd goal?

  • S2 brightness group needs 7.5/252 * 20mA = 0.6mA, so $R=\frac{V_s - V_f}{I_f}$, (5-2.7)/0.6e-3 = 3833 ohm.
  • Avg needs 10/378 * 20mA = 0.529mA, so $R=\frac{V_s - V_f}{I_f}$, (5-2.7)/0.529e-3 = 4347 ohm.
  • U2 brightness group needs 7.5/505 * 20mA = 0.3mA, so $R=\frac{V_s - V_f}{I_f}$, (5-2.7)/0.3e-3 = 7666 ohm.

3.3k is still very very bright. 6.8 is still bright, 10k is nice for an always on light.

Battery input

Following the guidance of the Pico 2W datasheet; Diodes DMG2305UX, just in SOT23 package.

Enlarged landing pads on footprint, made a new footprint for this. Verified Pins

Indicator LED

Connected to the uC, 3.3v driving voltage.

Brightness groups:

  • P1 is brightness group 45-56 mcd at 20mA. (~50)
  • 4 more groups here.
  • R2 brightness group 140-180 mcd at 20mA. (~150)

Forward voltage groups:

  • 3X 2.6V - 2.7V
  • 2 more groups
  • 4X 2.9V - 3.0V Nominal is 2.75V.

This comes from the uC, it can be PWM'd, but it does consume battery and the like. Lets go with 4mA, that's 10-30 mcd.

Nominal $R=\frac{V_s - V_f}{I_f}$, (3.3-2.75)/4e-3 = 137.5 ohm.

At full brightness;(3.3-2.75)/20e-3 = 27 ohm, 30 ohm is approx 18mA.

Well, 3.3k is perfectly fine for an indicator led. 200 ohm is bright enough to be uncomfortable (47 even more so), 2k is also fine.

LMS6DSV320X

Imu, large acceleration range;

Decoupling caps, 100nF, 0402:

Verified the pins.

ICM-42688-P

Imu, high data rate;

Caps:

  • One 100nF, see the other IMU.

Cap 10nF:

Cap 2.2uF:

Verified the pins.

ICS-43434

Decoupling cap is 100nF, see above.

Verified pins.

Memory

Decoupling cap is 100nF, see above.

SD Card

Decoupling cap 100nF, see above.

BME280

Decoupling caps 100nF, see above.

Connector

JST PH 2mm pitch, through hole side connector.

Resistors

Filter link, Samsung Electro-Mechanics, 1%, RC series, and in stock.

But this filter Panasonic Electronic Components, <1%, ERJ-2RK series has more options.

Backups:

Stencil

Actual info: TDK AN-000393 IMU PCB Design and MEMS Assembly Guidelines, for LGA they state the land should be different from the solder mask opening, solder mask being +0.1mm larger. Stencil thickness should be at least 100um. Not too much on stencil layout.

That is the same as STMs TN0018: Handling, mounting, and soldering guidelines for MEMS devices pdf, which also states solder mask opening should be +0.1mm.

So the footprint should be:

text
For LGA pad spacing greater than 200 μm:
A = PCB land length = LGA solder pad length + 0.1 mm
B = PCB land width = LGA solder pad width + 0.1 mm

Pad is 0.25mm by 0.475mm, so pad should be 0.35mm by 0.575mm. Doesn't state to round corners.

And then the solder mask:

text
C = Solder mask opening length (where applicable) = PCB land length + 0.1 mm
D = Solder mask opening width = PCB land width + 0.1 mm

Solder mask opening length is pad + 0.1mm, so grow of 0.05mm. They do state to not put solder mask below the IMU's.

Seems for 0402 one should subtract 1mil (0.0254mm) from the pad? Or about -10%?

Lets go with:

Board Setup -> Solder Mask/Paste -> Solder Paste Settings -> Relative clearance -10%

Note after assembling all three boards; wouldn't change a thing about the solder stencil.

Prep

Trying jlcpcb instead of oshpark because they can produce a stencil. Instructions for kicad export.

PCB is 21 by 51mm, lets do 100x120mm to ensure we have space for the paste and tape.

Notes on v1

  • ICM-42688-p pin 8 should've exited straight (towards charge ic), there's space and currently the solder mask is over the trace which may pull the IC to the side.
  • Microphone hole looks like it could've been larger.

First board assembly

Approach; double sided poster tape to tape spare PCBs to the work area, build a rig that holds the boards, don't forget tape (with non-stick cover) underneath the board we're working on. Use other tape for the stencil hinge, ensure orientation in translation and rotation, push the board for final adjustment if you have to during the paste application.

Both JST plugs I have have opposite polarity from my board...

  • Swapped ICM 2.2uF and 100nF (C1 & C2) during assembly.
  • Indicator led works, reasonable brightness for an indicator.
  • Battery charger: no battery; all leds on. Green LED could've been less bright. Can power the board with battery.
    • Battery 280mAh initially at 4.0v, red turns off when battery connected, orange stays on. Red turned off, with battery at 4.15v.
    • Battery does start the program on the board.
    • Big 1200mAh battery start at 3.7v, IC does heat up, but nothing excessive. Red at 4.17v.
  • ICM42688 is responsive through exclusive SPI0, who am I register.
  • LSM6dsv320x is responsive through exclusive SPI1, who am I register.
  • BME280 responds the Chip ID register.
  • Flash is responsive, reading JEDEC register works.
  • SDCard is functional (though at low clock rate?), card detect also works.

Second board assembly

Changing charging resistor, the orange LED to be brighter; 2.49k instead of 4.9k. Can't change green as I don't have 0402 higher than 10k. Leds have 'flat' edge towards inside of the board.

  • More solder paste would've been better, first squeeze didn't apply enough, had to wipe everything and retry, still sparse on the imu's, they don't seem to float above the board. Probably need to move slower and more deliberate push it into the holes. One of the imu's is very close to the pcb, instead of 'laying' on solder.
  • hw test passes, microphone, bme, flash, imu's are reachable, as is sd card. Charger and power switchover seems to work as well.

Third board

Same as second, but without the LSM. Had to do two passes with the solder paste, but turned out fine.

Parts

39
QtyValueFootprintReferences
8100 nFCapacitor_SMD:C_0402_1005MetricC1, C4, C5, C6, C7, C9, C10, C11
410kResistor_SMD:R_0402_1005MetricR4, R7, R8, R10
24.7kResistor_SMD:R_0402_1005MetricR1, R2
25kResistor_SMD:R_0402_1005MetricR6, R11
2PinHeaderProjectFootprint:PinHeader_1x02_P2.54mm_Vertical_round_no_silk_courtyardJ3, J4
110nFCapacitor_SMD:C_0402_1005MetricC3
12.2kResistor_SMD:R_0402_1005MetricR9
12.2uFCapacitor_SMD:C_0402_1005MetricC2
12.49kResistor_SMD:R_0402_1005MetricR3
14.3kResistor_SMD:R_0402_1005MetricR5
14.7uFCapacitor_SMD:C_0603_1608MetricC8
1BME280Package_LGA:Bosch_LGA-8_2.5x2.5mm_P0.65mm_ClockwisePinNumberingU2
1ChannelJumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mmJP1
1DMG2305UXProjectFootprint:SOT-23_diodes_inc_standardQ1
1ICM-42688-PProjectFootprint:LGA-14_3x2.5mm_P0.5mm_tospecICM-42688-P1
1ICS-43434Sensor_Audio:InvenSense_ICS-43434-6_3.5x2.65mmMK1
1JSTHeaderProjectFootprint:JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal_no_silkJ2
1LED_CHGLED_SMD:LED_0603_1608MetricCHG1
1LED_EOCLED_SMD:LED_0603_1608MetricLED_EOC1
1LED_INDLED_SMD:LED_0603_1608MetricIND1
1LED_PGLED_SMD:LED_0603_1608MetricLED_PG1
1LSM6DSV320X1ProjectFootprint:LGA-14_3x2.5mm_P0.5mm_tospecLSM6DSV320X1
1MCP73833-AMI-MFPackage_DFN_QFN:DFN-10-1EP_3x3mm_P0.5mm_EP1.58x2.35mmU3
1MX25L3233FM2Package_SO:SOIC-8_5.3x5.3mm_P1.27mmU4
1Micro_SD_Card_Det2Connector_Card:microSD_HC_Molex_104031-0811J1
1RaspberryPi_Pico_WProjectFootprint:RaspberryPi_Pico_2w_thtA1

Questions

How big is the Pico2w imu PCB?

It measures 21 × 51 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Pico2w imu use?

39 parts, built around the BME280, DMG2305UX, ICM-42688-P and ICS-43434. 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.

Where can I download the Pico2w imu KiCad files?

From the iwanders/pico2w_thing_91c27 repository on GitHub, at the commit this page was made from: the board is board/pico2w_imu.kicad_pcb and its schematic board/pico2w_imu.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Pico2w imu design in my own project?

Its repository publishes it under the BSD-3-Clause licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layersSAM, the printed circuit board in 3D

    SAM

    AndreaColombo74/SAM

    45 parts
  • 4 layers54.7 × 50 mmBoard 1, the printed circuit board in 3D

    Board 1

    Triksha-health/Hardware

    Contains KiCAD files of all the PCB Boards for the Health Tracker System

    45 parts
  • 4 layers50 × 44.5 mmS3-motion logger, the printed circuit board in 3D

    S3-motion logger

    abdullahwaqar/s3-motion-logger

    ESP32-S3 motion logging board. It logs 6-axis IMU data to a microSD card and streams it over USB, BLE or Wi-Fi. It runs from a single-cell LiPo and charges over USB-C.

    77 parts
  • 4 layers56.5 × 65 mmPi3 hat, the printed circuit board in 3D

    Pi3 hat

    Jayanth-M0625/MRL

    Work at MRL

    135 parts
  • 6 layers41.8 × 42 mmWatch pcb, the printed circuit board in 3D

    Watch pcb

    dezash123/watch-pcb

    ECAD for my custom smartwatch

    179 parts1
  • 4 layers70.6 × 102.9 mmEVT PCB, the printed circuit board in 3D

    EVT PCB

    mquerostudio/MQ-One

    Archivos del MQ One y mi Trabajo Final de Grado :)

    265 parts58
  • 4 layers25.4 × 25.4 mmZeo1.2 devboard, the printed circuit board in 3D

    Zeo1.2 devboard

    zeodotdev/zeo-boards

    ESP32-S3 development board with onboard BME280 (temperature, humidity, pressure) and LSM6DS3 (6-axis IMU) sensors. This repo contains the designs, ESP-IDF firmware, and a Python plotter for visualization.

    92 parts3
  • 2 layers54.5 × 45 mmSlave, the printed circuit board in 3D

    Slave

    Kybernetika-SPSE/DMP_Vagner

    67 parts