Índice:

Sensor infravermelho com ESP8266: 6 etapas
Sensor infravermelho com ESP8266: 6 etapas

Vídeo: Sensor infravermelho com ESP8266: 6 etapas

Vídeo: Sensor infravermelho com ESP8266: 6 etapas
Vídeo: SENSOR INFRAVERMELHO COM ESP8266 2024, Julho
Anonim
Image
Image
WiFi ESP8266 NodeMcu ESP-12E
WiFi ESP8266 NodeMcu ESP-12E

Nosso objetivo desta vez é criar um programa que irá ler a temperatura ambiente de qualquer objeto que aponte em direção ao nosso sensor. Para fazer isso, usaremos neste projeto um nodeMCU ESP8266, um sensor infravermelho MLX90614 e um display OLED de 96 , que exibirá os dados de temperatura.

Etapa 1: WiFi ESP8266 NodeMcu ESP-12E

Etapa 2: Sensor infravermelho

Sensor infravermelho
Sensor infravermelho

O sensor infravermelho MLX90614 usado nesta configuração é na verdade um tipo de camcorder. Captura imagens por meio do CCD (Charged Coupled Device), sistema muito semelhante ao utilizado em câmeras digitais estáticas. Assim, ele registra a quantidade de infravermelho que sai do objeto e, com essa quantidade, calcula a temperatura. É muito preciso.

Etapa 3: Exibir OLED

Exibir OLED
Exibir OLED

Etapa 4: Montagem

conjunto
conjunto

Este é um esquema muito simples. Tenho uma tabela aqui que permite uma fácil visualização.

ESP8266 - OLEDD5 - SCL

D7 - SDA

D3 - RES

D4 - DC

D8 - CS

3, 3v - VCC

GND - GND

MLX90614

D1 - SCL

D2 - SDA

3, 3v - VCC

GND - GND

Etapa 5: Bibliotecas

Bibliotecas
Bibliotecas
Bibliotecas
Bibliotecas

Para usar o display OLED, adicione a seguinte biblioteca "Adafruit-GFX-Library-master".

Basta acessar "Sketch >> Incluir Bibliotecas >> Gerenciar Bibliotecas…"

Além disso, adicione a seguinte biblioteca "Adafruit Unified Sensor".

Os links para download das bibliotecas estão no PDF, disponível logo abaixo.

Etapa 6: Código Fonte

Começaremos definindo as bibliotecas e constantes que usaremos durante nosso código.

#include // Biblioteca para I2C # include // Biblioteca para comunicação com o sensor #include // Biblioteca para propriedades gráficas #include // Biblioteca para comunicação com dipsplay OLED // pinagem para o NodeMCU ESP8266 #define sclk D5 #define mosi D7 #define cs D8 #define rst D3 #define dc D4 // definição das cores que serão utilizadas #define BLACK 0x0000 #define WHITE 0xFFFF // definição da coordenada onde escreveremos cada um dos dados #define POS_X_AMBIENTE 2 #define POS_Y_AMBIENTE 35 #define POS_Y_AMBIENTE 35 #define POS_X_AMBIENTE 35 #define POS_X_AMBIENTE 35 2 #define POS_Y_OBJETO 55 #define POS_X_TITULO 10 #define POS_Y_TITULO 4 // construtor do objeto para comunicar com o display OLED Adafruit_SSD1331 display = Adafruit_SSD1331 (cs, dc, mosi, sclk, rst); // objeto responsável pela comunicação com o sensor infravermelho IRTherm sensor; // variáveis que armazenarão o valor das temperaturas lidas float tempAmbiente; float tempObjeto;

Configurar

Na função setup (), inicializaremos nosso objeto de comunicação com o sensor, bem como o objeto de comunicação com o display. Aqui estão algumas configurações para cada um deles.

void setup () {// Inicializa sensor de temperatura infravermelho sensor.begin (); // Seleciona temperatura em Celsius sensor.setUnit (TEMP_C); // podemos ainda utilizar TEMP_F para Fahrenheit // ou TEMP_K para Kelvin // inicializa o objeto para comunicarmos com o display OLED display.begin (); // tela inteira do preto display.fillScreen (BLACK); // configura o tamnaho do texto que escreveremos na tela display.setTextSize (0); // configura a cor branca para o texto display.setTextColor (WHITE); // os comandos abaixo posicionam o cursor no (x, y) desejado para seguir escrevermos na tela display.setCursor (POS_X_TITULO, POS_Y_TITULO); display.print ("TEMPERATURA"); display.setCursor (POS_X_TITULO + 20, POS_Y_TITULO + 15); display.print ("("); display.print ((char) 247); // símbolo de graus display.print ("C)"); display.setCursor (POS_X_AMBIENTE, POS_Y_AMBIENTE); display.print ("AMB:"); // AMBIENTE display.setCursor (POS_X_OBJETO, POS_Y_OBJETO); display.print ("OBJ:"); // OBJETO}

Ciclo

Na função loop (), vamos ler os dados do sensor e depois exibi-los no display OLED.

// chamamos o método "ler" do sensor para realizar a leitura da temperatura // ler retornará 1 caso consiga realizar a leitura, ou 0 caso contrário if (sensor.read ()) {// recuperar a leitura da temperatura do ambiente tempAmbiente = sensor.ambiente (); // recupera a leitura da temperatura do objeto apontado pelo sensor tempObjeto = sensor.object (); // limpa uma área onde colocamos o valor da temperatura do ambiente e do objeto display.fillRect (POS_X_AMBIENTE + 35, POS_Y_AMBIENTE, 35, 10, BLACK); display.fillRect (POS_X_OBJETO + 35, POS_Y_OBJETO, 35, 10, BLACK); // posiciona o cursor e pede a temperatura ambiente display.setCursor (POS_X_AMBIENTE + 35, POS_Y_AMBIENTE); display.print (tempAmbiente); display.print ((char) 247); // símbolo de graus // posiciona o cursor e leva a temperatura do objeto que o sensor está local display.setCursor (POS_X_OBJETO + 35, POS_Y_OBJETO); display.print (tempObjeto); display.print ((char) 247); // símbolo de graus} delay (1000); // intervalo de 1 segundo para a próxima leitura}

Recomendado: