NXP

32W

Ví dụ này hoạt động như một loại thiết bị bóng đèn, có khả năng bật/tắt. Các bước được xác minh trên bảng phát triển NXP K32W (bộ phát triển IOTZTB-DK006).

Thiết lập ban đầu

  1. Hãy đảm bảo bạn đã cài đặt Python3 và các gói này. Các bước trong tài liệu này đã được xác thực bằng Python 3.8.
  2. Tải xuống và cài đặt K32W061 MCUXpresso SDK 2.6.9.
  3. Sau khi tạo SDK, hãy tải gói SDK xuống và trích xuất gói đó vào thư mục gốc của bạn. Đặt biến môi trường NXP_K32W0_SDK_ROOT đến nơi bạn đã trích xuất SDK. Bạn cũng nên thêm lệnh này vào tệp .*rc cho shell mà bạn đang sử dụng, chẳng hạn như .zshrc:
    export NXP_K32W0_SDK_ROOT=$HOME/SDK_2_6_9_K32W061DK6/
  4. Sao chép và khởi chạy kho lưu trữ 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. Ví dụ này sử dụng cấu hình "Nút chuyển đổi chung". Đảm bảo rằng trình nhảy JP4/JP7 nằm ở vị trí ngoài cùng bên trái (LPC-JN UART0):
    hình ảnh

  1. Tải xuống và cài đặt JLink trên máy tính.
  2. Trên bo mạch, hãy đảm bảo đã chọn DFU trên cầu nhảy BOOT bên cạnh cổng USB và kết nối bo mạch với máy tính bằng cáp USB nhỏ.
    hình ảnh
  3. Tải xuống và cài đặt LPCScrypt trên máy tính của bạn.
    1. Đối với MacOS, hãy nhấp đúp vào gói đã tải xuống để cài đặt.
    2. Đối với Linux, hãy chuyển đến thư mục bạn tải gói xuống:
      chmod +x lpcscrypt-2.1.2_57.x86_64.deb.bin
      ./lpcscrypt-2.1.2_57.x86_64.deb.bin
  4. Sau khi cài đặt LPCScrypt, hãy thực thi tập lệnh này để lập trình lại bảng (thay thế <LPCScrypt_InstallDir> bằng đường dẫn cài đặt thực tế của LPCScrypt):
    <LPCScrypt_InstallDir>/scripts/program_JLINK
  5. Bạn sẽ thấy các thông báo tương tự như bên dưới. Nhấn phím cách để bắt đầu lập trình. Khi hoàn tất, hãy nhấn phím Enter để thoát.
    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. Rút phích cắm bo mạch rồi chuyển bộ nhảy BOOT về lại NORMAL. Bảng của bạn hiện đã được định cấu hình lại để sử dụng JLink nhằm cài đặt ROM hình ảnh.
    hình ảnh

Xây dựng hình ảnh

  1. Chuẩn bị kho lưu trữ:
    source ./scripts/activate.sh
  2. Cài đặt phần phụ thuộc:

    pip3 install pycrypto pycryptodome

  3. Cập nhật VENDOR_ID trong cấu hình dự án mẫu (CHIPProjectConfig.h). Đây phải là VID của bạn theo Quy cách của Matter hoặc một VID được phân bổ cho mục đích kiểm thử. Giá trị bạn cung cấp cho VENDOR_ID phải khớp với giá trị bạn sử dụng khi tạo chế độ tích hợp Matter trong 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-VID
1. Kiểm tra "PRODUCT_ID" trong cấu hình dự án mẫu của bạn (`CHIPProjectConfig.h`). Giá trị "PRODUCT_ID" có thể giữ nguyên như giá trị mặc định trong ví dụ hoặc được thay đổi theo ý muốn, nhưng phải tuân thủ [Các quy định hạn chế về mã sản phẩm hiện tại được mô tả trong Điều kiện tiên quyết](/Matter/get-started#product_id). Ngoài ra, xin lưu ý rằng giá trị bạn cung cấp cho `PRODUCT_ID` **phải khớp với** giá trị bạn sử dụng khi [tạo công cụ tích hợp Matter](/trao đổi/tích hợp/create) trong 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 0x4B4C
1. Xây dựng ứng dụng chiếu sáng: 1. **Nếu bảng mở rộng OM15082 được gắn vào bảng K32W**, hãy nhớ đặt đối số bản dựng "chip_with_OM15082" thành `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
1. **Nếu bảng mở rộng OM15082 không được đính kèm**, hãy bỏ đối số bản dựng "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
Lưu ý rằng [Pigweed tokenizer](https://pigweed.dev/pw_tokenizer){:target="_blank" .external} là một mô-đun nhật ký cho phép băm tập lệnh để giảm đáng kể việc phân tích cú pháp tập lệnh bằng cách bật chế độ cài đặt flash để giảm phân tích cú pháp. Xem [tại đây](https://github.com/project-chip/connectedhomeip/tree/v1.0-branch/examples/lighting-app/nxp/k32w/k32w0#pigweed-tokenizer){:target="_blank" .external} để biết thêm thông tin. 1. **Đối với người dùng MacOS** (bỏ qua bước này nếu bạn KHÔNG xây dựng trên MacOS): Mở tập lệnh "sign_images.sh" (nằm tại `$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh`) trong trình chỉnh sửa văn bản và thực hiện các thay đổi sau: 1. Đánh dấu chọn hoặc xoá những dòng này để khắc phục lỗi "package not installed" (gói chưa cài đặt) trên MacOS:
is_linux_package_installed "python3"
is_linux_package_installed "python3-pip"
1. Sửa đối số thành tiện ích "file` ("`-ib`" phải là "`-Ib`"), nếu không tập lệnh ký sẽ tự động không tạo tệp `.bin`:
MIME_SET="$(file -ib $FILENAME)"
Thay đổi thành:
MIME_SET="$(file -Ib $FILENAME)"
1. Ký hình ảnh:
chmod +x $NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh out/debug/

Cài đặt ROM bảng

  1. Chạy dòng lệnh JLink khi kết nối bảng với cáp USB nhỏ:
    JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
  2. Trong dòng lệnh JLink, hãy nhập lệnh erase để xoá sạch một hình ảnh hiện có trên bảng. Điều này là cần thiết nếu trước đó bạn đã cài đặt ROM bảng trước đó.
    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. Sau đó, cài đặt ROM hình ảnh bằng lệnh 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. Thoát khỏi CLI JLink bằng cách nhập exit.
  5. Chạy lại JLink:
    JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
  6. Cài đặt ROM hình ảnh một lần nữa, bỏ qua lệnh erase lần này:
    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. Sau khi thực hiện xong lệnh loadbin, hãy nhấn nút SW2 trên bảng mở rộng để đặt lại hình ảnh về trạng thái ban đầu, sau đó nhấn nút SW4 Reset (Đặt lại SW4) trên bảng chính để bắt đầu chạy hình ảnh.

Xác thực ví dụ

  1. Thiết bị sẽ tự hiển thị dưới dạng thiết bị nối tiếp USB trên máy tính. Bạn có thể tra cứu trong /dev/:
    ls -la /dev/tty*
    Bạn có thể mở bảng điều khiển nối tiếp bằng tập lệnh python3 detokenizer.py. Tập lệnh này là một tập lệnh giải mã nhật ký được mã hoá bằng Pigweed từ cổng nối tiếp. Ví dụ: nếu thiết bị đang ở /dev/ttyACM0:
    python3 ./scripts/detokenizer.py serial -i /dev/ttyACM0 -d out/debug/chip-k32w061-light-example-database.bin
  2. Để đặt lại bo mạch về trạng thái ban đầu, hãy nhấn nút SW2. LED2LED3 sẽ nhấp nháy cùng nhau trong một khoảng thời gian. Bạn sẽ thấy các thông báo như thế này trong bảng điều khiển nối tiếp:
    [Info]Factory Reset Triggered. Push the RESET button within 6000 ms to cancel!
    [Info]Device will factory reset...
    [Info]Performing factory reset
  3. Để bật/tắt trạng thái của bóng đèn, hãy nhấp vào nút SW3. Cần bật/tắt đèn LED D3.

Điều kiện tiên quyết để uỷ quyền

Trước khi vận hành bo mạch phát triển NXP K32W, hãy lưu ý những điều sau:

  1. Bạn phải bật quảng cáo BLE trước khi có thể phát hiện và đưa thiết bị vào hệ sinh thái Google Home. Để tạm thời bật quảng cáo (trong 15 phút, theo thông số kỹ thuật Matter), hãy nhấn nút USERINTERFACE.
  2. Nếu không có mô-đun tăng tốc phần cứng mã hoá, bảng phát triển K32 có thể không hoàn tất quá trình vận hành trước khi hết thời gian chờ ở phía thiết bị di động Android. Bạn có thể xác định trường hợp đã hết thời gian chờ bằng cách sử dụng adb logcat trên một máy tính gắn với điện thoại của bạn. Khi hết thời gian chờ, bạn sẽ thấy thông báo nhật ký như:

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

    Hãy xem phần Khắc phục sự cố để biết thêm thông tin về cách thiết lập và sử dụng adb.

Các bước tiếp theo

Sau khi tạo mẫu Matter thành công, hãy tạo một dự án dành cho nhà phát triển.