Sensor de temperatura e umidade com Raspberry Pi

Sensores eletrônicos que medem variáveis atmosféricas permitem automatizar processos, aumentar o número de medidas. São muito usados em estações meteorológicas, no controle de ambientes como museus, frigoríficos, data centers, etc. Nesse post, será explicado o funcionamento de um sensor que mede temperatura e umidade, além de apresentar uma possível configuração de circuito eletrônico para coleta de dados usando uma Raspberry Pi.

Raspberry Pi e sensor de temperatura e umidade em protoboard. Foto: ViniRoger
Raspberry Pi e sensor de temperatura e umidade em protoboard. Foto: ViniRoger

Geralmente, mede-se a temperatura através de um termistor, que é um semicondutor sensível à temperatura. O sensor NTC (do inglês “Negative Temperature Coefficient”) tem o coeficiente de variação de resistência com a temperatura negativo, ou seja, a resistência diminui com o aumento da temperatura. Já no PTC (“Positive Temperature Coefficient”), a resistência aumenta com o aumento da temperatura.

A umidade pode ser medida através de um sensor capacitivo. Seu princípio de funcionamento baseia-se na mudança da capacitância da placa detectora localizada na região denominada sensível, ou seja, quando o dielétrico do meio varia. Com a variação da capacitância, a frequência do circuito oscilador muda. Esta mudança de frequência é enviada para um outro circuito chamado de detector, onde este irá transformá-la em sinal de tensão.

Sensor de temperatura e umidade DHT22 (ou AM2302)

Este sensor possui internamente um sensor de umidade capacitivo e um termistor NTC, além de um conversor analógico/digital para comunicação com o microcontrolador, que faz as medições e transmite os valores no formato digital através de um pino de saída.

Sensor de temperatura e umidade DHT22, com detalhe mostrando os componentes de umidade (esquerda) e temperatura (direita). Fonte: Divulgação
Sensor de temperatura e umidade DHT22, com detalhe mostrando os componentes de umidade (esquerda) e temperatura (direita). Fonte: Divulgação

O DHT22 tem com baixo consumo de corrente (0,5 mA), sendo uma versão mais elaborada do DHT11, já que possui uma faixa de leitura de umidade relativa maior (de 0 a 100%, precisão de 2%) e de temperatura também (-40 a 80°C), com maior precisão (1%) porém com maior intervalo entre as medições (2 segundos).

Tanto o DHT22 quanto o DHT11 possui 4 pinos, que são (a partir da esquerda):

  1. VCC (alimentação)
  2. DATA (dados)
  3. N.C. (sem conexão)
  4. GND (terra)

A comunicação dos dados no barramento serial (único pino) ocorre nos dois sentidos, isto é, do sensor para o microcontrolador e vice-versa. O protocolo de comunicação pode ser dividido em três partes:

  • Requisição (para o sensor enviar os dados)
  • Resposta (do sensor, após ser requisitado)
  • Leitura de dados (os dados são enviado em 5 segmentos de 8 bits – 40 bits)

Os dois primeiros bytes correspondem à umidade relativa na forma integral e decimal. O terceiro e quarto byte formam a temperatura em graus Celsius na forma integral e decimal. O último byte é o checksum dos dados.

Como montar o circuito

Para usar o DHT22 com uma Raspberry Pi, pode-se montar um circuito com os seguintes componentes:

  • 1 protoboard
  • 1 DHT22
  • 1 resistor de 10k ohms (marrom, preto, laranja, dourado)
  • 3 jumpers macho-fêmea (para uma das pontas se conectar à Rasp)
  • 3 jumpers macho-macho
  • 1 Raspberry Pi com fonte 12V, monitor, teclado e um cartão micro SD com Raspbian instalado

Com o sensor visto de frente e os pinos para baixo, contando a partir da esquerda, conecte o primeiro pino do sensor (do VCC) no pino 1 de 3,3V (3V3), o segundo no pino 7 (GPIO4, para transmissão de dados) e o último em um pino de aterramento (GND, como o 6). O resistor é colocado entre os pinos 1 e 2. Acompanhe o texto pelo diagrama a seguir:

Circuito com Raspberry Pi e DHT22 no Fritzing
Circuito com Raspberry Pi e DHT22 no Fritzing. Fonte: ViniRoger

Uma sugestão de montagem: na protoboard, com o DHT ocupando os pinos entre 9E e 12E, o resistor fica entre os pinos 6B e 10B. A numeração dos pinos (GPIO, de “General Purpose Input/Output”) segue o padrão da Raspberry Pi 3 Model B v1.2 (2015). Ela pode ser obtida pelo comando “pinout” no terminal, conforme segue:

Relação de pinos e funções da Raspberry Pi 3 Model B v1.2 (2015). Fonte: documentação Raspberry Pi
Relação de pinos e funções da Raspberry Pi 3 Model B v1.2 (2015). Fonte: documentação Raspberry Pi

Como montar a Raspberry Pi

A Raspberry Pi é uma série de computadores integrados em uma placa única do tamanho reduzido desenvolvido no Reino Unido pela Fundação Raspberry Pi. O sistema operacional roda em um cartão microSD, que pode ser gravado usando o Raspberry Pi Imager através dos seguintes procedimentos:

1. Clique no link e baixe a imagem correspondente ao seu sistema operacional

2. No terminal, vá para a pasta que está o arquivo baixado e digite os seguintes comandos:

sudo dpkg -i imager_amd64.deb
sudo apt-get -f install
sudo dpkg -i imager_amd64.deb

3. Vá em “acessórios” para clicar no ícone “Imager” com o símbolo da Raspberry Pi

4. Insira o cartão microSD em seu computador

5. Escolha o sistema operacional (o recomendado é o Raspbian)

6. Escolha o cartão SD e clique em “Write” (precisará da senha de root, não de super usuário)

7. Insira o cartão SD na Raspberry Pi, os acessórios (teclado, mouse, monitor) e conecte a fonte para ligar

8. Quando a interface gráfica do sistema subir, será exibido um passo a passo para configurações regionais, alteração de senha padrão e conexão de rede

Para habilitar o SSH e conectá-la remotamente, use o comando “sudo raspi-config” no terminal, selecione a opção “Interfacing Options -> SSH” e clique em “Yes”, finalizando com “Ok” e “Finish”. Caso não tenha acesso direto ao sistema, você pode gravar um arquivo em branco e sem extensão com o nome “ssh” através do comando “touch ssh” na partição de boot montando o cartão SD em outro computador; quando o sistema iniciar, o acesso SSH será disponibilizado.

Aquisição de dados

Pode-se fazer um programa em python para receber e exibir/salvar os dados, trabalhando em conjunto com a biblioteca da Adafruit contendo o driver do sensor. Para instalar essa biblioteca, conecte à internet e digite os seguintes comandos no terminal:

sudo apt update
sudo apt install build-essential python-dev
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python3 setup.py install # Para instalar em python 2.7, basta retirar o '3'

Para testar, use o script em python na pasta de exemplos, conforme segue:

cd examples
sudo ./AdafruitDHT.py 22 4

O primeiro parâmetro (22) indica qual sensor foi usado (11 para o DHT11) e o segundo, ao qual o GPIO está conectado (não o número do pino, mas o número do GPIO). Isso produz uma saída contendo a temperatura e a umidade relativa, por exemplo, “Temp=24.0* Humidity=41.0%”.

No Github/ViniRoger, estão os códigos para uma coleta automática desses dados em background e plotar gráficos das suas séries temporais (com exemplo). Veja mais sobre os códigos nos posts Coleta automática de temperatura e umidade do ar, que apresenta uma opção para rodar o script na inicialização da Raspberry, e Gráficos e análises de séries temporais de temperatura e umidade, com uma breve análise dos dados coletados.

Fontes

Espalhe a mensagem

5 comentários

  1. Acho incrível a capacidade que o Raspberry Pi possui e sua aplicabilidade nos projetos, na verdade, foi assim que essa plaquinha de computadores possui tantos adeptos no mundo maker. Muito bom o artigo Vinicius. Pro pessoal do Monolito Nimbus que também é fã do mundo maker, escrevi um artigo bem bacana similiar a este do Vinicius, só que com o Arduino, caso queiram dar uma olhada: https://flaviobabos.com.br/sensor-de-temperatura-arduino/

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.