Tutorial: Usar o Eclipse ThreadX para conectar um kit de desenvolvimento do MXCHIP AZ3166 ao Hub IoT
Neste tutorial, você usará o Eclipse ThreadX para conectar um kit de desenvolvimento MXCHIP AZ3166 IoT (a partir de agora, MXCHIP DevKit) ao Azure IoT.
Conclua as seguintes tarefas:
- Instalar um conjunto de ferramentas de desenvolvimento inseridas para programar o MXCHIP DevKit em C
- Criar e instalar uma imagem no Kit de Desenvolvimento MXCHIP
- Usar a CLI do Azure para criar e gerenciar um hub IoT do Azure ao qual o MXCHIP DevKit se conectará com segurança
- Usar o Explorer da Internet das Coisas do Azure para registrar um dispositivo no Hub IoT, exibir as propriedades do dispositivo, exibir a telemetria do dispositivo e chamar comandos diretos no dispositivo
Pré-requisitos
Um PC com o Windows 10 ou o Windows 11 em execução
Uma assinatura ativa do Azure. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
Obter o Git para executar a clonagem do repositório
CLI do Azure. Você tem duas opções para executar comandos da CLI do Azure neste tutorial:
- Usar o Azure Cloud Shell, um shell interativo que executa comandos da CLI no navegador. Essa opção é recomendada porque não é preciso instalar nada. Se estiver usando o Cloud Shell pela primeira vez, faça logon no portal do Azure. Siga as etapas do Guia de início rápido do Cloud Shell para Iniciar o Cloud Shell e Selecionar o ambiente Bash.
- Opcionalmente, execute a CLI do Azure no computador local. Se a CLI do Azure já estiver instalado, execute
az upgrade
para atualizar a CLI e as extensões para a versão atual. Para instalar a CLI do Azure, consulte Instalar a CLI do Azure.
Hardware
- O Kit de Desenvolvimento de IoT MXCHIP AZ3166 (Kit de Desenvolvimento MXCHIP)
- Wi-Fi de 2.4 GHz
- Uma entrada USB 2.0 A macho para um cabo Micro USB macho
Preparar o ambiente de desenvolvimento
Para configurar seu ambiente de desenvolvimento, primeiro clone um repositório GitHub que contenha todos os ativos necessários para o tutorial. Depois instale um conjunto de ferramentas de programação.
Clonar o repositório
Clone o repositório a seguir para baixar todos os códigos de dispositivos de exemplo, scripts de configuração e versões offline da documentação. Caso tenha clonado este repositório anteriormente em outro tutorial, não será preciso fazer isso novamente.
Execute o seguinte comando para clonar o repositório:
git clone --recursive https://github.com/eclipse-threadx/getting-started.git
Instalar as ferramentas
O repositório clonado contém um script de configuração que vai instalar e configurar as ferramentas necessárias. Se você instalou essas ferramentas em outro tutorial de dispositivo inserido, não precisará fazer isso novamente.
Observação
O script de configuração instalará as seguintes ferramentas:
- CMake: criar
- GCC do ARM: compilar
- Termite: monitorar a saída da porta serial dos recursos dos dispositivos conectados
Para instalar as ferramentas:
Navegue até o seguinte caminho no repositório e execute o script de instalação chamado get-toolchain.bat:
getting-started\tools\get-toolchain.bat
Abra uma nova janela do console para reconhecer as alterações de configuração feitas pelo script de configuração. Use este console para concluir as tarefas restantes de programação no tutorial. É possível usar o CMD do Windows, o PowerShell ou o Git Bash para Windows.
Execute o código a seguir para confirmar se o CMake versão 3.14 ou posterior está instalado.
cmake --version
Criar componentes de nuvem
Crie um hub IoT
Use a CLI do Azure para criar um Hub IoT que trata os eventos e mensagens do seu dispositivo.
Para criar um hub IoT:
Inicie o aplicativo da CLI. Para executar os comandos da CLI no restante deste guia de início rápido, copie a sintaxe do comando, cole-a no aplicativo da CLI, edite os valores de variáveis e pressione Enter.
- Se estiver usando o Cloud Shell, clique com o botão direito do mouse no link do Cloud Shell e selecione a opção para abrir em uma nova guia.
- Se estiver usando a CLI do Azure localmente, inicie o aplicativo de console da CLI e faça logon na CLI do Azure.
Execute az extension add para instalar ou atualizar a extensão azure-iot para a versão atual.
az extension add --upgrade --name azure-iot
Execute o comando az group create para criar um grupo de recursos. O comando a seguir cria um grupo de recursos chamado MyResourceGroup na região centralus.
Observação
Opcionalmente, você pode definir um
location
alternativo. Para ver os locais disponíveis, execute az account list-locations.az group create --name MyResourceGroup --location centralus
Execute o comando az iot hub create para criar um Hub IoT. Pode levar alguns minutos para criar um Hub IoT.
YourIotHubName. Substitua o espaço reservado no código pelo nome escolhido para o hub IoT. Um nome de Hub IoT deve ser exclusivo globalmente no Azure. Esse espaço reservado é usado no restante deste guia de início rápido para representar o nome exclusivo do hub IoT.
O parâmetro
--sku F1
cria o hub IoT na Camada gratuita. Os hubs da Camada gratuita têm um conjunto de recursos limitado e são usados para aplicativos de prova de conceito. Para saber mais sobre camadas, recursos e preços do Hub IoT, consulte Preços do Hub IoT do Azure.az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName} --sku F1 --partition-count 2
Depois que o hub IoT for criado, veja a saída JSON no console e copie o valor
hostName
a ser usado em uma etapa posterior. O valorhostName
será semelhante ao exemplo a seguir:{Your IoT hub name}.azure-devices.net
Configurar o Explorer do IoT
No restante deste guia de início rápido, você usará o IoT Explorer para registrar um dispositivo no hub IoT, ver as propriedades e a telemetria do dispositivo e enviar comandos para o dispositivo. Nesta seção, você configurará o Explorer do IoT para se conectar ao hub IoT criado e ler modelos plug-and-play do repositório de modelos públicos.
Para adicionar uma conexão ao hub IoT:
Instalar o Explorador de IoT do Azure. Esta ferramenta é um utilitário multiplataforma para monitorar e gerenciar os recursos de IoT do Azure.
Em seu aplicativo CLI, execute o comando az iot hub connection-string show para obter a cadeia de conexão do hub IoT.
az iot hub connection-string show --hub-name {YourIoTHubName}
Copie a cadeia de conexão sem os caracteres de aspas.
No Explorer da Internet das Coisas do Azure, selecione hubs IoT no menu à esquerda.
Selecione + Adicionar Conexão.
Cole a cadeia de conexão copiada no campo Cadeia de conexão.
Clique em Salvar.
Se a conexão for bem-sucedida, o Explorer do IoT muda para a exibição de Dispositivos.
Para adicionar um repositório de modelos públicos:
No Explorer do IoT, selecione Página Inicial para retornar à exibição da página inicial.
No menu à esquerda, selecione Configurações do IoT Plug and Play.
Confirme se há uma entrada de Repositório Público existente com um ponto de extremidade de
https://devicemodels.azure.com
.Observação
Se não houver uma entrada no repositório público, selecione +Adicionar, selecione Repositório público no menu suspenso, especifique o valor do ponto de extremidade
https://devicemodels.azure.com
e selecione Salvar.A entrada concluída para o repositório público é semelhante à seguinte captura de tela:
Registrar um dispositivo
Nesta seção, você criará uma nova instância de dispositivo e a registrará no hub IoT criado. Em uma seção posterior, você usará as informações de conexão do dispositivo recém-registrado para conectar o dispositivo físico com segurança.
Para registrar um dispositivo:
Na exibição da página inicial no Explorer do IoT, selecione hubs IoT.
A conexão que você adicionou anteriormente será exibida. Selecione Exibir dispositivos neste hub abaixo das propriedades de conexão.
Selecione + Novo e insira uma ID de dispositivo para o dispositivo. Por exemplo,
mydevice
. Não altere as demais propriedades.Selecione Criar.
Use os botões de cópia para copiar a ID do dispositivo e Chave primária.
Antes de continuar para a próxima seção, salve cada um dos valores a seguir recuperados de etapas anteriores em um local seguro. Use esses valores na próxima seção para configurar seu dispositivo.
hostName
deviceId
primaryKey
Preparar o dispositivo
Para conectar o Kit de Desenvolvimento MXCHIP ao Azure, é necessário modificar um arquivo de configuração para executar as configurações de Wi-Fi e IoT do Azure, bem como recompilar e instalar a imagem no dispositivo.
Adicionar configuração
Abra o seguinte arquivo em um editor de texto:
getting-started\MXChip\AZ3166\app\azure_config.h
Comente a seguinte linha próxima à parte superior do arquivo, conforme mostrado:
// #define ENABLE_DPS
Defina as constantes de Wi-Fi para os valores abaixo de seu ambiente local.
Nome da constante Valor WIFI_SSID
{Seu SSID de Wi-Fi} WIFI_PASSWORD
{Sua senha de Wi-Fi} WIFI_MODE
{Um dos valores do modo Wi-Fi enumerados no arquivo} Defina as constantes de informações do dispositivo de IoT do Azure para os valores salvos após a criação de recursos do Azure.
Nome da constante Valor IOT_HUB_HOSTNAME
{Valor do nome do host} IOT_HUB_DEVICE_ID
{Seu valor da ID do dispositivo} IOT_DEVICE_SAS_KEY
{Seu valor da chave primária} Salve e feche o arquivo.
Criar a imagem
No console ou no Explorador de Arquivos, execute o script rebuild.bat no seguinte caminho para criar a imagem:
getting-started\MXChip\AZ3166\tools\rebuild.bat
Depois que a criação for concluída, confirme se o arquivo binário foi criado no seguinte caminho:
getting-started\MXChip\AZ3166\build\app\mxchip_azure_iot.bin
Instalar a imagem
No Kit de Desenvolvimento MXCHIP, localize o botão Redefinir e a micro porta USB. Use esses componentes nas etapas a seguir. Os dois estarão realçados na seguinte figura:
Conecte o micro cabo USB à micro porta USB no Kit de Desenvolvimento MXCHIP, depois conecte-o ao seu computador.
No Explorador de Arquivos, localize o arquivo binário criado na seção anterior.
Copie o arquivo binário mxchip_azure_iot.bin.
No Explorador de Arquivos, localize o dispositivo do Kit de Desenvolvimento MXCHIP conectado ao seu computador. O dispositivo será exibido como uma unidade no sistema com o rótulo da unidade AZ3166.
Cole o arquivo binário na pasta raiz do Kit de Desenvolvimento MXCHIP. A atualização da imagem será iniciada de modo automático e concluída em alguns segundos.
Observação
Durante o processo de atualização de imagem, um LED verde vai ligar/desligar no Kit de Desenvolvimento MXCHIP.
Confirmar detalhes de conexão do dispositivo
É possível usar o aplicativo Termite para monitorar a comunicação e confirmar se o dispositivo foi configurado de modo adequado.
Inicie o Termite.
Dica
Caso não seja possível conectar o Termite ao seu Kit de Desenvolvimento, instale o driver ST-LINK e tente novamente. Confira a Solução de problemas para obter etapas adicionais.
Selecione Configurações.
Na caixa de diálogo Configurações da porta serial, verifique as seguintes configurações e execute atualizações se necessário:
- Taxa de transmissão: 115.200
- Porta: a porta à qual o Kit de Desenvolvimento MXCHIP está conectado. Caso haja várias opções de portas na lista suspensa, será possível localizar a porta adequada para uso. Abra o Gerenciador de Dispositivos do Windows e exiba a opção Portas para identificar qual porta usar.
Selecione OK.
Clique no botão Reiniciar do dispositivo. O botão está rotulado no dispositivo e próximo ao micro conector USB.
No aplicativo Termite, verifique os valores do ponto de verificação a seguir para confirmar se o dispositivo foi inicializado e conectado à IoT do Azure.
Starting Azure thread Initializing WiFi MAC address: ****************** SUCCESS: WiFi initialized Connecting WiFi Connecting to SSID 'iot' Attempt 1... SUCCESS: WiFi connected Initializing DHCP IP address: 192.168.0.49 Mask: 255.255.255.0 Gateway: 192.168.0.1 SUCCESS: DHCP initialized Initializing DNS client DNS address: 192.168.0.1 SUCCESS: DNS client initialized Initializing SNTP time sync SNTP server 0.pool.ntp.org SNTP time update: Jan 4, 2023 22:57:32.658 UTC SUCCESS: SNTP initialized Initializing Azure IoT Hub client Hub hostname: ***.azure-devices.net Device id: mydevice Model id: dtmi:eclipsethreadx:devkit:gsgmxchip;2 SUCCESS: Connected to IoT Hub Receive properties: {"desired":{"$version":1},"reported":{"deviceInformation":{"__t":"c","manufacturer":"MXCHIP","model":"AZ3166","swVersion":"1.0.0","osName":"Eclipse ThreadX","processorArchitecture":"Arm Cortex M4","processorManufacturer":"STMicroelectronics","totalStorage":1024,"totalMemory":128},"ledState":false,"telemetryInterval":{"ac":200,"av":1,"value":10},"$version":4}} Sending property: $iothub/twin/PATCH/properties/reported/?$rid=3{"deviceInformation":{"__t":"c","manufacturer":"MXCHIP","model":"AZ3166","swVersion":"1.0.0","osName":"Eclipse ThreadX","processorArchitecture":"Arm Cortex M4","processorManufacturer":"STMicroelectronics","totalStorage":1024,"totalMemory":128}} Sending property: $iothub/twin/PATCH/properties/reported/?$rid=5{"ledState":false} Sending property: $iothub/twin/PATCH/properties/reported/?$rid=7{"telemetryInterval":{"ac":200,"av":1,"value":10}} Starting Main loop Telemetry message sent: {"humidity":31.01,"temperature":25.62,"pressure":927.3}. Telemetry message sent: {"magnetometerX":177,"magnetometerY":-36,"magnetometerZ":-346.5}. Telemetry message sent: {"accelerometerX":-22.5,"accelerometerY":0.54,"accelerometerZ":1049.01}. Telemetry message sent: {"gyroscopeX":0,"gyroscopeY":0,"gyroscopeZ":0}.
Mantenha o Termite aberto para monitorar a saída do dispositivo nas etapas a seguir.
Exibir propriedades do dispositivo
Você pode usar o Explorer da Internet das Coisas do Azure para exibir e gerenciar as propriedades de seus dispositivos. Nesta seção e nas seções a seguir, use as funcionalidades Plug and Play exibidas do Explorer de IoT para gerenciar e interagir com o MXCHIP DevKit. Esses recursos dependem do modelo de dispositivo publicado para o MXCHIP DevKit no repositório de modelo público. Você configurou o IoT Explorer para pesquisar modelos de dispositivos nesse repositório anteriormente nesse tutorial. Você pode executar diversas ações sem usar o Plug and Play selecionando a ação no menu do lado esquerdo do painel do dispositivo no Explorer de IoT. No entanto, o uso do Plug and Play geralmente fornece uma experiência aprimorada. O Explorer do IoT consegue ler o modelo do dispositivo especificado por um dispositivo plug and play e apresentar as informações específicas para esse dispositivo.
Para acessar os componentes do IoT Plug and Play para o dispositivo no Explorer do IoT:
Na exibição da página inicial no Explorer do IoT, selecione hubs IoT e Exibir dispositivos neste hub.
Selecione seu dispositivo.
Selecione Componentes IoT Plug and Play.
Selecione Componente padrão. O Explorer do IoT exibe os componentes do IoT Plug and Play que estão implementados em seu dispositivo.
Na guia interface, exiba o conteúdo JSON na Descriçãodo modelo do dispositivo. O JSON contém detalhes de configuração para cada um dos componentes do IoT Plug and Play no modelo de dispositivo.
Cada guia no Explorer do IoT corresponde a um dos componentes do IoT Plug and Play no modelo do dispositivo.
Tab Tipo Nome Descrição Interface Interface MXCHIP Getting Started Guide
Modelo de exemplo para MXCHIP DevKit Propriedades (somente leitura) Propriedade ledState
O estado atual do LED Propriedades (graváveis) Propriedade telemetryInterval
Intervalo em que o dispositivo envia a telemetria Comandos Comando setLedState
Ativar ou desativar o LED
Para exibir as propriedades do dispositivo usando o Explorer da Internet das Coisas do Azure:
Selecione a guia Propriedades (graváveis) . Ela exibe o intervalo em que a telemetria é enviada.
Altere
telemetryInterval
para 5 e selecione Atualizar o valor desejado. Seu dispositivo passou a usar esse intervalo para enviar a telemetria.O Explorer do IoT responde com uma notificação. Você também pode observar a atualização no Termite.
Retorne a definição do intervalo de telemetria para 10.
Para usar a CLI do Azure para exibir as propriedades do dispositivo:
Execute o comando az iot hub device-twin show.
az iot hub device-twin show --device-id mydevice --hub-name {YourIoTHubName}
Inspecione as propriedades do dispositivo na saída do console.
Exibir telemetria
Ao usar o Explorer da Internet das Coisas do Azure, é possível exibir o fluxo de telemetria do seu dispositivo para a nuvem. Opcionalmente, você pode executar a mesma tarefa usando a CLI do Azure.
Para exibir a telemetria no Explorer da Internet das Coisas do Azure:
No painel Componentes IoT Plug and Play (Componente Padrão) do dispositivo no Explorer do IoT, selecione a guia Telemetria. Confirme se Usar hub de eventos integrado está definido como Sim.
Selecione Iniciar.
Exiba a telemetria conforme o dispositivo envia mensagens à nuvem.
Observação
Também é possível monitorar a telemetria do dispositivo usando o aplicativo Termite.
Marque a caixa de seleção Mostrar eventos modelados para exibir os eventos no formato de dados, especificado pelo modelo de dispositivo.
Selecione Parar para encerrar o recebimento de eventos.
Para usar a CLI do Azure para exibir a telemetria do dispositivo:
Execute o comando az iot hub monitor-events. Use os nomes criados anteriormente na Internet das Coisas do Azure para seu dispositivo e o hub IoT.
az iot hub monitor-events --device-id mydevice --hub-name {YourIoTHubName}
Exiba a saída JSON na janela do console.
{ "event": { "origin": "mydevice", "module": "", "interface": "dtmi:eclipsethreadx:devkit:gsgmxchip;1", "component": "", "payload": "{\"humidity\":41.21,\"temperature\":31.37,\"pressure\":1005.18}" } }
Selecione CTRL+C para encerrar o monitoramento.
Chamar um método direto no dispositivo
Também é possível usar o Explorer da Internet das Coisas do Azure para executar uma chamada a um método direto implementado em seu dispositivo. Os métodos diretos têm um nome e, de modo opcional, podem ter um conteúdo JSON, uma conexão configurável e um tempo limite do método. Nesta seção, você executará uma chamada a um método que permite ligar ou desligar um LED. Opcionalmente, você pode executar a mesma tarefa usando a CLI do Azure.
Para chamar um método no Explorer da Internet das Coisas do Azure:
No painel Componentes IoT Plug and Play (Componente Padrão) do dispositivo no Explorer do IoT, selecione a guia Comandos.
Para o comando setLedState, defina o estado como true.
Selecione Enviar comando. Você verá uma notificação no Explorer do IoT e a luz amarela do LED do usuário no dispositivo deverá acender.
Defina o estado como false e selecione Enviar comando. O LED amarelo do usuário deve apagar.
Opcionalmente, você pode exibir a saída no Termite para monitorar o status dos métodos.
Para usar a CLI do Azure para chamar um método:
Execute o comando az iot hub invoke-device-method e especifique o nome do método e o payload. Para esse método, a configuração de
method-payload
paratrue
liga o LED, e a configuração parafalse
desliga.az iot hub invoke-device-method --device-id mydevice --method-name setLedState --method-payload true --hub-name {YourIoTHubName}
O console da CLI mostra o status da chamada ao método no dispositivo, em que
204
indica êxito.{ "payload": {}, "status": 200 }
Verifique o dispositivo para confirmar o estado do LED.
Olhe no terminal Termite para confirmar as mensagens de saída:
Receive direct method: setLedState Payload: true LED is turned ON Device twin property sent: {"ledState":true}
Solucionar problemas e depurar
Se tiver problemas para criar o código do dispositivo, para acender/apagar o dispositivo ou se conectar, consulte Solução de problemas.
Para executar a depuração do aplicativo, confira Como executar uma depuração usando o Visual Studio Code.
Limpar recursos
Se não precisar mais dos recursos do Azure criados neste guia de início rápido, use a CLI do Azure para excluí-los.
Importante
A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Não exclua acidentalmente o grupo de recursos ou os recursos incorretos.
Para excluir um grupo de recursos por nome:
Execute o comando az group delete. Esse comando removerá o grupo de recursos, o Hub IoT e o registro de dispositivo que você criou.
az group delete --name MyResourceGroup
Execute o comando az group list para confirmar se o grupo de recursos foi excluído.
az group list
Próximas etapas
Neste tutorial, você criou uma imagem personalizada que contém o código de exemplo do Eclipse ThreadX. Depois atualizou a imagem no dispositivo do Kit de Desenvolvimento MXCHIP. Também usou a CLI do Azure e/ou o Explorer do IoT para criar recursos do Azure, conectar o Kit de Desenvolvimento MXCHIP ao Azure com segurança, exibir telemetrias e enviar mensagens.
Na próxima etapa, explore o artigo a seguir para saber mais sobre as opções de desenvolvimento incorporado.
O Eclipse ThreadX fornece OEMs juntamente com componentes para proteger a comunicação e criar um isolamento de códigos e dados usando mecanismos subjacentes de MCU/MPU de proteção de hardware. No entanto, cada OEM é responsável por garantir que os dispositivos atendam aos requisitos de segurança em evolução.