일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Espressif
- Bestin
- 홈네트워크
- Home Assistant
- 배당
- Apple
- cluster
- esp32
- 파이썬
- 티스토리챌린지
- 해외주식
- SK텔레콤
- 코스피
- Python
- 매터
- RS-485
- 공모주
- MQTT
- raspberry pi
- 오블완
- ConnectedHomeIP
- homebridge
- 나스닥
- 미국주식
- 힐스테이트 광교산
- 애플
- matter
- 현대통신
- 월패드
- 국내주식
- Today
- Total
YOGYUI
CC2531 USB Dongle - Arduino로 flashing하기 (CCLoader) 본문
zigbee 기반 홈 오토메이션 디바이스를 커스터마이즈하기 위해 CC2531 USB Dongle을 하나 구매했다
Ti에서 만든 CC2531 IC의 Evaluation Kit 일종으로, 기능을 제대로 활용하기 위해서는 펌웨어를 업로드해줘야 한다
공식적으로 Ti의 CC-Debugger라는 플래시 다운로드 디바이스를 사용해서 헥사 파일(.hex)을 심어줘야 되는데, 디버거 가격이 대략 $10 정도 하다보니 많은 사람들이 라즈베리파이같은 미니 PC나 아두이노같은 오픈소스 하드웨어를 사용해 (시리얼 통신 기반으로) 펌웨어를 다운로드하고 있다
라즈베리파이를 이용한 방법은 구글 검색만 해도 수십개가 뜨는지라 본 포스팅에서는 아두이노를 이용한 방법을 기술해보기로 한다
(zigbee2mqtt 공식 사이트의 가이드를 따라하면 된다)
www.zigbee2mqtt.io/information/alternative_flashing_methods.html
참고 1) Arduino 방식은 CCLoader를 이용하는 방식과 CCLib를 이용하는 방식이 있는데, 윈도우 OS 환경에서의 CCLoader 방식이 제일 간단하다 (라즈베리파이는 PC 세팅이 좀 오래걸려서...)
참고 2) CC2531 USB Dongle에 달려있는 디버깅용 핀헤더는 1.27mm pitch라 일반적으로 우리가 쓰는 2.54mm pitch용 케이블을 체결하기가 꽤나 까다로운데, 케이블 어댑터가 있으면 편하다 (나는 usb dongle이랑 세트로 $15 정도에 구매했는데, 'CC2531 sniffer cable'이라고 검색하니 단독 제품으로 6천원 선에 구매할 수 있는 것 같다)
1. 하드웨어 배선
CC2531 dongle 보드의 debug 핀헤더에서 배선해야 할 핀은 총 4개
CC Debug Pin # | Description |
1 | GND |
3 | DC (Debug Clock) |
4 | DD (Debug Data) |
7 | RESETn |
점퍼와이어 4개를 다음과 같이 연결해준다 (아두이노는 서랍에 박혀있던 Arduino MEGA ADK 사용)
참고) DC +5V로 동작하는 아두이노와 DC +3.3V로 동작하는 CC2531 Dongle 사이에 연결 시 voltage shifter나 저항을 이용한 voltage divider 회로를 꾸미라고 가이드되어있긴 한데, 그냥 다이렉트로 연결해도 별 이상없이 잘 되는 거 같다
2. 아두이노 라이브러리 설치 및 업로드
GitHub에서 CCLibrary를 zip파일로 다운받아 Arduino IDE 라이브러리에 추가한다
github.com/RedBearLab/CCLoader
라이브러리 설치 후 CCLoader.ino 파일을 연다
(메뉴바 - 파일 - 예제 - CCLoader-master-arduino-CCLoader)
코드 86번 라인에 Debug Port Pinout 정의가 되어있다
핀맵을 다르게 구성했다면 이 부분을 수정해주자
// Debug control pins & the indicate LED
int DD = 6;
int DC = 5;
int RESET = 4;
int LED = 13;
(LED는 굳이 신경쓰지 않아도 된다)
아두이노 보드에 업로드하면 준비 완료
3. 펌웨어 파일 및 기타 소프트웨어 준비
펌웨어 파일를 GitHub에서 다운로드받는다
github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_Home_1.2/bin/default
2021.01.12 기준으로 CC2531_DEFAULT_20190608.zip이 최신파일이다
다운로드받은 뒤 압축을 풀어서 CC2531ZNP-Prod.hex 파일만 따로 작업폴더로 옮겨주자
objcopy를 이용해서 hex 파일을 bin 파일로 변환해줘야 한다 (zip파일 내의 bin 파일은 사용하지 않는다)
다음 사이트에서 MinGW (Minimalist GNU for Windows)를 설치한다 (Download 후 mingw-get-setup.exe 파일 실행)
sourceforge.net/projects/mingw/
설치 경로를 변경하지 않았다면 objcopy.exe 파일은 다음 경로에서 찾을 수 있다
C:\MinGW\mingw64\bin
objcopy.exe를 CC2531ZNP-Prod.hex 파일이 있는 디렉터리로 옮긴 후 명령 프롬프트(cmd.exe)로 다음 명령을 실행
objcopy.exe --gap-fill 0xFF --pad-to 0x040000 -I ihex CC2531ZNP-Prod.hex -O binary CC2531ZNP-Prod.bin
262,144바이트 크기의 CC2531ZNP-Prod.bin 파일이 생성된다
4. 펌웨어 업로드
아두이노 라이브러리 CCLoader 설치경로에서 CCLoader_x86_64.exe 파일을 작업경로로 복사한다
Arduino\libraries\CCLoader-master\Windows\CCLoader_x86_64.exe
명령 프롬프트에서 다음 명령 수행
CCLoader_x86_64.exe [Number of the COM port] CC2531ZNP-Prod.bin 0
Arduino MEGA ADK의 시리얼 포트가 현재 COM6으로 잡혀있기 때문에 다음과 같이 명령을 주고 펌웨어 업로드 완료된 것을 확인! (5분내로 끝난다)
C:\Users\Yogyui\Desktop\CCLoaderPath> CCLoader_x86_64.exe 6 CC2531ZNP-Prod.bin 0
Copyright (c) 2013 RedBearLab.com
CCLoader_x86_64.exe version 0.5
Comport : COM6
Bin file: CC2531ZNP-Prod.bin
Device : Default (e.g. UNO)
Comport open!
<Baud:115200> <data:8> <parity:none> <stopbit:1> <DTR:off> <RTS:off>
File open!
Block total: 512
Enable transmission...
Request sent already!
/********************************************************************/
* If there is no respond last for 3s, please press "Ctrl+C" to exit!
* And pay attention to :
* 1. The connection between computer and Arduino;
* 2. The connection between Arduino and CC2540;
* 3. Whether the device you using is Leonardo or not;
* 4. Other unexpected errors.
/********************************************************************/
Waiting for respond from Arduino...
Uploading firmware...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243
244 245 246 247 248 249 250 251 252 253 254 255 256 257 258
259 260 261 262 263 264 265 266 267 268 269 270 271 272 273
274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
289 290 291 292 293 294 295 296 297 298 299 300 301 302 303
304 305 306 307 308 309 310 311 312 313 314 315 316 317 318
319 320 321 322 323 324 325 326 327 328 329 330 331 332 333
334 335 336 337 338 339 340 341 342 343 344 345 346 347 348
349 350 351 352 353 354 355 356 357 358 359 360 361 362 363
364 365 366 367 368 369 370 371 372 373 374 375 376 377 378
379 380 381 382 383 384 385 386 387 388 389 390 391 392 393
394 395 396 397 398 399 400 401 402 403 404 405 406 407 408
409 410 411 412 413 414 415 416 417 418 419 420 421 422 423
424 425 426 427 428 429 430 431 432 433 434 435 436 437 438
439 440 441 442 443 444 445 446 447 448 449 450 451 452 453
454 455 456 457 458 459 460 461 462 463 464 465 466 467 468
469 470 471 472 473 474 475 476 477 478 479 480 481 482 483
484 485 486 487 488 489 490 491 492 493 494 495 496 497 498
499 500 501 502 503 504 505 506 507 508 509 510 511 512
Upload successfully!
File closed!
Comport closed!
5. 장치 확인
펌웨어 업로드 후 디버그 케이블 뽑은 뒤 USB 동글을 뽑았다 다시 끼우면 시리얼 포트가 추가된 것을 확인할 수 있다
(윈도우에 node가 설치되어 있다고 가정하고 진행)
다음 repository를 Git clone해주자
github.com/Koenkk/zigbee2mqtt.git
clone 작업경로에서 npm dependencies를 설치해준다
C:\Users\Yogyui\Desktop\CCLoaderPath\zigbee2mqtt-master> npm ci
zigbee2mqtt-master\data\configuration.yaml 에서 시리얼포트 설정 변경 후 저장
# Home Assistant integration (MQTT discovery)
homeassistant: false
# allow new devices to join
permit_join: true
# MQTT settings
mqtt:
# MQTT base topic for zigbee2mqtt MQTT messages
base_topic: zigbee2mqtt
# MQTT server URL
server: 'mqtt://localhost'
# MQTT server authentication, uncomment if required:
# user: my_user
# password: my_password
# Serial settings
serial:
# Location of CC2531 USB sniffer
# port: /dev/ttyACM0
port: COM7 # 수정
이제 커맨드라인에서 npm start를 입력하면 다음과 같이 Zigbee2MQTT 어플리케이션이 시작된다
C:\Users\Yogyui\Desktop\CCLoaderPath\zigbee2mqtt-master> npm start
> zigbee2mqtt@1.17.0 start C:\Users\Yogyui\Desktop\CCLoaderPath\zigbee2mqtt-master
> node index.js
Zigbee2MQTT:info 2021-01-12 23:03:41: Logging to console and directory: 'C:\Users\Yogyui\Desktop\CCLoaderPath\zigbee2mqtt-master\data\log\2021-01-12.23-03-41' filename: log.txt
Zigbee2MQTT:info 2021-01-12 23:03:42: Starting Zigbee2MQTT version 1.17.0 (commit #unknown)
Zigbee2MQTT:info 2021-01-12 23:03:42: Starting zigbee-herdsman (0.13.46)
Zigbee2MQTT:info 2021-01-12 23:03:48: zigbee-herdsman started
Zigbee2MQTT:info 2021-01-12 23:03:48: Coordinator firmware version: '{"meta":{"maintrel":3,"majorrel":2,"minorrel":6,"product":0,"revision":20190608,"transportrev":2},"type":"zStack12"}'
Zigbee2MQTT:info 2021-01-12 23:03:48: Currently 0 devices are joined:
Zigbee2MQTT:warn 2021-01-12 23:03:48: `permit_join` set to `true` in configuration.yaml.
Zigbee2MQTT:warn 2021-01-12 23:03:48: Allowing new devices to join.
Zigbee2MQTT:warn 2021-01-12 23:03:48: Set `permit_join` to `false` once you joined all devices.
Zigbee2MQTT:info 2021-01-12 23:03:48: Zigbee: allowing new devices to join.
Zigbee2MQTT:info 2021-01-12 23:03:48: Connecting to MQTT server at mqtt://localhost
Zigbee2MQTT:error 2021-01-12 23:03:58: Not connected to MQTT server!
Zigbee2MQTT:error 2021-01-12 23:04:08: Not connected to MQTT server!
Coordicator firmware version 항목이 보이면 USB Dongle과 정상적으로 통신이 이루어지고 있다는 의미
mqtt 서버를 따로 실행하지 않았다면 Not Connected to MQTT server! 메시지가 반복적으로 로깅된다
끝!
'Hardware > Home Automation' 카테고리의 다른 글
nRF52840 USB Dongle - RCP 펌웨어 올리기 (for OTBR) (2) | 2023.01.15 |
---|