NXP

K32 วัตต์

ตัวอย่างนี้ทําหน้าที่เป็นประเภทอุปกรณ์หลอดไฟที่มีความสามารถในการเปิด/ปิด ขั้นตอนได้รับการยืนยันบนบอร์ดการพัฒนา NXP K32W (ชุดพัฒนาซอฟต์แวร์ IOTZTB-DK006)

การตั้งค่าเบื้องต้น

  1. ตรวจสอบว่าคุณติดตั้ง Python3 และแพ็กเกจเหล่านี้แล้ว ขั้นตอนต่างๆ ในเอกสารนี้ได้รับการตรวจสอบด้วย Python 3.8
  2. ดาวน์โหลดและติดตั้ง K32W061 MCUXpresso SDK 2.6.9
  3. เมื่อสร้าง SDK แล้ว ให้ดาวน์โหลดแพ็กเกจ SDK และแตกข้อมูลไปที่ไดเรกทอรีหน้าแรก กําหนดตัวแปรสภาพแวดล้อม NXP_K32W0_SDK_ROOT ให้เป็นปลายทางที่แยก SDK ของคุณ เราขอแนะนําให้เพิ่มคําสั่งนี้ไปยังไฟล์ .*rc สําหรับเชลล์ที่คุณใช้ เช่น .zshrc
    export NXP_K32W0_SDK_ROOT=$HOME/SDK_2_6_9_K32W061DK6/
  4. โคลนและเริ่มต้นที่เก็บ 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
    

  5. ตัวอย่างนี้ใช้การกําหนดค่า "Generic Switch Node" ตรวจสอบว่าเครื่องเล่น JP4/JP7 อยู่ในตําแหน่งซ้ายสุด (LPC-JN UART0) ดังนี้
    รูปภาพ

  1. ดาวน์โหลดและติดตั้ง JLink บนคอมพิวเตอร์
  2. บนกระดาน ให้ตรวจสอบว่าได้เลือก DFU บนจัมพ์บูตซึ่งอยู่ถัดจากพอร์ต USB และเชื่อมต่อกระดานเข้ากับคอมพิวเตอร์ด้วยสาย USB ขนาดเล็ก
    รูปภาพ
  3. ดาวน์โหลดและติดตั้ง LPCScrypt บนคอมพิวเตอร์
    1. สําหรับ MacOS ให้ดับเบิลคลิกที่แพ็กเกจที่ดาวน์โหลดเพื่อติดตั้ง
    2. สําหรับ Linux ให้ไปที่โฟลเดอร์ที่ใช้ดาวน์โหลดแพ็กเกจ:
      chmod +x lpcscrypt-2.1.2_57.x86_64.deb.bin
      ./lpcscrypt-2.1.2_57.x86_64.deb.bin
  4. เมื่อติดตั้ง LPCScrypt แล้ว ให้เรียกใช้สคริปต์นี้เพื่อตั้งโปรแกรมใหม่ (แทนที่ <LPCScrypt_InstallDir> ด้วยเส้นทางการติดตั้งจริงของ LPCScrypt)
    <LPCScrypt_InstallDir>/scripts/program_JLINK
  5. คุณควรเห็นข้อความที่คล้ายกับด้านล่าง กด Space เพื่อเริ่มตั้งโปรแกรม เมื่อเสร็จแล้ว ให้กด Enter เพื่อออก
    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. ถอดปลั๊กกระดานและเปลี่ยนแถบกระโดดจากด้านบนออกให้เป็นปกติ กําหนดค่ากระดานใหม่เพื่อใช้ JLink สําหรับแฟลชรูปภาพแล้ว
    รูปภาพ

สร้างอิมเมจ

  1. เตรียมที่เก็บ:
    source ./scripts/activate.sh
  2. ติดตั้งการอ้างอิง:

    pip3 install pycrypto pycryptodome

  3. อัปเดต VENDOR_ID ในการกําหนดค่าโปรเจ็กต์ตัวอย่าง (CHIPProjectConfig.h) ซึ่งควรเป็น VID ตามข้อกําหนดของ Matter หรือVID ที่จัดสรรเพื่อการทดสอบ ค่าที่คุณระบุสําหรับ VENDOR_ID ต้องตรงกับค่าที่ใช้เมื่อสร้างการผสานรวม Matter ใน 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. ตรวจสอบ "PRODUCT_ID" ในการกําหนดค่าตัวอย่างโปรเจ็กต์ ("CHIPProjectConfig.h") ค่า "PRODUCT_ID" ยังคงเป็นค่าเริ่มต้นหรือมีการเปลี่ยนแปลงได้ตามต้องการ แต่ต้องเป็นไปตาม[ข้อจํากัดของรหัสผลิตภัณฑ์ที่อธิบายในข้อกําหนดเบื้องต้น](/matter/get-started#product_id) ปัจจุบัน นอกจากนี้ โปรดทราบว่าค่าที่คุณระบุสําหรับ `PRODUCT_ID` **ต้องตรงกับ** ที่คุณใช้เมื่อ[สร้างการผสานรวม Matter](/matter/integration/create) ใน 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. สร้างแอปการจัดแสง 1. **หากมี OM15082 Board Board ไว้กับบอร์ด K32W** อย่าลืมตั้งค่าอาร์กิวเมนต์บิวด์ "chip_with_OM15082" เป็น "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. **หากไม่ได้แนบ OM15082 Board Board** ให้ข้าม `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
โปรดทราบว่า [Pigweed tokenizer](https://pigweed.dev/pw_tokenizer){:target="_blank" .external} ซึ่งเป็นโมดูล gigeding จะมีค่าทั้ง clickTag (การเชื่อมต่อ ความสัมพันธ์ ทั้งคําสั่ง...อนุญาตให้...theจี้ทั้ง the โดยค่าเริ่มต้น...ทั้งส่วนหัว...อนุญาตให้...HG">00000พร้อม">เปลี่ยนแปลง">ด้วยม่านทั้งคู่...เครื่องหมาย...น่านน่า") น่านนวลตัวต่อทั้งแก่ ข้อผิดพลาดเปลี่ยนแปลงแก่การแฮช...เปลี่ยนแปลงการโต้ตอบทั้งประโยค ดูข้อมูลเพิ่มเติมได้[ที่นี่](https://github.com/project-chip/connectedhomeip/tree/v1.0-branch/examples/lighting-app/nxp/k32w/k32w0#pigweed-tokenizer){:target="_blank" .external} 1. **สําหรับผู้ใช้ MacOS** (ข้ามขั้นตอนนี้หากไม่ได้ใช้ MacOS อยู่): เปิดสคริปต์ `sign_images.sh` (ที่ `$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh`) ในโปรแกรมแก้ไขข้อความ แล้วทําการเปลี่ยนแปลงดังนี้ 1. แสดงความคิดเห็นหรือนําบรรทัดเหล่านี้ออกเพื่อแก้ไขข้อผิดพลาด "ไม่ได้ติดตั้งแพ็กเกจ" บน MacOS
is_linux_package_installed "python3"
is_linux_package_installed "python3-pip"
1. แก้ไขอาร์กิวเมนต์เป็นยูทิลิตี "file" ("`-ib`" ควรเป็น "`-Ib`") ไม่เช่นนั้นสคริปต์ในการลงนามจะสร้างไฟล์ `.bin` โดยไม่มีเสียง:
MIME_SET="$(file -ib $FILENAME)"
เปลี่ยนเป็น
MIME_SET="$(file -Ib $FILENAME)"
1. ลงนามในรูปภาพ:
chmod +x $NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh out/debug/

แฟลชบอร์ด

  1. เปิดบรรทัดคําสั่ง JLink กับกระดานที่เชื่อมต่อด้วยสาย USB ขนาดเล็ก ดังนี้
    JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
  2. ในบรรทัดคําสั่ง JLink ให้ป้อนคําสั่ง erase เพื่อล้างข้อมูลรูปภาพที่มีอยู่บนกระดาน ซึ่งจําเป็นต้องทําหากคุณเคยเปิดบอร์ดมาก่อน
    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. จากนั้นแฟลชรูปภาพโดยใช้คําสั่ง 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. ออกจาก JLink CLI โดยพิมพ์ exit
  5. เปิด JLink อีกครั้ง
    JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
  6. แฟลชรูปภาพอีกครั้ง ข้ามคําสั่ง 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.
  7. เมื่อคําสั่ง loadbin เสร็จสิ้นแล้ว ให้กดปุ่ม SW2 บนกระดานขยายเพื่อดําเนินการรีเซ็ตเป็นค่าเริ่มต้น แล้วกดปุ่ม SW4 RESET บนกระดานหลักเพื่อเริ่มเรียกใช้รูปภาพ

ตรวจสอบตัวอย่าง

  1. อุปกรณ์ควรแสดงเป็นอุปกรณ์ซีเรียล USB บนคอมพิวเตอร์ของคุณ คุณอาจพบได้ใน /dev/
    ls -la /dev/tty*
    คุณเปิดคอนโซลอนุกรมด้วยสคริปต์ python3 detokenizer.py ซึ่งเป็นสคริปต์ที่ถอดรหัสบันทึกที่เข้ารหัสด้วย Pigweed จากพอร์ตอนุกรม เช่น หากอุปกรณ์อยู่ที่ /dev/ttyACM0
    python3 ./scripts/detokenizer.py serial -i /dev/ttyACM0 -d out/debug/chip-k32w061-light-example-database.bin
  2. กดปุ่ม SW2 เพื่อรีเซ็ตกระดานเป็นค่าเริ่มต้น LED2 และ LED3 จะกะพริบอยู่ด้วยกันสักพัก คุณควรจะเห็นข้อความในลักษณะนี้ในคอนโซลอนุกรม
    [Info]Factory Reset Triggered. Push the RESET button within 6000 ms to cancel!
    [Info]Device will factory reset...
    [Info]Performing factory reset
  3. หากต้องการสลับสถานะของหลอดไฟ (เปิด/ปิด) ให้คลิกปุ่ม SW3 ซึ่งควรสลับสวิตช์ LED D3

การกําหนดข้อกําหนดเบื้องต้น

โปรดทราบข้อมูลต่อไปนี้ก่อนจัดทําบอร์ดการพัฒนา NXP K32W

  1. คุณต้องเปิดใช้โฆษณา BLE ก่อนที่จะค้นพบและกระทําการดังกล่าวภายในระบบนิเวศของ Google Home หากต้องการเปิดใช้โฆษณาชั่วคราว (เป็นเวลา 15 นาทีต่อข้อกําหนดของ Matter) ให้กดปุ่มผู้ใช้
  2. หากไม่มีโมดูลเร่งฮาร์ดแวร์การเข้ารหัสลับ บอร์ดการพัฒนา K32 อาจดําเนินการตามค่าคอมมิชชันให้เสร็จสมบูรณ์ไม่ได้ก่อนที่ขั้นตอนในอุปกรณ์เคลื่อนที่ Android จะหมดเวลา คุณระบุได้ว่า หมดเวลาแล้วโดยการใช้ adb logcat จากคอมพิวเตอร์ที่ติดมากับโทรศัพท์ เมื่อเกิดการหมดเวลา คุณจะเห็นข้อความบันทึกดังนี้

    Device connection failed. Error third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:275: CHIP Error 0x00000032: Timeout

    โปรดดูการแก้ปัญหาสําหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าและการใช้ adb

ขั้นตอนถัดไป

เมื่อสร้างตัวอย่าง Matter เรียบร้อยแล้ว ให้สร้างโปรเจ็กต์นักพัฒนาซอฟต์แวร์