Hardware Bill of Materials (BOM)
Complete parts list for the Xylolabs RP2350 full hardware sensor node.
Core Components
| # |
Component |
Part Number |
Description |
Interface |
Qty |
Purchase |
| 1 |
MCU |
RP2350 |
Raspberry Pi Pico 2, dual Cortex-M33 @ 150MHz, 520KB SRAM |
- |
1 |
Raspberry Pi |
| 2 |
Audio ADC |
PCM1860QDBTRQ1 |
2-channel 24-bit 96kHz/192kHz I2S audio ADC (Texas Instruments) |
I2S + I2C |
1 |
DigiKey |
| 3 |
Microphone |
WM-61A |
Electret condenser microphone, -35dBV sensitivity (Panasonic) |
Analog |
2 |
- |
| 4 |
Battery MOSFET |
BSS84 |
P-channel MOSFET, -50V, -0.13A (ON Semiconductor) |
GPIO + ADC |
1 |
DigiKey |
| 5 |
Env Sensor |
SEN0385 (CHT832X) |
Weather-proof temperature + humidity sensor (DFRobot) |
I2C |
1 |
DigiKey |
| 6 |
Accelerometer |
ADXL345BCCZ |
3-axis +/-16g, 13-bit, programmable data rate (Analog Devices) |
SPI |
1 |
DigiKey |
| 7 |
LTE Modem |
BG770A |
LTE Cat-M1 / NB-IoT modem (Quectel) |
UART AT |
1 |
Quectel |
| 8 |
USIM |
- |
LTE Cat-M1 USIM card (carrier-specific) |
- |
1 |
Naver |
Passive Components
| # |
Component |
Value |
Package |
Qty |
Purpose |
| 9 |
Coupling capacitor |
1uF |
0402/0603 ceramic (X7R) |
2 |
Mic signal AC coupling + VINL2 reference bypass |
| 10 |
Bias resistor |
2.2kohm |
0402/0603 |
1 |
MICBIAS current limiting for WM-61A |
| 11 |
Voltage divider R1 |
100kohm |
0402/0603 |
1 |
Battery voltage divider (high side) |
| 12 |
Voltage divider R2 |
100kohm |
0402/0603 |
1 |
Battery voltage divider (low side) |
| 13 |
I2C pull-up |
4.7kohm |
0402/0603 |
2 |
I2C0 SDA/SCL pull-ups (may be on breakout boards) |
Connectors & Accessories
| # |
Component |
Description |
Qty |
Purpose |
| 14 |
LTE Antenna |
LTE Cat-M1 / NB-IoT antenna |
1 |
BG770A external antenna (U.FL connector) |
| 15 |
U.FL cable |
U.FL to SMA pigtail |
1 |
Antenna connection (if using SMA antenna) |
| 16 |
Battery |
3.7V LiPo, 2000mAh+ |
1 |
Power supply |
| 17 |
Enclosure |
IP65 weather-proof |
1 |
Outdoor deployment (optional) |
Pin Assignments (RP2350)
PCM1860 I2S Audio ADC:
BCK (bit clock) -> GPIO14 (PIO0)
LRCK (word select) -> GPIO15 (PIO0)
DOUT (data out) -> GPIO16 (PIO0)
SDA (I2C control) -> GPIO4 (I2C0)
SCL (I2C control) -> GPIO5 (I2C0)
CHT832X Environment Sensor:
SDA -> GPIO4 (I2C0, shared bus with PCM1860)
SCL -> GPIO5 (I2C0, shared bus with PCM1860)
ADXL345 Accelerometer:
CS -> GPIO17
CLK -> GPIO18 (SPI0 SCK)
MOSI -> GPIO19 (SPI0 TX)
MISO -> GPIO20 (SPI0 RX)
BSS84 Battery Monitor:
Gate -> GPIO21 (enable, active LOW for P-channel)
ADC -> GPIO26 (ADC0, voltage divider output)
BG770A LTE Modem:
TX -> GPIO0 (UART0 TX)
RX -> GPIO1 (UART0 RX)
PWR -> GPIO22 (power key, toggle 2s to boot)
Wiring Diagram
RP2350 (Pico 2)
+---------------------------+
| |
BG770A TX <---| GPIO0 (UART0 TX) |
BG770A RX --->| GPIO1 (UART0 RX) |
| |
I2C0 SDA <---->| GPIO4 (I2C0 SDA) ------+--> PCM1860 SDA
I2C0 SCL <---->| GPIO5 (I2C0 SCL) ------+--> PCM1860 SCL
| | +--> CHT832X SDA
| +------+--> CHT832X SCL
| |
PCM1860 BCK <---| GPIO14 (PIO0) |
PCM1860 LRCK <---| GPIO15 (PIO0) |
PCM1860 DOUT --->| GPIO16 (PIO0) |
| |
ADXL345 CS <---| GPIO17 |
SPI0 CLK <---| GPIO18 (SPI0 SCK) |
SPI0 MOSI <---| GPIO19 (SPI0 TX) |
SPI0 MISO --->| GPIO20 (SPI0 RX) |
| |
BSS84 Gate <---| GPIO21 |
BG770A PWR <---| GPIO22 |
| |
Battery ADC --->| GPIO26 (ADC0) |
+---------------------------+
Microphone Signal Path
2.2kohm 1uF coupling cap
MICBIAS (pin22) ---/\/\/--- WM-61A(+) ----||---- PCM1860 VINL1 (pin 1)
WM-61A(-) ---- GND
1uF bypass cap
PCM1860 VINL2 (pin 2) ----||---- GND
(reference ground)
- MICBIAS (PCM1860 pin 22) provides 2.5V bias voltage for WM-61A electret microphones
- 2.2kohm resistor limits bias current to ~1mA (safe for WM-61A)
- 1uF coupling capacitor blocks DC bias, passes AC audio signal to VINL1
- VINL2 bypass capacitor provides stable reference ground for single-ended input
- WM-61A sensitivity: -35dBV (typical), frequency response: 20Hz-16kHz
Battery Monitoring Circuit
VBAT ----[R1 100kohm]----+----[R2 100kohm]---- GND
|
BSS84 Drain ----> GPIO26 (ADC0)
GPIO21 -----------> BSS84 Gate
VBAT -------------> BSS84 Source
- BSS84 P-channel MOSFET: gate LOW = ON (conducting), gate HIGH = OFF
- Voltage divider: 2:1 ratio (equal 100kohm resistors)
- Measurement sequence: enable MOSFET -> wait 10ms -> read ADC -> disable MOSFET
- Power savings: MOSFET disconnects divider when not measuring (~0 current draw)
- Voltage calculation:
V_bat = ADC_raw * 3.3 / 4096 * 2.0
- ADC range: 0-3.3V input -> 0-6.6V battery voltage measurement range
Power Budget
| Component |
Active Current |
Sleep Current |
Duty Cycle |
| RP2350 |
30mA |
N/A |
Continuous |
| PCM1860 |
15mA |
- |
Continuous (audio) |
| WM-61A x2 |
<1mA |
- |
Continuous (powered by MICBIAS) |
| CHT832X |
1.5mA (meas) |
0.5uA |
15ms every 1s |
| ADXL345 |
140uA |
0.1uA |
Continuous at 100Hz |
| BSS84 circuit |
~33uA |
0uA |
10ms every 30s |
| BG770A |
220mA (TX) |
3uA (PSM) |
~2s every batch |
| Total (active) |
~270mA |
- |
- |
| Total (average) |
~50mA |
- |
With PSM and batching |
Estimated battery life with 2000mAh LiPo: ~40 hours (continuous), ~3 days (with PSM).
Interface Summary
| Bus |
Devices |
Speed |
Notes |
| I2C0 (GPIO4/5) |
PCM1860 (0x48), CHT832X (0x44) |
400kHz |
Shared bus, 4.7kohm pull-ups |
| SPI0 (GPIO17-20) |
ADXL345 |
5MHz |
Mode 3 (CPOL=1, CPHA=1) |
| UART0 (GPIO0/1) |
BG770A |
115200 |
AT command interface |
| ADC0 (GPIO26) |
BSS84 voltage divider |
- |
12-bit, 3.3V reference |
| PIO0 (GPIO14-16) |
PCM1860 I2S |
6.144MHz BCK |
96kHz * 32-bit * 2ch |