La ĉefa afero
flash_cc2531
flash_cc2531 ebligas al vi programi vian CC2531 USB-bastonon de via Raspberry, sen la bezono de Arduino aŭ a CC Debugger. Ĝi ankaŭ povas programi CC2530-ŝlosilon.
Antaŭkondiĉo
Vi bezonas aŭ Raspberry aŭ Odroid-c2.
Vi bezonas kion por konekti la elpurigan havenon de la ŝlosilo al la havenoj GPIO de Raspberry, ekzemple unu kablo CC kaj kvar linioj Dupont (vidu plu).
WiringPi devas esti instalita (se ĝi ne estas antaŭinstalita, vi kutime povas instali ĝin per sudo apt install wiringpi
), alie vidu la retejon de Gordon aŭ ĉi tiun alternativan retejon ).
Fine vi bezonas la programon:
-
Enerale kunordiganto zigbee : Versio 1.2 (rekomendita) aŭ versio 3.0
-
Aŭ enkursigilo zigbee : enkursigilo zigbee 1.2
Mi projektis flash_cc2531 sur Raspberry Pi 3 kun raspbian, sed sukcesa programado estis raportita pri aliaj modeloj:
-
sur pi 4 vi bezonos version 2.52 de wiringpi : instalu wiringPi 2.52 de Gordon retejo
-
sur pi 1 kaj pi 2 vi bezonos uzi aliajn pinglojn.
Preparado
Elŝutu flash_cc2531 al via raspberry :
git clone https://github.com/jmichault/flash_cc2531.git
Konektu la sekvajn pinglojn de la elpuriga haveno al la GPIO-haveno:
pinglo de GPIO | pinglo de CC |
---|---|
39 ( GND ) | 1 ( GND ) |
36 ( wPi 27, BCM16 ) | 3 ( DC ) |
38 ( wPi 28, BCM20 ) | 4 ( DD ) |
35 ( wPi 24, BCM19 ) | 7 ( reset ) |
La pinglo-aranĝo de raspberry haveblas ĉi tie: https://pinout.xyz/
Tiam enmetu la USB-ŝlosilon en havenon.
Noto: Se vi ne volas enmeti la ŝlosilon en USB-havenon, vi povas anstataŭe konekti la pinglo CC 9 al una pinglo 3,3v de raspberry (pinglo 1 aŭ 17).
Elŝuti-kablo CC kaj 4 linioj Dupont Ino al Ino estas perfektaj por ĉi tiu celo: Ĉi tiu estas mia plej ŝatata opcio, sed se vi ne havas kablon CC vi ankaŭ povas rekte luti la kablojn Dupont sur la ŝlosilo: vidu ekzemple la retejon lemariva.com aŭ notenoughtech.com
provu per ĉi tio:
cd flash_cc2531
./cc_chipid
Ĝi devas reveni:
ID = b524.
(la valoro povas esti malsama se la aparatara versio de via ŝlosilo ne samas kun la mia).
Se vi vidas 0000 aŭ ffff io estas malĝusta:
-
unue kontrolu vian kabligon.
-
tiam provu pli altan bazan tempon, ekzemple kun
./cc_chipid -m 100
, aŭ./cc_chipid -m 160
aŭ./cc_chipid -m 300
. -
se neniu el tio funkcias, provu rekompili kun
make
.
uzado
Por konservi la enhavon de la fulmmemoro en la dosiero save.hex:
./cc_read save.hex
(prenas ĉirkaŭ 2 minutojn).
Por forviŝi fulmmemoron:
./cc_erase
Noto: Vi devas forviŝi antaŭ skribado (krom se vi vere scias, kion vi faros).
Por programi la dosieron CC2531ZNP-Prod.hex sur la ŝlosilo CC2531:
./cc_write CC2531ZNP-Prod.hex
(daŭras ĉirkaŭ 3 minutojn).
Uzi aliajn pinglojn
ĉiuj ordonoj akceptas la jenajn argumentojn:
-
-c pinglo: ŝanĝu la pinglon DC (defaŭlte 27)
-
-d pinglo: ŝanĝu la pinglon DD (defaŭlte 28)
-
-r pinglo: ŝanĝu la pinglon reset (defaŭlte 24)
-
-m : ŝanĝu la prokrastan multiplikaton, kaj do la bazan tempon (defaŭlte: aŭtomata ĝustigo)
la pinglonumerado uzata estas tiu de wiringPi. Uzu gpio readall
por havi la aranĝon en via Raspberry (kolumno wPi ).
Ekzemple, se vi volas uzi pinglojn 3, 11 kaj 13:
Konekti la jenajn pinglojn de elpuriga haveno al haveno GPIO:
-
pinglo 1 ( GND ) -> pinglo 14 ( GND )
-
pinglo 7 ( reset ) -> pinglo 3 ( wPi 8, BCM2 )
-
pinglo 3 ( DC ) -> pinglo 11 ( wPi 0, BCM17 )
-
pinglo 4 ( DD ) -> pinglo 13 ( wPi 2, BCM27 )
kaj nun vi povas legi identigilon, konservi, forviŝi kaj skribi fulmmemoron per la jenaj komandoj:
./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
kio se ĝi ne funkcias?
-
ĉesu ĉiujn aliajn programojn.
-
agordu la rapidon de la procesoro antaŭ programado. Ekzemplo:
sudo echo performance >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
-
uzu la opcion -m por pliigi la uzatajn tempolimojn. Ekzemplo:
./cc_write -m 300 CC2531ZNP-Prod.hex
-
rekompili la programon per
make
. -
serĉu solvon en la demandoj jam faritaj ĉe github
-
Demandu vian propran demandon pri github.
-
Kontrolu vian nutroblokon
grep Under /var/log/kern.log
Se vi ricevas multajn liniojn, tiam vi devas ŝanĝi nutroblokon.
Mi volas konekti pli ol 15 periferiojn
Ni legas en diversaj lokoj, kiujn la ŝlosilo CC2531 nur povas pritrakti 15 maksimumajn aparatojn.
Fakte la normo firmware de ĉi tiu ŝlosilo havas limon de 15 rektaj ligoj. Sed se unu el ĉi tiuj konektoj estas zigbee enkursigilo (kaj plej multaj aparatoj funkcias kiel enkursigilo, tio estas ekzemple la kazo de Philips Hue ampoloj kaj Ikea TRÅDFRI ampoloj), tiam la CC2531 povas administri la aparatojn malantaŭ ĉi tiu enkursigilo, kaj tiujn malantaŭ la enkursigiloj konektitaj al ĉi tiu enkursigilo …
Fakte la limo por la CC2531 estas multe pli alta. Kaj se iutage vi superas pli ol 50 aparatojn en via zigbee reto, investi en pli multekosta kunordiganto estos nur malgranda parto de via buĝeto.
Ankaŭ notu, ke la protokolo zigbee limigas la nombron de rektaj ligoj al 32-a. Sendepende de via kunordiganto zigbee, ĝi ne povos konektiĝi al pli ol 32 ekstercentraj.
Mia ŝlosilo havas ĝian ruĝan LED, kiu lumigas.
Okazas, ke la ŝlosilo deprogramos, ĉu pro medio ŝarĝita de parazitoj aŭ pro malbona nutrobloko.
-
Kontrolu vian nutroblokon
grep Under /var/log/kern.log
Se vi ricevas multajn liniojn, tiam vi devas ŝanĝi nutroblokon.
-
Malproksimigu la ŝlosilo de perturbaj materialoj: laŭtparoliloj, Wi-Fi enkursigiloj, …
-
Reprogramu la ŝlosilon
Permesilo
Ĉi tiu projekto estas rajtigita laŭ GPL v3 ( vidu COPYING ).