Arduino DTH22 Temperatura de Umidade com Tela LCD I2C 16x2
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Sobre este projeto
Por dois anos meu filho (7) teve o desejo de ter uma cobra de estimação. Por fim, ele comprou duas cobras com terrário. Para manter as cobras em um ambiente confortável para elas, precisamos monitorar a temperatura e a umidade.
Então, compramos um sensor analógico de umidade / temperatura e descobrimos que não era tão fácil manter os dois em um bom nível. Como eu estava morrendo de vontade de iniciar um projeto com meu Arduino Uno recém-comprado, parecia uma boa ideia usar um sensor de umidade / temperatura e deixar o Arduino fazer a automação de temperatura e umidade no terrário. Por isso comprei um sensor de umidade / temperatura DTH22 e um display LCD I2C 16x2 e tentei.
Este tutorial é a base deste projeto. Não há nenhuma automação neste tutorial. Basta usar o DTH22 e um display LCD I2C.
Eu vi outro tutorial para este propósito, mas este estava usando um LCD sem o I2C. Se você não tem o I2C conectado ao seu LCD, dê uma olhada neste tutorial de ThothLoki
Hardware necessário
- Qualquer Arduino 5V (neste caso, Arduino Uno R3)
- Sensor de umidade / temperatura DTH22
- Display LCD 16x2 com I2C montado nele
- Placa de ensaio
- 6 fios de ligação macho / macho
- 4 fios de ligação macho / fêmea
Bibliotecas necessárias
- Adafruit_Sensor
- DHT
- NewliquidCrystal
Antes de começar
Eu gosto do LCD 16x2 com um I2C montado porque ele evita o trabalho de todos os pinos que podem ou não precisar ser conectados ao Arduino. Você só precisa de 4 fios de jumper e pronto.
O display possui um endereço I2C para aceitar comandos ou enviar mensagens. A desvantagem é que você precisa descobrir qual endereço ele usa antes de continuar. Não vou entrar em detalhes aqui, mas no fórum do Arduino você pode ler tudo sobre isso.
No meu caso, nosso dispositivo usa o endereço 0x3F , se o seu dispositivo também usa esse endereço, você tem sorte, basta copiar o nosso código.
Conecte a placa de ensaio ao Arduino
O sensor DHT22 e o LCD 1602 I2C usam uma fonte de alimentação de 5V. Portanto, conectei o pino de 5 V do meu Arduino à linha vermelha + na placa de ensaio e o aterramento do meu Arduino à linha azul - na placa de ensaio. Como quero manter as cores sincronizadas, no meu esquema usarei cabos vermelhos para 5V e cabos azuis para aterramento. Na vida real eu não usei o azul para o chão, mas o branco ... tenho brincado muito com a eletrônica do carro, eu acho.
Vou usar um cabo amarelo para dados, um cabo laranja para SDA e um cabo cinza para SCL. A letra dois estará no I2C.
Adicionando o sensor DHT22
Vamos dar uma olhada na pinagem. O sensor DHT22 (como o DHT11) tem quatro pinos. Coloco o sensor DHT22 na placa de ensaio com a frente voltada para fora. Desta forma, o primeiro pino (alimentação de 5 V) fica à direita (veja o esquema).
Eu uso um pequeno cabo jumper vermelho para conectar o VCC de 5 V à linha de 5 V (+) na placa de ensaio. E um pequeno cabo jumper azul para conectar o aterramento à linha de aterramento (-) na placa de ensaio. Peguei um longo cabo amarelo para conectar o segundo pino, o pino de dados, ao Arduino. Como são dados digitais, conectei na porta de dados 4 do Arduino. Em outros exemplos, você provavelmente verá pessoas usando a porta 7, ambas funcionarão. Usei a porta 4 porque previ que usarei mais portas de dados e queria salvar a porta 7 para garantir. Você também verá isso no esquema.
Adicionando o LCD 16x2 I2C
O LCD 16x2 I2C também possui 4 pinos. Olhando a foto abaixo, da esquerda para a direita:
- Terrestre
- VCC (5V)
- SDA
- SCL
Conecte o primeiro pino (esquerdo) à linha de aterramento (-) na placa de ensaio. Conecte o segundo pino ao vermelho da linha 5V (+) da placa de ensaio. Eu uso um Arduino Uno que possui as conexões I2C em A4 (SDA) e A5 (SCL). Então eu conectei o terceiro pino ao A4 e o quarto pino ao conector A5 do Arduino.
O código
Lembre-se de que para a tela você pode ter um endereço diferente para se conectar. Meu I2C usa o endereço 0x3F (consulte a parte 'Antes de começar'), portanto, tome cuidado, pois meu código está configurado para este endereço.
Lembre-se das bibliotecas necessárias (Adafruit_Sensor, DHT, NewliquidCrystal). Baixe essas bibliotecas, descompacte-as e coloque-as no diretório de bibliotecas do seu projeto.
Em seguida, faça o upload do código para o seu Arduino e verifique a umidade e a temperatura do seu terrário (ou gabinete do servidor, ou geladeira ou apenas sua sala de estar).
Código
- higroThermo.ino
higroThermo.ino C / C ++
/ * Como usar o sensor DHT-22 com Arduino uno Sensor de temperatura e umidade Mais informações:http://www.ardumotive.com/how-to-use-dht-22-sensor-en.html Dev:Michalis Vasilakis // Data:1/7/2015 // www.ardumotive.com * /// Bibliotecas # incluem#include #include #include // Constantes # define DHTPIN 4 // a qual pino estamos conectados # define DHTTYPE DHT22 // DHT 22 (AM2302) DHT dht (DHTPIN, DHTTYPE); //// Inicializar o sensor DHT para Arduino 16mhz normal // SEMPRE USE ISTO COM LCD I2C e endereços 0x3F # define I2C_ADDR 0x3F # define BACKLIGHT_PIN 3 # define En_pin 2 # define Rw_pin 1 # define Rs_pin 0 # define D4_pin 4 # define D5_pin 5 #define D6_pin 6 # define D7_pin 7LiquidCrystal_I2C lcd (I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); // Variablesint chk; float hum; // Armazena o valor da umidadefloat temp; // Armazena a temperatura valueevoid setup () {Serial.begin (9600); dht.begin (); lcd.begin (16,2); lcd.setBacklightPin (BACKLIGHT_PIN, POSITIVO); lcd.setBacklight (HIGH);} void loop () {delay (2000); // Lê os dados e armazena-os nas variáveis hum e temp hum =dht.readHumidity (); temp =dht.readTemperature (); // Imprime os valores de temperatura e umidade no monitor serial Serial.print ("Umidade:"); Serial.print (hum); Serial.print ("%, Temp:"); Serial.print (temp); Serial.println ("Celsius"); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Temp:"); lcd.print (temp); lcd.print (""); lcd.print ((char) 223); lcd.print ("C"); lcd.setCursor (0,1); lcd.print ("Hum:"); lcd.print (hum); lcd.print ("%"); atraso (2000); // Atrasar 2 seg.}
Esquemas
Esquema Fritzing schema_UcHE1qRu2t.fzzProcesso de manufatura
- Comunicação Arduino I2C com Raspi 2 WIOT
- Painel LCD com Arduino para o simulador de vôo
- Capturando as gotas de água com Arduino
- Registrador de dados de temperatura e umidade
- Brincando com Nextion Display
- Exibindo uma imagem em uma tela LCD TFT com o Arduino UNO!
- BME280 Temperatura, Umidade e Pressão na Tela Nextion
- Osciloscópio DIY 10Hz-50kHz em tela LCD 128x64
- u-blox LEA-6H 02 Módulo GPS com Arduino e Python
- Despertador simples com DS1302 RTC