Introdução
Este artigo apresentará a parte teórica do desenvolvimento de um projeto prático de um termômetro digital com o código fonte escrito em Python. A parte prática será oferecida no próximo artigo. Os dados de temperatura e umidade relativa do ar serão obtidos, codificados e transmitidos para a Raspberry Pi pelo módulo AM2302.
Será realizada uma breve definição e explicação da forma de se baixar e instalar a biblioteca Python dos sensores DHT-11 e DHT-22, além de ensinar a realizar a sua conexão para transmitir as informações corretamente à Raspberry Pi.
Ao final da leitura deste artigo, aplicando os conceitos teóricos e práticos apresentados sobre o projeto do termômetro digital, o leitor será capaz de realizar a manipulação dos dados gerados pelo módulo AM2302 e também poderá, com a sua criatividade, expandir e melhorar o projeto apresentado e criar os seus próprios projetos.
Este artigo dá continuidade à série de artigos sobre Raspberry Pi com Python, escrita pelo Cleiton Bueno e por mim, Roniere Rezende.
Termômetro Digital
Para o desenvolvimento do projeto de aplicação do termômetro digital serão necessários os seguintes componentes:
- 1 Raspberry Pi;
- 1 Sensor AM2302 da AOSONG;
- 1 Display de LCD de 16 colunas e 2 linhas;
- 2 botões de push-botton.
O módulo sensor de temperatura e umidade AM2302 obtém os dados, os processa e transmite à Raspberry Pi. Esta manipula e envia os dados recebidos para serem apresentados na tela do display de LCD. A definição destas funções são apresentadas neste artigo. Dois botões push-botton são utilizados para apresentar na tela do display de LCD os valores de temperatura máxima e mínima registradas durante o período de análise da medição, um para cada registro.
A seguir, na Figura 1, são apresentadas as telas no display de LCD que serão desenvolvidas neste artigo.
Figura 1 – Telas do Sensor de Temperatura
Sensor de Temperatura e Umidade
O dispositivo utilizado no projeto do termômetro digital para realizar as medidas de temperatura e umidade é o módulo sensor AM2302 da AOSONG. Veja o seu datasheet aqui.
O módulo digital AM2302 é um módulo composto que realiza a medição, digitalização das variáveis físicas de temperatura e umidade e disponibiliza essas informações no seu terminal de dados. Tem baixo consumo e pode transmitir os dados com qualidade até 20 mts de distância do receptor. Realiza a calibração completamente automática, faz uso de sensor capacitivo de umidade, saída digital de barramento simples, apresenta excelente estabilidade por longo tempo e alta exatidão na medida de temperatura. A Figura 2 mostra módulo sensor AM2302.
As aplicações para o módulo AM2302 são para aquecimento, ventilação e ar condicionado (sigla em inglês HVAC), desumidificador, equipamento de teste e inspeção, bens de consumo, automotivo, controle automático, registradores de dados, aplicações caseiras, regulador de umidade, equipamentos médicos, estações climáticas, controle e medida de umidade e, mais recentemente, pode-se utiliza-lo em aplicações IoT.
A pinagem do módulo AM2302 é definida na tabela abaixo:
Tabela 1 – Pinagem do módulo AM2302
|
Pino |
Nome |
Descrição |
|
1 |
VDD |
Alimentação (3,3V até 5,5V) |
|
2 |
SDA |
Porta bidirecional de dados seriais |
|
3 |
NC |
Não utilizável |
|
4 |
GND |
Referência de terra |
Como pode ser visto na tabela 1, a alimentação do módulo AM2302 deve ser entre 3,3 V até 5V, sendo 5V o valor recomendado no datasheet. O pino SDA é uma estrutura de leitura e escrita de dados. Detalhes sobre o protocolo de comunicação serão definidos mais abaixo.
A seguir serão apresentadas as tabelas 2 e 3 com as características de medição de temperatura e umidade do módulo AM2302.
Tabela 2 – Desempenho de Umidade Relativa do AM2302
|
Parâmetros |
Condições |
Mínimo |
Típico |
Máximo |
Unidade |
|
Resolução |
0,1 |
%RH | |||
|
Faixa |
0 |
99,9 |
%RH | ||
|
Precisão |
25° |
±2 |
%RH | ||
|
Repetibilidade |
±0,3 |
%RH | |||
|
Intercâmbio |
Completamento Intercambiável | ||||
|
Resposta |
1/e(63%) |
< 5 |
%RH | ||
|
Lentidão |
< 0,3 |
%RH | |||
|
Escorregamento |
Típico |
< 0,5 |
%RH |
Tabela 3 – Desempenho de Temperatura Relativa do AM2302
|
Parâmetros |
Condições |
Mínimo |
Típico |
Máximo |
Unidade |
|
Resolução |
0,1 |
°C | |||
|
16 |
bit | ||||
|
Faixa |
-40 |
80 |
°C | ||
|
Precisão |
±0,5 |
±1 |
°C | ||
|
Repetibilidade |
±0,2 |
°C | |||
|
Intercâmbio |
Completamento Intercambiável | ||||
|
Resposta |
1/e(63%) |
<10 |
S | ||
|
Escorregamento |
±0,3 |
°C/yr |
As características elétricas, tais como consumo, nível de tensão em alto e em baixa, e tensão de entrada e saída dependem da alimentação. Na tabela 4 são apresentadas essas características.
Tabela 4 – Características DC do Módulo 2302
|
Parâmetros |
Condições |
Mínimo |
Típico |
Máximo |
Unidade |
|
Tensão |
3,3 |
5 |
5,5 |
V | |
|
Consumo de potência |
Inativo |
10 |
15 |
µA | |
|
Medindo |
500 |
µA | |||
|
Média |
300 |
µA | |||
|
Tensão em Nível baixo de Saída |
IOL |
0 |
300 |
mV | |
|
Tensão Alta de Saída |
Rp < 25 kΩ |
90% |
100% |
VDD | |
|
Tensão Baixa de Entrada |
Descida |
0 |
30% |
VDD | |
|
Tensão Alta de Entrada |
Subida |
70% |
100% |
VDD | |
|
Rpu |
VDD = 5V VIN = VSS |
30 |
45 |
60 |
kΩ |
|
Corrente de Saída |
Ligado |
8 |
mA | ||
|
Desligado |
10 |
20 |
µA | ||
|
Periodo de Amostragem |
2 |
S |
Para se realizar a comunicação entre o módulo AM2302 e a Raspberry Pi devem ser seguidas algumas recomendações, citadas no seu datasheet. Elas são listadas a seguir também:
- Para circuitos de aplicações típicas é recomendado o comprimento do cabo de 30 metros e o uso de um resistor de pull-up de 5,1 kΩ, conectado entre o terminal de Vcc e o barramento de dados;
- Utilizando uma alimentação de 3,3 V, o comprimento do cabo deve ser menor que 1 metro;
- O intervalo de leitura do sensor deve ser 2 segundos. Com um tempo menor que este, a leitura das medidas de temperatura e umidade podem não ser realizadas com sucesso;
- Os valores de temperatura e umidade são resultados da última medida realizada. Para dados em tempo-real, que precisam ser lidos continuadamente, é recomendado ler o sensor repetidamente com um intervalo de leitura maior que 2 segundos para obter resultados exatos.
O protocolo de barramento simples no AM2302 utiliza somente um terminal de dados com o sistema para a trocas de dados. A definição de como se realiza a comunicação é demonstrada na figura 4.
O SDA (Serial Data Line) é utilizado para comunicação e sincronização entre a Raspberry Pi e o AM2302 e o formato de dados do barramento simples é formado por 40 bits, como mostrado na Figura 3. A sua descrição é apresentada na Tabela 5.
Tabela 05 – Definição do formato de comunicação do AM2302
|
Nome |
Definição do Formato do Barramento Único |
|
Sinal Inicial |
Barramento de dados microcontrolador (SDA) deixa o sinal em nível baixo lógico baixo por um período de tempo (pelo menos 800 µs) notificando o sensor para preparar os dados. |
|
Sinal de Resposta |
O barramento de dados do sensor (SDA) é colocado em nível baixo por 80 µs e depois é colocado em nível lógico alto por 80 µs para receber o sinal de início. |
|
Formato de dados |
O receptor recebe sinal de início, o sensor envie a string de dados de 40 bits e termina deixando a saída em nível lógico alto. |
|
Umidade |
Resolução da umidade de 16 bits, o anterior em nível lógico alto, o valor da string do sensor de umidade é 10 vezes os valores atuais de umidade. |
|
Temperatura |
Resolução da temperatura de 16 bits, o anterior em nível lógico alto, o valor da string do sensor de temperatura é 10 vezes os valores atuais de temperatura. O nível lógico do bit mais significativo (bit 15) é igual a 1 para indicar temperatura negativa e será 0 para indicar temperatura positiva. O valor de temperatura é indicado entre os bits 0 e 14. |
|
Bit de Paridade |
Bit de paridade = umidade em alta + umidade em baixa + temperatura em alta + temperatura em baixa |
A temporização da comunicação do barramento simples é realizada da seguinte forma. O dispositivo do usuário envia um sinal de início (o barramento de dados permanece em nível lógico baixo por pelo menos 800 µs), depois o AM2302 passa do Modo de Inatividade para o Modo de Alta Velocidade. O dispositivo do usuário indica ao módulo AM2302 enviando-lhe um sinal de resposta através do barramento de dados, no caso um byte em nível lógico alto. O módulo envia os dados (umidade alta, umidade baixa, temperatura alta, temperatura baixa e bit de paridade) ao final da coleta de informações de trigger, e no fim do processo o sensor é automaticamente transferido para o Modo de Inatividade, esperando até a próxima comunicação.
Na Figura 5 são apresentadas as características do sinal de temporização do módulo AM2302.
Tabela 06 – Características do sinal do barramento único
|
Símbolo |
Parâmetros |
Mínimo |
Típico |
Máximo |
Unidade |
|
Tbe |
Tempo de inatividade sinal inicial |
0,8 |
1 |
20 |
ms |
|
Tgo |
Tempo de liberação do barramento |
20 |
30 |
200 |
µs |
|
Trel |
Resposta ao tempo em baixa |
75 |
80 |
85 |
µs |
|
Treh |
Resposta ao tempo em alta |
75 |
80 |
85 |
µs |
|
TLOW |
Sinal “0”, tempo em baixo “1” |
48 |
50 |
55 |
µs |
|
TH0 |
Sinal “0” tempo em alta |
22 |
26 |
30 |
µs |
|
TH1 |
Sinal “1” tempo alto |
68 |
70 |
75 |
µs |
|
Ten |
Tempo ao liberar o tempo do barramento |
45 |
50 |
55 |
µs |
Na próxima parte do artigo será apresenta a instalação da biblioteca do módulo DHT-22, como realizar a comunicação entre a Raspberry Pi e o módulo por meio de comando, o circuito/montagem realizado e o código. Não percam o próximo artigo!














Oi Roniere, bom dia! Parabéns pelo artigo, eu quero utilizar um sistema parecido, porém a diferença é que quero acessar remotamente o Raspberry para monitorar a temperatura, é possível ?
Olá Roniere,muito bom o artigo ! parabéns pelo trabalho !
Obrigado Lenio! Fico feliz por ter gostado, a ideia é sempre fazer o melhor e contribuir para o conhecimento dos leitores. Vem mais por ai!
Roniere, muito interessante esse seu artigo, vou acompanhar a série! Se achares conveniente, por favor comenta alguma coisa sobre precisão de medida e calibração do DHT-22. Recentemente eu fiz um teste por curiosidade com 4 módulos DH-22 expostos ao mesmo ambiente e eles “discordaram” mais do que eu gostaria nas medidas, especialmente na leitura da humidade relativa. https://datacarrierdetect.wordpress.com/2017/10/22/a-man-with-one-watch-knows-what-time-it-is/ Encontrei sugestões para um método de calibração com água+sal para o ponto de 70%, porém com pouca informação sobre a influência da temperatura e sobre outros pontos da faixa de leitura. No geral achei esse sensor útil para determinar variações, mas não… Leia mais »
Olá Claúdio, Fico feliz por ter gostado do artigo. Já foi publicado a continuação do artigo, agora abordando a parte prática. Sobre a calibração eu não fiz nada a respeito. As medidas que realizei com o módulo sensor obtive resultados satisfatórios e de acordo com o que eu esperava. Eu utilizei um módulo similar ao DHT-22, o AM2302. Vou pesquisar mais sobre e te darei um retorno. Podemos também tentar entrar em contato com o fabricante e ver o que ele nos fala sobre a calibração. Eu gostei muito desse módulo sensor, ele é muito versátil e pode ser utilizado… Leia mais »