Skip to the content
6 layers26 × 56.8 mmBluebuzz rm2, the printed circuit board in 3D

A Bluetooth vibrator controller: RP2350A + Raspberry Pi Radio Module 2 (the first board, an nRF52840 module, is abandoned and kept in archive/nrf52840/): Wi-Fi 4 and Bluetooth 5.2 Classic + LE (CYW43439), so the toy can…

Size
26 × 56.8 mm
Copper layers
6
Thickness
1.6 mm
Parts
109
Nets
72
Pads
435
Tracks, vias
2,290, 330
Pours
22
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
22 Oct 2026
Updated
22 Oct 2026

Overview

Bluebuzz rm2 is an open-source printed circuit board by sequoia-hope, from the sequoia-hope/bluebuzz repository on GitHub. It is a 6-layer board of 26 × 56.8 mm with 109 parts on 72 nets, routed with 2,290 tracks and 330 vias.

It is built around the RP2350A, DPS368 and W25Q32JVUUIQ, with the BQ24074RGTR, LSM6DS3TR-C and TLV75533PDBV among its other parts. Its parts include 48 capacitors, 29 resistors, 14 ICs, 6 diodes and 6 connectors. It belongs with the radio and wireless boards and the RP2350 boards of this library.

Main components

11

README

README.md

bluebuzz-rm2

Live project page & interactive schematic / PCB / 3D viewer: https://sequoia-hope.github.io/bluebuzz/ (full-window board viewer, renders & 3D gallery)

A Bluetooth vibrator controller: RP2350A + Raspberry Pi Radio Module 2 (the first board, an nRF52840 module, is abandoned and kept in archive/nrf52840/): Wi-Fi 4 and Bluetooth 5.2 Classic + LE (CYW43439), so the toy can be a Bluetooth A2DP audio sink (BTstack, in the Pico SDK) as well as a BLE-controlled device, and a USB audio device (TinyUSB) over its USB-C. 26 × 56.84 mm (squish_pcb.dxf with r = 10 mm lower tip offset inward by 2.0 mm), 6 layers. USB-C on the bottom tip is the only connector (the top dome is the RM2's RF keep-out); every other lead is an SMT pad row on the back.

Sensing is a 4-sensor diamond array of Infineon DPS368 barometers on the back (North, East, West, South), meant to be cast in soft elastomer after Tenzer, Jentoft & Howe, The Feel of MEMS Barometers (IEEE RAM 2014): rubber poured over the array and vacuum degassed so it fills the pressure ports, after which a load on the surface reads as pressure, linear to under 1 %, with 10 mN resolution. Each sensor is on SPI1 with its own chip select (CSB low at power-up selects SPI; the part has only two I2C addresses), on the switched 3.3 V rail, 100n beside it. An MP34DT05TR-A top-port digital PDM MEMS microphone (U40) sits on the front upper-right shoulder (PDM_CLK on GPIO29, PDM_DATA on GPIO28), and an LSM6DS3TR-C IMU on I2C1 sits on the back on the always-on rail, with both interrupts on GPIOs for wake-on-motion.

Same pipeline as the parent (python3 build.py here; the site stage rebuilds board b of the parent's pcbview.toml), with additions this denser board forced: route.py hands freerouting a tamed DSN (GND removed from its netlist since planes and pours carry it, the plane layers marked unroutable, its fixed GND copper turned into keepouts), lays the nets freerouting never closed by hand (the six QSPI lines, VBAT, PG_N, the PWM and SWD hops, the USB climb, LX, WL_CS, the RP2350's lone GND pin), draws every hand-laid bend at 45 degrees, and after routing puts a via in every GND pad it can (cutting freerouting's wires from under the ones it walled off; the finish stage re-closes them). The stackup is six layers (GND / signal / VSYS pour / GND inside) because four left 40-55 connections open. ROUTE_DRY=1 python3 scripts/route.py lays only the locked pre-routes, for a quick DRC of them.

What it is

HostRP2350A (QFN-60), Raspberry Pi's minimal design: 3.3 µH core buck, 12 MHz crystal (12 pF CL, 18 pF loads), W25Q32JVUUIQ 32 Mbit QSPI flash (3 x 4 USON), 27 R USB series, 10k/100n on RUN
RadioRM2 (RMC20452T): gSPI with CS 25 as the Pico W, WL_ON on GPIO27, DATA on GPIO2 and CLK on GPIO3 (the board header overrides the SDK's defaults), DOUT via 470 R and nIRQ via 10 k into DATA. Vin from VSYS (3.0–4.8 V), VDDIO 3.3 V. Antenna end at the top board edge; the datasheet's RF keep-out is the top 5 mm of the board on every layer
PowerBQ24074 charger with power path (VBUS from the USB-C), TLV75533 3.3 V, TPS22918 switched sensor rail (GPIO4). /PGOOD → GPIO9 (the RP2350 has no VBUS detect)
Motorstwo AO3400A low-side channels (GPIO13, GPIO17), 100 R gate / 100k pull-down, B5819W flybacks, 2 x 22 µF; pads VSYS M1 M2; 1 A per channel, fine for 3.7 V vibration motors
Touch4 x DPS368 on the back (SPI1: GPIO10 SCK, 11 SDI, 12 SDO; CS GPIO13-16), switched rail
MotionLSM6DS3TR-C on I2C1 (GPIO6/7, 4.7k pull-ups), INT1/INT2 on GPIO5/18, CS high (I2C), SA0 low (0x6A), always on
UIside button GPIO8, status LED GPIO22, charge LED on /CHG; battery 1M/1M into ADC0 = GPIO26
USBUSB-C receptacle on the bottom edge, 5.1k on each CC, USBLC6-2P6 ESD, 27 R series at the chip
Pads (back, 1.6 x 2.2 mm at 2.0 mm)top: BAT + - · bottom-left: MOT VSYS M1 M2 · under the radio: SWD SWDIO SWCLK RUN BOOT GND (pogo)

Programming

Bridge the BOOT pad to the GND pad beside it while applying power (or call reset_usb_boot() from firmware) and the RP2350 enumerates as a UF2 drive on the USB-C. SWD on the same pad row for debugging. Firmware: Pico SDK with PICO_CYW43_SUPPORTED and a board file setting CYW43_DEFAULT_PIN_WL_DATA_OUT/_IN/_HOST_WAKE = 2 and CYW43_DEFAULT_PIN_WL_CLOCK = 3; BTstack's A2DP sink example is the starting point for sound-to-vibration; the DPS368s through spi1, one chip select at a time, in background mode at the rate the elastomer response needs (the paper sampled at 100 Hz per sensor).

Casting the array

Per the paper: a two-part room-temperature polyurethane (they used VytaFlex 20, E ≈ 280 kPa) poured over the back of the board to 4-10 mm over the sensors, then the mould placed in a vacuum chamber immediately so the air trapped in the sensor ports is pulled out and the rubber fills them; thinner rubber is more sensitive (1380 counts/N at 4 mm vs 165 at 10 mm for their sensor), thicker spreads the response. Solder the BAT and MOT leads before casting; the SWD pads under the radio can stay outside the cast area.

Before ordering

  • The RM2 is not an LCSC part: Raspberry Pi approved resellers; consign it at JLCPCB or solder it by hand (castellated, 1.5 mm pitch).
  • The RM2 footprint was drawn from the datasheet's figure 6 (release 7, 2026-02, docs/RM2-datasheet.pdf); check it against a module in hand.
  • The DPS368 footprint is the LCSC/EasyEDA land for C3232508 (two columns of four 0.6 x 0.4 mm pads, 0.65 mm pitch, 1.45 mm apart); check it against Infineon's drawing. Pin 1 is the top-right pad.
  • The DPS368 and the LSM6DS3TR-C are JLCPCB "extended" parts (a loading fee each per order). DPS368: $4.21 at 1-9, $3.60 at 10+ (2026-10).
  • The flash is the 3 x 4 mm W25Q32JVUUIQ because the 2 x 3 mm 16 Mbit part had no stock; its KiCad land is by package name, check it against Winbond's drawing.
  • No 3D models for the RM2 (not on LCSC) and the core inductor (LCSC land differs from KiCad's); the viewer draws boxes for them.

Parts

109
QtyValueFootprintReferences
28100nCapacitor_SMD:C_0402_1005MetricC2, C13, C14, C15, C41, C43, C101, C102, C120, C121, C122, C123, C130, C132, C133, C140 +12
710uCapacitor_SMD:C_0603_1608MetricC10, C11, C12, C22, C52, C100, C131
4100kResistor_SMD:R_0402_1005MetricR50, R63, R64, R66
41uCapacitor_SMD:C_0603_1608MetricC20, C21, C51, C85
44.7kResistor_SMD:R_0402_1005MetricR41, R43, R130, R131
4DPS368bluebuzz-rm2:DPS368_LGA-8U20, U21, U22, U23
310kResistor_SMD:R_0402_1005MetricR13, R81, R88
2100RResistor_SMD:R_0402_1005MetricR40, R42
215pCapacitor_SMD:C_0402_1005MetricC86, C87
21MResistor_SMD:R_0402_1005MetricR60, R61
21kResistor_SMD:R_0402_1005MetricR86, R87
222uCapacitor_SMD:C_0603_1608MetricC40, C42
227RResistor_SMD:R_0402_1005MetricR3, R4
2330RResistor_SMD:R_0402_1005MetricR14, R62
24.7uCapacitor_SMD:C_0402_1005MetricC81, C84
24.7ubluebuzz-rm2:C_0402_1005Metric_small_padsC80, C83
25.1kResistor_SMD:R_0402_1005MetricR1, R2
2AO3400APackage_TO_SOT_SMD:SOT-23Q1, Q2
2B5819WDiode_SMD:D_SOD-123D3, D4
2TPS22918DBVRPackage_TO_SOT_SMD:SOT-23-6U5, U11
11.62kResistor_SMD:R_0402_1005MetricR11
11.78kResistor_SMD:R_0402_1005MetricR10
110RResistor_SMD:R_0402_1005MetricR85
112MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
11N4148WSDiode_SMD:D_SOD-323D6
12N7002Package_TO_SOT_SMD:SOT-23Q3
13.3ubluebuzz-rm2:L_pol_2016L1
133RResistor_SMD:R_0402_1005MetricR84
145.3kResistor_SMD:R_0402_1005MetricR12
1470RResistor_SMD:R_0402_1005MetricR80
1470pCapacitor_SMD:C_0402_1005MetricC50
1BATbluebuzz-rm2:PadRow_3x_solderJ2
1BAT54CPackage_TO_SOT_SMD:SOT-23D5
1BQ24074RGTPackage_DFN_QFN:VQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mmU2
1CHGLED_SMD:LED_0603_1608MetricD1
1LSM6DS3TR-CPackage_LGA:LGA-14_3x2.5mm_P0.5mm_LayoutBorder3x4yU30
1MOTbluebuzz-rm2:PadRow_3x_solderJ4
1MP34DT05-Abluebuzz-rm2:MP34DT05_HCLGA-4U40
1PROBEConnector_JST:JST_SH_BM03B-SRSS-TB_1x03-1MP_P1.00mm_VerticalJ6
1PWRButton_Switch_SMD:Panasonic_EVQPUL_EVQPUCSW1
1RM2bluebuzz-rm2:RM2U7
1RP2350APackage_DFN_QFN:QFN-60-1EP_7x7mm_P0.4mm_EP3.4x3.4mm_ThermalViasU1
1SWDbluebuzz-rm2:PadRow_5x_pogoJ3
1TLV75533PDBVPackage_TO_SOT_SMD:SOT-23-5U3
1TPbluebuzz-rm2:PadRow_3x_pogoJ5
1USB-CConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J1
1USBLC6-2P6Package_TO_SOT_SMD:SOT-666U10
1W25Q32JVUUIQPackage_SON:Winbond_USON-8-2EP_3x4mm_P0.8mm_EP0.2x0.8mmU6
1XL-1010RGBCbluebuzz-rm2:LED_1010_WS2812D2

More from sequoia-hope/bluebuzz

1
  • 4 layers34 × 44 mmBluebuzz, the printed circuit board in 3D

    Bluebuzz

    sequoia-hope/bluebuzz

    A Bluetooth vibrator controller: RP2350A + Raspberry Pi Radio Module 2 (the first board, an nRF52840 module, is abandoned and kept in archive/nrf52840/): Wi-Fi 4 and Bluetooth 5.2 Classic + LE (CYW43439), so the toy can…

    66 parts

Similar boards

  • 6 layers20.7 × 59 mmBest, the printed circuit board in 3D

    Best

    sequoia-hope/circuit-composer

    Board design as composition: verified chip packages, intent files and generated critical blocks for KiCad, between easy_pcb and ultraroute

    238 partsMIT
  • 4 layers25.4 × 35.8 mmEarring, the printed circuit board in 3D

    Earring

    sequoia-hope/ultraroute

    PCB autorouting experiments around copperroute: route jobs, leaderboards, board morphing

    167 parts1MIT
  • 2 layers20.3 × 48.3 mmRp2350a full, the printed circuit board in 3D

    Rp2350a full

    74th/rp2040-dev-board

    治具には、中心から縦、横それぞれ 0.05 インチ単位で 0.200.50 インチ(1.27mm 単位で 5.08mm から 12.70mm)離れたとこにピンヘッダの固定用の穴が空いています。

    45 parts21MIT
  • 2 layers100.5 × 144.5 mmSp-1, the printed circuit board in 3D

    Sp-1

    guthmanny/feahi_rp2350

    Soran SP-1 sampler firmware (RP2350 + ESP32-C6) and CBI-40 hardware

    296 parts
  • 4 layers100 × 85 mmPAL sign, the printed circuit board in 3D

    PAL sign

    PE5PVB/PAL-sign

    Advanced CVBS PAL video generator

    115 parts2GPL-3.0
  • 4 layers242.2 × 94 mmPocket, the printed circuit board in 3D

    Pocket

    dataehora/beatconfused

    A small web studio of fast, elegant, install-free music tools. Every tool is plain HTML, CSS and vanilla JavaScript with the Web Audio API — no build step, no dependencies, no accounts, works offline after first load.

    155 parts1

Questions

How big is the Bluebuzz rm2 PCB?

It measures 26 × 56.8 mm and has 6 copper layers, 1.6 mm thick.

What parts does the Bluebuzz rm2 use?

109 parts, built around the RP2350A, DPS368, W25Q32JVUUIQ and BQ24074RGTR. 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 Bluebuzz rm2 KiCad files?

From the sequoia-hope/bluebuzz repository on GitHub, at the commit this page was made from: the board is out/bluebuzz-rm2.kicad_pcb and its schematic archive/nrf52840/out/bluebuzz.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Bluebuzz rm2 design in my own project?

Its repository states no licence, so its author keeps all rights: ask sequoia-hope before reusing the design.