Tutorial: Usar o Eclipse ThreadX para conectar um kit de descoberta STMicroelectronics B-L475E-IOT01A ao Hub IoT
Neste tutorial, você usará o Eclipse ThreadX para conectar o kit de descoberta STMicroelectronics B-L475E-IOT01A (de agora em diante, o STM DevKit) ao Azure IoT.
Conclua as seguintes tarefas:
- Instalar um conjunto de ferramentas de desenvolvimento inserido para programar o STM DevKit em C
- Criar uma imagem e atualizá-la no STM DevKit
- Usar a CLI do Azure para criar e gerenciar um hub IoT do Azure ao qual o STM 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 B-L475E-IOT01A (STM DevKit)
- 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 para 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 STM DevKit ao Azure, você modificará as configurações de Wi-Fi e da IoT do Azure de um arquivo de configuração, além de recompilar e instalar a imagem no dispositivo.
Adicionar configuração
Abra o seguinte arquivo em um editor de texto:
getting-started\STMicroelectronics\B-L475E-IOT01A\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
{Seu valor do hostName do hub Iot} 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 arquivo de lote rebuild.bat no seguinte caminho para criar a imagem:
getting-started\STMicroelectronics\B-L475E-IOT01A\tools\rebuild.bat
Depois que a criação for concluída, confirme se o arquivo binário foi criado no seguinte caminho:
getting-started\STMicroelectronics\B-L475E-IOT01A\build\app\stm32l475_azure_iot.bin
Instalar a imagem
No STM DevKit MCU, localize o botão Redefinir (1), a porta USB Micro (2), que está rotulada como USB STLink, e o número de peça do quadro (3). Você fará referência a esses itens nas próximas etapas. Todos estão realçados na seguinte figura:
Conecte o cabo USB Micro à porta USB STLINK do STM DevKit, depois conecte-o ao seu computador.
Observação
Para saber mais sobre a configuração do STM DevKit, confira as instruções no pacote ou confira Recursos B-L475E-IOT01A
No Explorador de Arquivos, localize os arquivos binários criados na seção anterior.
Copie o arquivo binário stm32l475_azure_iot.bin.
No Explorador de Arquivos, localize o STM Devkit conectado ao seu computador. O dispositivo aparece como uma unidade do sistema, com o rótulo de unidade DIS_L4IOT.
Cole o arquivo binário no diretório raiz do STM DevKit. 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, um LED alterna entre vermelho e verde no STM DevKit.
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: porta à qual o STM DevKit 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 é preto e está rotulado no dispositivo.
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 Module: ISM43362-M3G-L44-SPI MAC address: **************** Firmware revision: C3.5.2.5.STM SUCCESS: WiFi initialized Connecting WiFi Connecting to SSID 'iot' Attempt 1... SUCCESS: WiFi connected Initializing DHCP IP address: 192.168.0.35 Mask: 255.255.255.0 Gateway: 192.168.0.1 SUCCESS: DHCP initialized Initializing DNS client DNS address 1: ************ DNS address 2: ************ SUCCESS: DNS client initialized Initializing SNTP time sync SNTP server 0.pool.ntp.org SNTP time update: Nov 18, 2022 0:56:56.127 UTC SUCCESS: SNTP initialized Initializing Azure IoT Hub client Hub hostname: *******.azure-devices.net Device id: mydevice Model id: dtmi:eclipsethreadx:devkit:gsgstml4s5;2 SUCCESS: Connected to IoT Hub
Importante
Se a inicialização do cliente DNS falhar e notificar que o firmware do Wi-Fi está desatualizado, você precisará atualizar o firmware do módulo Wi-Fi. Baixe e instale a atualização do firmware do módulo Wi-Fi Inventek ISM 43362. Em seguida, pressione o botão Redefinir no dispositivo para verificar novamente sua conexão e continuar com este tutorial.
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. Nas seções a seguir, você usará as funcionalidades Plug and Play visíveis no IoT Explorer para gerenciar o STM DevKit e interagir com ele. Esses recursos dependem do modelo de dispositivo publicado para o STM DevKit no repositório de modelo público. Você configurou o IoT Explorer para pesquisar neste repositório modelos de dispositivo anteriormente neste tutorial. Em muitos casos, você pode executar a mesma ação sem usar plug and play selecionando as opções de menu do IoT Explorer. 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.
Observação
O nome e a descrição do componente padrão referem-se à placa STM L4S5. O modelo de dispositivo de plug and play do STM L4S5 também é usado para a placa STM L475E neste tutorial.
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 STM Getting Started Guide
Modelo de exemplo para o STM DevKit Propriedades (somente leitura) Propriedade ledState
Se o led está ativado ou desativado 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 (somente leitura). Há uma única propriedade somente leitura para indicar se o led está ativado ou desativado.
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 verde do LED no dispositivo deverá acender.
Defina o estado como false e selecione Enviar comando. O LED será desligado.
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:
Received command: setLedState Payload: true LED is turned ON Sending property: $iothub/twin/PATCH/properties/reported/?$rid=15{"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óxima etapa
Neste tutorial, você criou uma imagem personalizada que contém o código de exemplo do Eclipse ThreadX e, em seguida, exibiu a imagem para o dispositivo STM DevKit. Você conectou o STM DevKit ao Azure e realizou tarefas como exibir telemetria e chamar um método no dispositivo.
Como próxima etapa, explore o artigo a seguir para saber mais sobre as opções de desenvolvimento inserido.
Importante
O Eclipse ThreadX fornece aos OEMs componentes para proteger a comunicação e criar isolamento de código e dados usando mecanismos de proteção de hardware do MCU/MPU subjacentes. No entanto, cada OEM é responsável por garantir que os dispositivos atendam aos requisitos de segurança em evolução.