NXP

K32W

Bu örnek, açma/kapatma özelliklerine sahip bir ampul cihaz türü olarak işlev görür. Adımlar NXP K32W geliştirme kartı (IOTZTB-DK006 geliştirme kiti) üzerinde doğrulandı.

İlk kurulum

  1. Python3'ün ve bu paketlerin yüklü olduğundan emin olun. Bu belgedeki adımlar Python 3.8 ile doğrulanmıştır.
  2. K32W061 MCUXpresso SDK 2.6.9'u indirip yükleyin.
  3. SDK derlendikten sonra SDK paketini indirin ve ana dizininize çıkarın. NXP_K32W0_SDK_ROOT ortam değişkenini, SDK'yı çıkardığınız yere ayarlayın. Ayrıca, kullanmakta olduğunuz kabuk için .*rc dosyasına bu komutu (örneğin, .zshrc) eklemenizi öneririz:
    export NXP_K32W0_SDK_ROOT=$HOME/SDK_2_6_9_K32W061DK6/
  4. NXP/Micro deposunu 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 Düğüm Düğümü" yapılandırması kullanılmaktadır. JP4/JP7 atlayıcıların en solda (LPC-JN UART0) bulunduğundan emin olun:
    resim

  1. JLink'i bilgisayarınıza indirin ve yükleyin.
  2. Kartta, USB bağlantı noktasının yanındaki BOOT jumper'da DFU'nun seçili olduğundan emin olun ve kartı mini bir USB kablosuyla bilgisayarınıza bağlayın.
    resim
  3. LPCScrypt'i indirip bilgisayarınıza yükleyin.
    1. MacOS'te, indirilen paketi çift tıklayarak yükleyin.
    2. Linux'ta, 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, kartınızı yeniden programlamak için bu komut dosyasını çalıştırın (<LPCScrypt_InstallDir> yerine LPCScrypt'in gerçek kurulum 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 çıkmak 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. Kartın fişini çekin ve BOOT jumper'ı tekrar NORMAL konumuna getirin. Jamboard'unuz şimdi yanıp sönen resimler için JLink'i kullanacak şekilde yeniden yapılandırıldı.
    resim

Görüntüyü oluşturma

  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ızda (CHIPProjectConfig.h) VENDOR_ID öğesini güncelleyin. Bu, Matter Spesifikasyonu'na göre VID'niz veya test amacıyla 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
1. Örnek proje yapılandırmanızdaki ("CHIPProjectConfig.h") "PRODUCT_ID" değerini kontrol edin. "PRODUCT_ID" değeri, örneğin varsayılan değeriyle aynı kalabilir veya istenilen şekilde değiştirilebilir, ancak mevcut [Önkoşullarda açıklanan ürün kimliği kısıtlamaları](/matter/get-started#product_id) ile aynı olmalıdır. "PRODUCT_ID" özelliği için sağladığınız değerin, Developer Console ürününde [Matter entegrasyonunu oluştururken](/matter/integration/create) kullandığınız değerle **eşleşmesi gerektiğini** de 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
1. Işıklandırma uygulamasını oluşturun: 1. **OM15082 genişletme kartı K32W panonuza 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
1. **OM15082 genişletme kartı eklenmemişse**, "chip_with_OM15082" derleme bağımsız değişkenini çıkarın. `chip_with_OM15082` derleme 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
Daha fazla bilgiyi [burada](https://github.com/project-chip/connectedhomeip/tree/v1.0-branch/examples/lighting-app/nxp/k32w/k32w0#pigweed-tokenizer){:target="_blank" .external} adresinde bulabilirsiniz. 1. **MacOS kullanıcıları için** (MacOS'te derleme yapmıyorsanız bu adımı atlayın): Bir metin düzenleyicide "sign_images.sh" komut dosyasını ("$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh" konumundadır) açın ve aşağıdaki değişiklikleri yapın: 1. MacOS'te "paket yüklenmedi" hatasını çözmek için şu satırları yorumlayın veya kaldırın:
is_linux_package_installed "python3"
is_linux_package_installed "python3-pip"
1. Bağımsız değişkeni "file" yardımcı programına düzeltin ("`-ib`", "`-Ib`" olmalıdır). Aksi takdirde, imzalama komut dosyası sessizce ".bin" dosyası oluşturamaz:
MIME_SET="$(file -ib $FILENAME)"
Şu şekilde değiştirin:
MIME_SET="$(file -Ib $FILENAME)"
1. 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/

Kartı yakıp söndür

  1. Jamboard'unuzu mini bir USB kablosuyla bağlayarak JLink komut satırını başlatın:
    JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
  2. Jamboard'daki mevcut bir görüntüyü silmek için JLink komut satırına erase komutunu girin. Tabloyu daha önce güncellediyseniz 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 açı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 CLI'dan çıkın.
  5. JLink'i yeniden başlatın:
    JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
  6. Resmi tekrar yanıp sönsün ve bu kez erase komutunu atlayı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ırlamak için genişletme kartındaki SW2 düğmesine ve resmi çalıştırmaya başlamak için ana karttaki SW4 RESET düğmesine basın.

Örneği doğrulama

  1. Cihaz, bilgisayarınızda kendisini bir USB seri cihaz olarak sunmalıdır. Bunu /dev/ üzerinden arayabilirsiniz:
    ls -la /dev/tty*
    Seri konsolu, Pigweed token atanmış günlüklerin kodunu seri bağlantı noktasından çözen bir komut dosyası olan python3 komut dosyası detokenizer.py ile açabilirsiniz. Örneğin, cihaz /dev/ttyACM0 konumundaysa:
    python3 ./scripts/detokenizer.py serial -i /dev/ttyACM0 -d out/debug/chip-k32w061-light-example-database.bin
  2. Kartı fabrika ayarlarına sıfırlamak için SW2 düğmesine basın. LED2 ve LED3 bir süre boyunca birlikte yanıp söner. Seri konsolda şu tür 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ün durumunu (açık/kapalı) değiştirmek için SW3 düğmesini tıklayın. LED D3 değiştirilmelidir.

Devreye alma ön koşulları

NXP K32W geliştirme kartını devreye almadan önce aşağıdakilere dikkat edin:

  1. Cihazın Google Home ekosisteminde bulunabilmesi ve devreye girmesi için BDE reklamcılığı etkinleştirilmelidir. Reklamcılığı geçici olarak etkinleştirmek için (Matter spesifikasyonu uyarınca 15 dakika boyunca) USERINTERFACE düğmesine basın.
  2. Şifreleme bir 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 devreye alma işlemini tamamlayamayabilir. Telefonunuza bağlı bir bilgisayardan adb logcat uygulamasını kullanarak bir zaman aşımı oluştuğunu belirleyebilirsiniz. Zaman aşımı olduğunda 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 kurulumu ve kullanımı hakkında daha fazla bilgi için Sorun giderme bölümüne bakın.

Sonraki adımlar

Matter örneğiniz başarıyla derlendikten sonra bir geliştirici projesi oluşturun.