IoT

Integrando o ESP8266 com Microsoft Hub IoT (Azure)

Eletrogate 19 de junho de 2025

Introdução

O conceito da Iot (Internet das Coisas), juntamente com integrações em cloud Computer (Computação em nuvem) tem sido grande acelerador no que diz respeito à evolução comercial e industrial. Neste post de hoje você vai aprender bem detalhadamente realizar a integração do microcontrolador Esp8266 com o recurso Hub IoT disponível na plataforma Azure da empresa Microsoft.

Com o conhecimento adquirido aqui, você poderá realizar a telemetria (monitoramento de dados de sensores) de equipamentos de modo que os dados destes podem ser analisados em tempo real ou ainda persistidos em destinos de sua preferência, como podemos ver no vídeo abaixo:


Materiais Necessários para Integração Esp8266 com Microsoft Hub Iot (Azure)

Para fazer este projeto, iremos precisar dos seguintes materiais e serviços:


    Breve Resumo

    ESP8266 NodeMCU:  Será a placa de desenvolvimento usada neste projeto, o funcionamento dela é similar as placas Arduino, mas com algumas peculiaridades que fazem ela ser a escolha melhor para este projeto:

    • Bastante compacto
    • WiFi nativo
    • Baixo consumo de energia
    • Compatibilidade com a Arduino IDE e suas bibliotecas.

    Se você é iniciante no universo Arduino, clique aqui e leia mais sobre. Aqui no blog você achará outros posts ensinando a programar, como este, ou baixe alguma de nossas apostilas que estão disponíveis gratuitamente.

    Se caso você não conhece a placa NodeMCU ou quer saber mais, você poderá aprender mais sobre ela clicando neste nosso post.

    O Termistor NTC 5mm 10K é um sensor de temperatura, que tem como característica a diminuição da resistência conforme o aumento da temperatura onde é submetido e pode ser utilizado em equipamentos como condicionadores de ar, sistemas de refrigeração e outros dispositivos.

    Microsoft Azure: Compile, gerencie e monitore seus aplicativos no Portal do Microsoft Azure. Um único hub unificado para você, sua equipe e seus projetos

    A principal vantagem. de se usar este serviço é que para integrar dispositivos ou ainda usar recursos de computação e armazenamento temos uma plataforma altamente disponível e centralizada.

    De forma gratuita temos 8000 payloads (troca de informação ou requisição entre plataforma e dispositivos) para uso diário.

    Trata-se de um projeto profissional, porém de baixa complexidade de implementação, onde vale muito a pena conferir.


    Executando o Projeto

    Configurando o projeto na Microsoft Azure

    Primeiro devemos criar nossa conta no portal da plataforma Microsoft Azure.

    Vale lembrar que existe duas formas gratuitas para configurar sua conta:

    A primeira maneira é realizar o cadastro Microsoft Azure experimental válido por 12 meses. Note que ainda é concedido créditos para utilização da solução.

    Observação importante: Recomenda-se ler a política de uso de cada recurso visto que nesse modelo de criação de conta faz necessário o uso de cartão bancário para cadastro na mesma.

    Já a segunda maneira através do endereço Microsoft Azure Estudantes é concedido um crédito de 100 dólares com validade de 12 meses sem a necessidade de uso de cartão de credito na plataforma, uma vez que faz-se necessário possuir uma conta educacional de instituições que são parceiras da Microsoft, sejam estas privadas ou públicas.

    Logo após sua conta ser criada você será redirecionado para o portal da plataforma:

    Todo serviço que pode ser criado dentro da plataforma recebe o nome de Recurso.

    Dando sequência iremos então na barra de pesquisa procurar pelo nome “Hub Iot” e clicarmos sobre o mesmo.

    Iremos então criá-lo conforme mostrado abaixo:

    Note que o Nome do hub Iot e Grupo de recursos deverão ser alterados de modo que estes mais tarde deverão ser utilizados para realizar conexão com seu dispositivo.

    Em Camada selecione gratuita.

    Caso queira a rede, tag e outras opções poderá ser configurada de forma personalizada, mas nesse exemplo iremos selecionar o campo Rever+Criar e assim que a plataforma fizer sua análise clicar em criar.

    Pronto, dentro de alguns instantes seu Hub Iot estará pronto.

    Agora clique para navegar até o recurso:

    Agora vamos cadastrar nosso dispositivo clicando sobre a opção Dispositivos e logo em seguida em adicionar dispositivo

    Insira o nome de sua preferência e clique em guardar:

    Pronto, agora podemos ir para a montagem de nossa aplicação em nosso Esp8266.

    Diagrama

    Observação: Pode ser utilizada configuração invertida dos componentes caso deseje implementar lógica inversa (coeficiente positivo ou negativo durante medição).

    Código-fonte e bibliotecas necessárias

    Primeiro abra o software Arduino Ide e em um novo sketch (arquivo) insira o seguinte código:

    #include <ESP8266WiFi.h>
    #include <PubSubClient.h>
    #include <WiFiClientSecure.h>
    
    // Configurações de Wi-Fi
    const char* ssid = "<NOME DA SUA REDE>";
    const char* password = "<SENHA>";
    
    // Configurações do Azure IoT Hub
    const char* mqttServer = "<SEU AZURE HOST>.azure-devices.net";
    const int mqttPort = 8883;
    const char* deviceID = "<NOME DO SEU DISPOSITIVO>";
    const char* sasToken = "<TOKEN GERADO>";
    
    WiFiClientSecure espClient;
    PubSubClient client(espClient);
    
    void connectWiFi() {
        Serial.print("Conectando ao Wi-Fi...");
        WiFi.begin(ssid, password);
        while (WiFi.status() != WL_CONNECTED) {
            delay(500);
            Serial.print(".");
        }
        Serial.println("Conectado ao Wi-Fi!");
    }
    
    void connectMQTT() {
        client.setServer(mqttServer, mqttPort);
        espClient.setInsecure(); // Para evitar problemas com certificados SSL
    
        String username = String(mqttServer) + "/" + deviceID + "/?api-version=2021-04-12";
    
        Serial.print("Conectando ao Azure IoT Hub...");
        while (!client.connected()) {
            if (client.connect(deviceID, username.c_str(), sasToken)) {
                Serial.println("Conectado!");
            } else {
                Serial.print("Falha, rc=");
                Serial.print(client.state());
                Serial.println(" tentando novamente em 5 segundos...");
                delay(5000);
            }
        }
    }
    
    void sendMessage() {
        int sensorValue = analogRead(A0); // Lê o valor do sensor no pino A0
        float voltage = sensorValue * (3.3 / 1023.0); // Converte para tensão
        
        String payload = "{\"temperature\": " + String(voltage*10) + "}"; // Monta o JSON corretamente
        String topic = String("devices/") + deviceID + "/messages/events/";
        
        if (client.publish(topic.c_str(), payload.c_str())) {
            Serial.println("Mensagem enviada: " + payload);
        } else {
            Serial.println("Falha ao enviar mensagem");
        }
    }
    
    void setup() {
        Serial.begin(115200);
        connectWiFi();
        connectMQTT();
    }
    
    void loop() {
        if (!client.connected()) {
            connectMQTT();
        }
        client.loop();
        sendMessage();
        delay(60000); // Envia a cada 60 segundos
    }

    Não se esqueça de substituir os campos que estão entre as aspas angulares (Símbolos < >) pelas informações inseridas no momento da criação de seu Hub Iot. (Exemplo: const char* mqttServer = “eletrogateEsp.azure-devices.net”; )

    Observação: Note que as aspas angulares (Símbolos <>) somem as aspas duplas (“”) permanecem e que dependendo do coeficiente de temperatura de seu sensor de temperatura pode ser necessário adequar a fórmula matemática presente em seu código:

    void sendMessage() {
        int sensorValue = analogRead(A0); // Lê o valor do sensor no pino A0
        float voltage = sensorValue * (3.3 / 1023.0); // Converte para tensão
        
        String payload = "{\"temperature\": " + String(voltage*10) + "}"; // Monta o JSON corretamente
        String topic = String("devices/") + deviceID + "/messages/events/";
        
        if (client.publish(topic.c_str(), payload.c_str())) {
            Serial.println("Mensagem enviada: " + payload);
        } else {
            Serial.println("Falha ao enviar mensagem");
        }
    }

    Para localizar seu:

    • const char* mqttServer:

    • const char* deviceID:

    • const char* sasToken:

    Abra o terminal da azure e rode o seguinte comando e pressione enter:

    az iot hub generate-sas-token --device-id <SEU ID DE DISPOSIIVO> --hub-name <NOME DO SEU HUB>

    Será necessário aceitar alguns termos e instalações na plataforma:

    O resultado é exibido no próprio terminal.

    Lembrando que devemos copiar o valor a partir da segunda aspa ( Ex. “SaredAcess..”) para trocarmos no código a ser compilado via Arduíno Ide.

    Sobre Hipótese alguma compartilhe essa chave, casa haja algum vazamento gere um novo token com o comando acima.

    Bibliotecas

    • PubSubClient

    A biblioteca em questão é uma biblioteca cliente para mensagens MQTT, onde este é um protocolo de mensagens leve, ideal para dispositivos pequenos, permitindo assim que você envie e receba mensagens MQTT.

    Para realizar a instalação da mesma basta seguir o procedimento:

    Abra a aplicação Arduíno Ide e clique sobre o ícone de bibliotecas ( ou library caso esteja em inglês)

    Pesquise por PubSubClient e caso você ja possua a biblioteca será exibida a seguinte tela:

    Caso precise realizar a instalação um botão com a opção INSTALL ficará visível conforma abaixo apresentando ainda opção de versão:

    Por padrão, as bibliotecas ESP8366WIFI e WIFICLIENTESECURITY  já ficam disponíveis, mas caso a versão de sua IDE Arduíno não as possua basta repetir o processo acima trocando o nome PubSubclient pelos respectivos nomes de bibliotecas a serem instaladas.

    Testando sua aplicação e fazendo a leitura dos dados via Microsoft Azure:

    Abra o terminal da Azure e digite o comando:

    az iot hub monitor-events --hub-name <NOME DO SEU HUB IOT> --device-id <ID DO SEU 
    DISPOSIVO> 
    
    
    

    Vale lembrar que o delay (atraso) de envio do código está ajustado para 60 segundos, podendo ser alterado de acordo com sua preferência.

    Para interromper o processo de leitura clique sobre o terminal e pressione as teclas “CTRL + C”.


    Conclusão

    Então, com tudo finalmente concluído, você pode monitorar os valores lidos de seu Esp8266 a partir da plataforma Azure!

    Por se tratar de uma plataforma em nuvem podem ser feita a consistência de dados via Power Bi, Bancos de dados e demais aplicações Web que suportem protocolo de comunicação com a plataforma.


    Sobre o Autor


    Lucas Schiavon Calu

     


    Eletrogate

    19 de junho de 2025

    A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

    Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

    Eletrogate Robô

    Assine nossa newsletter e
    receba  10% OFF  na sua
    primeira compra!