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.
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.
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):
- VCC (alimentação)
- DATA (dados)
- N.C. (sem conexão)
- 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:
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:
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 – nesse caso, foi usada a Raspberry Pi 3 Model B v1.2 (2015). 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
- Eletrogate – Sensores DHT11 e DHT22
- Datasheet DHT22
- Arduino e cia – Como ligar o sensor de temperatura DHT22 com Raspberry Pi
- Hackster.io – Raspberry Pi 2 IoT: Thingspeak & DHT22 Sensor
- Raspberry Pi Tutorials – Raspberry Pi: Measure Humidity and Temperature with DHT11/DHT22
- Knight of Pi – Measure temperature and humidity with the sensor DHT22/AM2302
- Knight of Pi – DHT22 (AM2302) with PiGPIO for Raspbian Stretch
- PyPi – Adafruit-DHT
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/