ZigBee на Raspberry, часть 1, прошивка CC2531
Задача: научится принимать пакеты по протоколу Zigbee на устройстве Raspberry PI 3. Сама по себе, без внешних дополнительных устройств, Raspberry этого не умеет. Нужен модем, который может принимать сигналы на этой частоте. Для этого было куплено на Aliexpress устройство Zigbee CC2531. Покупателю оно приходит пустое, без прошивки, поэтому перед работой с ним, его необходимо прошить. Есть несколько вариантов, самый простой сделать это при помощи самой же RaspberryPI. Одно Но! (и даже их несколько):
- нужно делать самому подключение проводками
- на модеме ножки очень тонкие, и стандартные проводки от Arduino например не подойдут. Кто-то городил огород при помощи малярного скотча, а кто-то отгибал ножки и припаивался к ним на прямую.
Общая схема подключения для прошивки следующая:


После того как наколхозите этот переходник, можно начинать прошивку. Но сначала убедимся, что модем вообще виден в системе, выполнив команду lsusb. Должно выйти что-то вроде:

Если всё ок, двигаемся к следующему шагу: скачиваем утилиту для прошивки:
git clone https://github.com/jmichault/flash_cc2531.git
cd flash_cc2531
./cc_chipid
И скорее всего получим фигу вида:
root@raspberrypi:/home/donpadlo/flash_cc2531# ./cc_chipid
bash: ./cc_chipid: cannot execute: required file not found
Я подозреваю, что этой утилите не хватает библиотеки wiringPi. Установить её можно так:
git clone https://github.com/WiringPi/WiringPi.git
cd WiringPi
./build
И далее снова попробовать выполнить :
./cc_chipid
И я снова получил туже самую ошибку. Ну чтож..попробуем собрать банарник из исходных годов сами:
cd flash_cc2531
make
После чего, команда уже выполнится корректно:
./cc_read
ID = b534
Т.е. устройство прошивальщик теперь видит. Скачаем последнюю версию прошивки (можно прям по этой ссылке, т.к. версии более не разрабатываются для этого модема):
wget https://github.com/Koenkk/Z-Stack-firmware/raw/refs/heads/master/coordinator/Z-Stack_3.0.x/bin/CC2531_20190425.zip
unzip CC2531_20190425.zip
./cc_erase
./cc_write CC2531ZNP-with-SBL.hex
И собственно всё. Теперь стик рабочий. Осталось научится получать с него данные. А это уже в следующих частях..

