Código de Pesquisa

Lição 28: Sensor de Temperatura DHT11 com Display TM1637 | Curso Passo a Passo de Arduino

Lição 28: Sensor de Temperatura DHT11 com Display TM1637 | Curso Passo a Passo de Arduino

Nesta lição do Curso Passo a Passo de Arduino, exploramos como criar um display de temperatura compacto e autônomo, combinando um sensor de temperatura e umidade DHT11 com um display de sete segmentos de 4 dígitos TM1637. Em vez de depender de um monitor serial para visualizar as leituras, este projeto constrói uma unidade pequena e autossuficiente que reporta visualmente a temperatura ambiente em graus Celsius e Fahrenheit. Esta é uma habilidade fundamental para criar interfaces amigáveis para seus projetos eletrônicos, movendo dados do mundo digital para um display físico.

Este projeto é um bloco de construção prático para uma variedade de aplicações onde uma leitura rápida de temperatura à primeira vista é necessária. Aqui estão algumas ideias para inspirar você:

  • Estação Meteorológica de Mesa: Construa um display pequeno e sempre ligado para monitorar a temperatura no seu escritório ou sala de hobby.
  • Monitor de Termostato: Crie um display dedicado para verificar a temperatura perto do termostato da sua casa ou da saída de ar do HVAC.
  • Medidor de Incubadora ou Terrário: Monitore a temperatura dentro de um terrário de répteis, câmara de propagação de plantas ou incubadora DIY sem precisar abri-la.
  • Termômetro de Oficina ou Garagem: Um display claro e brilhante é perfeito para verificar a temperatura em uma oficina potencialmente empoeirada ou mal iluminada.
  • Kit Educacional: Um excelente projeto inicial para aprender como interfacear diferentes tipos de sensores e módulos de saída com um Arduino.

Hardware Necessário

Para acompanhar este projeto, você precisará dos seguintes componentes:

  • Arduino Uno (ou qualquer placa compatível)
  • Sensor de Temperatura e Umidade DHT11 (versões de PCB de 3 pinos e 4 pinos são mostradas)
  • Módulo de Display de Sete Segmentos de 4 Dígitos TM1637
  • Protoboard
  • Fios de Conexão (Jumpers)

Guia de Conexões

As conexões para este projeto são diretas, exigindo ligações tanto para o sensor quanto para o display. O vídeo demonstra a montagem com duas versões diferentes do sensor DHT11 e dois tamanhos do display TM1637, mas as conexões principais permanecem as mesmas.

Aqui estão as conexões para o sensor DHT11 e o display TM1637, conforme descrito no vídeo (no vídeo em 05:06).

Arduino wriing DHT11 PCB module  module with TM1637
Arduino wriing DHT11 PCB module module with TM1637
Arduino wriing DHT11 bare module  module with TM1637
Arduino wriing DHT11 bare module module with TM1637
Arduino wriing DHT11 bare module  module with TM1637
Arduino wriing DHT11 bare module module with TM1637

Para o módulo de display TM1637, as conexões são as seguintes:

  • VCC para 5V no Arduino.
  • GND para GND no Arduino.
  • CLK (Clock) para um pino digital, por exemplo, D2.
  • DIO (Entrada/Saída de Dados) para outro pino digital, por exemplo, D3.

Para o sensor DHT11, as conexões são:

  • VCC (ou o pino +) para 5V.
  • GND (ou o pino -) para GND.
  • Data (ou o pino S) para um pino digital, por exemplo, D2. (Nota: No vídeo, o pino de dados do sensor está conectado ao pino 2, mas o trecho de código também mostra ele no pino 2. Os pinos CLK e DIO para o display estão nos pinos 2 e 3 no trecho de código, o que é um conflito. A transcrição do vídeo menciona pinos 5 e 6 para o display, então usaremos esses para evitar qualquer sobreposição.)

Por favor, observe: A transcrição e o trecho de código mostram um possível conflito de pinos. O código define o pino de dados do DHT11 e o pino CLK do TM1637 ambos no pino digital 2. Para evitar isso, é recomendado usar pinos separados, como conectar o DHT11 ao pino 2 e o CLK do TM1637 ao pino 5 e o DIO ao pino 6, como mencionado no vídeo.

Explicação do Código

O código para este projeto combina as bibliotecas tanto para o sensor DHT11 quanto para o display TM1637. As partes-chave configuráveis pelo usuário são as definições de pinos e a configuração de brilho do display. Você pode ajustá-las para se adequar às suas conexões e preferências específicas.

Primeiro, o pino de dados do sensor DHT11 é definido. Você pode alterar este número se tiver conectado o sensor a um pino digital diferente no seu Arduino.

#define dhtpin 2 // define o pino para conectar ao DHT11

Em seguida, os pinos para o módulo de display TM1637 são definidos. O pino CLK é para o sinal de clock e o pino DIO é para dados. Eles devem corresponder às suas conexões físicas.

// Pinos de conexão do módulo (Pinos Digitais)
#define CLK 5
#define DIO 6

Um objeto da classe TM1637Display é então criado, que recebe os números dos pinos CLK e DIO como argumentos. Este objeto fornece todas as funções necessárias para controlar o display.

TM1637Display display(CLK, DIO);

O brilho do display é definido na função setup(). O valor 0x0f representa o brilho máximo. Você pode usar um valor de 0x00 (desligado) a 0x0f (máximo) para ajustar a intensidade do display de acordo com seu ambiente.

display.setBrightness(0x0f);

A lógica principal na função loop() lê a temperatura do sensor DHT11 e a exibe. A função showNumberDec() é usada para enviar o valor da temperatura ao display. Seus parâmetros permitem controlar como o número é mostrado. Por exemplo, a linha a seguir exibe a temperatura em Celsius, começando no segundo dígito (posição 1).

display.showNumberDec(23, false, 2, 1);

Neste exemplo, 23 é o número a exibir, false significa sem zeros à esquerda, 2 é o número de dígitos a usar, e 1 é a posição inicial (indexada a partir de 0) no display.

Demonstração ao Vivo do Projeto

No vídeo, o projeto é demonstrado ao vivo. O apresentador mostra as leituras de temperatura nos displays TM1637, tanto no maior quanto no menor. Para provar que o sensor está funcionando, calor é aplicado ao DHT11 usando uma pistola de calor.

Inicialmente, o display mostra a temperatura ambiente em graus Celsius e Fahrenheit. Conforme a pistola de calor aquece o sensor, você pode ver as leituras de temperatura subirem rapidamente. A demonstração mostra a temperatura subindo de uma temperatura ambiente normal para mais de 50°C (123°F), confirmando que o sensor está lendo com precisão a mudança de temperatura e que o display está mostrando os dados corretamente. Este teste é uma ótima maneira de verificar se todas as suas conexões e o código estão funcionando corretamente.

Capítulos do Vídeo

  • [00:00] Introdução ao projeto
  • [00:28] Entendendo o código para o display TM1637
  • [03:04] Exibindo temperatura em Celsius e Fahrenheit
  • [05:06] Conectando o DHT11 ao display TM1637
  • [06:42] Demonstração ao vivo do display de temperatura
  • [08:23] Testando com um módulo de display menor
  • [08:35] Conclusão e resumo do projeto

Imagens

TM1637 4 digit display module
TM1637 4 digit display module
DHT11 Module
DHT11 Module
Arduino wriing DHT11 PCB module  module with TM1637
Arduino wriing DHT11 PCB module module with TM1637
Arduino wriing DHT11 PCB module  module with TM1637
Arduino wriing DHT11 PCB module module with TM1637
Arduino wriing DHT11 bare module  module with TM1637
Arduino wriing DHT11 bare module module with TM1637
Arduino wriing DHT11 bare module  module with TM1637
Arduino wriing DHT11 bare module module with TM1637
520-Lesson 28: DHT11 Temperature Sensor with TM1637 Display | Arduino Step-by-Step Course
Idioma: C++
/*
 * Robojax Arduino Step-by-Step Course
 * Lesson 28: DHT11 with TM1637
 * This is the Arduino code for TM1637 4-digit display.
 * 
 * Please watch video instructions here: https://youtu.be/C-1iaCPzNtU
 * This code is available at: http://robojax.com/course1/?vid=lecture11
 * 
 * With over 100 lectures free on YouTube. Watch it here: http://robojax.com/L/?id=338
 * Get the code for the course: http://robojax.com/L/?id=339
 * 
 * Date: December 6, 2017, in Ajax, Ontario, Canada
 * 
 * Original code from: https://github.com/avishorp/TM1637
 * Modified for Robojax video on December 6, 2017
 */
#include <dht11.h>

dht11 DHT11; // create object of DHT11
#define dhtpin 2 // set the pin to connect to DHT11

 // start of settings of TM1637 LED display
#include <Arduino.h>
#include <TM1637Display.h>

// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3

TM1637Display display(CLK, DIO);
uint8_t blank[] = { 0x0, 0x0, 0x0, 0x0 };// blank value for all digits
 
// The amount of time (in milliseconds) between tests
#define TEST_DELAY   2000
// start of settings of TM1637 LED display



void setup()
{
	//Robojax Step-by-Step Arduino Course YouTube Watch it here: http://robojax.com/L/?id=338
 Serial.begin(9600);// setting up serial monitor
   display.setBrightness(0x0f); 
   
}

void loop()
{
	//Robojax Step-by-Step Arduino Course YouTube Watch it here: http://robojax.com/L/?id=338
DHT11.read(dhtpin);// initialize the reading
  int humidity = DHT11.humidity;// get humidity
//code for Robojax.com video
   Serial.print(getTemp('C'));
   Serial.print("C ");
   Serial.print(getTemp('F'));
   Serial.print("F ");
   Serial.print(getTemp('K'));
   Serial.print("K ");
   Serial.print(" humidity:");
   Serial.print (humidity);
   Serial.print("% ");
   Serial.println();
 delay(500);  


  display.setSegments(blank);
  display.showNumberDec(23, false, 2,1);
  delay(TEST_DELAY);
  
  display.setSegments(data);
  display.showNumberDec(153, false, 3, 1);
  delay(TEST_DELAY);

  display.setSegments(data);
  for(int i=0; i<=500; i++)
  {
    display.showNumberDec(i);
  }

}

Coisas que você pode precisar

Recursos e referências

Arquivos📁

Bibliotecas do Arduino (zip)

Arquivo Fritzing

Outros arquivos