การติดตั้งเฟิร์มแวร์ ZigBee Coordinator สำหรับอุปกรณ์ CC2530 USB Dongle#


อุปกรณ์ ZigBee - CC2530#

อุปกรณ์ที่ได้นำมาทดลองใช้งานคือ บอร์ดหรือโมดูลแบบ SMD ในซีรีย์ E18 ของบริษัท Chengdu Ebyte ในประเทศจีน ซึ่งใช้ชิป CC2530F256 (8051-based, 256 KB Flash, 8KB SRAM) ของบริษัท Texas Instruments (TI) สามารถสื่อสารข้อมูลไร้สายด้วยโพรโทคอล IEEE 802.15.4 / ZigBee ในย่านความถี่ 2.400 ~ 2.480 GHz (ISM band) และสามารถติดตั้งเฟิร์มแวร์ Z-Stack Protocol Stack ได้ (ดังนั้นจึงใช้งานร่วมกับ Zigbee2MQTT และ ZHA / Home Assistant ได้ด้วย)

โมดูล E18 Series (User Manual) จำแนกได้เป็น 3 กลุ่มย่อย ตามกำลังส่งคลื่นวิทยุ (RF Transmission Power) และมีประเภทของสายอากาศให้เลือกใช้ได้คือ PCB Trace กับ External Antenna (IPEX connector)

  • โมดูล E18-MS1-PCB และ E18-MS1-IPX สำหรับสื่อสารระยะใกล้ (ไม่เกิน 200 เมตร ใช้งานในที่โล่ง)
    • Vcc: 2.0V ~ 3.6V
    • Tx power: 4dBm / 2.5mW max. (current: 30mA peak.)
    • Built-in PA (Power Amplifier): No
  • โมดูล E18-MS1PA2-PCB และ E18-MS1PA2-IPX สำหรับสื่อสารระยะกลาง (ไม่เกิน 600 เมตร ใช้งานในที่โล่ง)
    • Vcc: 2.0V ~ 3.6V
    • Tx power: 20dBm / 100mW max. (current: 100mA peak.)
    • Built-in PA+LNA / CC2592 RF Range Extender: Yes
  • โมดูล E18-2G4Z27SP และ E18-2G4Z27SI สำหรับสื่อสารระยะไกล (ไม่เกิน 800 เมตร ใช้งานในที่โล่ง)
    • Vcc: 2.5V ~ 3.6V
    • Tx power: 27dBm / 250 mW max. (current: 500mA peak.)
    • Built-in PA+LNA / CC2592 RF Range Extender: Yes

รูป: โมดูล E18 Series ของ Ebyte

แต่หากจะนำมาทดลองใช้งาน ก็แนะนำให้เลือกเป็นบอร์ดทดสอบ (Test Board) เพื่อความสะดวกในการใช้งาน เนื่องจาก CC2530 ไม่สามารถเชื่อมต่อกับ USB ได้โดยตรง ดังนั้นจึงมีการเพิ่มวงจร USB-To-TTL Serial Port (CH340G) มีไอซีแปลงแรงดัน 5V (จากพอร์ต USB) ให้เป็น 3.3V สำหรับ VCC มีปุ่มกด และมีขา I/O pins ที่มีระยะห่างระหว่างขาเท่ากับ 2.54 มม. ตัวอย่างเช่น

  • E18-TBL-01 Test Kit (Module: E18-MS1-PCB)
  • E18-TBH-01 Test Kit (Module: E18-MS1PA2-PCB)
  • E18-TBH-27 Test Kit (Module: E18-2G4Z27SI)

รูป: ตัวอย่างบอร์ดทดสอบ Ebyte E18 Test Kits


การติดตั้งเฟิร์มแวร์สำหรับ CC2530-based E18-Series Test Boards#

อุปกรณ์ที่นำมาใช้งาน

เตรียมอุปกรณ์ฮาร์ดแวร์ที่เกี่ยวข้อง ได้แก่

  • บอร์ดทดสอบ CC2530
  • อุปกรณ์ SmartRF04EB Programmer หรือ CC Debugger

เริ่มต้นด้วยการเชื่อมต่ออุปกรณ์ Programmer / Debugger เข้ากับบอร์ด CC2530 และนำไปเสียบเข้ากับพอร์ต USB ของคอมพิวเตอร์ผู้ใช้

ขา P2.1 / P2.2 ของชิป CC2530 เป็นขาสัญญาณ Debug Data (DD) / Debug Clock (DC) สำหรับ อุปกรณ์ SmartRF04EB Programmer หรือ CC Debugger

รูป: อุปกรณ์ CC Debugger (ซ้าย) และ SmartRF04EB Programmer (ขวา)

รูป: คอนเนกเตอร์ (Socket) และตำแหน่งของขา (2x5 Pins)

รูป: อุปกรณ์ SmartRF04EB Programmer (ไม่มีกล่องใส่) ที่ได้เลือกมาใช้งาน (ขา Pin Headers เรียงจากซ้ายไปขวา: GND, RST, DC, DD, 3.3V)

 

ขั้นตอนการดำเนินการ (สำหรับคอมพิวเตอร์ผู้ใช้ Linux / Ubuntu)

1) ติดตั้งแพ็กเกจ cc-tool สำหรับ Ubuntu

$ sudo apt install -y cc-tool

2) ทำคำสั่งต่อไปนี้ เพื่อตรวจสอบดูว่า มองเห็นอุปกรณ์ USB หรือไม่ (เลือกใช้ SmartRF04EB เพื่อการสาธิต)

$ lsusb | grep Chipcon
Bus 002 Device 005: ID 11a0:eb20 Chipcon AS SmartRF04EB

จากข้อความเอาต์พุต จะเห็นได้ว่า มองเห็นอุปกรณ์ " Chipcon AS SmartRF04EB" (ID: 11a0:eb20)

3) ทำคำสั่ง cc-tool เพื่อตรวจสอบดูว่า มองเห็นอุปกรณ์เป้าหมาย (Target Device) หรือไม่

$ sudo cc-tool --test
  Programmer: SmartRF04EB
  Target: CC2530
  Target is locked.
  Device info: 
   Name: SmartRF04EB
   Debugger ID: 0050
   Version: 0x0400
   Revision: 0x0047
  No operations allowed on locked target without erasing

4) ทำคำสั่งเพื่อลบข้อมูลในหน่วยความจำแฟลชทั้งหมด

$ sudo cc-tool -e
  Programmer: SmartRF04EB
  Target: CC2530
  Target is locked.
  Erasing flash...
  Completed

$ sudo cc-tool --test
  Programmer: SmartRF04EB
  Target: CC2530
  Device info: 
   Name: SmartRF04EB
   Debugger ID: 0050
   Version: 0x0400
   Revision: 0x0047

  Target info: 
   Name: CC2530
   Revision: 0x24
   Internal ID: 0xA5
   ID: 0x2530
   Flash size: 256 KB
   Flash page size: 2
   RAM size: 8 KB
   Lock data size: 16 B

ทำคำสั่งอ่านค่า Primary & Secondary MAC Addresses ของอุปกรณ์

# Read the primary and secondary MAC addresses.
$ sudo cc-tool -a
  Programmer: SmartRF04EB
  Target: CC2530
  MAC addresses, primary: XX:XX:XX:XX:XX:XX:XX:XX, 
               secondary: FF:FF:FF:FF:FF:FF:FF:FF

5) ดาวน์โหลดไฟล์เฟิร์มแวร์ Koenkk's Z-Stack Firmware เลือกใช้ Z-Stack_Home_1.2 เป็นใช้งานเป็น ZigBee Coordinator ไฟล์ CC2530_CC2592_DEFAULT_20211115.zip

# Extract firmware files (.hex / .bin) from the zip file.
$ unzip CC2530_CC2592_DEFAULT_*.zip -d firmware/

# Erase flash, write firmware, verify flash using CRC-16 
# and preserve the secondary MAC address.
$ sudo cc-tool -e -w ./firmware/CC2530ZNP-Prod.hex -v crc -p

รูป: การทำคำสั่ง cc-tool ใน Bash Shell ของ Ubuntu 22.04 LTS (VM)

 

เนื่องจากบอร์ด Ebyte E18 Test Board ใช้ขา P1.4 และ P1.5 ของชิป CC2530 สำหรับสัญญาณ UART TXD (Output) / RXD (Input) ตามลำดับ เพื่อนำไปต่อกับชิป CH340G แต่เฟิร์มแวร์ Z-Stack_Home_1.2 / Coordinator ใช้ขา ขา P0.2 และ P0.3 ตามลำดับ ดังนั้นจะต้องมีการต่อสายสำหรับสัญญาณ TXD / RXD ให้ถูกต้อง

รูป: การต่อสายไฟโดยใช้ขา P0.2 และ P0.3 (แทนที่ P1.4 และ P1.5) เพื่อเชื่อมต่อกับชิป CH340G ที่อยู่บนบอร์ด E18-TBH-01 สำหรับสัญญาณ TXD และ RXD ตามลำดับ

 

ถ้านำไปใช้กับ Zigbee2MQTT จะต้องแก้ไขไฟล์ data/configuration.yaml เพื่อตั้งค่าใช้งาน USB-to-Serial ให้ถูกต้อง ดังนี้

serial:
  port: /dev/ttyUSB0
advanced:
  baudrate: 115200
  rtscts: false

 

เมื่อ Zigbee2MQTT เริ่มต้นทำงาน และเชื่อมต่อกับบอร์ด E18-TBH-01 ได้สำเร็จ จะมองเห็นข้อความเอาต์พุต ตามตัวอย่างดังนี้

Zigbee2MQTT:info 2022-09-27 20:19:26: Coordinator firmware version: 
'{"meta":{"maintrel":3,"majorrel":2,"minorrel":6,"product":0,
"revision":20211115,"transportrev":2},"type":"zStack12"}'

รูป: ตัวอย่างข้อความเอาต์พุตเมื่อโปรแกรม Zigbee2MQTT เริ่มต้นทำงาน

ถ้ามีข้อความ error ในลักษณะนี้

Zigbee2MQTT:error 2022-09-27 20:19:26: Failed to call 'Bridge' 
'start' (TypeError: Cannot read property 'ieeeAddr' of undefined

ให้เริ่มต้นการทำงานของ Zigbee2MQTT ใหม่อีกครั้ง

รูป: ตัวอย่างการทำงานของ Zigbee2MQTT Web Front-end


กล่าวสรุป#

บทความนี้นำเสนอวิธีการและอุปกรณ์ในการติดตั้งเฟิร์มแวร์ Z-Stack ZigBee Coordinator สำหรับอุปกรณ์ CC2530 USB Dongle เพื่อนำมาใช้งานร่วมกับซอฟต์แวร์ Zigbee2MQTT

 


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Created: 2022-09-27 | Last Updated: 2022-09-27