ABCD

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

  1. Pastikan Anda telah menginstal Python3 dan paket ini. Langkah-langkah dalam dokumen ini divalidasi dengan Python 3.8.
  2. Download dan instal K32W061 MCUXpresso SDK 2.6.9.
  3. 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/
  4. 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
    

  5. Contoh ini menggunakan konfigurasi "Node Switch Generik". Pastikan pelompat JP4/JP7 terletak di posisi paling kiri (LPC-JN UART0):
    gambar

  1. Download dan instal JLink di komputer.
  2. Pada board, pastikan DFU dipilih pada jumper BOOT di samping port USB, lalu hubungkan board ke komputer dengan kabel USB mini.
    gambar
  3. Download dan instal LPCScrypt di komputer Anda.
    1. Untuk MacOS, klik dua kali pada paket yang diunduh untuk menginstalnya.
    2. 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
  4. 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
  5. 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)
  6. Lepaskan board dan ganti jumper BOOT kembali ke NORMAL. Board Anda kini dikonfigurasi ulang agar menggunakan JLink untuk melakukan flash image.
    gambar

Membuat image

  1. Siapkan repo:
    source ./scripts/activate.sh
  2. Instal dependensi:

    pip3 install pycrypto pycryptodome

  3. 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 untuk VENDOR_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-VID
1. 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 0x4B4C
1. Build aplikasi pencahayaan: 1. **Jika board ekspansi OM15082 terpasang ke board K32W**, pastikan untuk menyetel argumen build `chip_with_OM15082` ke `1`:
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
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_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:
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

  1. Luncurkan command line JLink dengan board yang dihubungkan melalui kabel USB mini:
    JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
  2. 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.
  3. 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.
  4. Keluar dari JLink CLI dengan mengetik exit.
  5. Luncurkan ulang JLink:
    JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
  6. 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.
  7. 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

  1. Perangkat akan berfungsi sebagai perangkat serial USB di komputer Anda. Anda dapat mencarinya di /dev/:
    ls -la /dev/tty*
    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 di /dev/ttyACM0:
    python3 ./scripts/detokenizer.py serial -i /dev/ttyACM0 -d out/debug/chip-k32w061-light-example-database.bin
  2. 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
  3. 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:

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