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:
Para fazer este projeto, iremos precisar dos seguintes materiais e serviços:
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:
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.
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.
Observação: Pode ser utilizada configuração invertida dos componentes caso deseje implementar lógica inversa (coeficiente positivo ou negativo durante medição).
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:
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.
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.
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”.
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.
|
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!