Do It Yourself

Flash Zigbee2Mqtt lên CC2531

CC2531 Pin Layout

Hướng dẫn Flash firmware Zigbee2mqtt cho module CC2531 (hoặc 2530) để liên kết các thiết bị Zigbee (v1.2) vào các nền tảng SmartHome

Photo: konnectED
13 phút để đọc hết nội dung

CC2531 và CC2530 là các module phổ biến giúp tạo – form hoặc mở rộng mạng Zigbee và liên kết các thiết bị trong mạng này vào các nền tảng nhà thông minh như Home Assistant, Domoticz, NodeRed. Bạn cũng có thể quản lý trực tiếp qua Zigbee2MqttAssistant, độc lập hoặc dưới dạng addon – bổ sung trong Home Assistant.

Các module phổ biến

Hiện có một số module phổ biến dựa trên chip CC2531 và CC2530 của Texas Instruments – TI như sau:

CC2531

Zigbee CC2531

CC2531
Sử dụng antenna trên board – mạch hoặc rời qua kết nối SMA.
Có sẵn chip giao tiếp USB – controller trên chip, đơn giản để sử dụng.
Khoảng cách kết nối khoảng 50-60m không vật chắn với loại có antenna rời, gần như tương đương với WiFi AP thông thường. Với antenna trên board, tầm kết nối ở khoảng 20-30m không vật chắn, tín hiệu suy giảm đáng kể khi đi qua tường.

CC2530

Zigbee CC2530

CC2530
Sử dụng antenna rời qua kết nối SMA. Giao tiếp qua kết nối Serial.
Khoảng cách kết nối tương đương mẫu CC2531 phía trên (tuỳ vào antenna).

CC2530 kết hợp CC2591

Zigbee CC2530+CC2591

CC2530 kết hợp CC2591 (2592)
Tương tự như module trên tuy nhiên có thêm chip RF amplifier – tăng cường sóng CC2591 cũng của TI.

Khoảng cách kết nối 50-60m không vật chắn tuy nhiên độ nhạy cao hơn do đó khả năng xuyên vật cản và chống nhiễu sóng sẽ tốt hơn.

Cả 3 dạng module trên đều có thể được flash firmware Zigbee2MQTT để hoạt động như một coordinator hay router. Tuy nhiên, để có thể truyền nhận dữ liệu khi hoạt động, nếu sử dụng module CC2530 bạn sẽ cần một thiết bị có khả năng giao tiếp Serial như Rasperry Pi, Esp8266, Arduino v.v… Do vậy, để tiện lợi, mình khuyên các bạn nên sử dụng module dựa trên CC2531 nếu dự định cắm trực tiếp vào máy chủ Hass. Còn nếu sử dụng với module nhúng kiểu Esp8266 hay Arduino, CC2530 gần như là yêu cầu bắt buộc.

! Zigbee Coordinator & Zigbee Router

Mỗi mạng Zigbee chỉ có thể có 1 Coordinator – thiết bị điều phối, đóng vai trò định hình toàn bộ mạng và điều phối các gói tin.
Một mạng Zigbee có thể bao gồm nhiều Router – thiết bị định tuyến để tăng phạm vi/độ phủ của mạng và giảm tải cho coordinator. Tính năng router thông thường sẽ được tích hợp trong các thiết bị Zigbee không sử dụng pin như công tắc, ổ cắm, động cơ rèm, đèn thắp sáng v.v..
Khái niệm này không giống như trong mạng WiFi, cần tránh nhầm lẫn.

Về Zigbee2Mqtt

Giới thiệu Zigbee2mqtt

Zigbee2Mqtt được phát triển bởi tác giả Koenkk với mục đích kết nối các thiết bị dùng chuẩn không dây Zigbee mà không cần đến các bộ kết nối trung tâm – hub của nhà sản xuất.

Có thể hiểu thiết bị chạy Zigbee2Mqtt sẽ vận hành như một universal hub – trung tâm kết nối mở, có khả năng kết nối với thiết bị của nhiều hãng sản xuất khác nhau rồi gửi thông tin của các thiết bị này (như trạng thái công tắc) đến các hệ thống khác qua giao thức MQTT, ngược lại cũng nhận lệnh điều khiển qua MQTT và gửi đến các thiết bị Zigbee trong mạng.

Zigbee2mqtt Structure
Sơ đồ cấu trúc hoạt động của Zigbee2Mqtt (từ github của tác giả)

Các giới hạn của Zigbee2mqtt

Các giới hạn của Zigbee2Mqtt:

  • Hiện chỉ chạy được trên các module CC2530/CC2531 (và CC26X2R1/CC1352P-2).
  • Mỗi Zigbee2Mqtt coordinator hay router chỉ hỗ trợ tối đa 20 thiết bị kết nối trực tiếp. Tuy nhiên giới hạn này có thể được khắc phục bằng cách thêm các Zigbee router khác (không nhất thiết phải chạy Zigbee2Mqtt) vào mạng.
  • Zigbee2Mqtt coordinator cần một thiết bị bên ngoài (như Pi, Esp8266) làm nhiệm vụ kết nối và trao đổi các gói tin với máy chủ MQTT – MQTT broker qua kết nối mạng khác (WiFi, Ethernet).
  • Không hỗ trợ tất cả các thiết bị Zigbee. Danh sách thiết bị được hỗ trợ chính thức có thể tìm thấy tại đây: Supported Devices.

Nối debugger trên CC2531 vào Raspberry Pi

Ở đây mình sẽ flash firmware coordinator v1.2 (chuẩn Zigbee 1.2) cho module CC2531 có antenna rời. Tuy nhiên, các bước hoàn toàn tương tự cho module CC2531 với antenna trên board và gần như tương tự cho các module CC2530 hoặc CC2530+CC2591.

! Use At Your Own Risk/Lưu ý Trách Nhiệm

I. Mọi thao tác trên thiết bị điện hay thiết bị là nguồn nguy hiểm phải được tiến hành bởi người có chuyên môn và chứng chỉ phù hợp.

II. Bạn phải tuân theo mọi chỉ dẫn an toàn (Safety Instruction/Safety Information) đi kèm với thiết bị.

III. Tất cả nội dung trên trang web này (https://konnected.vn) đến từ KonnectED, KonnectED Team và nhóm tác giả đều được kiểm tra và kiểm nghiệm bởi những người có kiến thức và kinh nghiệm trong lĩnh vực đó, cũng như được áp dụng phổ biến bởi cộng đồng, tuy vậy chúng tôi không thể đảm bảo những chỉ dẫn hay nội dung này hoạt động tốt và an toàn trên tất cả các hệ thống, thiết bị hay tình huống. Vì vậy, tuyên bố này miễn cho KonnectED, KonnectED Team và các tác giả mọi trách nhiệm liên quan đến tai nạn hay sự cố hư hỏng thiết bị, hệ thống khi đọc giả làm theo các hướng dẫn hay nội dung được chia sẻ trên trang web này.
Tất cả các trách nhiệm khác của công ty Konnect ED đối với sản phẩm thương mại hay dịch vụ thương mại không bị miễn trừ bởi tuyên bố này.

Xem thêm Tuyên bố Pháp lý, Công bằng và Minh bạch

! Yêu cầu tối thiểu/khuyến nghị

Ta sẽ cần:

Zigbee2Mqtt flash using Raspberyr Pi
  • Module CC2531/CC2530
  • Raspberry Pi 4B/3B+/3B đang chạy hệ điều hành Raspbian, Debian, Ubuntu và bạn có quyền truy cập root. Nếu đang chạy HassOS, bạn sẽ cần mở OpenSSH server trên OS.
  • 4 sợi dây cáp dùng test board với hai đầu cái – female, nên khác màu để dễ phân biệt. Bạn cũng có thể sử dụng dây điện thông thường và hàn vào các chân nhưng sẽ tương đối khó. (nếu sử dụng module CC2530 với debugger không có header, sẽ cần cáp một đầu đực và một đầu cái hoặc phải hàn header).
  • Tuỳ chọn:
    Debugger Downloader Cable như trên ảnh, bao gồm một cáp Dupont với đầu cắm 8 chân và mạch chuyển đổi. Nếu không sử dụng cáp này, bạn sẽ phải bẻ cong một số chân trên module CC2531 thì mới cắm được cáp test board. Rất dễ để bẻ cong các chân này nhưng nhìn sẽ không đẹp.
  • Một máy tính có kết nối mạng và có khả năng truy cập SSH và Raspberry Pi ở trên. Hoặc sử dụng giao diện Console hay Đồ hoạ trực tiếp trên Pi. Xem thêm về truy cập qua SSH tại đây.

Nối các chân từ giao tiếp Debugger trên module CC2531 vào các chân GPIO của Pi như các ảnh dưới. Để an toàn, tốt nhất các bạn nên ngắt Raspberry Pi ra khỏi nguồn trước khi cắm, tránh trường hợp bị chạm đầu cáp gây ngắn mạch.

Raspberry Pi & CC2531
Nối 4 chân của CC2531 và Pi rồi cắm CC2531 vào cổng USB
previous arrow
next arrow
previous arrownext arrow
Slider

Nối 4 chân trên Debugger của CC2531 vào Pi theo thứ tự, bên trái là CC2531 và bên phải là Pi. Trên Pi là thứ tự các chân, không phải mã của GPIO.
Nếu không sử dụng Downloader cáp, bạn sẽ cần bẻ cong các chân trên debugger của CC2531 mới có thể cắm được cáp. Bẻ bằng một kềm nhỏ hoặc sử dụng đầu cắm cáp, cắm chắc chắn vào pin rồi bóp chặt đầu cáp và ấn nhẹ về phía bên ngoài.

  • Chân 1 (Ground)————Pin 39 (hoặc bất kì chân Ground nào khác)
  • Chân 3 (Debug Clock)—–Pin 36 (GPIO16)
  • Chân 4 (Debug Data)——–Pin38 (GPIO20)
  • Chân 7 (Reset)—————Pin35 (GPIO19)

Lưu ý: cắm sai hay ngược chân hoặc làm ngắn mạch (chạm các chân) trên Raspberry Pi có thể làm hỏng chân GPIO hoặc thậm chí hỏng mạch Pi. Vì vậy hãy thao tác cẩn thận và kiểm tra 2 lần trước khi cắm nguồn cho Pi. Đặt Pi cùng với các thiết bị và dây cắm còn lại an toàn trên mặt phẳng, tránh bị đung đưa hay di chuyển vị trí.

Flash Zigbee2Mqtt

Bây giờ hãy cắm nguồn và khởi động hệ điều hành trên Pi. Sau đó truy cập vào Pi qua SSH hoặc Console/GUI. (xem thêm Truy cập đến máy chủ SSH)

Chạy lần lượt các lệnh bên dưới để cài đặt Git, Wiring Pi và tải về chương trình flash_cc2531 của tác giả jmichault.

sudo apt-get update && sudo apt-get install -y git wiringpi
git clone https://github.com/jmichault/flash_cc2531.git && cd flash_cc2531

Chạy lệnh bên dưới để kiểm tra kết nối giữa Pi và CC2531. Kết quả “ID = b524.” có nghĩa là kết nối thành công, nếu không phải, cần xem lại kết nối, kiểm tra các chân, dây cáp v.v… Các bạn nhớ phải cắm CC2531 vào cổng USB của Pi.

./cc_chipid

Chạy lệnh dưới đây để tải về và giải nén firmware Zigbee2mqtt trước khi flash.

wget https://github.com/Koenkk/Z-Stack-firmware/raw/master/coordinator/Z-Stack_Home_1.2/bin/default/CC2531_DEFAULT_20190608.zip
find ./ -maxdepth 1 -name "CC*.zip" -type f -exec unzip {} \;

Firmware cho CC2530, CC2530+CC2591 cũng như firmware router thay vì coordinator có thể tìm thấy tại:

  1. https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_Home_1.2/bin/default
  2. https://github.com/Koenkk/Z-Stack-firmware/tree/master/router

Hoặc các bạn có thể copy ngay link dưới đây rồi thay thế vào đằng sau lệnh wget:

  1. https://konnected.vn/wp-content/uploads/2020/04/CC2531_DEFAULT_20190608.zip
  2. https://konnected.vn/wp-content/uploads/2020/04/CC2530_DEFAULT_20190608.zip
  3. https://konnected.vn/wp-content/uploads/2020/04/CC2530_CC2591_DEFAULT_20190608.zip

Chạy lần lượt các lệnh sau để xoá bộ nhớ flash của CC2251 và flash Zigbee2Mqtt vừa tải ở bước trên. Sẽ mất khoảng 2-3 phút để hoàn tất ghi và kiểm tra bộ nhớ flash trên CC2531.

ls -lah
./cc_erase
./cc_write CC2531ZNP-Prod.hex
CC2531 Flash Zigbee2Mqtt Terminal Output
Hiển thị trên giao diện Terminal khi chạy các lệnh trên thành công

Bây giờ các bạn có thể rút module CC2531 ra khỏi cổng USB của Pi, rút bỏ các kết nối rồi sử dụng như một Zigbee coordinator bình thường. Xem thêm: Zigbee2Mqtt trên Home Assistant.

Ngoài việc sử dụng Raspberry Pi, ta cũng có thể flash Zigbee2Mqtt lên CC2531/CC2530 sử dụng CC Debugger của TI, Esp8266 hay Arduino. Mình sẽ có thêm một số bài viết về module này trong tương lai như cách tạo Zigbee2Mqtt coordinator không cần gắn trực tiếp vào Pi. Mong các bạn đón xem!

Trở thành thành viên hoặc đăng ký email để nhận tin/bài từ chúng tôi. Nếu không nhận được email, hãy kiểm tra trong mục Spam/Junk. Thêm địa chỉ [email protected] vào sổ địa chỉ để tránh email bị nhận nhầm. Cảm ơn bạn!

Về Bài viết

Bài viết chưa đầy đủ hoặc bạn còn có ý kiến khác? Bạn có thắc mắc và cần thêm thông tin. Vui lòng đăng ý kiến vào mục bình luận để tác giả và Team có thêm thông tin cải thiện chất lượng bài viết. Chúng tôi sẽ giải đáp các thắc mắc ngay trong mục bình luận để giúp được nhiều đọc giả với cùng vấn đề hơn hoặc chúng tôi sẽ trả lời trong một bài viết riêng. Trân trọng cảm ơn bạn!

Cảm ơn bạn đã xem bài viết này!

konnectED Team.

Lên Đầu
  • Đăng ký
Bạn quên mất mật khẩu? Vui lòng nhập tên đăng nhập và địa chỉ email đã đăng ký. Bạn sẽ nhận được liên kết tạo mật khẩu mới qua email (bạn nhớ kiểm tra hộp spam trong trường hợp email đi lạc).