Termômetro IR IoT usando MLX90614 e ESP8266 em Blynk
Neste projeto, construiremos nosso próprio termômetro infravermelho baseado em IoT usando MLX90614 e ESP8266 e monitoraremos a temperatura no aplicativo Blynk. Este termômetro infravermelho DIY é o termômetro sem contato de baixo custo para medir a temperatura corporal ou a temperatura de corpos muito quentes. Um termômetro infravermelho é um dispositivo que mede a radiação infravermelha emitida por um objeto. Radiação infravermelha significa um tipo de radiação eletromagnética abaixo do espectro visível da luz.
O IR Temperature Sensor MLX90614 da Melexis pode ser facilmente conectado a qualquer microcontrolador usando o protocolo SMBus, que é semelhante ao protocolo I2C. Aqui, faremos a interface do Sensor MLX90614 com NodeMCU ESP8266 e display OLED de 0,96″.
Vamos conectar o ESP8266 à rede WiFi e enviar os dados de temperatura, ou seja, temperatura ambiente e temperatura do objeto para o painel de aplicativos Blynk. Blynk é uma plataforma IoT que permite construir rapidamente interfaces para controlar e monitorar seus sensores de hardware a partir de seu smartphone.
Conteudo
Lista de Materiais
O termômetro infravermelho baseado em IoT requer os seguintes componentes. Todos os componentes podem ser facilmente adquiridos no MercadoLivre ou outros sites no Brasil.
Nome dos Componentes | Descrição | Quantidade | |
---|---|---|---|
1 | NodeMCU | ESP8266 12E Board | 1 |
2 | IR Temperature Sensor | Sensor de temperatura GY-906 MLX90614 IR | 1 |
3 | OLED Display | 0.96″ I2C OLED Display | 1 |
4 | Fios de Ligação | Fios de Ligação | 10 |
5 | ProtoBoard | 1 |
Sensor de temperatura infravermelho sem contato MLX90614
O MLX90614 é um sensor de temperatura digital sem contato infravermelho (IR) da Melexis. O sensor pode ser usado para medir a temperatura de um determinado objeto entre -70° C e 382,2° C. O sensor usa raios infravermelhos para medir a temperatura do objeto sem nenhum contato físico. Você pode verificar o princípio de funcionamento do termômetro infravermelho aqui: Termômetro infravermelho funcionando MLX90614
O sensor MLX90614 se comunica com o microcontrolador usando o protocolo SMBus, que é semelhante ao protocolo I2C. Assim, o sensor possui 4 pinos: VCC, GND, SDA e SCL. O sensor opera entre 3,3 V a 5 V com um requisito de corrente de 1,5mA. A precisão do sensor é de 0,02 ° C. O sensor possui um ADC de 17 bits que permite a leitura da temperatura com uma resolução menor de 0,0007. A melhor maneira de ler os dados precisos do sensor é colocando o sensor a uma distância de 2 a 5cm com um campo de visão em um ângulo de 80°.
Você pode aprender em detalhes sobre o Sensor de Temperatura IR MLX90614 em nosso artigo anterior ou no DataSheet MLX90614.
Diagrama de circuito e conexão: MLX90614 + NodeMCU + display OLED
Agora, vamos fazer a interface do sensor de temperatura IR MLX90614 com NodeMCU ESP8266 e display OLED. O diagrama de conexão é fornecido abaixo.
Conecte o pino VCC do MLX90614 e o visor OLED ao pino de 3,3V do NodeMCU ESP8266 e o GND ao GND. Da mesma forma, conecte o pino SDA e SCL de MLX90614 a D2 e D1 de NodeMCU respectivamente.
Configurando o aplicativo Blynk
O termômetro IR baseado em IoT envia os dados do sensor em qualquer Cloud Platform. A plataforma de nuvem que selecionei é o aplicativo Blynk. Blynk é uma ótima plataforma de IoT que pode controlar o hardware remotamente, exibir dados do sensor, armazenar dados, visualizá-los e fazer muitas outras coisas legais.
Portanto, baixe e instale o aplicativo Blynk na Google Play Store. Os usuários do IOS podem fazer o download na App Store. Assim que a instalação for concluída, abra o aplicativo e inscreva-se usando seu ID de e-mail e senha.
No painel, clique em New Project e selecione NodeMCU Board & Wifi Connection. Em seguida, clique em Criar. (Com as Setas em Vermelho)
Em seguida, no canto superior direito da tela, há um sinal “+” onde você precisa clicar. Em seguida, na lista, selecione 2 medidores e atribua-os como Pino Virtual 1 e Pino Virtual 2 para Temperatura Ambiente e Temperatura do Objeto. Você pode reorganizar ou redimensionar o widget na tela de acordo com seu desejo.
Vá para a configuração e clique em Enviar e-mail. O código de autenticação será enviado para o Mail. Este código de autenticação será usado no Código ESP8266.
Código Fonte / Programa
O código-fonte / programa para NodeMCU ESP8266, MLX90614 e Blynk é escrito em Arduino IDE. O código requer a Biblioteca MLX90614 para compilação. Além da Biblioteca MLX90614, também requer a Biblioteca Blynk. Portanto, primeiro baixe as bibliotecas do link abaixo e adicione-as à pasta Arduino IDE Library.
1. Baixe a biblioteca Adafruit MLX90614
2. Baixe a Biblioteca Blynk
char auth[] = "bOTy***********115buIiZC"; // Blynk Auth Token char ssid[] = "***************"; // Seu SSID WiFi char pass[] = "***************"; // Sua senha WiFi
Altere o SSID e a senha do Wifi. Além disso, insira o token de autenticação que você obteve do Blynk. Eu adicionei um fator de calibração de 2,36 para calibrar a leitura da temperatura do objeto. Você pode adicionar o seu próprio na parte do código.
O código-fonte completo é fornecido abaixo
#include <Wire.h> #include <Adafruit_MLX90614.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define BLYNK_PRINT Serial #include <Blynk.h> #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> #define SCREEN_WIDTH 128 // Largura da tela OLED, em pixels #define SCREEN_HEIGHT 64 // Altura da tela OLED, em pixels #define OLED_RESET -1 // Redefina o pino # (ou -1 se estiver compartilhando o pino de redefinição do Arduino) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); Adafruit_MLX90614 mlx = Adafruit_MLX90614(); double temp_amb; double temp_obj; double calibration = 2.36; char auth[] = "bOTyO9tRJyp8d0FLY8CoFyW115buIiZC"; // Você deve obter o Auth Token no aplicativo Blynk. char ssid[] = "Alexahome"; // Suas credenciais de WiFi. char pass[] = "loranthus"; void setup() { Serial.begin(9600); mlx.begin(); //Inicializar MLX90614 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //inicializar com o addr I2C 0x3C (128x64) Blynk.begin(auth, ssid, pass); Serial.println("Sensor de temperatura MLX90614"); display.clearDisplay(); display.setCursor(25,15); display.setTextSize(1); display.setTextColor(WHITE); display.println(" Termômetro"); display.setCursor(25,35); display.setTextSize(1); display.print("Inicializando"); display.display(); delay(2500); } void loop() { // Leitura da temperatura ambiente e temperatura do objeto // para ler os valores Fahrenheit, use //mlx.readAmbientTempF() , mlx.readObjectTempF() ) Blynk.run(); temp_amb = mlx.readAmbientTempC(); temp_obj = mlx.readObjectTempC(); //Serial Monitor Serial.print("Temp Quarto = "); Serial.println(temp_amb); Serial.print("Temp Objeto = "); Serial.println(temp_obj); display.clearDisplay(); display.setCursor(25,0); display.setTextSize(1); display.setTextColor(WHITE); display.println(" Temperatura"); display.setCursor(10,20); display.setTextSize(1); display.print("Ambiente: "); display.print(temp_amb); display.print((char)247); display.print("C"); display.setCursor(10,40); display.setTextSize(1); display.print("Objeto: "); display.print(temp_obj + calibration); display.print((char)247); display.print("C"); display.display(); Blynk.virtualWrite(V1, temp_amb); Blynk.virtualWrite(V2, (temp_obj + calibration)); delay(1000); }
Testando termômetro infravermelho baseado em IoT em Blynk
Depois de fazer upload do código, você pode começar a testar o termômetro infravermelho baseado em IoT. Assim que você faz o upload do código, o display OLED de 0,96 ″ começa a exibir a temperatura ambiente, bem como a temperatura do objeto.
Você pode então verificar seu aplicativo Blynk. O aplicativo Blynk exibirá o valor da temperatura em formato de medidor, conforme mostrado na imagem abaixo.
Portanto, é assim que você pode construir seu próprio termômetro infravermelho baseado em IoT usando o aplicativo MLX90614, ESP8266 e Blynk. Este projeto pode ser melhorado adicionando um Sensor Ultrassônico ao circuito e código para detectar a distância adequada. Você pode usar qualquer outra plataforma IoT, como Thingspeak, Ubidots ou Adafruit IO, caso não queira usar o Blynk.