Raspberry Pi Pico 2 W: Rust로 Matter Wi-Fi 전구 만들기

Raspberry Pi Pico 2 W (RP2350)를 사용하여 이제 Rust를 통해 완전한 Matter 표준을 준수하는 스마트 홈 장치를 만들 수 있습니다. rs-matter 스택과 Embassy async 프레임워크를 활용하면, 개발자는 클라우드 계정 없이 Apple Home, Google Home, Home Assistant와 직접 통합되는 로컬 전용 스마트 홈 하드웨어를 구축할 수 있습니다.

RP2350에서 Matter 구현하기

이 구현의 핵심은 초기 커미셔닝(commissioning) 단계에서는 Bluetooth Low Energy (BLE)를 사용하고, 네트워크 연결에는 Wi-Fi를 사용하는 Matter 호환 Wi-Fi 전구입니다. 이 장치는 GPIO 핀에 연결된 물리적 LED를 토글하기 위한 표준 Matter On/Off 클러스터를 노출합니다.

기술 아키텍처

  • Bare Metal 실행: 이 프로젝트는 embassy-rp를 사용하여 베어 메탈에서 완전히 no_std로 실행됩니다.
  • Async 프레임워크: Embassy async 프레임워크는 상태 머신 로직을 관리하는 데 사용되며, 이는 전통적인 C 기반 임베디드 개발과 비교했을 때 구현을 훨씬 단순화합니다.
  • Radio Coexistence (CoEx): 중요한 기술적 과제 중 하나는 CYW43439 무선 칩을 관리하는 것이었습니다. 무선 통신이 포화 상태일 때 버스 손상을 방지하기 위해, RP2350의 더 빠른 150MHz 코어 클록을 고려하여 PIO SPI 클록 디바이더를 조정해야 했습니다.
  • Multiplexing: 이 프로젝트에는 Bluetooth와 Wi-Fi 스택을 동시에 안전하게 멀티플렉싱하기 위한 async CoEx 러너 설정이 포함되어 있습니다.

Matter 전구를 위한 하드웨어 및 배선

Matter 전구 예제를 복제하려면, Raspberry Pi Pico 2 W를 전류 제한 저항을 통해 외부 LED에 연결해야 합니다.

배선도:

  • GP15 (Pin 20) $\rightarrow$ 220-330 Ohm Resistor $\rightarrow$ LED Anode (+)
  • GND (Pin 18) $\rightarrow$ LED Cathode (-)

Home Assistant를 통한 프로비저닝

이 장치는 스마트 홈 생태계로의 원활한 통합을 위해 설계되었습니다. 프로비저닝 프로세스는 다음 단계를 따릅니다:

  1. Advertising: Pico 2 W는 시작 시 BLE를 통해 광고(advertising)를 시작합니다.
  2. Integration: Home Assistant 컴패니언 앱에서, 사용자는 Settings $\rightarrow$ Devices & Services $\rightarrow$ Add Integration $\rightarrow$ Add Matter device로 이동합니다.
  3. Authentication: 사용자는 기본 설정 코드 3497-0112-332를 입력하거나 제공된 QR 코드를 스캔합니다.
  4. Connectivity: Home Assistant는 BLE를 통해 Wi-Fi 자격 증명을 전송하고, 장치는 네트워크에 연결되어 표준 전구처럼 나타납니다.

추가적인 RP2350 Rust 예제

Matter 구현 외에도, rust-rpico2-embassy-examples 저장소는 Raspberry Pi Pico 2의 다양한 주변 장치 및 센서에 대한 일련의 예제를 제공합니다:

I2C 센서 통합

  • HS3003: 14비트 해상도를 가진 고성능 온도 및 습도 센서.
  • ADXL345: $\pm 16$ g까지의 측정을 지원하는 13비트 해상도의 3축 가속도계.

SPI 디스플레이 및 그래픽

  • Zermatt Example: Adafruit 2.2" TFT LCD에 320x240 이미지를 렌더링합니다.
  • Zermatt Snow: 물리 엔진과 오프스크린 lcd-async 프레임버퍼를 활용하는 고급 예제입니다. CPU 블로킹을 방지하기 위해 DMA를 통해 데이터를 전송합니다.

1-Wire 프로토콜 구현

  • DS18B20: 방수 온도 프로브. 이 구현은 Cortex-M33 코어에서 1-Wire 프로토콜에 필요한 서브 마이크로초 타이밍을 달성하기 위해 커스텀하고 사이클 단위로 정확한한 PreciseDelay를 사용합니다.
  • DHT11: 저가형 온도 및 습도 센서. 비트 읽기 단계의 타이밍 민감성 때문에, 이 예제는 정확성을 보장하기 위해 release 모드로 실행해야 합니다.

커뮤니티 인사이트 및 관점

이 프로젝트를를 둘러싼 기술적 논의는 더 접근하기 쉬운한 임베디드 Rust의 변화를를 향하는 데 있습니다:

"Rust on embedded은 Embassy와 Pico SDK를 통해 더욱 접근하기 쉬워지고 있습니다... async runtime은 상태 머신 로직을 훨씬 더 깔끔하게 만듭니다."

하지만, 일부 개발자들은 이 프로젝트가 "ultra low" 전력을 사용한다고 시연연습생을 하지만, Wi-Fi 모듈의 특정 배터리 구동 방식 및 코인 셀 적합성에 대해서는 추가적인 문서화가 필요하다고 언급했습니다.

다른 기여여부부는 Matter의 IP 기반 특성 덕분에 공식 C++ Matter SDK의 복잡성 없이 DIY 엔지니어들이 "이와 같은 것을 함께 만들어낼 수 있다"는 점을 강조했습니다.

Sources