안녕하세요! 오늘은 무선 통신 프로젝트의 ‘진한 맛’을 느껴보고 싶어 시작한 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) |
| SCK | GP2 또는 GP6 | GP10 또는 GP14 |
| MOSI | GP3 또는 GP7 | GP11 또는 GP15 |
| MISO | GP0 또는 GP4 | GP8 또는 GP12 |
4. 양방향 통신 구현
“CC1101의 기본 동작은 송신 또는 수신 중 한 방향으로만 작동하는 반이중(Half-Duplex) 방식입니다. 이를 극복하기 위해 멀티쓰레딩(Multithreading) 기법을 도입했습니다. 평상시에는 수신 대기 상태를 상시 유지하다가, 송신 이벤트 발생 시에만 즉시 모드를 전환하여 데이터를 전송하고 다시 수신 모드로 복귀하는 로직을 구현함으로써, 사용자 관점에서의 **심리스(Seamless)한 양방향 통신(Bidirectional Communication)**을 완성했습니다.”

5. 장거리 통신

Python cc1101.py
Python left.py
Python right.py





답글 남기기
댓글을 달기 위해서는 로그인해야합니다.