K32W
Bu örnek, ampul/açma özelliğine sahip ampul cihaz türü olarak çalışır. Adımlar, NXP K32W geliştirme panosunda (IOTZTB-DK006 geliştirme kiti) doğrulandı.
İlk kurulum
- Python3'ün yüklü olduğundan ve bu paketlerin yüklü olduğundan emin olun. Bu dokümandaki adımlar Python 3.8 ile doğrulanmıştır.
- K32W061 MCUXpresso SDK'sını 2.6.9 indirin ve yükleyin.
- SDK oluşturulduktan 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. Bu komutu, kullandığınız kabuğun.*rc
dosyasına.zshrc
gibi eklemenizi de öneririz:export NXP_K32W0_SDK_ROOT=$HOME/SDK_2_6_9_K32W061DK6/
NXP/Mikro depoyu klonlama ve başlatma:
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
Örnekte "Genel Anahtar Düğüm" yapılandırması kullanılmaktadır. JP4/JP7 atlanabilirliklerinin en soldaki konumda (LPC-JN UART0) olduğundan emin olun:
Jamboard'u JLink için yeniden yapılandırma
- JLink'i bilgisayarınıza yükleyin ve yükleyin.
- Kartta, USB bağlantı noktasının yanındaki BOOT atlama panelinde DFU'nun seçili olduğundan emin olun ve kartı, bir mini USB kablosuyla bilgisayarınıza bağlayın.
- LPCScrypt'i indirip bilgisayarınıza yükleyin.
- MacOS'te, indirilen paketi yüklemek için çift tıklayın.
- 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
- LPCScrypt kurulduktan sonra Jamboard'unuzu 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
- Aşağıdakine benzer mesajlar görürsünüz. Programlamaya başlamak için Boşluk tuşuna basın. İşiniz bittiğinde çı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)
- Jamboard'un fişini çekin ve BOOT atlama cihazını tekrar NORMAL moduna getirin. Jamboard'unuz artık bir resim yanıp sönmek için JLink'i kullanacak şekilde yeniden yapılandırılmış.
Görüntü oluşturma
- Depoyu hazırlayın:
source ./scripts/activate.sh
- Bağımlılıkları yükleyin:
pip3 install pycrypto pycryptodome
- Örnek proje yapılandırmanızdaki
VENDOR_ID
'ı güncelleyin (CHIPProjectConfig.h
). Bu, ÖAR Matter spesifikasyonuna göre VID'niz veya test amaçları için kullanılan 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
- Örnek proje yapılandırmanızdaki (
CHIPProjectConfig.h
)PRODUCT_ID
öğesini kontrol edin.PRODUCT_ID
değeri, örneğin varsayılanıyla aynı kalabilir veya istendiği şekilde değiştirilebilir ancak Ön Koşullar'da açıklanan mevcut ü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
- Işıklandırma uygulamasını oluşturun:
- OM15082 genişletme kartı K32W panonuza bağlıysa
chip_with_OM15082
derleme bağımsız değişkenini1
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
- OM15082 genişletme kartı bağlı değilse
chip_with_OM15082
derleme bağımsız değişkenini kaldırın:
Günlüklerde gereken flash'ı büyük ölçüde azaltmak için dizelerin karma hale getirilmesine olanak tanıyan Pigweed jetonlayıcı, yukarıdacd 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
chip_pw_tokenizer_logging
değerini ayarlayarak ayarlanır.true
Karma oluşturma işlemi uygulanmış komut dosyalarını ayrıştırmak için detokenizer komut dosyası gerekir. Daha fazla bilgiyi burada bulabilirsiniz.
- OM15082 genişletme kartı K32W panonuza bağlıysa
MacOS kullanıcıları için (MacOS'te OLUŞTURmuyorsanız bu adımı atlayın):
sign_images.sh
komut dosyasını ($NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
konumunda) bir metin düzenleyicide açın ve aşağıdaki değişiklikleri yapın:- MacOS'te "paket yüklenmedi" hatasını düzeltmek için şu satırları not alın veya kaldırın:
is_linux_package_installed "python3" is_linux_package_installed "python3-pip"
- Bağımsız değişken olan
file
yardımcı programını düzeltin ("-ib
" "-Ib
" olmalıdır), aksi takdirde imza komut dosyası sessiz bir.bin
dosyası oluşturamaz:MIME_SET="$(file -ib $FILENAME)"
Aşağıdaki şekilde değiştirin:MIME_SET="$(file -Ib $FILENAME)"
- MacOS'te "paket yüklenmedi" hatasını düzeltmek için şu satırları not alın veya kaldırın:
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/
Jamboard'u yanıp sönün
- JLink komut satırını, mini USB kablosuyla panonuzla başlatın:
JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
- Jamboard'daki mevcut bir resmi temizlemek için JLink komut satırına
erase
komutunu girin. Kartı daha önce yanıp söndürdiyseniz 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. - 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. exit
yazarak JLink KSA'dan çıkın.- JLink'i yeniden başlatın:
JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
- Bu kez
erase
komutunu atlayarak resmi tekrar flashlayı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. loadbin
komutu tamamlandıktan sonra, fabrika ayarlarına sıfırlama işlemi için genişletme kartındaki SW2 düğmesine ve ardından, resmi çalıştırmaya başlamak için ana karttaki SW4 SIFIRLAMA düğmesine basın.
Örneği doğrulayın
- Cihaz, bilgisayarınızda bir USB seri cihazı olarak kendini göstermelidir. Komut dosyasını
/dev/
üzerinden arayabilirsiniz:
Seri konsolu, pigweed jetonlu günlüklerin seri bağlantı noktasından kodunu çözen bir komut dosyası olan python3 komut dosyası detokenizer.py ile açabilirsiniz. Örneğin, cihazls -la /dev/tty*
/dev/ttyACM0
adresindeyse:python3 ./scripts/detokenizer.py serial -i /dev/ttyACM0 -d out/debug/chip-k32w061-light-example-database.bin
- Jamboard'u fabrika ayarlarına sıfırlamak için SW2 düğmesine basın. LED2 ve LED3 bir süre yanıp söner. Seri konsolunda aşağıdakine benzer mesajlar göreceksiniz:
[Info]Factory Reset Triggered. Push the RESET button within 6000 ms to cancel! [Info]Device will factory reset... [Info]Performing factory reset
- Ampulün durumunu açmak/kapatmak için SW3 düğmesini tıklayın. LED D3'e geçmelidir.
Komisyon ön koşulları
NXP K32W geliştirme kurulunu uygulamadan önce aşağıdakileri göz önünde bulundurun:
- Cihazın Google Home ekosisteminde bulunup kullanıma sunulabilmesi için BDE reklamcılığı etkinleştirilmelidir. Reklamcılığı geçici olarak etkinleştirmek için (Matter spesifikasyonuna göre 15 dakika) USERINTERFACE düğmesine basın.
Kriptografik donanım hızlandırıcı modülü olmadığında K32 geliştirme kartı, Android mobil cihaz tarafında zaman aşımı gerçekleşmeden önce tamamlama işlemini tamamlayamayabilir. Telefonunuza bağlı bir bilgisayardan
adb logcat
kullanarak zaman aşımının gerçekleştiğini 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
uygulamasını kurma ve kullanma hakkında daha fazla bilgi için Sorun giderme sayfasına göz atın.
Sonraki adımlar
Matter örneğiniz başarıyla oluşturulduğunda bir geliştirici projesi oluşturun.