Prueba inalámbrica en Nordic

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

En las siguientes instrucciones, se usa el ejemplo de la app de iluminación de Matter SDK along with a Nordic nRF52840 development board..

Configuración del entorno

Estas instrucciones se basan en una instalación basada en Docker de la cadena de herramientas nRF Connect. Si prefieres no usar Docker, las instrucciones para instalar nRF Connect de forma nativa en una computadora host se encuentran en el sitio nórdico.

Consultar el SDK de Matter

user@host> mkdir otaprep
user@host> cd otaprep
user@host> git clone https://github.com/project-chip/connectedhomeip.git
user@host> cd connectedhomeip/
user@host> git fetch origin v1.0-branch
user@host> git checkout FETCH_HEAD

Verifica la imagen de Docker correcta que se usará. Usa una de las imágenes creadas para la integración continua del SDK de Matter.

user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
            image: connectedhomeip/chip-build-nrf-platform:0.5.99

Conecta la placa nórdica a la computadora. Verifica la enumeración USB de su interfaz en serie:

En macOS:

user@host> ls /dev/tty.usbmodem*
/dev/tty.usbmodem0123456789000

En Linux, puedes hacer lo siguiente:

user@host> ls /dev/tty*AC*
/dev/ttyACM0

o

user@host> ls /dev/tty*USB*
/dev/ttyUSB0

Ejecute un contenedor con la información que obtuvo en el comando anterior. Pasa las marcas para activar la carpeta del SDK Matter de host y la interfaz en serie de USB en el contenedor.

user@host> docker run --name container_name -it --user $(id -u):$(id -g) --mount source=$(pwd),target=/workspace,type=bind connectedhomeip/chip-build-nrf-platform:0.5.99 /bin/bash

Inicia y detén el contenedor de Docker de Matter

Cada vez que ejecutes un comando docker run, crearás un contenedor nuevo con la imagen especificada. Cuando lo haces, se pierden los datos anteriores, que se guardaron en una instancia de contenedor anterior. A veces, es lo que deseas que suceda, porque te permite comenzar con una instalación nueva. Sin embargo, en este ejemplo, es probable que quieras guardar la configuración del trabajo y el entorno entre sesiones.

user@host> docker stop container_name

Cuando estés listo para volver a ejecutar, inicia el contenedor y abre una ventana de la terminal:

user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash

Puedes abrir sesiones de terminal adicionales en tu contenedor con las siguientes opciones:

user@host> docker exec -it container_name /bin/bash

O inicia una sesión raíz con:

user@host> docker exec -u 0 -it container_name /bin/bash

Inicializa el SDK

En el contenedor, inicializa el SDK de Matter y las variables de entorno del conjunto de herramientas nRF52 de Nordic. La inicialización del SDK de Matter suele tardar varios minutos.

$ cd /workspace
$ git submodule update --init --recursive
$ source ./scripts/bootstrap.sh
$ source ./scripts/activate.sh
$ export ZEPHYR_BASE=/opt/NordicSemiconductor/nrfconnect/zephyr
$ export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR"
$ scripts/run_in_build_env.sh "python3 scripts/setup/nrfconnect/update_ncs.py --update --shallow"
$ source /opt/NordicSemiconductor/nrfconnect/zephyr/zephyr-env.sh

Compilación e instalación

Configura el VID y el PID para el dispositivo:

$ cd examples/lighting-app/nrfconnect
$ west build -b nrf52840dk_nrf52840 -t menuconfig

En las opciones del menú interactivo:

  1. Modules --->

  2. connectedhomeip --->

  3. [*] Connected Home over IP protocol stack --->

  4. Ingresa el Device vendor ID (VID) y el Device product ID (PID) en formato de número entero base10.

  5. Asegúrate de que la marca [*] Enable OTA requestor esté seleccionada.

  6. Presiona s a fin de guardar la configuración, presiona Intro para confirmar y, luego, q para salir de menuconfig.

Configura certificados de prueba

Sigue los pasos que se indican en Crea certificados de prueba de dispositivos para crear certificados de CD, DAC y PAI.

Crea tu dispositivo

$ west build -b nrf52840dk_nrf52840

Cómo escribir en la memoria flash de tu dispositivo

Esto se hace en la computadora host, no en el contenedor de Docker.

Si todavía no tienes las herramientas de línea de comandos de nRFConnect, descárgalas y, luego, instálalas.

user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52

Abre una conexión de terminal en tu dispositivo, ya sea en el host o el contenedor. Usa tu herramienta de terminal favorita, como minicom o screen de GNU.

user@host> minicom -c on -D /dev/ttyACM0 115200

user@host> screen /dev/ttyACM0 115200

Crear y subir una imagen inalámbrica

Una vez que hayas escrito tu dispositivo en la memoria flash, vuelve a cambiar la configuración de compilación para crear una imagen inalámbrica con una versión aumentada de software del dispositivo.

Inicia menuconfig de Zephyr:

$ west build -b nrf52840dk_nrf52840 -t menuconfig

En las opciones del menú interactivo:

  1. Modules -->

  2. connectedhomeip -->

  3. Connected Home over IP protocol stack -->

  4. Cambia Device Software Version por 2.

  5. Cambia Device Software Version String por prerelease-2.

  6. Presiona s a fin de guardar la configuración, presiona Intro para confirmar y, luego, q para salir de menuconfig.

Compila el nuevo archivo de paquete inalámbrico Matter. El resultado se coloca en build/zephyr/zephyr.bin.

$ /workspace/src/app/ota_image_tool.py create -v hex_VID -p hex_PID -vn version_no -vs version_string path_to_binary -da digest_algorithm path_to_ota_file

Confirma las propiedades del archivo de paquete inalámbrico Matter generado:

/workspace/examples/lighting-app/nrfconnect# /workspace/src/app/ota_image_tool.py show firmware-ota-update-test.bin
Magic: 1beef11e
Total Size: 951784
Header Size: 72
Header TLV:
  [0] Vendor Id: XXXXX (0xXXXX)
  [1] Product Id: 32768 (0x8000)
  [2] Version: 2 (0x2)
  [3] Version String: prerelease-2
  [4] Payload Size: 951696 (0xe8590)
  [8] Digest Type: 1 (0x1)
  [9] Digest: 75f2e8b0c8e922b8bb3841504190bcdd83533e936a284c7254d29327d605c930

Debido a que el SDK de Matter se activa desde el host del contenedor, la imagen inalámbrica también está disponible en el host del contenedor. Sube la imagen inalámbrica a la Google Home Developer Console by following the OTA upload instructions.

Solicite el dispositivo y observe el proceso inalámbrico.

Abre una conexión de terminal en el dispositivo, ya sea en el host o el contenedor. Usa tu terminal favorita, como minicom o screen de GNU:

$ minicom -c on -D /dev/ttyACM0 115200

Presiona el botón de reinicio del dispositivo para ver los registros desde el inicio.

En el resultado del dispositivo, deberías ver el VID y el PID que configuraste, así como la URL para el código QR de comisión:

I: nRF5 802154 radio initialized
I: 4 Sectors of 4096 bytes

(...)

I: 681 [SVR]Server Listening...
I: 684 [DL]Device Configuration:
I: 687 [DL]  Serial Number: 11223344556677889900
I: 692 [DL]  Vendor Id: XXXXX (0xXXXX)
I: 695 [DL]  Product Id: XXXXX (0xXXXX)
I: 699 [DL]  Hardware Version: 0
I: 702 [DL]  Setup Pin Code (0 for UNKNOWN/ERROR): 20202021
I: 708 [DL]  Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00)
I: 714 [DL]  Manufacturing Date: (not set)
I: 718 [DL]  Device Type: 65535 (0xFFFF)
I: 723 [SVR]SetupQRCode: [MT:6FCJ142C00KA0648G00]
I: 727 [SVR]Copy/paste the below URL in a browser to see the QR Code:
I: 733 [SVR]https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%000000000000000000000
I: 742 [SVR]Manual pairing code: [30900112302]
I: 747 [DL]CHIP task running
I: 752 [DL]CHIPoBLE advertising started
I: 757 [DL]NFC Tag emulation started

Asegúrate de que tu Hub esté en línea y encarga el dispositivo con el Google Home app (GHA) using the QR code from the link found in the log.

Deja que el dispositivo registre sus actividades después de la puesta en marcha.

Deberías ver el siguiente texto en el registro del dispositivo:

/* Hub OTA provider identification */
I: 69642 [SWU]OTA Requestor received AnnounceOTAProvider
D: 69647 [SWU]  FabricIndex: 1
D: 69649 [SWU]  ProviderNodeID: 0x00000000XXXXXXXX
D: 69654 [SWU]  VendorID: 0x6006
D: 69657 [SWU]  AnnouncementReason: 0
D: 69660 [SWU]  Endpoint: 2
...
D: 69799 [SWU]Establishing session to provider node ID 0x00000000FC843D94 on fabric index 1
...
D: 262265 [SWU]QueryImageResponse:
D: 262268 [SWU]  status: 0
D: 262271 [SWU]  imageURI: bdx://00000000FC843D94/37f09fd6-0000-0000-0000-000000000000
D: 262278 [SWU]  softwareVersion: 2
D: 262281 [SWU]  softwareVersionString: 2
D: 262285 [SWU]  updateToken: 36
D: 262288 [SWU]  userConsentNeeded: 0
D: 262292 [SWU]Update available from version 0 to 2
...
D: 262372 [SWU]Establishing session to provider node ID 0x00000000FC843D94 on fabric index 1
...
D: 262409 [SWU]BDX::SendMessage

Después de aplicar la imagen, se reinicia el dispositivo. Después del reinicio, el tiempo de compilación de la imagen debe coincidir con el de la que se subió a Developer Console.

Valida la actualización inalámbrica del software

Puedes consultar la versión de software del dispositivo con la app de Google Home (GHA). Una vez que se pida un dispositivo, sigue estos procedimientos:

  1. Mantén presionado el mosaico del dispositivo en la pantalla principal de GHA
  2. Presiona el ícono en la parte superior derecha
  3. Presiona Información técnica.
  4. Verifica el campo Versión de software.

Pantalla de la app de Google Home que muestra el campo de la versión de software