Projecto de sensor de temperatura e humidade Arduino DHT11

Linha do sensor DHT

A linha de sensores DHT (DHT11/22) é uma das mais utilizadas em muitos projectos electrónicos, desde estações meteorológicas domésticas a sistemas de automação de fábricas, devido à sua simplicidade e compacidade como sensor de temperatura/humidade. Embora o mais preciso e caro DHT22 possa ser substituído (com algumas alterações no código), o módulo sensor DHT11 será utilizado neste projecto. Com uma interface básica de 3 pinos, o sensor DHT11 que será usado neste projecto não é a versão autónoma de 4 pinos, mas sim um módulo de 3 pinos que tem um condensador e uma resistência pull-up incorporados, eliminando assim a necessidade de componentes adicionais na construção deste circuito. Assim, quando ligado a uma placa Arduino, o módulo de sensor DHT11 pode ser directamente ligado a um pino digital que processa e alimenta os dados em série do sensor para o microcontrolador, para que possamos ler.

Neste Projecto PCBA DIYOs dados de temperatura e humidade do sensor DHT11 serão apresentados num ecrã OLED (diodo orgânico emissor de luz) de 0,96″ 128×64 para leitura visível. Uma vantagem da utilização de um ecrã OLED i2c em comparação com outros tipos de ecrã é que só requer uma ligação de 4 fios à placa Arduino e, com uma grande variedade de bibliotecas, pode ser programado com facilidade. Uma característica notável de um ecrã OLED é a sua clareza, nitidez e qualidade visual dos textos, figuras e imagens que pode apresentar.

Em suma, este é um projecto de circuito bastante simples, adequado para principiantes, uma vez que requer apenas alguns componentes e algumas competências básicas de programação. No entanto, para aqueles que são mais avançados, este projecto pode definitivamente ser melhorado e actualizado para adicionar mais funcionalidades, como a comunicação sem fios (RF, LoRa, PCB BluetoothWi-Fi, etc.), dados RTC (relógio em tempo real), dados de sensores adicionais (altitude, pressão atmosférica, concentrações de gás, etc.) e muitas outras funcionalidades. Para realizar este projecto, é necessário adquirir componentes:

  • Arduino Nano (outras placas compatíveis com Arduino também funcionam)
  • Cabo USB (compatível com a placa Arduino)
  • Prancheta
  • Fios de ligação macho-macho (7)
  • Ecrã OLED 0,96″ 128×64 i2c
  • Módulo sensor DHT11

Cablagem

Se estiver a utilizar uma placa de desenvolvimento diferente, pode ser necessário um tipo diferente de placa de ensaio. Para este projecto, a FS Technology está a utilizar um Arduino Nano, o que requer a utilização de uma placa de circuito impresso. No entanto, se for utilizado um Arduino Uno, os fios do jumper podem ser ligados directamente aos pinos da placa, eliminando a necessidade da placa de circuito impresso. Apesar da mudança de placa, a cablagem do módulo sensor DHT11 e do ecrã OLED para a placa Arduino mantém-se consistente. Além disso, o diagrama de ligações para o circuito do sensor de temperatura e humidade DHT11 é fornecido abaixo.

  • Módulo do sensor DHT11: Ligar o pino de sinal (S) do sensor a D2, o pino positivo (+) a +5v e o pino negativo (-) a GND.
  • OLED: Ligar SDA (dados de série) a A4, SCL/SCK (relógio de série) a A5, VDD/VCC (tensão de alimentação) a +5v e GND a GND.
  • Agora, pode ligar a sua placa Arduino ao computador através do cabo USB.
Sensor de temperatura e humidade DHT11

Código do projecto

#inclui <Wire.h> 

#inclui <Adafruit_GFX.h> 

#inclui <Adafruit_SSD1306.h> 

 

#definir largura_do_ecrã 128 

#definir altura do ecrã 64

#definir OLED_RESET 4 

Adafruit_SSD1306 ecrã(largura_do_ecrã, altura_do_ecrã);

 

#inclui "DHT.h"

#definir DHTPIN 2

#definir DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

 

 nulo configuração() {

 dht.começar();

 

 ecrã.começar(SSD1306_SWITCHCAPVCC, 0x3C);

 ecrã.clearDisplay();

}

 

 nulo laço() {

 ecrã.clearDisplay();

 ecrã.setTextSize(1);

 ecrã.setTextColor(SSD1306_BRANCO);

 

 ecrã.setCursor(0, 15);

 ecrã.imprimir("Temperatura:");

 ecrã.setCursor(80, 15);

 ecrã.imprimir(dht.lerTemperatura());

 ecrã.setCursor(110, 15);

 ecrã.imprimir(" C");

 

 ecrã.setCursor(0, 35);

 ecrã.imprimir("Humidade:");

 ecrã.setCursor(80, 35);

 ecrã.imprimir(dht.lerHumidade());

 ecrã.setCursor(110, 35);

 ecrã.imprimir(“%”);

 ecrã.ecrã();

 atraso(2000);

Sobre o código

  • Uma das vantagens de trabalhar com um ecrã i2c OLED é a incrível quantidade de suporte que está disponível online, sob a forma de bibliotecas de código aberto, que podem ajudar muito na programação do ecrã a partir do IDE do Arduino. Neste projecto, as bibliotecas SSD1306 e GFX da Adafruit são as duas principais bibliotecas utilizadas para fazer a interface do ecrã OLED com o Arduino e, uma vez que toda a informação de configuração já está configurada nos ficheiros da biblioteca, são utilizados comandos básicos dentro do IDE, simplificando a utilização do ecrã. Se não tiver estas bibliotecas descarregadas e instaladas no seu IDE, pode deparar-se com erros de compilação, por isso certifique-se de que tem as versões mais recentes das bibliotecas instaladas no IDE do Arduino.
  • O código começa por definir as bibliotecas necessárias para configurar o ecrã OLED: Wire, Adafruit SSD1306 e Adafruit GFX. Estas são necessárias para que o OLED funcione com o Arduino.
  • No segundo bloco, são definidos vários parâmetros relativos ao ecrã OLED, que incluem a largura e a altura do ecrã (128 x 64 pixels) e o pino de reinicialização do OLED (A4).
  • De seguida, são definidas as bibliotecas necessárias para que o sensor DHT11 possa interagir com o Arduino, em particular a biblioteca 'DHT'. O pino digital ao qual o sensor DHT está ligado na placa Arduino (pino digital 2 - D2) é adicionalmente definido juntamente com o modelo particular de sensor DHT que estamos a utilizar, o sensor DHT11.
  • Agora, é introduzida a secção de configuração void, uma das duas funções essenciais em qualquer código Arduino. É aqui que iniciamos o sensor DHT11 (dht.begin()), bem como o ecrã OLED e, antes de avançarmos para a secção de loop void, o ecrã OLED é limpo de quaisquer imagens anteriores (display.clearDisplay()).
  • Em termos da secção do void loop, a parte principal do código que se repete continuamente (em loop) enquanto houver energia na placa Arduino, consiste principalmente em funções específicas do OLED que começam por definir o tamanho do texto, a cor do texto e o cursor (onde queremos que o texto seja impresso no OLED). Posteriormente, ordenamos ao OLED que imprima linhas de texto em vários locais do ecrã, que é principalmente a informação de temperatura (em graus Celsius) e humidade (%) que é lida pelo sensor DHT11. Apenas com a utilização destes comandos simples, produzidos a partir das bibliotecas definidas, conseguimos imprimir facilmente qualquer informação no ecrã.
  • Com a função de atraso no final do código, está definido para actualizar o ecrã OLED a cada 2000 milissegundos com os últimos dados lidos do sensor. No entanto, pode alterar esta temporização em função da frequência com que pretende receber informações actualizadas directamente do sensor.

Resumir

Com uma compreensão fundamental deste projecto e dos princípios básicos que estão envolvidos na ligação de um sensor a um ecrã OLED, há certamente uma infinidade de formas de actualizar e melhorar este projecto. Geralmente, uma configuração como esta pode ser integrada num projecto de estação meteorológica muito maior, possivelmente adicionando mais sensores, um ecrã maior, capacidades sem fios, uma caixa, etc. Como demonstrado por este projecto, basta familiarizar-se com algumas das bibliotecas Arduino que estão disponíveis para utilização e torna-se relativamente fácil codificar a sua própria estação meteorológica. Um projecto futuro poderá envolver a transmissão sem fios desses dados meteorológicos de uma placa de microcontroladores para outra, a fim de monitorizar um ambiente remoto ou controlar centralmente um sistema autónomo. No entanto, projectos como este são excelentes para introduzir a electrónica de lazer a um principiante absoluto e podem muito bem ser dirigidos a um utilizador mais experiente Fabricante de PCBA que pretendam explorar outros aspectos da electrónica. 

Blogue de projectos de electrónica DIY

Arduino UNO Interrupt Timer

Arduino UNO Interrupt Timer The Timer is a feature embedded in every microcontroller and has certain functions regarding the passage of time. The Timer function

Ler mais "