Chào các bạn trở lại với dksmarthome.com. Bài hôm nay chúng ta sẽ cùng nhau flash zigbee2mqtt lên USB CC2531 sử dụng Rassberry Pi 3B+

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. Router thông thường sẽ được tích hợp và trong các thiết bị Zigbee không sử dụng pin như đèn thắp sáng, công tắc.
    Khái niệm này không giống như trong mạng WiFi, cần tránh nhầm lẫn

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:

  • 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 CC2531 VÀO RASPBERRY PI

Ở đây mình sẽ flash firmware coordinator v1.2 (chuẩn Zigbee 1.2) cho module CC2531 bản tích hợp sẵn antenna trên board. Tuy nhiên, module CC2531 với antenna rời chúng ta cũng làm tương tự.

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
Chân cắm của Cable

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.

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.

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.

Shell

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.

Shell

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

Shell

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:

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.

Shell

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!

Cần có dây hàn và 4 dây nhảy, vì các chân gỡ lỗi trên CC2351 nhỏ hơn các chân thông thường của bạn. Sẽ ổn nếu bạn có một tiêu đề chính xác, nếu không, bạn sẽ phải uốn cong các chân một chút, cắt dây và hàn nó vào các chân.

Đó không phải là một nhiệm vụ khó khăn và bạn sẽ chỉ cần 4 dây. Nếu bạn đủ thông minh, bạn sẽ sử dụng các dây khớp với tiêu đề của Raspberry Pi và đủ dài để tiếp cận trực tiếp với tiêu đề của nó.

Hãy chú ý đến sơ đồ chân bên dưới và khi CC2351 được kết nối qua USB VÀ GPIO, hãy làm theo các hướng dẫn bên dưới:

Pi CC2531
GND (Ground) GDN (Ground) – Chân 1
Pin 38 (GPIO20) DD (Debug Data) – Chân 4
Pin 36 (GPIO16) DC (Debug Clock) –  Chân 3
Pin 35 (GPIO19) RST (Reset) –  Chân 7

Flash Zigbee CC2531 mà không cần CC Debugger

  1. Kiểm tra xem WiresPi đã được cài đặt chưa (bằng cách) bằng cách chạy gpio -vnếu bạn không thấy phiên bản trong đầu ra ở đây là các hướng dẫn đầy đủ .
  2. Sao chép flash vào Raspberry Pi của bạn:
    git clone https://github.com/jmichault/flash_cc2531.git
  3. Điều hướng đến thư mục cd flash_cc2531và xem thiết bị USB có được chạy đúng không:./cc_chipid
  4. Bạn sẽ thấy ID = b524.nếu có bất kỳ kết quả khác được đưa ra, kiểm tra dây của bạn.
  5. Tải lên chương trình cơ sở mới nhất (giải nén và sử dụng tệp .hex )  CC2531_20190425.zip
  6. Xóa đèn flash bằng ./cc_erase
  7. Tải lên firmware mới bằng cách ./cc_write /path/to/CC2531ZNP-Prod.hexnày sẽ mất khoảng 3 phút.
  8. Ngắt kết nối dây và khởi động lại Raspberry Pi.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *