K32W
ตัวอย่างนี้เป็นอุปกรณ์ประเภทหลอดไฟที่มีความสามารถในการเปิด/ปิด ขั้นตอนได้รับการยืนยันในกระดานการพัฒนา NXP K32W (ชุดการพัฒนา IOTZTB-DK006)
การตั้งค่าเบื้องต้น
- ตรวจสอบว่าคุณได้ติดตั้ง Python3 และแพ็กเกจเหล่านี้แล้ว ขั้นตอนในเอกสารฉบับนี้ได้รับการตรวจสอบด้วย Python 3.8
- ดาวน์โหลดและติดตั้ง K32W061 MCUXpresso SDK 2.6.9
- เมื่อสร้าง SDK แล้ว ให้ดาวน์โหลดแพ็กเกจ SDK แล้วแยกไปยังไดเรกทอรีหน้าแรก ตั้งค่าตัวแปรสภาพแวดล้อม
NXP_K32W0_SDK_ROOT
ไปยังตําแหน่งที่คุณแยก SDK ออก นอกจากนี้ เราแนะนําให้เพิ่มคําสั่งนี้ไปยังไฟล์.*rc
สําหรับ Shell ที่คุณใช้ เช่น.zshrc
:export NXP_K32W0_SDK_ROOT=$HOME/SDK_2_6_9_K32W061DK6/
โคลนและเริ่มต้นที่เก็บ 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
ตัวอย่างนี้ใช้การกําหนดค่า "General Switch Node" ตรวจสอบว่าเครื่องเล่น JP4/JP7 อยู่ในตําแหน่งซ้ายสุด (LPC-JN UART0)
กําหนดค่ากระดานใหม่สําหรับ JLink
- ดาวน์โหลดและติดตั้ง JLink ในคอมพิวเตอร์
- ในกระดาน ให้เลือก DFU บนสวิตช์บูลีนข้างพอร์ต USB และเชื่อมต่อบอร์ดเข้ากับคอมพิวเตอร์ด้วยสาย USB ขนาดเล็ก
- ดาวน์โหลดและติดตั้ง LPCScrypt ในคอมพิวเตอร์
- สําหรับ MacOS ให้ดับเบิลคลิกแพ็กเกจที่ดาวน์โหลดเพื่อติดตั้ง
- สําหรับ Linux ให้ไปที่โฟลเดอร์ที่คุณดาวน์โหลดแพ็กเกจ โดยทําดังนี้
chmod +x lpcscrypt-2.1.2_57.x86_64.deb.bin
./lpcscrypt-2.1.2_57.x86_64.deb.bin
- เมื่อติดตั้ง LPCScrypt แล้ว ให้เรียกใช้สคริปต์นี้เพื่อตั้งโปรแกรมใหม่ (แทนที่
<LPCScrypt_InstallDir>
ด้วยเส้นทางการติดตั้งจริงของ LPCScrypt)<LPCScrypt_InstallDir>/scripts/program_JLINK
- คุณควรเห็นข้อความที่คล้ายกับด้านล่าง กดแป้นเว้นวรรคเพื่อเริ่มการจัดโปรแกรม เมื่อเสร็จแล้ว ให้กด 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)
- ถอดปลั๊กกระดานและเปลี่ยนสวิตช์ BOOT กลับไปเป็น NORMAL กําหนดค่ากระดานใหม่เพื่อใช้ JLink สําหรับการกะพริบรูปภาพ
สร้างรูปภาพ
- เตรียมที่เก็บ:
source ./scripts/activate.sh
- ติดตั้งทรัพยากร Dependency:
pip3 install pycrypto pycryptodome
- อัปเดต
VENDOR_ID
ในการกําหนดค่าโปรเจ็กต์ตัวอย่าง (CHIPProjectConfig.h
) ซึ่งควรเป็น VID ตาม 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
- ตรวจสอบ
PRODUCT_ID
ในการกําหนดค่าโปรเจ็กต์ตัวอย่าง (CHIPProjectConfig.h
) ค่าPRODUCT_ID
สามารถเท่ากับค่าเริ่มต้นหรือมีการเปลี่ยนแปลงตามที่ต้องการ แต่ต้องเป็นไปตามข้อจํากัดของรหัสผลิตภัณฑ์ในปัจจุบันที่อธิบายไว้ในข้อกําหนดเบื้องต้น นอกจากนี้ โปรดทราบว่าค่าที่คุณระบุสําหรับPRODUCT_ID
ต้องตรงกับค่าที่คุณใช้เมื่อสร้างการผสานรวม Matter ใน Developer Consolegrep 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
- สร้างแอปการจัดแสง
- หากเพิ่มกระดานขยาย OM15082 ไว้กับกระดาน 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
- หากไม่ได้แนบกระดานขยาย OM15082 ให้ข้ามอาร์กิวเมนต์บิลด์
chip_with_OM15082
โปรดทราบว่า Pigweed tokenizer ซึ่งเป็นโมดูล Pigweed ที่อนุญาตให้แฮชสตริงเพื่อลดแฟลชที่จําเป็นสําหรับการบันทึกได้ทางด้านบน ให้เปิดใช้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
chip_pw_tokenizer_logging
เป็นtrue
คุณต้องใช้สคริปต์ของเครื่องมือแยกเอลิเมนต์ เพื่อแยกวิเคราะห์สคริปต์ที่แฮช ดูข้อมูลเพิ่มเติมที่นี่
- หากเพิ่มกระดานขยาย OM15082 ไว้กับกระดาน K32W อย่าลืมตั้งค่าอาร์กิวเมนต์ของบิลด์
สําหรับผู้ใช้ MacOS (ข้ามขั้นตอนนี้หากคุณไม่ได้สร้างใน MacOS)
เปิดสคริปต์
sign_images.sh
(อยู่ที่$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
) ในโปรแกรมแก้ไขข้อความและทําการเปลี่ยนแปลงต่อไปนี้- แสดงความคิดเห็นหรือนําบรรทัดเหล่านี้ออกเพื่อแก้ไขข้อผิดพลาด "ไม่ได้ติดตั้งแพ็กเกจ" ใน MacOS
is_linux_package_installed "python3" is_linux_package_installed "python3-pip"
- แก้ไขอาร์กิวเมนต์ของยูทิลิตี
file
("-ib
" ควรเป็น "-Ib
") มิเช่นนั้นสคริปต์การลงนามจะสร้างไฟล์.bin
โดยไม่มีเสียงMIME_SET="$(file -ib $FILENAME)"
เปลี่ยนเป็น:MIME_SET="$(file -Ib $FILENAME)"
- แสดงความคิดเห็นหรือนําบรรทัดเหล่านี้ออกเพื่อแก้ไขข้อผิดพลาด "ไม่ได้ติดตั้งแพ็กเกจ" ใน MacOS
ลงนามในรูปภาพ
chmod +x $NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh out/debug/
แฟลชบอร์ด
- เปิดบรรทัดคําสั่ง JLink ด้วยกระดานที่เชื่อมต่อด้วยสาย USB ขนาดเล็กดังต่อไปนี้
JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
- ในบรรทัดคําสั่ง 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. - จากนั้นแฟลชรูปภาพโดยใช้คําสั่ง
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. - ออกจาก JLink CLI โดยพิมพ์
exit
- เปิด JLink อีกครั้ง:
JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
- แฟลชรูปภาพอีกครั้ง โดยข้ามคําสั่ง
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. - เมื่อคําสั่ง
loadbin
เสร็จสิ้น ให้กดปุ่ม SW2 บนกระดานขยายเพื่อดําเนินการรีเซ็ตเป็นค่าเริ่มต้น แล้วกดปุ่มรีเซ็ต SW4 บนกระดานหลักเพื่อเริ่มเรียกใช้รูปภาพ
ตรวจสอบตัวอย่าง
- อุปกรณ์ควรนําเสนอเป็นอุปกรณ์ซีเรียล USB ในคอมพิวเตอร์ของคุณ ลองค้นหาได้ใน
/dev/
โดยทําดังนี้
คุณเปิดคอนโซลอนุกรมด้วยสคริปต์ python3 detokenizer.py ซึ่งเป็นสคริปต์ที่ถอดรหัสบันทึกที่แปลงเป็นโทเค็นของ Pigweed จากพอร์ตอนุกรม เช่น หากอุปกรณ์อยู่ที่ls -la /dev/tty*
/dev/ttyACM0
ให้ทําดังนี้python3 ./scripts/detokenizer.py serial -i /dev/ttyACM0 -d out/debug/chip-k32w061-light-example-database.bin
- หากต้องการรีเซ็ตกระดานเป็นค่าเริ่มต้น ให้กดปุ่ม 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
- หากต้องการสลับสถานะของหลอดไฟ (เปิด/ปิด) ให้คลิก SW3 ที่ปุ่ม ซึ่งควรเปลี่ยนเป็นไฟ LED D3
ข้อกําหนดเบื้องต้นของค่าคอมมิชชัน
ก่อนที่จะจัดทําคณะกรรมการการพัฒนา NXP K32W โปรดคํานึงถึงสิ่งต่อไปนี้
- ต้องเปิดใช้โฆษณา BLE ก่อนที่จะค้นพบและค่าคอมมิชชันได้ภายในระบบนิเวศของ Google Home หากต้องการเปิดใช้การโฆษณาชั่วคราว (เป็นเวลา 15 นาทีตามข้อกําหนด Matter) ให้กดปุ่มผู้ใช้
หากไม่มีโมดูลตัวเร่งฮาร์ดแวร์การเข้ารหัสลับ คณะกรรมการพัฒนา K32 อาจไม่สามารถดําเนินการค่าคอมมิชชันให้เสร็จก่อนระยะเวลาเริ่มสิ้นสุดลง จาก 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
โปรดดูการแก้ปัญหาเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าและการใช้
adb
ขั้นตอนถัดไป
เมื่อสร้างตัวอย่าง Matter เรียบร้อยแล้ว โปรดสร้างโปรเจ็กต์นักพัฒนาซอฟต์แวร์