ZigbeeCoordinator: Difference between revisions

From RevSpace
Jump to navigation Jump to search
Line 17: Line 17:
* download, build and run the programmer utility
* download, build and run the programmer utility


=== Hardware ===
=== Hardware and updating the firmware ===
I ordered [https://aliexpress.com/item/CC2531/32869263224.html this CC2531 stick] plus the debug connector.
I ordered [https://aliexpress.com/item/CC2531/32869263224.html this CC2531 stick] plus the debug connector.


Line 85: Line 85:
* command to program the HEX file
* command to program the HEX file
* ask for patience
* ask for patience
<pre>
NOTE: Performing auto-detection (use -p to specify port manually)
INFO: Checking /dev/ttyUSB0
INFO: Found a CC2531 chip on /dev/ttyUSB0
Chip information:
      Chip ID : 0xb524
  Flash size : 256 Kb
    Page size : 2 Kb
    SRAM size : 8 Kb
          USB : Yes
Sections in /home/bertrik/code/zigbee2mqtt/temp/CC2531ZNP-Prod.hex:
Addr.    Size
-------- -------------
0x0000  8176 B
0x1ff6  10 B
0x3fff0  1 B
0x2000  239616 B
This is going to ERASE and REPROGRAM the chip. Are you sure? <y/N>:  y
Flashing:
- Chip erase...
- Flashing 4 memory blocks...
-> 0x0000 : 8176 bytes
    Progress 100%... OK
-> 0x1ff6 : 10 bytes
    Progress 100%... OK
-> 0x3fff0 : 1 bytes
    Progress 100%... OK
-> 0x2000 : 239616 bytes
    Progress 100%... OK
Completed
</pre>


=== Software ===
=== Software ===

Revision as of 13:51, 10 March 2019

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 and updating the firmware

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
NOTE: Performing auto-detection (use -p to specify port manually)
INFO: Checking /dev/ttyUSB0
INFO: Found a CC2531 chip on /dev/ttyUSB0

Chip information:
      Chip ID : 0xb524
   Flash size : 256 Kb
    Page size : 2 Kb
    SRAM size : 8 Kb
          USB : Yes
Sections in /home/bertrik/code/zigbee2mqtt/temp/CC2531ZNP-Prod.hex:

 Addr.    Size
-------- -------------
 0x0000   8176 B 
 0x1ff6   10 B 
 0x3fff0   1 B 
 0x2000   239616 B 

This is going to ERASE and REPROGRAM the chip. Are you sure? <y/N>:  y

Flashing:
 - Chip erase...
 - Flashing 4 memory blocks...
 -> 0x0000 : 8176 bytes 
    Progress 100%... OK
 -> 0x1ff6 : 10 bytes 
    Progress 100%... OK
 -> 0x3fff0 : 1 bytes 
    Progress 100%... OK
 -> 0x2000 : 239616 bytes 
    Progress 100%... OK

Completed

Software