Tutorial: Conectar um kit ESPRESSIF ESP32-Hub IoT do Azure ao IoT Hub

Nesse tutorial, você usa o middleware Azure IoT para FreeRTOS para conectar o ESPRESSIF ESP32-Azure IoT Kit (a partir de agora, o ESP32 DevKit) ao Azure IoT.

Conclua as seguintes tarefas:

  • Instalar um conjunto de ferramentas de desenvolvimento incorporadas para programar um ESP32 DevKit
  • Criar uma imagem e instalá-la no ESP32 DevKit
  • Usar a CLI do Azure para criar e gerenciar um hub da Internet das Coisas do Azure ao qual o Kit de Desenvolvimento ESP32 se conecta
  • 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
  • Obter o Git para executar a clonagem do repositório
  • Hardware
  • Uma assinatura ativa do Azure. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Preparar o ambiente de desenvolvimento

Instalar as ferramentas

Para configurar o ambiente de desenvolvimento, primeiro instale o ambiente de compilação do ESPRESSIF ESP-IDF. O instalador inclui todas as ferramentas necessárias para clonar, compilar, instalar e monitorar seu dispositivo.

Para instalar as ferramentas ESP-IDF:

  1. Baixe e inicie o instalador offline do ESP-IDF v5.0.
  2. Quando o instalador listar os componentes a serem instalados, selecione todos os componentes e conclua a instalação.

Clonar o repositório

Clone o repositório a seguir para baixar todos os códigos de exemplo de dispositivos, scripts de configuração e documentação do SDK. Caso já tenha clonado este repositório, não será preciso clonar novamente.

Execute o seguinte comando para clonar o repositório:

git clone --recursive  https://github.com/Azure-Samples/iot-middleware-freertos-samples.git

Para Windows 10 e 11, verifique se os caminhos longos estão habilitados.

  1. Para habilitar caminhos longos, consulte Habilitar caminhos longos no Windows 10.

  2. No git, execute o comando a seguir em um terminal com permissões de Administrador:

    git config --system core.longpaths true
    

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, +Adicionar e Repositório público no menu suspenso.

  3. Uma entrada é exibida para o repositório de modelo público em https://devicemodels.azure.com.

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

  4. Selecione Salvar.

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 Kit de Desenvolvimento ESP32 ao Azure, você modifica as definições de configuração, cria a imagem e instala a imagem para o dispositivo.

Configurar o ambiente

Para iniciar o ambiente ESP-IDF:

  1. Selecione Iniciar no Windows, localize CMD ESP-IDF 5.0 e execute-o.

  2. No CMD ESP-IDF 5.0, navegue até o diretório iot-middleware-freertos-samples que você clonou anteriormente.

  3. Acesse o diretório de projeto do kit de IoT do Azure - ESP32 demos\projects\ESPRESSIF\aziotkit.

  4. Execute o seguinte comando para iniciar o menu de configuração:

    idf.py menuconfig
    

Adicionar configuração

Para adicionar a configuração da rede sem fio:

  1. No CMD ESP-IDF 5.0, selecione o middleware da Internet das Coisas do Azure para configuração de exemplo do FreeRTOS ---> e pressione Enter.

  2. Defina as seguintes definições de configuração usando as credenciais de rede sem fio local.

    Configuração Valor
    Wi-Fi SSID {Seu SSID de Wi-Fi}
    Senha do Wi-Fi {Sua senha de Wi-Fi}
  3. Selecione Esc para retornar ao menu anterior.

Para adicionar a configuração para se conectar ao Hub IoT do Azure:

  1. Selecione o middleware da Internet das Coisas do Azure para configuração de tarefa principal do FreeRTOS ---> e pressione Enter.

  2. Defina as seguintes definições de configuração da IoT do Azure para os valores que você salvou depois de criar os recursos do Azure.

    Configuração Valor
    FQDN do Hub IoT do Azure {Seu nome de host}
    ID do dispositivo da Internet das Coisas do Azure {ID do seu dispositivo}
    Chave simétrica do dispositivo da Internet das Coisas do Azure {Sua chave primária}

    Observação

    Na configuração Método de Autenticação da Internet das Coisas do Azure, confirme se o valor padrão de Chave Simétrica está selecionado.

  3. Selecione Esc para retornar ao menu anterior.

Para salvar a configuração:

  1. Selecione Shift+S para abrir as opções de salvamento. Este menu permite salvar a configuração em um arquivo chamado skconfig no diretório .\aziotkit atual.
  2. Selecione Enter para salvar a configuração.
  3. Selecione Enter para descartar a mensagem de confirmação.
  4. Selecione Q para sair do menu de configuração.

Compilar e instalar a imagem

Nesta seção, você usará as ferramentas ESP-IDF para compilar, instalar e monitorar o ESP32 DevKit conforme ele se conecta à Internet das Coisas do Azure.

Observação

Nos seguintes comandos nesta seção, use um caminho curto de saída de compilação próximo ao diretório raiz. Especifique o caminho de compilação após o parâmetro -B em cada comando que o exige. O caminho curto ajuda a evitar um problema atual nas ferramentas ESPRESSIF ESP-IDF que podem causar erros com nomes longos de caminho de compilação. Os comandos a seguir usam um caminho local C:\espbuild como exemplo.

Para compilar a imagem:

  1. No CMD ESP-IDF 5.0, a partir do diretório iot-middleware-freertos-samples\demos\projects\ESPRESSIF\aziotkit, execute o comando a seguir para compilar a imagem.

    idf.py --no-ccache -B "C:\espbuild" build 
    
  2. Depois que a compilação for concluída, confirme se o arquivo de imagem binária foi criado no caminho de compilação especificado anteriormente.

    C:\espbuild\azure_iot_freertos_esp32.bin

Para instalar a imagem:

  1. No ESP32 DevKit, localize a porta micro USB, realçada na imagem a seguir:

    Foto da placa do Kit da Internet das Coisas do Azure - ESP32.

  2. Conecte o cabo micro USB à porta micro USB no ESP32 DevKit, depois conecte-o ao seu computador.

  3. Abra o Gerenciador de dispositivos do Windows e exiba Portas para descobrir a qual porta COM o ESP32 DevKit está conectado.

    Captura de tela do Gerenciador de Dispositivos do Windows exibindo a porta COM de um dispositivo conectado.

  4. No CMD ESP-IDF 5.0, execute o comando a seguir, substituindo o espaço reservado <Your-COM-port> e os colchetes pela porta COM correta da etapa anterior. Por exemplo, substitua o espaço reservado por COM3.

    idf.py --no-ccache -B "C:\espbuild" -p <Your-COM-port> flash
    
  5. Confirme se a saída foi concluída com o seguinte texto para uma instalação bem-sucedida:

    Hash of data verified
    
    Leaving...
    Hard resetting via RTS pin...
    Done
    

Para confirmar se o dispositivo se conecta à Azure IoT Central:

  1. No CMD ESP-IDF 5.0, execute o comando a seguir para iniciar a ferramenta de monitoramento. Como você fez em um comando anterior, substitua o espaço reservado <Your-COM-port> e os colchetes pela porta COM à qual o dispositivo está conectado.

    idf.py -B "C:\espbuild" -p <Your-COM-port> monitor
    
  2. Verifique se há blocos repetitivos de saída semelhantes ao exemplo a seguir. Essa saída confirma que o dispositivo se conecta à Internet das Coisas do Azure e envia telemetria.

    I (50807) AZ IOT: Successfully sent telemetry message
    I (50807) AZ IOT: Attempt to receive publish message from IoT Hub.
    
    I (51057) MQTT: Packet received. ReceivedBytes=2.
    I (51057) MQTT: Ack packet deserialized with result: MQTTSuccess.
    I (51057) MQTT: State record updated. New state=MQTTPublishDone.
    I (51067) AZ IOT: Puback received for packet id: 0x00000008
    I (53067) AZ IOT: Keeping Connection Idle...
    

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ê usa as funcionalidades Plug and Play visíveis no Explorer do IoT para gerenciar e interagir com o Kit de Desenvolvimento ESP32. Esses recursos dependem do modelo de dispositivo publicado para o Kit de Desenvolvimento ESP32 no repositório de modelo público. Você configurou o IoT Explorer para pesquisar modelos de dispositivos nesse repositório anteriormente nesse 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 do dispositivo no Gerenciador de 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.

    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 Espressif ESP32 Azure IoT Kit Modelo de dispositivo de exemplo para o Kit de Desenvolvimento ESP32
    Propriedades (graváveis) Propriedade telemetryFrequencySecs Intervalo em que o dispositivo envia a telemetria
    Comandos Comando ToggleLed1 Ativar ou desativar o LED
    Comandos Comando ToggleLed2 Ativar ou desativar o LED
    Comandos Comando DisplayText Exibe o texto enviado na tela do dispositivo

Para exibir e editar as propriedades do dispositivo usando o Explorer da Internet das Coisas do Azure:

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

  2. Altere o valor telemetryFrequencySecs 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 dispositivo no Gerenciador de IoT.

  3. O Explorer do IoT responde com uma notificação.

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

  1. No console da CLI, 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.

Dica

Você também pode usar o Explorer da Internet das Coisas do Azure para exibir as propriedades do dispositivo. No painel de navegação esquerdo, selecione Dispositivo gêmeo.

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.

  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:azureiot:devkit:freertos:Esp32AzureIotKit;1",
            "component": "",
            "payload": "{\"temperature\":28.6,\"humidity\":25.1,\"light\":116.66,\"pressure\":-33.69,\"altitude\":8764.9,\"magnetometerX\":1627,\"magnetometerY\":28373,\"magnetometerZ\":4232,\"pitch\":6,\"roll\":0,\"accelerometerX\":-1,\"accelerometerY\":0,\"accelerometerZ\":9}"
        }
    }
    
  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 ToggleLed1, selecione Enviar comando. O LED no Kit de Desenvolvimento ESP32 ativa ou desativa. Você também deve visualizar uma notificação no IoT Explorer.

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

  3. Para o comando DisplayText, insira algum texto no campo de conteúdo.

  4. Selecione Enviar comando. O texto é exibido na tela do Kit de Desenvolvimento ESP32.

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, definir method-payload como true significa que o LED alterna para o oposto de seu estado atual.

    az iot hub invoke-device-method --device-id mydevice --method-name ToggleLed2 --method-payload true --hub-name {YourIoTHubName}
    

    O console da CLI mostra o status da chamada ao método no dispositivo, em que 200 indica êxito.

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

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óximas etapas

Nesse tutorial, você criou uma imagem personalizada que contém o middleware Azure IoT para o código de exemplo do FreeRTOS e, em seguida, atualizou a imagem para o dispositivo ESP32 DevKit. Você conectou o Kit de Desenvolvimento ESP32 ao Hub IoT do Azure e realizou tarefas como exibir a telemetria e chamar métodos no dispositivo.

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