Lo esencial
flash_cc2531
flash_cc2531 le permite programar su memoria USB CC2531 de su Raspberry, sin la necesidad de Arduino o un CC Debugger.
Requisito previo
Necesita Raspberry o Odroid-c2.
Necesita qué conectar el puerto de depuración de la llave a los puertos GPIO de Raspberry, por ejemplo, un cable CC y cuatro líneas Dupont (ver más).
WiringPi debe instalarse (si no está preinstalado, normalmente puede instalarlo con sudo apt install wiringpi
); de lo contrario, consulte el lugar de Gordon o este lugar alternativo ).
Finalmente necesitas el programa:
-
Coordinador general zigbee : Versión 1.2 (Recomendado) o Versión 3.0
-
O enrutador zigbee : Enrutador zigbee 1.2
Proyecté flash_cc2531 en Raspberry Pi 3 con raspbian, pero se informó una programación exitosa en otros modelos:
-
en pi 4 necesitará la versión 2.52 de wiringpi : instalar wiringPi 2.52 de Gordon sitio web
-
en pi 1 y pi 2 necesitará para usar otros pines.
Preparado
Descarga flash_cc2531 a tu raspberry :
git clone https://github.com/jmichault/flash_cc2531.git
Conecte los siguientes pins del puerto púrpura al puerto GPO:
El diseño de los pines raspberry está disponible aquí: https://pinout.xyz/
Luego ingrese la clave USB en el puerto.
Descargar Cable CC y 4 líneas Dupont Femeninas a mujeres son perfectas para este propósito: ![ Foto de la llave y raspberry
Esta es mi opción favorita, pero si usted No tiene un cable CC También puede reproducir directamente el cable Dupont en la tecla: consulte, por ejemplo, el lemariva.com
prueba esto:
cd flash_cc2531
./cc_chipid
Debe volver:
ID = b524.
(el valor puede ser diferente si la versión de hardware de su llave no es la misma que la mía).
Si ve 0000 o FFFF, algo es incorrecto:
-
Primero revise su cableado.
-
luego pruebe con un tiempo base más alto, por ejemplo con
./cc_chipid -m 100
, o./cc_chipid -m 160
o./cc_chipid -m 300
. -
si nada de esto funciona, intente recompilar con
make
.
uso
Para guardar el contenido de la memoria flash en el archivo save.hex:
./cc_read save.hex
(toma aproximadamente 2 minutos).
Para eliminar la memoria de rayos:
./cc_erase
Nota: Usted debe borrar antes de escribir (a menos que realmente sepa lo que va a hacer).
Para programar el archivo CC2531ZNP-Prod.hex en la llave CC2531:
./cc_write CC2531ZNP-Prod.hex
(dura aproximadamente 3 minutos).
Usa otros pines
todos los comandos aceptan los siguientes argumentos:
-
-c pin: cambia el pin DC (por defecto 27)
-
-d pin: cambia el pin DD (por defecto 28)
-
-r pin: cambia el pin reset (por defecto 24)
-
-m : cambia el multiplicador de retardo, y por lo tanto el tiempo base (por defecto: ajuste automático)
la numeración de pines utilizada es la de wiringPi. Utilice gpio readall
para tener el diseño en su columna Raspberry ( wPi ).
Por ejemplo, si desea utilizar los pines 3, 11 y 13:
Conecte los siguientes pins del puerto de purificación a PORT GPIO:
-
pin 1 ( GND ) -> pin 14 ( GND )
-
pin 7 ( reset ) -> pin 3 ( wPi 8, BCM2 )
-
pin 3 ( DC ) -> pin 11 ( wPi 0, BCM17 )
-
pin 4 ( DD ) -> pin 13 ( wPi 2, BCM27 )
Y ahora puede leer un identificador, guardar, eliminar y escribir una memoria de rayos con los siguientes comandos:
./cc_chipid -r 8 -c 0 -d 2
./cc_read -r 8 -c 0 -d 2 save.hex
./cc_erase -r 8 -c 0 -d 2
./cc_write -r 8 -c 0 -d 2 CC2531ZNP-Prod.hex
¿y si no funciona?
-
detenga todos los demás programas.
-
establezca la velocidad del procesador antes de programar. Ejemplo:
sudo echo performance >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
-
utilice la opción -m para aumentar los límites de tiempo utilizados. Ejemplo:
./cc_write -m 300 CC2531ZNP-Prod.hex
-
recompile el programa con
make
. -
busque una solución en las preguntas ya formuladas en github
-
Haga su propia pregunta sobre github.
-
Compruebe su bloque de nutrición
grep Under /var/log/kern.log
Si obtiene muchas líneas, entonces tiene que cambiar el bloque de nutrición.
Quiero conectar más de 15 periferias.
Leemos en varios lugares que la llave CC2531 solo puede manejar 15 dispositivos máximos.
De hecho, el límite para CC2531 es mucho mayor.
También tenga en cuenta que el protocolo zigbee limita el número de enlaces directos al 32º.
Mi llave tiene su LED rojo que se ilumina.
Sucede que los depósitos clave, ya sea debido al entorno cargado por parásitos o debido a una mala nutrición.
-
Compruebe su bloque de nutrición
grep Under /var/log/kern.log
Si obtiene muchas líneas, entonces tiene que cambiar el bloque de nutrición.
-
Salga de la llave para molestar materiales: altavoces, enrutador Wi-Fi, …
-
Reprogramar la llave
Licencia
Este proyecto tiene la licencia GPL v3 ( ver COPYING ).