Partilhar via


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

Procurar código

Neste tutorial, você usa o Eclipse ThreadX para conectar o kit de descoberta STMicroelectronics B-L475E-IOT01A (doravante, o STM DevKit) ao Azure IoT.

Conclua as seguintes tarefas:

  • Instale um conjunto de ferramentas de desenvolvimento incorporadas para programação do STM DevKit em C
  • Crie uma imagem e pisce-a no STM DevKit
  • Usar a CLI do Azure para criar e gerenciar um hub IoT do Azure ao qual o STM DevKit se conecta com segurança
  • Use o Azure IoT Explorer para registrar um dispositivo com seu hub IoT, exibir propriedades do dispositivo, exibir telemetria do dispositivo e chamar comandos diretos no dispositivo

Pré-requisitos

  • Um PC com Windows 10 ou Windows 11

  • Uma subscrição ativa do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

  • Git para clonar o repositório

  • CLI do Azure. Você tem duas opções para executar comandos da CLI do Azure neste tutorial:

    • Use o Azure Cloud Shell, um shell interativo que executa comandos da CLI em seu navegador. Essa opção é recomendada porque você não precisa instalar nada. Se você estiver usando o Cloud Shell pela primeira vez, entre no portal do Azure. Siga as etapas no início rápido do Cloud Shell para iniciar o Cloud Shell e selecionar o ambiente Bash.
    • Opcionalmente, execute a CLI do Azure em sua máquina local. Se a CLI do Azure já estiver instalada, 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
    • USB 2.0 Um cabo macho para Micro USB macho

Preparar o ambiente de desenvolvimento

Para configurar seu ambiente de desenvolvimento, primeiro clone um repositório GitHub que contém todos os ativos necessários para o tutorial. Em seguida, você instala um conjunto de ferramentas de programação.

Clonar o repositório

Clone o repositório a seguir para baixar todo o código de dispositivo de exemplo, scripts de configuração e versões offline da documentação. Se você clonou anteriormente este repositório em outro tutorial, não precisará fazê-lo novamente.

Para clonar o repositório, execute o seguinte comando:

git clone --recursive https://github.com/eclipse-threadx/getting-started.git

Instale as ferramentas

O repositório clonado contém um script de instalação que instala e configura as ferramentas necessárias. Se você instalou essas ferramentas em outro tutorial de dispositivo incorporado, não precisará fazê-lo novamente.

Nota

O script de instalação instala as seguintes ferramentas:

  • CMake: Construir
  • ARM GCC: Compilar
  • Cupim: Monitore a saída da porta serial para dispositivos conectados

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 instalação. Use este console para concluir as tarefas de programação restantes no tutorial. Você pode usar o Windows CMD, PowerShell ou Git Bash para Windows.

  3. Execute o código a seguir para confirmar que o CMake versão 3.14 ou posterior está instalado.

    cmake --version
    

Criar os componentes da nuvem

Criar um hub IoT

Você pode usar a CLI do Azure para criar um hub IoT que manipula eventos e mensagens para seu dispositivo.

Para criar um hub IoT:

  1. Inicie seu aplicativo CLI. Para executar os comandos da CLI no restante deste início rápido, copie a sintaxe do comando, cole-a no aplicativo da CLI, edite valores de variáveis e pressione Enter.

    • Se você 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 você estiver usando a CLI do Azure localmente, inicie seu aplicativo de console da CLI e entre 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 .

    Nota

    Opcionalmente, você pode definir um arquivo location. 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 esse espaço reservado no código pelo nome escolhido para seu hub IoT. Um nome de hub IoT deve ser globalmente exclusivo no Azure. Esse espaço reservado é usado no restante deste início rápido para representar seu nome exclusivo do hub IoT.

    O --sku F1 parâmetro cria o hub IoT na camada Livre. Os hubs de nível gratuito têm um conjunto de recursos limitado e são usados para aplicações de prova de conceito. Para obter mais informações 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, exiba a saída JSON no console e copie o hostName valor a ser usado em uma etapa posterior. O hostName valor se parece com o exemplo a seguir:

    {Your IoT hub name}.azure-devices.net

Configurar o IoT Explorer

No restante deste início rápido, você usa o IoT Explorer para registrar um dispositivo em seu hub IoT, para exibir as propriedades e a telemetria do dispositivo e para enviar comandos para seu dispositivo. Nesta seção, você configura o IoT Explorer para se conectar ao hub IoT criado e para ler modelos plug and play do repositório de modelos públicos.

Para adicionar uma conexão ao seu hub IoT:

  1. Instale o Azure IoT Explorer. Esta ferramenta é um utilitário multiplataforma para monitorar e gerenciar recursos do Azure IoT.

  2. Em seu aplicativo CLI, execute o comando az iot hub connection-string show para obter a cadeia de conexão para seu hub IoT.

    az iot hub connection-string  show --hub-name {YourIoTHubName}
    
  3. Copie a cadeia de conexão sem os caracteres de cotação ao redor.

  4. No Azure IoT Explorer, selecione Hubs IoT no menu à esquerda.

  5. Selecione + Adicionar ligação.

  6. Cole a cadeia de conexão na caixa Cadeia de conexão .

  7. Selecione Guardar.

    Captura de ecrã a mostrar a adição de uma ligação no Explorador do IoT.

Se a conexão for bem-sucedida, o IoT Explorer alternará para o modo de exibição Dispositivos .

Para adicionar o repositório de modelo público:

  1. No IoT Explorer, selecione Página Inicial para retornar ao modo de exibição inicial.

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

  3. Confirme se existe uma entrada de Repositório Público existente com um ponto de extremidade de https://devicemodels.azure.com.

    Nota

    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 https://devicemodels.azure.com ponto de extremidade e selecione Salvar.

    A entrada concluída para o repositório público se parece com a seguinte captura de tela:

    Captura de ecrã a mostrar a adição do repositório de modelos públicos no Explorador do IoT.

Registar um dispositivo

Nesta seção, você cria uma nova instância de dispositivo e a registra no hub IoT criado. Você usa as informações de conexão do dispositivo recém-registrado para conectar seu dispositivo físico com segurança em uma seção posterior.

Para registar um dispositivo:

  1. Na visualização inicial no IoT Explorer, selecione Hubs IoT.

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

  3. Selecione + Novo e insira um ID de dispositivo para o seu dispositivo, por exemplo, mydevice. Deixe todas as outras propriedades iguais.

  4. Selecione Criar.

    Captura de ecrã da identidade do dispositivo do Azure IoT Explorer.

  5. Use os botões de cópia para copiar os campos ID do dispositivo e Chave primária.

Antes de continuar para a próxima seção, salve cada um dos seguintes valores 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, modifique um arquivo de configuração para as configurações de Wi-Fi e Azure IoT, recrie a imagem e pisce 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 perto da parte superior do arquivo, conforme mostrado:

    // #define ENABLE_DPS
    
  3. Defina as constantes Wi-Fi para os seguintes valores do seu ambiente local.

    Nome constante Value
    WIFI_SSID {O seu SSID Wi-Fi}
    WIFI_PASSWORD {A sua palavra-passe Wi-Fi}
    WIFI_MODE {Um dos valores enumerados do modo Wi-Fi no ficheiro}
  4. Defina as constantes de informações do dispositivo IoT do Azure para os valores que você salvou depois de criar os recursos do Azure.

    Nome constante Value
    IOT_HUB_HOSTNAME {Seu valor de hostName do hub Iot}
    IOT_HUB_DEVICE_ID {O valor do ID do dispositivo}
    IOT_DEVICE_SAS_KEY {Seu valor de chave primária}
  5. Guarde e feche o ficheiro.

Criar a imagem

  1. No console ou no Explorador de Arquivos, execute o rebuild.bat de arquivos em lotes no seguinte caminho para criar a imagem:

    getting-started\STMicroelectronics\B-L475E-IOT01A\tools\rebuild.bat

  2. Após a conclusão da compilação, confirme se o arquivo binário foi criado no seguinte caminho:

    getting-started\STMicroelectronics\B-L475E-IOT01A\build\app\stm32l475_azure_iot.bin

Piscar a imagem

  1. No STM DevKit MCU, localize o botão Reset (1), a porta Micro USB (2), que é rotulada USB STLink, e o número de peça da placa (3). Você se referirá a esses itens nas próximas etapas. Todos eles estão destacados na imagem a seguir:

    Foto que mostra os principais componentes na placa STM DevKit.

  2. Conecte o cabo Micro USB à porta STLINK USB no STM DevKit e conecte-o ao computador.

    Nota

    Para obter informações detalhadas de configuração sobre o STM DevKit, consulte as instruções na embalagem ou consulte Recursos do B-L475E-IOT01A

  3. No Explorador de Ficheiros, localize os ficheiros binários que criou na secção anterior.

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

  5. No Explorador de Arquivos, localize o STM Devkit conectado ao seu computador. O dispositivo aparece como uma unidade no seu sistema com a etiqueta da unidade DIS_L4IOT.

  6. Cole o arquivo binário na pasta raiz do STM Devkit. O piscamento começa automaticamente e termina em poucos segundos.

    Nota

    Durante o processo de piscamento, um LED alterna entre vermelho e verde no STM DevKit.

Confirmar detalhes da conexão do dispositivo

Você pode usar o aplicativo Cupim para monitorar a comunicação e confirmar se seu dispositivo está configurado corretamente.

  1. Inicie o cupim.

    Gorjeta

    Se você não conseguir conectar o Termite ao seu devkit, instale o driver ST-LINK e tente novamente. Consulte Solução de problemas para obter etapas adicionais.

  2. Selecione Definições.

  3. Na caixa de diálogo Configurações da porta serial, verifique as seguintes configurações e atualize, se necessário:

    • Taxa de transmissão: 115.200
    • Porta: a porta à qual o STM DevKit está conectado. Se houver várias opções de porta na lista suspensa, você poderá encontrar a porta correta a ser usada. Abra o Gerenciador de Dispositivos do Windows e exiba Portas para identificar qual porta usar.

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

  4. Selecione OK.

  5. Pressione o botão Reset (Reset ) no dispositivo. O botão é preto e está etiquetado no dispositivo.

  6. No aplicativo Cupim, verifique os seguintes valores de ponto de verificação para confirmar se o dispositivo foi inicializado e está conectado ao Azure IoT.

    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 o notificar de que o firmware Wi-Fi está desatualizado, será necessário atualizar o firmware do módulo Wi-Fi. Transfira e instale a atualização de firmware do módulo Wi-Fi Inventek ISM 43362 da STMicroelectronics. Em seguida, pressione o botão Redefinir no dispositivo para verificar novamente sua conexão e continue com este tutorial.

Mantenha o Cupim aberto para monitorar a saída do dispositivo nas etapas a seguir.

Ver propriedades do dispositivo

Você pode usar o Azure IoT Explorer para exibir e gerenciar as propriedades de seus dispositivos. Nas seções a seguir, você usa os recursos Plug and Play visíveis no IoT Explorer para gerenciar e interagir com o STM DevKit. Esses recursos dependem do modelo de dispositivo publicado para o STM DevKit no repositório de modelos públicos. Você configurou o IoT Explorer para pesquisar modelos de dispositivo neste repositório anteriormente neste tutorial. Em muitos casos, você pode executar a mesma ação sem usar plug and play selecionando as opções do menu do IoT Explorer. No entanto, o uso de plug and play geralmente fornece uma experiência aprimorada. O IoT Explorer pode ler o modelo de dispositivo especificado por um dispositivo plug and play e apresentar informações específicas para esse dispositivo.

Para acessar os componentes IoT Plug and Play para o dispositivo no IoT Explorer:

  1. Na vista inicial no Explorador do IoT, selecione Hubs IoT e, em seguida, selecione Ver dispositivos neste hub.

  2. Selecione o seu dispositivo.

  3. Selecione Componentes IoT Plug and Play.

  4. Selecione Componente padrão. O IoT Explorer exibe os componentes IoT Plug and Play implementados no seu dispositivo.

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

  5. Na guia Interface, exiba o conteúdo JSON na Descrição do modelo de dispositivo. O JSON contém detalhes de configuração para cada um dos componentes IoT Plug and Play no modelo de dispositivo.

    Nota

    O nome e a descrição do componente padrão referem-se à placa STM L4S5. O modelo de dispositivo plug and play STM L4S5 também é usado para a placa STM L475E neste tutorial.

    Cada guia no IoT Explorer corresponde a um dos componentes IoT Plug and Play no modelo de dispositivo.

    Separador Type Name Descrição
    Interface Interface STM Getting Started Guide Modelo de exemplo para o STM DevKit
    Propriedades (somente leitura) Property ledState Se o led está ligado ou desligado
    Propriedades (graváveis) Property telemetryInterval O intervalo que o dispositivo envia telemetria
    Comandos Comando setLedState Ligue ou desligue o LED

Para exibir as propriedades do dispositivo usando o Azure IoT Explorer:

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

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

  3. Altere para telemetryInterval 5 e selecione Atualizar valor desejado. Seu dispositivo agora usa esse intervalo para enviar telemetria.

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

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

  5. Defina o intervalo de telemetria de volta 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.

Ver telemetria

Com o Azure IoT Explorer, você pode exibir o fluxo de telemetria do seu dispositivo para a nuvem. Opcionalmente, você pode fazer a mesma tarefa usando a CLI do Azure.

Para exibir a telemetria no Azure IoT Explorer:

  1. No painel Componentes Plug and Play da IoT (Componente Padrão) do seu dispositivo no IoT Explorer, selecione a guia Telemetria. Confirme se Usar hub de eventos interno está definido como Sim.

  2. Selecione Iniciar.

  3. Visualize a telemetria enquanto o dispositivo envia mensagens para a nuvem.

    Captura de tela da telemetria do dispositivo no IoT Explorer.

    Nota

    Você também pode monitorar a telemetria do dispositivo usando o aplicativo Cupim.

  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 ecrã de eventos de telemetria modelados no Explorador do IoT.

  5. Selecione Parar para terminar 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 que você criou anteriormente no Azure IoT para seu dispositivo e hub IoT.

    az iot hub monitor-events --device-id mydevice --hub-name {YourIoTHubName}
    
  2. Exiba a saída JSON no 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

Você também pode usar o Azure IoT Explorer para chamar um método direto que implementou em seu dispositivo. Os métodos diretos têm um nome e, opcionalmente, podem ter uma carga JSON útil, conexão configurável e tempo limite do método. Nesta seção, você chama um método que liga ou desliga um LED. Opcionalmente, você pode fazer a mesma tarefa usando a CLI do Azure.

Para chamar um método no Azure IoT Explorer:

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

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

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

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

  4. Defina o estado como false e selecione Enviar comando. O LED deve apagar-se.

  5. Opcionalmente, você pode visualizar a saída em Cupim 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 a carga útil. Para este método, definir method-payload para true ligar o LED e configurá-lo para false desligá-lo.

    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 de método no dispositivo, onde 204 indica sucesso.

    {
        "payload": {},
        "status": 200
    }
    
  2. Verifique o dispositivo para confirmar o estado do LED.

  3. Veja o terminal de cupins 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}
    

Solução de problemas e depuração

Se você tiver problemas para criar o código do dispositivo, piscar o dispositivo ou conectar, consulte Solução de problemas.

Para depurar o aplicativo, consulte Depurando com o Visual Studio Code.

Clean up resources (Limpar recursos)

Se você não precisar mais dos recursos do Azure criados neste início rápido, poderá usar a CLI do Azure para excluir o grupo de recursos e todos os seus recursos.

Importante

A eliminação de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos nele contidos são eliminados permanentemente. Confirme que não elimina acidentalmente o grupo de recursos ou recursos errados.

Para eliminar um grupo de recursos por nome:

  1. Execute o comando az group delete . Este comando remove 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 que o grupo de recursos foi excluído.

    az group list
    

Próximo passo

Neste tutorial, você criou uma imagem personalizada que contém o código de exemplo do Eclipse ThreadX e, em seguida, piscou a imagem para o dispositivo STM DevKit. Você conectou o STM DevKit ao Azure e executou tarefas como exibir telemetria e chamar um método no dispositivo.

Como próxima etapa, explore o seguinte artigo para saber mais sobre as opções de desenvolvimento incorporado.

Importante

O Eclipse ThreadX fornece aos OEMs componentes para proteger a comunicação e criar código e isolamento de dados usando mecanismos subjacentes de proteção de hardware MCU/MPU. No entanto, cada OEM é, em última análise, responsável por garantir que seu dispositivo atenda aos requisitos de segurança em evolução.