Tutorial: Usar o Eclipse ThreadX para conectar um kit de descoberta STMicroelectronics B-L475E-IOT01A ao Hub IoT

Procurar código

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:

Para instalar as ferramentas:

  1. 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

  2. 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.

  3. 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:

  1. 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.
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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 valor hostName 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:

  1. Instalar o Explorador de IoT do Azure. Esta ferramenta é um utilitário multiplataforma para monitorar e gerenciar os recursos de IoT do Azure.

  2. 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}
    
  3. Copie a cadeia de conexão sem os caracteres de aspas.

  4. No Explorer da Internet das Coisas do Azure, selecione hubs IoT no menu à esquerda.

  5. Selecione + Adicionar Conexão.

  6. Cole a cadeia de conexão copiada no campo Cadeia de conexão.

  7. Clique em Salvar.

    Captura de tela da adição de uma conexão no Explorer do IoT.

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:

  1. No Explorer do IoT, selecione Página Inicial para retornar à exibição da página inicial.

  2. No menu à esquerda, selecione Configurações do IoT Plug and Play.

  3. 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:

    Captura de tela da adição do repositório de modelo público no Explorer do IoT.

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:

  1. Na exibição da página inicial no Explorer do IoT, selecione hubs IoT.

  2. A conexão que você adicionou anteriormente será exibida. Selecione Exibir dispositivos neste hub abaixo das propriedades de conexão.

  3. Selecione + Novo e insira uma ID de dispositivo para o dispositivo. Por exemplo, mydevice. Não altere as demais propriedades.

  4. Selecione Criar.

    Captura de tela da identidade do dispositivo do Explorer da Internet das Coisas do Azure.

  5. 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

  1. Abra o seguinte arquivo em um editor de texto:

    getting-started\STMicroelectronics\B-L475E-IOT01A\app\azure_config.h

  2. Comente a seguinte linha próxima à parte superior do arquivo, conforme mostrado:

    // #define ENABLE_DPS
    
  3. 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}
  4. 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}
  5. Salve e feche o arquivo.

Criar a imagem

  1. 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

  2. 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

  1. 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:

    Foto que mostra os principais componentes da placa do STM DevKit.

  2. 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

  3. No Explorador de Arquivos, localize os arquivos binários criados na seção anterior.

  4. Copie o arquivo binário stm32l475_azure_iot.bin.

  5. 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.

  6. 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.

  1. 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.

  2. Selecione Configurações.

  3. 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.

    Captura de tela das configurações da porta serial no aplicativo Termite.

  4. Selecione OK.

  5. Clique no botão Reiniciar do dispositivo. O botão é preto e está rotulado no dispositivo.

  6. 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:

  1. Na exibição da página inicial no Explorer do IoT, selecione hubs IoT e Exibir dispositivos neste hub.

  2. Selecione seu dispositivo.

  3. Selecione Componentes IoT Plug and Play.

  4. Selecione Componente padrão. O Explorer do IoT exibe os componentes do IoT Plug and Play que estão implementados em seu dispositivo.

    Captura de tela do componente padrão STM DevKit no Explorer do IoT.

  5. 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:

  1. Selecione a guia Propriedades (somente leitura). Há uma única propriedade somente leitura para indicar se o led está ativado ou desativado.

  2. Selecione a guia Propriedades (graváveis) . Ela exibe o intervalo em que a telemetria é enviada.

  3. Altere telemetryInterval para 5 e selecione Atualizar o valor desejado. Seu dispositivo passou a usar esse intervalo para enviar a telemetria.

    Captura de tela da configuração do intervalo de telemetria no STM DevKit no Explorer do IoT.

  4. O Explorer do IoT responde com uma notificação. Você também pode observar a atualização no Termite.

  5. Retorne a definição do intervalo de telemetria para 10.

Para usar a CLI do Azure para exibir as propriedades do dispositivo:

  1. Execute o comando az iot hub device-twin show.

    az iot hub device-twin show --device-id mydevice --hub-name {YourIoTHubName}
    
  2. 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:

  1. 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.

  2. Selecione Iniciar.

  3. Exiba a telemetria conforme o dispositivo envia mensagens à nuvem.

    Captura de tela da telemetria do dispositivo no Explorer do IoT.

    Observação

    Também é possível monitorar a telemetria do dispositivo usando o aplicativo Termite.

  4. Marque a caixa de seleção Mostrar eventos modelados para exibir os eventos no formato de dados, especificado pelo modelo de dispositivo.

    Captura de tela dos eventos de telemetria modelados no Explorer do IoT.

  5. Selecione Parar para encerrar o recebimento de eventos.

Para usar a CLI do Azure para exibir a telemetria do dispositivo:

  1. 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}
    
  2. 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}"
        }
    }
    
  3. 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:

  1. No painel Componentes IoT Plug and Play (Componente Padrão) do dispositivo no Explorer do IoT, selecione a guia Comandos.

  2. Para o comando setLedState, defina o estado como true.

  3. Selecione Enviar comando. Você verá uma notificação no Explorer do IoT e a luz verde do LED no dispositivo deverá acender.

    Captura de tela da chamada ao método setLedState no Explorer do IoT.

  4. Defina o estado como false e selecione Enviar comando. O LED será desligado.

  5. 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:

  1. 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 para true liga o LED, e a configuração para false 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
    }
    
  2. Verifique o dispositivo para confirmar o estado do LED.

  3. 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:

  1. 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
    
  2. 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.