K32W
يعمل هذا المثال كنوع جهاز من نوع مصباح كهربائي، مع إمكانية التفعيل/الإيقاف. تم التحقق من الخطوات على لوح التطوير K32W الخاص بـ NXP (مجموعة أدوات التطوير IOTZTB-DK006).
الإعداد الأولي
- تأكد من تثبيت بايثون3 وهذه الحزم. تم التحقق من صحة الخطوات في هذا المستند باستخدام 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
يستخدم المثال إعدادات "عقدة مفتاح التبديل العامة". عليك التأكّد من أنّ لاعبي القفز 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
- من المفترض أن تظهر لك رسائل مشابهة لتلك الواردة أدناه. اضغط على مفتاح المسافة
لبدء البرمجة. عند الانتهاء، اضغط على 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 إلى عادية. تتم إعادة تكوين اللوحة الآن لاستخدام 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" .external}، وهو وحدة مجزّأة لـ " تنفيذ_دالة pigweed" لإجراء تجزئة النصوص البرمجية المطلوبة لمزيد من المعلومات، يمكنك الاطّلاع [هنا](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
- في سطر أوامر 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 من خلال كتابة
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)، اضغط على الزر 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 بنجاح، يمكنك إنشاء مشروع مطور.