Skip to the content
4 layers34 × 44 mmBluebuzz, 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
34 × 44 mm
Copper layers
4
Thickness
1.6 mm
Parts
66
Nets
42
Pads
265
Tracks, vias
516, 212
Pours
6
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
22 Oct 2026
Updated
22 Oct 2026

Overview

Bluebuzz is an open-source printed circuit board by sequoia-hope, from the sequoia-hope/bluebuzz repository on GitHub. It is a 4-layer board of 34 × 44 mm with 66 parts on 42 nets, routed with 516 tracks and 212 vias.

It is built around the E73-2G4M08S1C, HX711 and BQ24074RGTR, with the TLV75533PDBV, USBLC6-2P6 and AO3400A among its other parts. Its parts include 27 capacitors, 19 resistors, 6 ICs, 6 connectors and 4 diodes. It belongs with the radio and wireless boards of this library.

Main components

7

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

66
QtyValueFootprintReferences
11100nCapacitor_SMD:C_0402_1005MetricC2, C13, C14, C15, C41, C43, C61, C62, C64, C70, C80
710uCapacitor_SMD:C_0603_1608MetricC10, C11, C12, C22, C52, C60, C81
41uCapacitor_SMD:C_0603_1608MetricC20, C21, C51, C65
3100kResistor_SMD:R_0402_1005MetricR41, R43, R50
2100RResistor_SMD:R_0402_1005MetricR40, R42
210kResistor_SMD:R_0402_1005MetricR13, R70
212pCapacitor_SMD:C_0402_1005MetricC82, C83
21MResistor_SMD:R_0402_1005MetricR60, R61
222uCapacitor_SMD:C_0603_1608MetricC40, C42
2330RResistor_SMD:R_0402_1005MetricR14, R62
24.7kResistor_SMD:R_0402_1005MetricR71, R72
25.1kResistor_SMD:R_0402_1005MetricR1, R2
2AO3400APackage_TO_SOT_SMD:SOT-23Q1, Q2
2B5819WDiode_SMD:D_SOD-123D3, D4
11.62kResistor_SMD:R_0402_1005MetricR11
11.78kResistor_SMD:R_0402_1005MetricR10
11kResistor_SMD:R_0402_1005MetricR55
132.768kHzCrystal:Crystal_SMD_3215-2Pin_3.2x1.5mmY1
145.3kResistor_SMD:R_0402_1005MetricR12
1470pCapacitor_SMD:C_0402_1005MetricC50
1BATTERYConnector_JST:JST_PH_S2B-PH-SM4-TB_1x02-1MP_P2.00mm_HorizontalJ2
1BQ24074RGTPackage_DFN_QFN:VQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mmU2
1CHGLED_SMD:LED_0603_1608MetricD1
1E73-2G4M08S1Cbluebuzz:E73-2G4M08S1CU1
1HX711Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU4
1LOAD CELLConnector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_HorizontalJ5
1MOTORSConnector_JST:JST_PH_S4B-PH-SM4-TB_1x04-1MP_P2.00mm_HorizontalJ4
1PRESSUREConnector_JST:JST_SH_SM05B-SRSS-TB_1x05-1MP_P1.00mm_HorizontalJ6
1STATLED_SMD:LED_0603_1608MetricD2
1TC2030Connector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_VerticalJ3
1TLV75533PDBVPackage_TO_SOT_SMD:SOT-23-5U3
1TPS22918DBVRPackage_TO_SOT_SMD:SOT-23-6U5
1USB-CConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J1
1USBLC6-2P6Package_TO_SOT_SMD:SOT-666U10
1USERButton_Switch_SMD:Panasonic_EVQPUL_EVQPUCSW1

More from sequoia-hope/bluebuzz

1
  • 6 layers26 × 56.8 mmBluebuzz rm2, the printed circuit board in 3D

    Bluebuzz rm2

    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…

    109 parts

Similar boards

  • 4 layers242.1 × 170 mmNight light PCB, the printed circuit board in 3D

    Night light PCB

    oyeniyihakeem08-blip/Night-light-PCB-prototype

    A smart, motion-sensing LED night light that runs straight from the mains, keeps working through power cuts on its own battery, and is controlled by a paired wireless remote.

    155 parts
  • 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
  • 4 layers80 × 50 mmPCB LoRa+GPS, the printed circuit board in 3D

    PCB LoRa+GPS

    ChrisKlein01/ArrozPCB

    LoRa-based GPS PCB design with KiCad

    84 parts
  • 2 layers105 × 58 mmZAP-01A, the printed circuit board in 3D

    ZAP-01A

    ponrajleo/AI-Hardware-ESP32S3-

    This project is part of a complete open-source hardware design course on YouTube:

    103 parts
  • 4 layers91 × 91 mmOpen micro sister, the printed circuit board in 3D

    Open micro sister

    TomBonness/open-micro

    Open-source USB/BLE desktop programming controller with RGB status integration

    93 parts
  • 2 layers60.1 × 60 mmAdhdv1.00, the printed circuit board in 3D

    Adhdv1.00

    Maxwell-Khor/adhd-medication-reminder

    Custom embedded medication reminder device with PCB design and firmware development for improving medication adherence

    82 parts
  • 4 layersWatch, the printed circuit board in 3D

    Watch

    VarunAPatil/MedSafe

    The goal: a compact, wrist-worn device that simultaneously tracks heart rate & SpO₂, motion & orientation, altitude & atmospheric pressure, and GNSS location — all in one tightly integrated system.

    121 parts
  • 2 layers334.6 × 100.2 mmLira, the printed circuit board in 3D

    Lira

    AndreaGiulianini/lira

    57-key 40% + numpad keyboard: Bluetooth/USB-C, hot-swap MX, RMK/Vial, and a built-in USB sound card (3.5 mm headset jack). Generated from source with KiCad.

    233 parts2MIT

Questions

How big is the Bluebuzz PCB?

It measures 34 × 44 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Bluebuzz use?

66 parts, built around the E73-2G4M08S1C, HX711, BQ24074RGTR and TLV75533PDBV. 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 KiCad files?

From the sequoia-hope/bluebuzz repository on GitHub, at the commit this page was made from: the board is archive/nrf52840/out/bluebuzz.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 design in my own project?

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