라즈베리 파이 피코 2 W에서 러스트로 만든 Matter Wi‑Fi 전구
출처: Hacker News
이 저장소에는 Rust와 Embassy 비동기 프레임워크를 사용해 작성한 Raspberry Pi Pico 2 (RP2350) 보드용 예제들이 포함되어 있습니다.
프로젝트 생성
cargo generate --git https://github.com/ImplFerris/pico2-template.git --name rust-rpico2-embassy-examples
하드웨어
보드: Raspberry Pi Pico 2
- MCU: RP2350 (듀얼 코어 Arm Cortex‑M33 및 RISC‑V 코어)
내장 주변장치:
- GPIO25에 연결된 LED
핀아웃
공통 핀 할당
I2C 핀:
- I2C0 SDA: GPIO4
- I2C0 SCL: GPIO5
- I2C1 SDA: GPIO2
- I2C1 SCL: GPIO3
UART 핀:
- UART0 TX: GPIO0, UART0 RX: GPIO1
- UART1 TX: GPIO8, UART1 RX: GPIO9
예제
I2C 예제
hs3003_i2c
Embassy 비동기 프레임워크를 사용해 HS3003 센서에서 온도와 습도를 읽어옵니다.
cargo run --example hs3003_i2c
배선 (Arduino Modulino Thermo):
Modulino -> RPi Pico 2
---------- --------------
GND (black) -> GND
VCC (red) -> 3.3V
SCL (yellow)-> GPIO5 (Pin 7) (I2C0 SCL)
SDA (blue) -> GPIO4 (Pin 6) (I2C0 SDA)
HS3003 소개:
Renesas HS3003은 고성능 온도·습도 센서입니다.
- 온도 범위: -40 °C ~ +125 °C (±0.2 °C 정확도)
- 습도 범위: 0 % ~ 100 % RH (±1.5 % 정확도)
- 두 측정 모두 14‑bit 해상도
- 초저전력 소모
adxl345_i2c
Embassy를 이용해 I2C0를 통해 ADXL345 가속도계 데이터를 읽어옵니다.
cargo run --example adxl345_i2c
배선:
ADXL345 -> RPi Pico 2
---------- --------------
GND (black) -> GND
VCC (red) -> 3.3V
SCL (yellow)-> GPIO5 (Pin 7) (I2C0 SCL)
SDA (blue) -> GPIO4 (Pin 6) (I2C0 SDA)
ADXL345 소개:
ADXL345는 작고 얇으며 저전력인 3축 가속도계로, 13‑bit 해상도로 최대 ±16 g까지 측정합니다. 디지털 출력은 16‑bit 2의 보수 형태이며, SPI(3‑선 또는 4‑선) 혹은 I2C 디지털 인터페이스를 통해 접근할 수 있습니다.
SPI 디스플레이 예제
zermatt
Adafruit 2.2” TFT LCD 디스플레이에 Zermatt 풍경(320×240)을 가로 모드로 표시합니다.
cargo run --example zermatt
배선 (Eye‑SPI Breakout):
VIN (Red Wire) |
| GND (Pin 38) --------+------+-> GND (Black Wire) |
| GPIO18 (Pin 24) -----+------+-> SCK (Blue Wire) |
| GPIO19 (Pin 25) -----+------+-> MOSI (Green Wire) |
| GPIO16 (Pin 21) -----+------+-> MISO (Yellow Wire) |
| GPIO20 (Pin 26) -----+------+-> DC (White Wire) |
| GPIO21 (Pin 27) -----+------+-> RST (Orange Wire) |
| GPIO17 (Pin 22) -----+------+-> TCS (Blue Wire) |
| | | |
+-----------------------+ +---------------------------+
Raspberry Pi Pico 2 Eye-SPI Breakout
+-----------------------+ +---------------------------+
| | | |
| 3V3 (Pin 36) --------+------+-> VIN (Red Wire) |
| GND (Pin 38) --------+------+-> GND (Black Wire) |
| GPIO18 (Pin 24) -----+------+-> SCK (Blue Wire) |
| GPIO19 (Pin 25) -----+------+-> MOSI (Green Wire