K32 วัตต์
ตัวอย่างนี้ทำหน้าที่เป็นอุปกรณ์ประเภทหลอดไฟที่มีความสามารถในการเปิด/ปิด ขั้นตอนได้รับการยืนยันในบอร์ดการพัฒนา NXP K32W (ชุดพัฒนาซอฟต์แวร์ IOTZTB-DK006)
การตั้งค่าเบื้องต้น
- ตรวจสอบว่าคุณได้ติดตั้ง Python3 และแพ็กเกจเหล่านี้แล้ว ขั้นตอนในเอกสารนี้ได้รับการตรวจสอบด้วย Python 3.8
- ดาวน์โหลดและติดตั้ง K32W061 MCUXpresso SDK 2.6.9
- เมื่อสร้าง SDK แล้ว ให้ดาวน์โหลดแพ็กเกจ SDK และแตกไฟล์ไปยัง Home Directory ของคุณ ตั้งค่าตัวแปรสภาพแวดล้อม
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" ตรวจสอบว่า Jumpers JP4/JP7 อยู่ในตำแหน่งซ้ายสุด (LPC-JN UART0)
กำหนดค่ากระดานสำหรับ JLink อีกครั้ง
- ดาวน์โหลดและติดตั้ง JLink บนคอมพิวเตอร์ ของคุณ
- บนบอร์ด ให้ตรวจสอบว่าเลือก DFU บนพอร์ต BOOT ที่อยู่ถัดจากพอร์ต 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 ต่ออยู่กับบอร์ด K32W** โปรดตรวจสอบว่าได้ตั้งค่าอาร์กิวเมนต์ของบิลด์ "chip_with_OM15082" เป็น "1" ดังนี้
1. **หากไม่ได้แนบบอร์ดขยาย OM15082 ไว้** ให้ยกเว้นอาร์กิวเมนต์ "chip_with_OM15082" ที่จะเปิดใช้สคริปต์ "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
โปรดทราบว่า [PigweedTokenizer](https://pigweed.dev/pw_tokenizer){:target="_blank" .hashedizer} ซึ่งเป็นสคริปต์ที่อยู่เหนือพารามิเตอร์ pigweed Tokening ซึ่งทำให้เกิดการแยกวิเคราะห์ที่จำเป็นต้องใช้การตั้งค่า pigweed เป็น pigweedTokenizer ดูข้อมูลเพิ่มเติมได้[ที่นี่](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 ดังนี้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. แก้ไขอาร์กิวเมนต์ในยูทิลิตี "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
- ป้อนคำสั่ง
erase
ในบรรทัดคำสั่ง JLink เพื่อล้างข้อมูลอิมเมจที่มีอยู่บนกระดาน จำเป็นต้องทำขั้นตอนนี้หากเคยแฟลชบอร์ดมาก่อน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) ให้กดปุ่ม USERINTERFACE
หากไม่มีโมดูลเร่งฮาร์ดแวร์การเข้ารหัสลับ บอร์ดการพัฒนา K32 อาจไม่สามารถดำเนินการให้เสร็จสมบูรณ์ได้ก่อนที่กระบวนการโฟลว์ออกจากฝั่งอุปกรณ์เคลื่อนที่ Android จะหมดเวลา คุณทราบว่าระยะหมดเวลานั้นเกิดขึ้นได้โดยใช้
adb logcat
จากคอมพิวเตอร์ที่ต่ออยู่กับโทรศัพท์ เมื่อหมดเวลา คุณจะเห็นข้อความบันทึกเช่นDevice connection failed. Error third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:275: CHIP Error 0x00000032: Timeout
ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าและการใช้
adb
ได้ที่การแก้ปัญหา
ขั้นตอนถัดไป
เมื่อสร้างตัวอย่าง Matter เรียบร้อยแล้ว ให้สร้างโปรเจ็กต์นักพัฒนาซอฟต์แวร์