Skip to content

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 문서 참고