로그인회원가입

ESP32를 뒤로하고, RP2040과 CC1101로 구현한 초장거리 무선 제어

안녕하세요! 오늘은 무선 통신 프로젝트의 ‘진한 맛’을 느껴보고 싶어 시작한 RP2040 + CC1101 장거리 통신 프로젝트 제작기를 공유합니다.


1. 왜 ESP32가 아닌 CC1101인가?

많은 분이 묻습니다. “ESP32 쓰면 Wi-Fi도 있고 블루투스도 있는데, 왜 귀찮게 외부 모듈을 쓰나요?” 하지만 엔지니어라면 공감할 CC1101만의 대체 불가능한 매력이 있습니다.

  • 압도적인 장애물 투과력: 2.4GHz(Wi-Fi)는 벽 하나만 있어도 신호가 급감하지만, CC1101이 사용하는 Sub-1GHz(433MHz) 대역은 파장이 길어 벽을 타고 넘는 회절성이 뛰어납니다.
  • 미친 통신 거리: 설정만 잘하면 개활지에서 수백 미터, 심지어 1km 가까이 신호를 보낼 수 있습니다.
  • 날것의 전파(RAW RF): 표준 프로토콜에 갇히지 않고 주파수부터 데이터 레이트까지 내 입맛대로 주무를 수 있는 진정한 무선의 재미를 줍니다.

2. CC1101의 명암: 장점과 단점

직접 만져보며 느낀 CC1101의 특징을 솔직하게 정리합니다.

👍 장점

  • 유연성: 300MHz부터 928MHz까지 광범위한 주파수 설정 가능.
  • 저전력: 전송 시 소모 전류가 매우 적어 배터리 구동에 최적화.
  • 호환성: 아두이노, STM32, 그리고 이번에 사용한 RP2040까지 SPI 통신만 있다면 어디든 연결 가능.

👎 단점

  • 까다로운 초기 설정: 레지스터 값이 수백 개입니다. 하나만 틀려도 통신이 안 됩니다.
  • 안테나 의존성: 안테나 길이나 방향에 따라 성능 차이가 극명합니다.
  • 간섭 문제: 433MHz는 자동차 리모컨, 무선 벨 등이 많이 써서 나만의 ‘주소(Address)’ 설정이 필수입니다.

3. 하드웨어 연결 (SPI 핀 맵)

RP2040은 하드웨어 SPI 핀이 지정되어 있습니다. 매뉴얼에 명시된 SPI0 또는 SPI1 전용 핀을 반드시 사용해야 합니다.
RP2040배선을 아래 중 하나로 반드시 바꾸셔야 에러가 해결됩니다.

기능권장 (SPI 0)대안 (SPI 1)
SCKGP2 또는 GP6GP10 또는 GP14
MOSIGP3 또는 GP7GP11 또는 GP15
MISOGP0 또는 GP4GP8 또는 GP12

4. 양방향 통신 구현

“CC1101의 기본 동작은 송신 또는 수신 중 한 방향으로만 작동하는 반이중(Half-Duplex) 방식입니다. 이를 극복하기 위해 멀티쓰레딩(Multithreading) 기법을 도입했습니다. 평상시에는 수신 대기 상태를 상시 유지하다가, 송신 이벤트 발생 시에만 즉시 모드를 전환하여 데이터를 전송하고 다시 수신 모드로 복귀하는 로직을 구현함으로써, 사용자 관점에서의 **심리스(Seamless)한 양방향 통신(Bidirectional Communication)**을 완성했습니다.”

테스트의 편의를 위해 하나의 브레드보드 위에 구성했지만, 좌우측의 전원 라인까지 완전히 분리하여 전기적으로 독립된 두 개의 개별 장치(Standalone Device) 환경을 구축했습니다. 물리적 연결 없이 오직 CC1101의 RF 신호만을 이용해 데이터를 주고받는 실제 무선 통신 환경을 재현했습니다.

5. 장거리 통신

Python cc1101.py

Python left.py

Python right.py

코멘트

3의 “ESP32를 뒤로하고, RP2040과 CC1101로 구현한 초장거리 무선 제어”에 대한 답변

  1. km kim

    [구매정보] 블로그에서 사용한 부품 구매정보입니다. 부품 상세 사양 및 기술 정보 참조용으로 활용하세요.
    아래 링크를 통해 구매 시 소정의 수수료를 제공받으며, 채널 운영에 큰 도움이 됩니다.

답글 남기기