RP2350 전체 하드웨어 통합 예제¶
참고: 이 문서는 레거시 C 참조 예제이다. 신규 개발에는 Rust SDK 예제와 Rust SDK를 사용한다.
Raspberry Pi Pico 2 (RP2350)에 실제 하드웨어 구성 요소를 모두 연결한 현장 배치용 센서 노드 예제이다.
하드웨어 구성¶
| # | 부품 | 품번 | 인터페이스 | I2C 주소 | 설명 |
|---|---|---|---|---|---|
| 1 | 오디오 ADC | PCM1860QDBTRQ1 | I2S + I2C | 0x48 | 2채널 24비트 96kHz (TI) |
| 2 | 마이크 | WM-61A x2 | 아날로그 | - | 일렉트릿 콘덴서 (Panasonic) |
| 3 | 환경 센서 | SEN0385 (CHT832X) | I2C | 0x44 | 온습도, 방수형 (DFRobot) |
| 4 | 가속도계 | ADXL345BCCZ | SPI | - | 3축 +/-16g (Analog Devices) |
| 5 | 배터리 MOSFET | BSS84 | GPIO + ADC | - | P채널 MOSFET (ON Semi) |
| 6 | LTE 모뎀 | BG770A | UART AT | - | Cat-M1/NB-IoT (TESSOL) |
핀 배치 (RP2350)¶
PCM1860 (I2S 오디오 ADC):
BCK -> GPIO14 (PIO0 - I2S 비트 클록)
LRCK -> GPIO15 (PIO0 - I2S 워드 셀렉트)
DOUT -> GPIO16 (PIO0 - I2S 데이터 입력)
SDA -> GPIO4 (I2C0)
SCL -> GPIO5 (I2C0)
CHT832X (환경 센서, I2C0 공유 버스):
SDA -> GPIO4 (I2C0)
SCL -> GPIO5 (I2C0)
ADXL345 (가속도계, SPI0):
CS -> GPIO17
CLK -> GPIO18 (SPI0 SCK)
MOSI -> GPIO19 (SPI0 TX)
MISO -> GPIO20 (SPI0 RX)
BSS84 (배터리 모니터):
Gate -> GPIO21 (활성화, 액티브 LOW)
ADC -> GPIO26 (ADC0)
BG770A (LTE 모뎀, UART0):
TX -> GPIO0 (UART0 TX)
RX -> GPIO1 (UART0 RX)
PWR -> GPIO22 (전원 키)
배선도¶
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) |
+---------------------------+
마이크 신호 경로¶
2.2kohm 1uF
MICBIAS (pin22) ---/\/\/--- WM-61A(+) ---||--- PCM1860 VINL1 (pin1)
WM-61A(-) --- GND
1uF
PCM1860 VINL2 (pin2) ---||--- GND
(기준 접지)
PCM1860은 WM-61A 일렉트릿 콘덴서 마이크에 전원을 공급하기 위해 2.5V MICBIAS를 출력한다. 2.2kohm 저항은 바이어스 전류를 제한한다. 1uF 커플링 캐패시터는 DC를 차단하고 AC 오디오 신호만 통과시킨다. VINL2는 캐패시터를 통해 접지에 연결되어 싱글엔드 입력의 기준이 된다.
배터리 모니터링 회로¶
VBAT ---[R1 100k]---+---[R2 100k]--- GND
|
BSS84 Drain --> GPIO26 (ADC0)
GPIO21 -------> BSS84 Gate
VBAT ---------> BSS84 Source
BSS84 P채널 MOSFET이 하이사이드 스위치 역할을 한다. 게이트를 LOW로 구동하면 MOSFET이 켜져 전압 분배기가 ADC에 연결된다. 측정 후 MOSFET을 꺼서 전력을 절약한다.
전압 계산: V_bat = ADC_raw * 3.3 / 4096 * 2.0
스트림 정의¶
| 스트림 ID | 이름 | 단위 | 레이트 | 소스 |
|---|---|---|---|---|
| 0 | temperature | degC | 1 Hz | CHT832X |
| 1 | humidity | %RH | 1 Hz | CHT832X |
| 2 | accel_x | g | 100 Hz | ADXL345 |
| 3 | accel_y | g | 100 Hz | ADXL345 |
| 4 | accel_z | g | 100 Hz | ADXL345 |
| 5 | battery_volt | V | 0.033 Hz | BSS84 + ADC |
파일 구조¶
| 파일 | 설명 |
|---|---|
main.c |
전체 하드웨어 통합 예제 (C 레퍼런스) |
레거시 C 빌드¶
# Pico SDK CMakeLists.txt 사용
add_executable(rp2350_full_hardware main.c)
target_link_libraries(rp2350_full_hardware
pico_stdlib
hardware_i2c
hardware_spi
hardware_adc
hardware_uart
hardware_dma
hardware_pio
hardware_watchdog
)
pico_add_extra_outputs(rp2350_full_hardware)
API 문서 참고¶
- API Reference -- XMBP 프로토콜, 수집 세션, 오디오 업로드
- Hardware BOM -- 전체 부품 목록 및 구매 링크
- RP2350 Feasibility -- 플랫폼 실현 가능성 분석