Preparations
Hardwarewise you only need your CC2350 board, a Rasperry Pi which is newer than the first version and a bunch of (preferably) female-female cables. This does not work for Raspberry Pi 1 as it doesn’t have the required GPIOs.
From a software point of view, you would need to have WiringPi installed and have the according coordinator or repeater firmware ready. This will be explained in the later process.
Wiring
First of all, hook up your CC2530 with your Raspberry Pi. Therefore connect the following PINs.
CC2350
GND or G
RES or RST or R (reset)
P22 (DC)
P21 (DD)
Raspberry Pi
Pin 39 (GND)
Pin 35 (GPIO24, BCM19)
Pin 36 (GPIO27, BCM16)
Pin 38 (GPIO28, BCM20)
Flashing the CC2350
Make sure you have WiringPi installed. If not, follow these steps.
1 2 3 | git clone https://github.com/jmichault/flash_cc2531.git cd flash_cc2531 ./cc_chipid |
This should now contact the CC2350 board and return the chip id. If this return something like 0000 or ffff you have to go back and check the wiring! The result should be
1 | ID = b524. |
Usually you will find an expected result of „a524“ on the internet. This is also a valid result, but for the USB stick type of hardware. In case you are having a CC2531, you will get „a524“ as a result. But then I would be impressed, as the wiring should be different.
Afterwards download the coordinator software and unzip it
1 2 | wget https://github.com/Koenkk/Z-Stack-firmware/raw/master/coordinator/Z-Stack_3.0.x/bin/CC2530_20190523.zip unzip CC2530_20190523.zip |
Now erase the chip
1 | sudo ./cc_erase |
This will give you something like
ID = a524.
erase result = 00a2.
as a result. The chip can now be programmed with the coordinator firmware using the following command
1 | sudo ./cc_write CC2530ZNP-with-SBL.hex |
The expected result would be
1 2 3 4 5 6 | ID = a524. reading line 15490. file loaded (15497 lines read). writing page 128/128. verifying page 128/128. flash OK. |
This should give you a fully functional Z-Stack coordinator. This now needs to be hooked up to either your Raspberry or maybe even a ESP8266 to be used. Or connect it to a zigbee2mqtt server.
References
- https://www.raspberrypi.org/documentation/usage/gpio/images/GPIO-Pinout-Diagram-2.png
- https://ptvo.info/how-to-select-and-flash-cc2530-144/
- https://www.zigbee2mqtt.io/