zigbee IoT 장치들(End Device)를 사용하기 위해선 장치들이 연결되기 위한 Coordinator가 필요하다.
코디네이터를 중심으로 end device 들이 연결되는데, 중간에 네트워크 확장을 위해서 라우터를 추가하기도 함.
코디네이터 혹은 라우터로 사용할 수 있는 CC2531 을 구매 후 펌웨어 변경 작업을 정리해 보았음.
CC2531 펌웨어 플래싱 with RPi
* 참고:
* What do I need? | zigbee2mqtt.io - https://www.zigbee2mqtt.io/getting_started/what_do_i_need.html
* Flashing the firmware on the CC2531 USB stick | zigbee2mqtt.io - https://www.zigbee2mqtt.io/getting_started/flashing_the_cc2531.html
* Alternative flashing methods | zigbee2mqtt.io - https://www.zigbee2mqtt.io/information/alternative_flashing_methods.html
* ConBee implementation #72 - https://github.com/jmichault/flash_cc2531/issues/9
우선 CC2531(약 $5) 이랑 다운로더 케이블(약 $2)를 준비한다. 난 AliExpress 에서 주문하였음.
칩안테나(회로에 안테나가 그려져 있는) 버전이 있고 안테나 단자가 달려 있고 안테나를 같이 파는 버전도 있다.
CC2531 을 그냥 쓸 경우 신호가 약하다는 글을 많이 봐서 난 안테나 버전으로 구매하였음.
펌웨어 작업이 이미 되어 있는 CC2531을 팔기도 한다던데 그걸 살 경우 다운로더 케이블과 이 작업이 필요없다.
위에 참고로 건 글 중 Flashing the firmware on the CC2531 USB stick 글을 보면 Windows, Mac, Linux 에서 플래싱을 할 수 있지만, 왠지 pi에서 하는게 더 편할 것 같았다.
pi나 아두이노로 진행하는 방법은 Alternative flashing methods 글을 참고하면 됨.
1. 파이에 WiringPI 설치
sudo apt install wiringpi
2. 파이에서 툴 다운로드
git clone https://github.com/jmichault/flash_cc2531.git
3. 파이와 다운로더 모듈 간에 GPIO핀 연결
연결을 위해선 암-암 점퍼 케이블 4개가 필요함.
다운로더 모듈 |
파이 |
pin 1 (GND) |
pin 39 (GND) |
pin 7 (reset) |
pin 35 (GPIO24, BCM19) |
pin 3 (DC) |
pin 36 (GPIO27, BCM16) |
pin 4 (DD) |
pin 38 (GPIO28, BCM20) |
다운로더 모듈의 핀보드는 모듈에 적혀있으니 그걸 보면 되고, 파이의 핀 위치는 https://pinout.xyz/ 사이트 참고.
4개 핀도 연결하고 전원 공급을 위해 CC2531 을 파이의 USB단자에도 연결해준다.
4. 플래싱
1) 먼저 잘 연결이 되었는지 확인해본다.
cd flash_cc2531
./cc_chipid -m 90
ID = b524.
ID가 0000, ffff 등이 나온다면 뭔가 오류가 있음.
원래 -m 90 을 붙여주지 않아도 되는데, 나의 경우 계속 붙여줘야 정상적으로 진행이 가능했다.
2) 펌웨어 파일 다운로드
코디네이터 버전 - https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_Home_1.2/bin/default
라우터 버전 - https://github.com/Koenkk/Z-Stack-firmware/tree/master/router/CC2531/bin
# 코디네이터
wget https://github.com/Koenkk/Z-Stack-firmware/raw/master/coordinator/Z-Stack_Home_1.2/bin/default/CC2531_DEFAULT_20190608.zip
unzip CC2531_DEFAULT_20190608.zip
# 라우터
wget https://github.com/Koenkk/Z-Stack-firmware/raw/master/router/CC2531/bin/CC2531_router_2020_09_29.zip
unzip CC2531_router_2020_09_29.zip
라우터 버전은 펌웨어가 3개가 나온다.
- router-cc2531-std.hex: 라우터 기능만 작동
- router-cc2531-diag.hex: 라우터 + 진단 정보
- router-cc2531-diag-usb.hex: 라우터 + 진당전보 + USB 시리얼포트로 인식 (진단정보를 USB로 읽기 가능)
진단정보가 뭘 말하는건지 모르겠어서 난 그냥 -std 버전을 사용하였음.
3) 펌웨어 플래싱
./cc_erase -m 90
./cc_write -m 90 CC2531ZNP-Prod.hex (혹은 해당하는 펌웨어명)
'IoT' 카테고리의 다른 글
HA에 zigbee2mqtt 설치 (0) | 2020.10.03 |
---|---|
RPi HA에 deCONZ 설치하기 (ConBee II) (0) | 2020.08.13 |
RPi에 Home Assistant 설치하기 (+HomeBridge) (0) | 2020.08.11 |
도어락 제어하기 1탄 (하지만 2탄은 영원히 미정) (11) | 2017.11.12 |
IoT 전등 스위치를 직접 만들어보기 (아두이노, BLE, HomeKit) 3탄 (7) | 2017.08.24 |