K32 วัตต์
ตัวอย่างนี้ทําหน้าที่เป็นประเภทอุปกรณ์หลอดไฟที่มีความสามารถในการเปิด/ปิด ขั้นตอนได้รับการยืนยันบนบอร์ดการพัฒนา NXP K32W (ชุดพัฒนาซอฟต์แวร์ IOTZTB-DK006)
การตั้งค่าเบื้องต้น
- ตรวจสอบว่าคุณติดตั้ง Python3 และแพ็กเกจเหล่านี้แล้ว ขั้นตอนต่างๆ ในเอกสารนี้ได้รับการตรวจสอบด้วย Python 3.8
- ดาวน์โหลดและติดตั้ง K32W061 MCUXpresso SDK 2.6.9
- เมื่อสร้าง SDK แล้ว ให้ดาวน์โหลดแพ็กเกจ SDK และแตกข้อมูลไปที่ไดเรกทอรีหน้าแรก กําหนดตัวแปรสภาพแวดล้อม
NXP_K32W0_SDK_ROOT
ให้เป็นปลายทางที่แยก SDK ของคุณ เราขอแนะนําให้เพิ่มคําสั่งนี้ไปยังไฟล์.*rc
สําหรับเชลล์ที่คุณใช้ เช่น.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
ตัวอย่างนี้ใช้การกําหนดค่า "Generic 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
- คุณควรเห็นข้อความที่คล้ายกับด้านล่าง กด 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)
- ถอดปลั๊กกระดานและเปลี่ยนแถบกระโดดจากด้านบนออกให้เป็นปกติ กําหนดค่ากระดานใหม่เพื่อใช้ JLink สําหรับแฟลชรูปภาพแล้ว
สร้างอิมเมจ
- เตรียมที่เก็บ:
source ./scripts/activate.sh
ติดตั้งการอ้างอิง:
pip3 install pycrypto pycryptodome
อัปเดต
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-VID1. ตรวจสอบ "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 0x4B4C1. สร้างแอปการจัดแสง 1. **หากมี OM15082 Board Board ไว้กับบอร์ด K32W** อย่าลืมตั้งค่าอาร์กิวเมนต์บิวด์ "chip_with_OM15082" เป็น "1" ดังนี้
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_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
โปรดทราบว่า [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. แสดงความคิดเห็นหรือนําบรรทัดเหล่านี้ออกเพื่อแก้ไขข้อผิดพลาด "ไม่ได้ติดตั้งแพ็กเกจ" บน MacOScd 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. แก้ไขอาร์กิวเมนต์เป็นยูทิลิตี "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/
แฟลชบอร์ด
- เปิดบรรทัดคําสั่ง 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 RESET บนกระดานหลักเพื่อเริ่มเรียกใช้รูปภาพ
ตรวจสอบตัวอย่าง
- อุปกรณ์ควรแสดงเป็นอุปกรณ์ซีเรียล 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 จะหมดเวลา คุณระบุได้ว่า หมดเวลาแล้วโดยการใช้
adb logcat
จากคอมพิวเตอร์ที่ติดมากับโทรศัพท์ เมื่อเกิดการหมดเวลา คุณจะเห็นข้อความบันทึกดังนี้Device connection failed. Error third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:275: CHIP Error 0x00000032: Timeout
โปรดดูการแก้ปัญหาสําหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าและการใช้
adb
ขั้นตอนถัดไป
เมื่อสร้างตัวอย่าง Matter เรียบร้อยแล้ว ให้สร้างโปรเจ็กต์นักพัฒนาซอฟต์แวร์