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ŭ RaspberryOdroid-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 ĉi tiun alternativan retejon ).
Fine vi bezonas la programon:

Mi projektis flash_cc2531 sur Raspberry Pi 3 kun raspbian, sed sukcesa programado estis raportita pri aliaj modeloj:

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: foto de la ŝlosilo kaj la _raspberry_ Ĉ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 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:

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:

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:

  1. pinglo 1 ( GND ) -> pinglo 14 ( GND )

  2. pinglo 7 ( reset ) -> pinglo 3 ( wPi 8, BCM2 )

  3. pinglo 3 ( DC ) -> pinglo 11 ( wPi 0, BCM17 )

  4. 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?

  1. ĉesu ĉiujn aliajn programojn.

  2. agordu la rapidon de la procesoro antaŭ programado. Ekzemplo:

    sudo echo performance >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    
  3. uzu la opcion -m por pliigi la uzatajn tempolimojn. Ekzemplo:

    ./cc_write -m 300 CC2531ZNP-Prod.hex
    
  4. rekompili la programon per make.

  5. serĉu solvon en la demandoj jam faritaj ĉe github

  6. Demandu vian propran demandon pri github.

  7. 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.

  1. Kontrolu vian nutroblokon

    grep Under /var/log/kern.log
    

    Se vi ricevas multajn liniojn, tiam vi devas ŝanĝi nutroblokon.

  2. Malproksimigu la ŝlosilo de perturbaj materialoj: laŭtparoliloj, Wi-Fi enkursigiloj, …

  3. Reprogramu la ŝlosilon

Permesilo

Ĉi tiu projekto estas rajtigita laŭ GPL v3 ( vidu COPYING ).