NXP

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

K32W

Bu örnek, açık/kapalı özelliklere sahip bir ampul cihaz türü olarak çalışır. Adımlar, NXP K32W geliştirme tahtasında (IOTZTB-DK006 geliştirme kiti) doğrulandı.

İlk kurulum

  1. Python3 ve bu paketlerin yüklü olduğundan emin olun. Bu dokümandaki adımlar Python 3.8 ile doğrulandı.
  2. K32W061 MCUXpresso SDK 2.6.9'u indirip yükleyin.
  3. SDK oluşturulduğunda SDK paketini indirin ve ana dizininize çıkarın. NXP_K32W0_SDK_ROOT ortam değişkenini, SDK'yı çıkardığınız yere ayarlayın. Bu komutu, kullandığınız kabuk için .*rc dosyasına (ör. .zshrc) eklemenizi de öneririz:
    export NXP_K32W0_SDK_ROOT=$HOME/SDK_2_6_9_K32W061DK6/
  4. NXP/Mikro depoyu klonlayıp başlatın:

    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. Örnekte "Genel Anahtar Düğümü" yapılandırması kullanılmaktadır. JP4/JP7 atlama noktalarının en soldaki (LPC-JN UART0) konumda olduğundan emin olun:
    resim

  1. JLink'i bilgisayarınıza indirip yükleyin.
  2. Jamboard'da, USB bağlantı noktasının yanındaki BOOT atlama kartında DFU'nun seçildiğinden emin olun ve kartı, bir mini USB kablosuyla bilgisayarınıza bağlayın.
    resim
  3. LPCScrypt'i bilgisayarınıza indirip yükleyin.
    1. MacOS'te, indirilen paketi çift tıklayarak yükleyebilirsiniz.
    2. Linux için paketi indirdiğiniz klasöre gidin:
      chmod +x lpcscrypt-2.1.2_57.x86_64.deb.bin
      ./lpcscrypt-2.1.2_57.x86_64.deb.bin
  4. LPCScrypt yüklendikten sonra beyaz tahtanızı yeniden programlamak için bu komut dosyasını çalıştırın (<LPCScrypt_InstallDir> yerine LPCScrypt'in gerçek yükleme yolunu kullanın):
    <LPCScrypt_InstallDir>/scripts/program_JLINK
  5. Aşağıdakine benzer iletiler görürsünüz. Programlamayı başlatmak için Boşluk tuşuna basın. İşlemi tamamladığınızda çıkış yapmak için Enter tuşuna basın.
    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. Jamboard'un fişini çekin ve BOOT atlatıcıyı tekrar NORMAL değerine getirin. Jamboard'unuz artık bir resim yanıp sönmek için JLink'i kullanacak şekilde yeniden yapılandırıldı.
    resim

Görüntüyü oluşturun

  1. Depoyu hazırlayın:
    source ./scripts/activate.sh
  2. Bağımlılıkları yükleyin:
    pip3 install pycrypto pycryptodome
  3. Örnek proje yapılandırmanızdaki (CHIPProjectConfig.h) VENDOR_ID öğesini güncelleyin. Bu, ÖAR Matter spesifikasyonuna göre VID'niz veya test amaçları için ayrılmış bir VID olmalıdır. VENDOR_ID için sağladığınız değer, Google Home Developer Console içinde Matter entegrasyonunu oluştururken kullandığınız değerle eşleşmelidir.
    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. Örnek proje yapılandırmanızdaki (CHIPProjectConfig.h) PRODUCT_ID değerini kontrol edin. PRODUCT_ID değeri, örneğin varsayılanı ile aynı kalabilir veya istendiği şekilde değiştirilebilir ancak Ön Koşullarda açıklanan ürün kimliği kısıtlamalarına uygun olmalıdır. Ayrıca, PRODUCT_ID için sağladığınız değerin, Developer Console ürününde Matter entegrasyonunu oluştururken kullandığınız değerle eşleşmesi gerektiğini unutmayın.
    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. Işıklandırma uygulamasını yapın:
    1. OM15082 genişletme kartı K32W Jamboard'unuza bağlıysa chip_with_OM15082 derleme bağımsız değişkenini 1 olarak ayarladığınızdan emin olun:
      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 genişletme kartı takılı değilse chip_with_OM15082 oluşturma bağımsız değişkenini çıkarın:
      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 jetonlayıcı, dizelerin karma haline getirilmesini sağlayarak günlükler için gerekli olan flash'ı büyük ölçüde azaltmaya olanak tanır. Bu modül yukarıdaki chip_pw_tokenizer_logging değerini true şeklinde ayarlayarak etkinleştirilir. Karma oluşturma uygulanmış komut dosyalarını ayrıştırmak için detokenizer komut dosyası gerekir. Daha fazla bilgiyi burada bulabilirsiniz.
  6. MacOS kullanıcıları için (MacOS'ta derleme yapmıyorsanız bu adımı atlayın):

    sign_images.sh komut dosyasını ($NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh konumunda bulunan) bir metin düzenleyicide açın ve aşağıdaki değişiklikleri yapın:

    1. MacOS'te "paket yüklü değil" hatasını düzeltmek için yorum yapın veya şu satırları kaldırın:
      is_linux_package_installed "python3"
      is_linux_package_installed "python3-pip"
    2. file yardımcı programı ("-ib" "-Ib" olmalıdır) ile ilgili bağımsız değişkeni düzeltin. Aksi takdirde imza komut dosyası sessiz bir şekilde .bin dosyası oluşturamaz:
      MIME_SET="$(file -ib $FILENAME)"
      Aşağıdaki şekilde değiştirin:
      MIME_SET="$(file -Ib $FILENAME)"
  7. Resmi imzalayın:

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

Panoyu yak

  1. JLink komut satırını, Jamboard'unuzu mini bir USB kablosuyla bağlayarak başlatın:
    JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
  2. Jamboard'daki mevcut bir resmi temizlemek için JLink komut satırına erase komutunu girin. Panoyu daha önce yanıp söndüyseniz bu gereklidir.
    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. Ardından loadbin komutunu kullanarak resmi kopyalayın:
    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 yazarak JLink KSA'dan çıkın.
  5. JLink'i yeniden başlatın:
    JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
  6. Bu kez erase komutunu atlayarak resmi tekrar kopyalayın:
    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 komutu tamamlandıktan sonra, fabrika ayarlarına sıfırlama işlemi gerçekleştirmek için genişletme kartındaki SW2 düğmesine basın, ardından resmi çalıştırmaya başlamak için ana karttaki SW4 RESET düğmesine basın.

Örneği doğrulayın

  1. Cihaz, bilgisayarınızda USB seri cihazı olarak sunulmalıdır. Bu komut dosyasını /dev/ içinde arayabilirsiniz:
    ls -la /dev/tty*
    Seri konsolu, python3 komut dosyası detokenizer.py ile açabilirsiniz. Bu komut dosyası, Pigweed jetonlu günlüklerinin bir seri bağlantı noktasından kodunu çözen bir komut dosyasıdır. Örneğin, cihaz /dev/ttyACM0 konumundaysa:
    python3 ./scripts/detokenizer.py serial -i /dev/ttyACM0 -d out/debug/chip-k32w061-light-example-database.bin
  2. Jamboard'u fabrika ayarlarına sıfırlamak için SW2 düğmesine basın. LED2 ve LED3 bir süreliğine birlikte yanıp söner. Seri konsolda aşağıdakine benzer mesajlar görürsünüz:
    [Info]Factory Reset Triggered. Push the RESET button within 6000 ms to cancel!
    [Info]Device will factory reset...
    [Info]Performing factory reset
  3. Ampul durumunu açmak/kapatmak için düğmeyi SW3 tıklayın. LED D3'ü açmalıdır.

Ön koşulları uygulama

NXP K32W geliştirme kurulunu uygulamadan önce aşağıdakilere dikkat edin:

  1. BDE reklamcılığı, cihazın Google Home ekosisteminde keşfedilip kullanıma sunulmasından önce etkinleştirilmelidir. Reklamcılığı geçici olarak etkinleştirmek için (Matter özelliklerine göre 15 dakika) USERINTERFACE düğmesine basın.
  2. Kriptografik donanım hızlandırıcı modülü olmadan K32 geliştirme kartı, Android mobil cihaz tarafında akış zaman aşımına uğramadan önce komisyon işlemini tamamlayamayabilir. Telefonunuza bağlı bir bilgisayardan adb logcat uygulamasını kullanarak zaman aşımının gerçekleştiğini belirleyebilirsiniz. Zaman aşımı gerçekleştiğinde aşağıdaki gibi bir günlük mesajı görürsünüz:

    Device connection failed. Error third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:275: CHIP Error 0x00000032: Timeout

    adb hizmetini ayarlama ve kullanma hakkında daha fazla bilgi edinmek için Sorun Giderme bölümüne bakın.

Sonraki adımlar

Matter örneğiniz başarıyla oluşturulduğunda, bir geliştirici projesi oluşturun.