K32W
Dieses Beispiel fungiert als Gerätetyp einer Glühbirne mit Ein-/Aus-Funktion. Die Schritte wurden auf dem NXP K32W-Entwicklungsboard (IOTZTB-DK006 Development Kit) überprüft.
Ersteinrichtung
- Prüfen Sie, ob Python3 und diese Pakete installiert sind. Die Schritte in diesem Dokument wurden mit Python 3.8 validiert.
- Laden Sie das K32W061 MCUXpresso SDK 2.6.9 herunter und installieren Sie es.
- Sobald das SDK erstellt ist, laden Sie das SDK-Paket herunter und entpacken Sie es in Ihr Basisverzeichnis. Legen Sie für die Umgebungsvariable
NXP_K32W0_SDK_ROOT
den Ort fest, in dem Sie das SDK extrahiert haben. Wir empfehlen auch, diesen Befehl der Datei.*rc
für die von Ihnen verwendete Shell hinzuzufügen, z. B..zshrc
:export NXP_K32W0_SDK_ROOT=$HOME/SDK_2_6_9_K32W061DK6/
Klonen und initialisieren Sie das NXP/Micro-Repository:
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
In diesem Beispiel wird die Konfiguration „Generic Switch Node“ verwendet. Die Jumper JP4/JP7 müssen sich ganz links befinden (LPC-JN UART0):
Board für JLink neu konfigurieren
- Laden Sie JLink herunter und installieren Sie es auf Ihrem Computer.
- Prüfen Sie auf der Platine, ob auf dem BOOT-Jumper neben dem USB-Anschluss DFU ausgewählt ist, und verbinden Sie die Karte mit einem Mini-USB-Kabel mit Ihrem Computer.
- Laden Sie LPCScrypt auf Ihren Computer herunter und installieren Sie es.
- Doppelklicken Sie unter macOS auf das heruntergeladene Paket, um es zu installieren.
- Rufen Sie unter Linux den Ordner auf, in den Sie das Paket heruntergeladen haben:
chmod +x lpcscrypt-2.1.2_57.x86_64.deb.bin
./lpcscrypt-2.1.2_57.x86_64.deb.bin
- Nachdem LPCScrypt installiert wurde, führen Sie dieses Skript aus, um das Board neu zu programmieren. Ersetzen Sie dabei
<LPCScrypt_InstallDir>
durch den tatsächlichen Installationspfad von LPCScrypt:<LPCScrypt_InstallDir>/scripts/program_JLINK
- Sie sollten Meldungen wie diese sehen: Drücken Sie die Leertaste, um mit der Programmierung zu beginnen. Wenn Sie fertig sind, drücken Sie zum Beenden die Eingabetaste.
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)
- Trennen Sie die Platine von der Stromversorgung und schieben Sie den BOOT-Jumper wieder auf NORMAL. Ihr Board ist jetzt so umkonfiguriert, dass es JLink zum Flashen eines Images verwendet.
Image erstellen
- Bereiten Sie das Repository vor:
source ./scripts/activate.sh
Installieren Sie die Abhängigkeiten:
pip3 install pycrypto pycryptodome
Aktualisieren Sie die
VENDOR_ID
in Ihrer Beispielprojektkonfiguration (CHIPProjectConfig.h
). Dies sollte Ihre VID gemäß der Matter-Spezifikation oder eine zu Testzwecken zugewiesene VID sein. Der Wert, den Sie fürVENDOR_ID
angeben, muss mit dem Wert übereinstimmen, den Sie beim Erstellen der Matter-Integration in Google Home Developer Console verwenden.
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-VID1. Prüfen Sie die `PRODUCT_ID` in Ihrer Beispielprojektkonfiguration (`CHIPProjectConfig.h`). Der Wert für `PRODUCT_ID` kann mit dem Standardwert des Beispiels identisch bleiben oder wie gewünscht geändert werden. Er muss jedoch die aktuellen [Produkt-ID-Einschränkungen unter den Voraussetzungen](/matter/get-started#product_id) einhalten. Beachten Sie auch, dass der Wert, den Sie für „PRODUCT_ID“ angeben, **mit dem Wert übereinstimmen muss**, den Sie beim [Erstellen der Matter-Integration](/matter/integration/create) in der Datei Developer Console verwenden.
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 0x4B4C1. Erstellen Sie die Beleuchtungs-App: 1. **Wenn die Erweiterungskarte OM15082 an Ihre K32W-Platine angeschlossen ist**, setzen Sie das Build-Argument „chip_with_OM15082“ auf „1“:
1. **Wenn die Erweiterungskarte OM15082 nicht angehängt ist**, lassen Sie das Build-Argument „chip_with_OM15082“ weg: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
Beachten Sie, dass [Pigweed tokenizer](https://pigweed.dev/pw_tokenizer){:target="_blank" .external} – ein Pigweed-Token, das oben zum Parsen von . [Weitere Informationen](https://github.com/project-chip/connectedhomeip/tree/v1.0-branch/examples/lighting-app/nxp/k32w/k32w0#pigweed-tokenizer){:target="_blank" .external} 1. **Für MacOS-Nutzer** (überspringen Sie diesen Schritt, wenn Sie NICHT mit macOS arbeiten): Öffnen Sie das Skript `sign_images.sh` (unter `$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh`) in einem Texteditor und nehmen Sie folgende Änderungen vor: 1. Kommentieren Sie diese Zeilen aus oder entfernen Sie sie, um den Fehler „Paket nicht installiert“ unter macOS zu beheben:cd 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
is_linux_package_installed "python3" is_linux_package_installed "python3-pip"1. Korrigieren Sie das Argument im Dienstprogramm „file“ („-ib`" sollte „`-Ib`" sein). Andernfalls kann das Signaturskript ohne Rückmeldung keine bin-Datei generieren:
MIME_SET="$(file -ib $FILENAME)"Ändern Sie zu:
MIME_SET="$(file -Ib $FILENAME)"1. Signieren Sie das Bild:
chmod +x $NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh out/debug/
Tafel blinken lassen
- Starten Sie die JLink-Befehlszeile mit dem Board, das über ein Mini-USB-Kabel verbunden ist:
JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
- Geben Sie in der JLink-Befehlszeile den Befehl
erase
ein, um ein vorhandenes Image auf dem Board zu löschen. Dies ist erforderlich, wenn Sie das Board schon einmal geflasht haben.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. - Flashen Sie dann das Bild mit dem Befehl
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. - Beenden Sie die JLink CLI, indem Sie
exit
eingeben. - Starten Sie JLink neu:
JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
- Flashen Sie das Bild noch einmal und überspringen Sie diesmal den Befehl
erase
: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. - Nachdem der Befehl
loadbin
ausgeführt wurde, drücken Sie die Taste SW2 auf der Erweiterungsplatine, um das Image auf die Werkseinstellungen zurückzusetzen. Drücken Sie dann auf der Hauptplatine auf SW4 RESET, um das Image auszuführen.
Beispiel validieren
- Das Gerät sollte sich auf dem Computer als serielles USB-Gerät präsentieren. Sie können sie in
/dev/
nachschlagen:
Sie können die serielle Konsole mit dem python3-Skript detokenizer.py öffnen. Das ist ein Skript, das die tokenisierten Pigweed-Logs aus einem seriellen Port decodiert. Wenn sich das Gerät beispielsweise inls -la /dev/tty*
/dev/ttyACM0
befindet:python3 ./scripts/detokenizer.py serial -i /dev/ttyACM0 -d out/debug/chip-k32w061-light-example-database.bin
- Drücken Sie die SW2-Taste, um das Board auf die Werkseinstellungen zurückzusetzen. LED2 und LED3 blinken eine Weile. In der seriellen Konsole sollten Sie solche Meldungen sehen:
[Info]Factory Reset Triggered. Push the RESET button within 6000 ms to cancel! [Info]Device will factory reset... [Info]Performing factory reset
- Klicken Sie auf die Schaltfläche SW3, um den Status der Glühbirne ein- oder auszuschalten. Die LED sollte D3 umschalten.
Voraussetzungen für die Inbetriebnahme
Bevor Sie das NXP K32W-Entwicklungsboard in Betrieb nehmen, sollten Sie Folgendes beachten:
- BLE-Werbung muss aktiviert werden, bevor das Gerät im Google Home-System gefunden und in Betrieb genommen werden kann. Klicken Sie auf die Schaltfläche BENUTZEROBERFLÄCHE, um die Werbung vorübergehend zu aktivieren (für 15 Minuten gemäß der Spezifikation Matter).
Ohne ein kryptografisches Hardwarebeschleunigermodul kann das K32-Entwicklungsboard die Inbetriebnahme möglicherweise nicht abschließen, bevor der Ablauf von der Seite des Android-Mobilgeräts abläuft. Sie können das Zeitlimit auf einem Computer verwenden, der mit Ihrem Smartphone verbunden ist, indem Sie
adb logcat
verwenden. Wenn eine Zeitüberschreitung auftritt, wird eine Logmeldung wie diese angezeigt:Device connection failed. Error third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:275: CHIP Error 0x00000032: Timeout
Weitere Informationen zum Einrichten und Verwenden von
adb
finden Sie unter Fehlerbehebung.
Nächste Schritte
Wenn das Matter-Beispiel erfolgreich erstellt wurde, erstellen Sie ein Entwicklerprojekt.