Raspberry Pi - Projeto Termômetro Digital com Python - Teoria

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.

 

 

Tela de MediçãoProjeto Termômetro Digital com Python

Tela de Temperatura MáximaProjeto Termômetro Digital com Python

Tela de Temperatura MínimaProjeto Termômetro Digital com Python

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.

 

Módulo AM2302
Figura 2 - Módulo 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

 

 

Pinagem do módulo AM2302
Figura 3 - Pinagem do módulo AM2302

 

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.

 

Protocolo de Comunicação de Barramento Simples
Figura 4 - Protocolo de Comunicação de Barramento Simples

 

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.

 

Temporização do Barramento Único de Comunicação
Figura 5 - Temporização do Barramento Único de Comunicação

 

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!

Outros artigos da série

<< Raspberry Pi - Display LCD com PythonRaspberry Pi - Projeto Termômetro Digital com Python - Prática >>
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Roniere Rezende
Natural de Cachoeira de Minas, cidade localizada no extremo sul de Minas Gerais. Graduado em engenharia elétrica pela PUC MINAS campus Poços de Caldas e técnico de telecomunicações pela Escola Técnica de Eletrônica "Francisco Moreira da Costa" - ETE "FMC" em Santa Rita do Sapucaí-MG. Atualmente atua como Analista Programador na Nexcode System na cidade de São Caetano do Sul-SP. Possui conhecimentos em eletrônica analógica, digitais, e de potência, em sistemas de telecomunicações e radiofrequência, em sistemas embarcados e linguagem de programação como C / C ++, Python e Matlab. Pesquisa e estuda sobre microcontroladores 8 e 32 bits, Arduino, Raspberry, STM32 Nucleo, desenvolvimento de dispositivos eletrônicos, sistemas embarcados, software e hardware.

4
Deixe um comentário

avatar
 
2 Comment threads
2 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
Lenio RodriguesRoniere RezendeClaudio Heckler Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Lenio Rodrigues
Visitante
Lenio Rodrigues

Olá Roniere,muito bom o artigo ! parabéns pelo trabalho !

Claudio Heckler
Visitante
Claudio Heckler

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 »