K32W
Questo esempio funziona come un tipo di lampadina, con funzionalità di accensione/spegnimento. I passaggi sono stati verificati sulla scheda di sviluppo NXP K32W (kit di sviluppo ITOZZ-DK006).
Configurazione iniziale
- Assicurati di avere Python3 e questi pacchetti installati. I passaggi descritti in questo documento sono stati convalidati con Python 3.8.
- Scarica e installa l'SDK MCUXpresso K32W061 2.6.9.
- Una volta creato l'SDK, scarica il pacchetto dell'SDK ed estrailo nella directory home. Imposta la variabile di ambiente
NXP_K32W0_SDK_ROOT
su dove hai estratto l'SDK. Ti consigliamo inoltre di aggiungere questo comando al file.*rc
per la shell che stai utilizzando, ad esempio.zshrc
:export NXP_K32W0_SDK_ROOT=$HOME/SDK_2_6_9_K32W061DK6/
Clona e inizializza il repository NXP/Micro:
git clone https://github.com/NXPmicro/matter.git
cd matter
git fetch origin v1.0-branch-nxp
git checkout FETCH_HEAD
git submodule update --init --recursive
source ./scripts/activate.sh
L'esempio utilizza la configurazione "Generic Switch Node". Assicurati che i saltatori JP4/JP7 si trovino nella posizione più a sinistra (LPC-JN UART0):
Riconfigura la lavagna per JLink
- Scarica e installa JLink sul tuo computer.
- Assicurati che sulla scheda DFU sia selezionato il bridge BOOT accanto alla porta USB e collega la scheda al computer con un cavo mini USB.
- Scarica e installa LPCScrypt sul computer.
- Per MacOS, fai doppio clic sul pacchetto scaricato per installarlo.
- Per Linux, vai alla cartella in cui scarichi il pacchetto:
chmod +x lpcscrypt-2.1.2_57.x86_64.deb.bin
./lpcscrypt-2.1.2_57.x86_64.deb.bin
- Dopo aver installato LPCScrypt, esegui questo script per riprogrammare la tua scheda (sostituisci
<LPCScrypt_InstallDir>
con il percorso di installazione effettivo di LPCScrypt):<LPCScrypt_InstallDir>/scripts/program_JLINK
- Dovresti vedere messaggi simili a quelli che seguono. Premi la Barra spaziatrice per iniziare
la programmazione. Al termine, premi Invio per uscire.
LPCScrypt - J-Link firmware programming script v2.1.2 Nov 2020.
Connect an LPC-Link2 or LPCXpresso V2/V3 Board via USB then press Space. Booting LPCScrypt . LPCXpresso V2/V3 programmed with Firmware_JLink_LPCXpressoV2_20190404.bin -To use: remove DFU link and reboot the board
Connect next board then press Space (or <return> to Quit)
- Scollega il quadro elettrico e riporta il bridge BOOT su NORMAL. La lavagna è stata riconfigurata per utilizzare JLink per eseguire il flashing di un'immagine.
Crea l'immagine
- Prepara il repository:
source ./scripts/activate.sh
- Installa le dipendenze:
pip3 install pycrypto pycryptodome
- Aggiorna il
VENDOR_ID
nella configurazione del progetto di esempio (CHIPProjectConfig.h
). Questo dovrebbe essere il tuo VID come da CSA Matter specification, or a VID allocated for testing purposes. The value you provide forVENDOR_ID
must match the one you use when creating the Matter integration in the Google Home Developer Console.grep VENDOR_ID ./examples/lighting-app/nxp/k32w/k32w0/include/CHIPProjectConfig.h
* CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID #define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID your-hex-VID
- Controlla
PRODUCT_ID
nella configurazione del progetto di esempio (CHIPProjectConfig.h
). Il valorePRODUCT_ID
può rimanere invariato rispetto al valore predefinito dell'esempio o modificato a seconda delle esigenze, ma deve rispettare gli attuali limiti di ID prodotto descritti nei Prerequisiti. Inoltre, tieni presente che il valore fornito perPRODUCT_ID
deve corrispondere a quello che utilizzi durante la creazione dell'integrazione Matter in Developer Console.grep PRODUCT_ID ./examples/lighting-app/nxp/k32w/k32w0/include/CHIPProjectConfig.h
* CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID #define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x4B4C
- Crea l'app per l'illuminazione:
- Se la scheda di espansione OM15082 è collegata alla scheda K32W, assicurati di impostare l'argomento della build
chip_with_OM15082
su1
:cd examples/lighting-app/nxp/k32w/k32w0/
gn gen out/debug --args="k32w0_sdk_root="${NXP_K32W0_SDK_ROOT}" chip_with_OM15082=1 chip_with_ot_cli=0 is_debug=false chip_crypto="platform" chip_with_se05x=0 chip_pw_tokenizer_logging=true chip_enable_ota_requestor=false"
ninja -C out/debug
- Se la scheda di espansione OM15082 non è collegata, ometti l'argomento della build
chip_with_OM15082
:
Tieni presente che il tokenizer maiale, che è un modulo pigweed che consente di eseguire l'hashing delle stringhe per ridurre notevolmente il flash necessario per i log, viene attivato sopra impostandocd examples/lighting-app/nxp/k32w/k32w0/
gn gen out/debug --args="k32w0_sdk_root="${NXP_K32W0_SDK_ROOT}" chip_with_ot_cli=0 is_debug=false chip_crypto="platform" chip_with_se05x=0 chip_pw_tokenizer_logging=true chip_enable_ota_requestor=false"
ninja -C out/debug
chip_pw_tokenizer_logging
sutrue
. Lo script detokenizer sarà necessario per analizzare gli script sottoposti ad hashing. Leggi qui per saperne di più.
- Se la scheda di espansione OM15082 è collegata alla scheda K32W, assicurati di impostare l'argomento della build
Per gli utenti di macOS (salta questo passaggio se NON stai sviluppando su MacOS):
Apri lo script
sign_images.sh
(situato in$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
) in un editor di testo e apporta le seguenti modifiche:- Commenta o rimuovi queste righe per risolvere l'errore "pacchetto non installato" su MacOS:
is_linux_package_installed "python3" is_linux_package_installed "python3-pip"
- Correggi l'argomento nell'utilità
file
("-ib
" dovrebbe essere "-Ib
"), altrimenti lo script di firma non genererà automaticamente un file.bin
:MIME_SET="$(file -ib $FILENAME)"
Passa a:MIME_SET="$(file -Ib $FILENAME)"
- Commenta o rimuovi queste righe per risolvere l'errore "pacchetto non installato" su MacOS:
Firma l'immagine:
chmod +x $NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh out/debug/
Fai lampeggiare la lavagna
- Avvia la riga di comando JLink con la scheda collegata a un cavo mini USB:
JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
- Nella riga di comando JLink, inserisci il comando
erase
per cancellare i dati da un'immagine esistente sulla lavagna. Questa operazione è necessaria se hai già eseguito il flashing della lavagna.erase
Without any give address range, Erase Chip will be executed Erasing device... J-Link: Flash download: Total time needed: 2.878s (Prepare: 0.051s, Compare: 0.000s, Erase: 2.789s, Program: 0.000s, Verify: 0.000s, Restore: 0.037s) Erasing done. - Quindi fai lampeggiare l'immagine utilizzando il comando
loadbin
:loadbin out/debug/chip-k32w061-light-example.bin, 0
Downloading file [out/debug/chip-k32w061-light-example.bin]... J-Link: Flash download: Bank 0 @ 0x00000000: 1 range affected (586752 bytes) J-Link: Flash download: Total: 7.492s (Prepare: 0.054s, Erase: 2.738s, Program & Verify: 4.661s, Restore: 0.037s) J-Link: Flash download: Program & Verify speed: 122 KB/s O.K. - Esci dall'interfaccia a riga di comando JLink digitando
exit
. - Riavvia JLink:
JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
- Esegui di nuovo il flashing dell'immagine, ignorando il comando
erase
questa volta:loadbin out/debug/chip-k32w061-light-example.bin, 0
Downloading file [out/debug/chip-k32w061-light-example.bin]... J-Link: Flash download: Bank 0 @ 0x00000000: 1 range affected (586752 bytes) J-Link: Flash download: Total: 7.492s (Prepare: 0.054s, Erase: 2.738s, Program & Verify: 4.661s, Restore: 0.037s) J-Link: Flash download: Program & Verify speed: 122 KB/s O.K. - Al termine del comando
loadbin
, premi il pulsante SW2 sulla scheda di espansione per eseguire un ripristino dei dati di fabbrica, quindi premi il pulsante SW4 RESET sulla scheda principale per iniziare a eseguire l'immagine.
Convalida l'esempio
- Il dispositivo dovrebbe essere presentato come dispositivo seriale USB sul computer. Puoi cercarla in
/dev/
:
Puoi aprire la console seriale con lo script python3 detokenizer.py, che è uno script che decodifica i log tokenizzati di Pigweed da una porta seriale. Ad esempio, se il dispositivo si trova all'indirizzols -la /dev/tty*
/dev/ttyACM0
:python3 ./scripts/detokenizer.py serial -i /dev/ttyACM0 -d out/debug/chip-k32w061-light-example-database.bin
- Per ripristinare i dati di fabbrica della lavagna, premi il pulsante SW2. LED2 e LED3 lampeggeranno per un po' di tempo. Nella console seriale dovresti vedere messaggi come questo:
[Info]Factory Reset Triggered. Push the RESET button within 6000 ms to cancel! [Info]Device will factory reset... [Info]Performing factory reset
- Per attivare/disattivare lo stato della lampadina, fai clic sul pulsante SW3. Dovrebbe attivare il LED D3.
Prerequisiti per la messa in servizio
Prima di mettere in servizio la scheda di sviluppo NXP K32W, tieni presente quanto segue:
- La pubblicità BLE deve essere attivata prima che il dispositivo possa essere rilevato e messo in servizio nell'ecosistema Google Home. Per attivare temporaneamente la pubblicità (per 15 minuti, in base alla specifica Matter), premi il pulsante USERINTERFACE.
Senza un modulo dell'acceleratore hardware crittografico, la scheda di sviluppo di K32 potrebbe non essere in grado di completare la commissione prima del timeout del flusso dal Android mobile device side. You can identify that a timeout occurred by using
adb logcat
from a computer attached to your phone. When a timeout occurs, you will see a log message like:Device connection failed. Error third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:275: CHIP Error 0x00000032: Timeout
Consulta la sezione Risoluzione dei problemi per ulteriori informazioni sulla configurazione e l'utilizzo di
adb
.
Passaggi successivi
Una volta creato l'esempio Matter, crea un progetto sviluppatore.