K32W
Contoh ini berfungsi sebagai jenis perangkat bohlam, dengan kemampuan aktif/nonaktif. Langkah-langkah tersebut telah diverifikasi di board pengembangan NXP K32W (kit pengembangan IOTZTB-DK006).
Penyiapan awal
- Pastikan Anda telah menginstal Python3 dan paket ini. Langkah-langkah dalam dokumen ini divalidasi dengan Python 3.8.
- Download dan instal K32W061 MCUXpresso SDK 2.6.9.
- Setelah SDK di-build, download paket SDK dan ekstrak ke direktori
home Anda. Tetapkan variabel lingkungan
NXP_K32W0_SDK_ROOT
ke tempat Anda mengekstrak SDK. Sebaiknya tambahkan juga perintah ini ke file.*rc
untuk shell yang Anda gunakan, seperti.zshrc
:export NXP_K32W0_SDK_ROOT=$HOME/SDK_2_6_9_K32W061DK6/
Clone dan inisialisasi repo NXP/Mikro:
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
Contoh ini menggunakan konfigurasi "Node Switch Generik". Pastikan pelompat JP4/JP7 terletak di posisi paling kiri (LPC-JN UART0):
Mengonfigurasi ulang board untuk JLink
- Download dan instal JLink di komputer.
- Pada board, pastikan DFU dipilih pada jumper BOOT di samping port USB, lalu hubungkan board ke komputer dengan kabel USB mini.
- Download dan instal LPCScrypt di komputer Anda.
- Untuk MacOS, klik dua kali pada paket yang diunduh untuk menginstalnya.
- Untuk Linux, buka folder tempat Anda mendownload paket:
chmod +x lpcscrypt-2.1.2_57.x86_64.deb.bin
./lpcscrypt-2.1.2_57.x86_64.deb.bin
- Setelah LPCScrypt terinstal, jalankan skrip ini untuk memprogram ulang
board Anda (ganti
<LPCScrypt_InstallDir>
dengan jalur penginstalan LPCScrypt yang sebenarnya):<LPCScrypt_InstallDir>/scripts/program_JLINK
- Anda akan melihat pesan yang mirip dengan di bawah ini. Tekan Spasi untuk memulai
pemrograman. Setelah selesai, tekan Enter untuk keluar.
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)
- Lepaskan board dan ganti jumper BOOT kembali ke NORMAL. Board Anda kini dikonfigurasi ulang agar menggunakan JLink untuk melakukan flash image.
Membuat image
- Siapkan repo:
source ./scripts/activate.sh
Instal dependensi:
pip3 install pycrypto pycryptodome
Update
VENDOR_ID
dalam konfigurasi project contoh Anda (CHIPProjectConfig.h
). VID ini harus berupa VID Anda sesuai dengan Spesifikasi Matter, atau VID yang dialokasikan untuk tujuan pengujian. Nilai yang Anda berikan untukVENDOR_ID
harus cocok dengan yang Anda gunakan saat membuat integrasi Matter di 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-VID1. Periksa `PRODUCT_ID` dalam konfigurasi project contoh Anda (`CHIPProjectConfig.h`). Nilai `PRODUCT_ID` dapat tetap sama dengan nilai default contoh, atau diubah sesuai keinginan, tetapi harus mematuhi [Batasan ID Produk yang dijelaskan dalam Prasyarat](/matter/get-started#product_id) saat ini. Perhatikan juga bahwa nilai yang Anda berikan untuk `PRODUCT_ID` **harus cocok** dengan nilai yang Anda gunakan saat [membuat integrasi Matter](/matter/integration/create) di 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 0x4B4C1. Build aplikasi pencahayaan: 1. **Jika board ekspansi OM15082 terpasang ke board K32W**, pastikan untuk menyetel argumen build `chip_with_OM15082` ke `1`:
1. **Jika papan ekspansi OM15082 tidak dilampirkan**, hapus argumen build `chip_with_OM15082`: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
Perhatikan bahwa [Pigweed tokenizer](https://pigweed.dev/pw_tokenizer){:target="_blank" .external}, yang merupakan modul pigweed yang memungkinkan parameter untuk token hashing_token pada string di atas untuk mengurai skrip dengan token_token_true di atas secara signifikan. Lihat [di sini](https://github.com/project-chip/connectedhomeip/tree/v1.0-branch/examples/lighting-app/nxp/k32w/k32w0#pigweed-tokenizer){:target="_blank" .external} untuk mendapatkan informasi selengkapnya. 1. **Untuk pengguna MacOS** (lewati langkah ini jika Anda TIDAK membangun di MacOS): Buka skrip `sign_images.sh` (terletak di `$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh`) di editor teks dan buat perubahan berikut: 1. Jadikan sebagai komentar atau hapus baris ini untuk mengatasi error "paket tidak diinstal" di MacOS: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. Perbaiki argumen ke utilitas `file` ("`-ib`" harus menjadi "`-Ib`"), jika tidak, skrip penandatanganan akan diam-diam gagal menghasilkan file `.bin`:
MIME_SET="$(file -ib $FILENAME)"Ubah ke:
MIME_SET="$(file -Ib $FILENAME)"1. Tanda tangani image:
chmod +x $NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh out/debug/
Mem-flash board
- Luncurkan command line JLink dengan board yang dihubungkan melalui kabel USB mini:
JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
- Di command line JLink, masukkan perintah
erase
untuk menghapus total gambar yang ada di board. Tindakan ini diperlukan jika Anda sudah pernah melakukan flash sebelumnya.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. - Kemudian, flash image menggunakan perintah
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. - Keluar dari JLink CLI dengan mengetik
exit
. - Luncurkan ulang JLink:
JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
- Lakukan flash pada gambar lagi, melewati perintah
erase
kali ini: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. - Setelah perintah
loadbin
selesai, tekan tombol SW2 pada papan ekspansi untuk mereset ke setelan pabrik, lalu tekan tombol SW4 RESET di board utama untuk mulai menjalankan image.
Validasi contoh
- Perangkat akan berfungsi sebagai perangkat serial USB di
komputer Anda. Anda dapat mencarinya di
/dev/
:
Anda dapat membuka konsol serial dengan skrip python3 detokenizer.py, yang merupakan skrip yang mendekode log token Pigweed dari port serial. Misalnya, jika perangkat berada dils -la /dev/tty*
/dev/ttyACM0
:python3 ./scripts/detokenizer.py serial -i /dev/ttyACM0 -d out/debug/chip-k32w061-light-example-database.bin
- Untuk mereset board ke setelan pabrik, tekan tombol SW2. LED2 dan LED3
akan berkedip bersama untuk beberapa saat. Anda akan melihat pesan seperti ini di
konsol serial:
[Info]Factory Reset Triggered. Push the RESET button within 6000 ms to cancel! [Info]Device will factory reset... [Info]Performing factory reset
- Untuk mengubah status bola lampu (aktif/nonaktif), klik tombol SW3. LED D3 akan dialihkan.
Prasyarat Commissioning
Sebelum menugaskan papan pengembangan NXP K32W, perhatikan hal-hal berikut:
- Iklan BLE harus diaktifkan sebelum perangkat dapat ditemukan dan ditugaskan dalam ekosistem Google Home. Untuk mengaktifkan iklan sementara (selama 15 menit, sesuai spesifikasi Matter), tekan tombol USERINTERFACE.
Tanpa modul akselerator hardware kriptografi, papan pengembangan K32 mungkin tidak dapat menyelesaikan commissioning sebelum waktu alur habis dari sisi perangkat seluler Android. Anda dapat mengidentifikasi bahwa waktu tunggu habis dengan menggunakan
adb logcat
dari komputer yang terpasang ke ponsel Anda. Saat waktu tunggu habis, Anda akan melihat pesan log seperti:Device connection failed. Error third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:275: CHIP Error 0x00000032: Timeout
Lihat Pemecahan masalah untuk mengetahui informasi selengkapnya tentang cara menyiapkan dan menggunakan
adb
.
Langkah berikutnya
Setelah contoh Matter Anda berhasil dibuat, buat project developer.