ZigbeeCoordinator
Project ZigbeeCoordinator | |
---|---|
File:NoPicture.jpg | |
Flashing a CC2531 USB dongle with Zigbee coordinator firmware | |
Status | In progress |
Contact | bertrik |
Last Update | 2019-03-10 |
What
This page describes the steps I performed to flash a generic CC2531 USB stick with firmware to make it act as a Zigbee coordinator. Zigbee is a wireless protocol to communicate with wireless appliances in your home, for example Ikea TRADFRI lamps.
Steps to do:
- buy the hardware, i.e. the CC2531 stick and the adapter cable
- wire up an ESP8266 Wemos D1 mini as a programmer
- build the ESP8266 Arduino sketch
- download, build and run the programmer utility
Hardware
I ordered this CC2531 stick plus the debug connector.
By default, the stick shows up in the system log as follows:
[58101.234023] usb 1-3: New USB device found, idVendor=0451, idProduct=16ae, bcdDevice= 1.17 [58101.234030] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [58101.234033] usb 1-3: Product: CC2531 USB Dongle [58101.234037] usb 1-3: Manufacturer: Texas Instruments
It was connected to an ESP8266 Wemos D1 mini for re-programming.
I wired this up as follows:
- press the flatcable onto the stick, with the red wire away from the USB connector
- press the flatcable onto the programming adapter, with the red wire towards pin 1
Wiring up:
- Wemos D1 pin GND -> breadboard -> adapter GND (pin 1)
- Wemos D1 pin D8 -> breadboard -> adapter RESETn (pin 7)
- Wemos D1 pin D7 -> breadboard -> adapter DC (pin 3)
- Wemos D1 pin D6 -> breadboard -> adapter DD (pin 4)
- Wemos D1 pin D5 -> breadboard connected to D6!
I downloaded the CCLib toolchain from GitHub and made the following changes:
diff --git a/Arduino/CCLib/Examples/CCLib_proxy/CCLib_proxy.ino b/Arduino/CCLib/Examples/CCLib_proxy/CCLib_proxy.ino index 1ba6949..b47d4da 100644 --- a/Arduino/CCLib/Examples/CCLib_proxy/CCLib_proxy.ino +++ b/Arduino/CCLib/Examples/CCLib_proxy/CCLib_proxy.ino @@ -35,10 +35,10 @@ //////////////////////////////////////// // Pinout configuration (Configured for Arduino Leonardo) -int CC_RST = 5; -int CC_DC = 4; -int CC_DD_I = 3; -int CC_DD_O = 2; +int CC_RST = D8; +int CC_DC = D7; +int CC_DD_I = D6; +int CC_DD_O = D5; // Change this if you are using an external led int LED = LED_BUILTIN;
I compiled it using platformio, using the following platformio.ini settings:
[platformio] src_dir = . [env:default] platform = espressif8266 board = d1_mini framework = arduino monitor_speed = 9600 upload_speed = 921600
Then enter the CCLib/Python directory and try to see if the programming tool can find the USB stick:
./cc_info.py -E
If it's found, you should see all kinds of information about the CC2531.
TODO document:
- download the HEX file
- edit the HEX file
- command to program the HEX file
- ask for patience