ध्यान दें! डेवलपर की झलक दिखाने वाले नए प्रोग्राम जल्द ही लॉन्च किए जाएंगे. यहां आवेदन करें और नए टूल का इस्तेमाल करने वाले पहले लोगों में शामिल हों. साथ ही, अपने सुझाव या राय दें.

एनएक्सपी

के32 वॉट

यह उदाहरण, चालू या बंद करने की सुविधाओं के साथ, लाइट बल्ब वाले डिवाइस के तौर पर काम करता है. इन चरणों की पुष्टि 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. उदाहरण में "जेनरिक स्विच नोड" कॉन्फ़िगरेशन का इस्तेमाल किया गया है. पक्का करें कि जंपर JP4/JP7 सबसे बाईं ओर मौजूद हैं (LPC-JN UART0):
    इमेज

  1. अपने कंप्यूटर पर JLink डाउनलोड करके इंस्टॉल करें.
  2. बोर्ड पर, पक्का करें कि यूएसबी पोर्ट के बगल में, बूट जंपर पर DFU चुना गया है. साथ ही, बोर्ड को अपने कंप्यूटर से मिनी यूएसबी केबल से कनेक्ट करें.
    इमेज
  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. अपने उदाहरण प्रोजेक्ट कॉन्फ़िगरेशन (CHIPProjectConfig.h) में VENDOR_ID अपडेट करें. यह सीएसए Matter खास जानकारी के मुताबिक आपका वीआईडी होना चाहिए या जांच के मकसद से दिया गया वीआईडी. आपने VENDOR_ID के लिए जो वैल्यू दी है वह Google Home Developer Console में Matter इंटिग्रेशन बनाते समय, इस्तेमाल की जाने वाली वैल्यू से मेल खानी चाहिए.
    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
  4. अपने प्रोजेक्ट प्रोजेक्ट कॉन्फ़िगरेशन (CHIPProjectConfig.h) के PRODUCT_ID की जांच करें. PRODUCT_ID की वैल्यू वैसी ही हो सकती है जैसे कि डिफ़ॉल्ट के तौर पर बदली गई है या ज़रूरत के मुताबिक बदली गई है, लेकिन वह ज़रूरी है कि वह ज़रूरी शर्तों में बताई गई मौजूदा प्रॉडक्ट आईडी की पाबंदियों के मुताबिक हो. यह भी ध्यान रखें कि आपने PRODUCT_ID के लिए जो वैल्यू दी है वह Developer Console को इंटिग्रेट करने के लिए इस्तेमाल होने वाले वैल्यू से मेल खानी चाहिए.Matter
    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
  5. लाइटिंग ऐप्लिकेशन बनाएं:
    1. अगर 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
    2. अगर 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_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, जो एक पिगवीड मॉड्यूल है, जो लॉग के लिए ज़रूरी फ़्लैश को कम करने के लिए स्ट्रिंग को हैश करने की अनुमति देता है. इसके लिए, chip_pw_tokenizer_logging को chip_pw_tokenizer_logging पर सेट करें.true हैश की गई स्क्रिप्ट को पार्स करने के लिए, डिटोकराइज़र स्क्रिप्ट की ज़रूरत होगी. ज़्यादा जानकारी के लिए यहां देखें.
  6. 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"
    2. file यूटिलिटी ("-ib" को "-Ib") में आर्ग्युमेंट को ठीक करें. ऐसा नहीं करने पर, साइन इन करने वाली स्क्रिप्ट, आवाज़ के बिना .bin फ़ाइल जनरेट नहीं कर पाएगी:
      MIME_SET="$(file -ib $FILENAME)"
      इसमें बदलें:
      MIME_SET="$(file -Ib $FILENAME)"
  7. इमेज पर हस्ताक्षर करें:

    chmod +x $NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
    $NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh out/debug/

बोर्ड फ़्लैश करें

  1. एक छोटी यूएसबी केबल के ज़रिए, अपने बोर्ड से JLink कमांड लाइन लॉन्च करें:
    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. exit टाइप करके JLink CLI से बाहर निकलें.
  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. यह ज़रूरी है कि डिवाइस आपके कंप्यूटर पर मौजूद यूएसबी सीरियल डिवाइस के तौर पर दिखे. आप इसे /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 पर क्लिक करें. इसे एलईडी D3 टॉगल करना चाहिए.

कमीशन से जुड़ी ज़रूरी शर्तें

NXP K32W डेवलपमेंट बोर्ड को चालू करने से पहले, इन बातों का ध्यान रखें:

  1. डिवाइस को खोजने और Google Home नेटवर्क में शामिल करने से पहले, BLE पर विज्ञापन दिखाने की सुविधा चालू होनी चाहिए. विज्ञापन को कुछ समय के लिए (15 मिनट के लिए, हर Matter के लिए) चालू करने के लिए, USERINTERFACE बटन दबाएं.
  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 का उदाहरण बनने के बाद, डेवलपर प्रोजेक्ट बनाएं.