Projeto ESP32 Display e Sensor DHT22 Medindo Temperatura e Umidade
Nesse Projeto ESP32 com Display iremos usar o Sensor AM2302 para exibir informações de temperatura e umidade no display integrado do NodeMCU ESP32 Display OLED. Veremos como utilizar a...
por	Gustavo Teixeira	30/05/2019	4656	Visualizações
Nesse Projeto ESP32 com Display iremos usar o Sensor AM2302 para exibir informações de temperatura e umidade no display integrado do NodeMCU ESP32 Display OLED. Veremos como utilizar a biblioteca DHT para a interação com o sensor e usaremos funções da biblioteca SSD1306 para visualizar os dados na ESP.
O Sensor de Umidade e Temperatura AM2302, também conhecido como DHT22, é utilizado para medir a temperatura nas escalas de -40 a 125° C e umidade do ar nas faixas de 0 a 100%, contando com precisão que varia de 2 a 5%. Algumas de suas características mais relevantes são o baixo consumo de energia, a calibração totalmente automatizada e a saída única de sinal através de um barramento digital padrão e, acima de tudo, a sua fácil utilização. Como resultado disso, esse módulo é um grande aliado para o efetivo desenvolvimento de projetos.
Projeto ESP32 com Display OLED e Sensor AM2302 DHT22
Em primeiro lugar, no Projeto ESP32 Display OLED com Sensor DHT22 Medindo Temperatura e Umidade, vamos programar esse sensor na IDE do Arduino, precisaremos instalar a biblioteca DHT. Para isso, basta acessar o menu "Ferramentas", na IDE do Arduino, e clicar em "Gerenciar Bibliotecas…". Uma janela, como ilustrado abaixo, irá aparecer. No canto superior esquerdo, digite "DHT" e pressione "Enter", no teclado. Assim que o gerenciador encontrar a biblioteca que precisamos, ele a exibirá conforme ilustrado abaixo. Por fim, selecione a versão (nesse tutorial utilizamos a versão 1.2.3) e então clique em "Instalar" e aguarde o término do processo.
Para seguir esse tutorial esp32, tenha em mãos os materiais da seguinte lista:
1 NodeMCU ESP32 OLED
1 Sensor DHT22 AM2302
1 Resistor 270 ohms
Esquema do circuito do Projeto ESP32 Display + Sensor AM2302 DHT22
Com os materiais em mãos, é hora de montar o circuito! Verifique-o no diagrama abaixo.
A tensão de alimentação do sensor é de 3 – 5,5V, ou seja, podemos conectá-lo no Vin, como mostrado na figura acima, ou também na porta de 3V3, conforme seja necessidade do seu projeto. O cabo de dados foi conectado na porta 16.
Na sequência, vamos para o código. Na IDE do Arduino, cole o código abaixo. Lembre-se que, ao passar o código, deve-se pressionar o botão "Boot" na placa e, após o código ter sido carregado, pressiona-se o botão "EN" para que ele seja executado.
#include "DHT.h" #include "SSD1306.h" SSD1306 display(0x3c, 5, 4); DHT dht(16, DHT22); float t; //Temperatura float h; // Umidade void setup() { dht.begin(); display.init(); display.clear(); } void loop() { h = dht.readHumidity(); t = dht.readTemperature(); display.clear(); display.drawRect(10, 10, 80, 50); display.setFont(ArialMT_Plain_16); display.drawString(20, 14, (String)t+" °C"); display.drawString(20, 35, (String)h+" %"); display.flipScreenVertically(); display.display(); delay(1000); }
DHT dht(16, DHT22);
float t; //Temperatura
float h; // Umidade
display.drawRect(10, 10, 80, 50);
display.drawString(20, 14, (String)t+" °C");
display.drawString(20, 35, (String)h+" %");
Logo no início, há as inclusões de bibliotecas, DHT e SSD1306, usadas para o sensor AM2303 e o display, respectivamente. Em seguida, na linha 04, declaramos um objeto display, conectado nos pinos 5 e 4. Na linha 05, é declarado um objeto dht, do sensor de temperatura e umidade, conectado no pino 16. Nesse último, é especificado também o modelo, que no nosso caso é o DHT 22.
Em seguida, duas variáveis são criadas para armazenar os valores de temperatura e umidade.
No void setup, há duas inicializações de objetos, referentes ao sensor e ao display. Nelas são executadas rotinas de códigos internos à essas bibliotecas. Em seguida, a função display.clear() é utilizada para apagar quaisquer caracteres que poderiam haver no display, de códigos passados anteriormente.
Já no void loop, nas linhas 17 e 18, são executadas duas funções de leitura do sensor, uma para a umidade e outra para a temperatura. Essas funções são provenientes da biblioteca DHT. Na sequência, da linha 20 até 26, criamos o retângulo na tela, apenas para efeito estético. Além disso, nas linhas 23 e 24, escrevemos os valores de temperatura e umidade, respectivamente. Ainda, note que foi utilizado um (String) antes da variável h, apenas por questões de formalização, explicitando para o compilador encarar o h como uma String. Também utilizamos o operador + para concatenar (juntar) a variável t e h com o símbolo de graus centígrados e percentagem, respectivamente.
Finalmente, na linha 25 é executado uma função para inverter o display, que utilizamos apenas para representar melhor o projeto na protoboard. Essa linha pode ser removida, sem prejuízo a funcionalidade do código, caso o seu projeto não necessite dela. Em seguida, é executada a função que exibe todas as configurações anteriormente passadas. Por fim, há um delay de um segundo, visto que no ambiente em que fizemos o projeto não há alterações bruscas na temperatura ou umidade.
Com o desenvolvimento desse projeto ESP32 com Display OLED e Sensor AM2302 DHT22 Medindo Temperatura e Umidade, espera-se ter contribuído para o conhecimento do prezado leitor. Certamente projetos como esse servirão de base para aplicações muito mais complexas. Diversos conceitos aprendidos aqui poderão ser aplicados em outras situações. Assim como poderão ajudar a construir soluções para situações diferentes. Fique por dentro do blog para novos tutoriais!