Raspberry Pi - Projeto Termômetro Digital com Python - Prática

ÍNDICE DE CONTEÚDO [MOSTRAR]
Continuando o artigo anterior da série, trazemos agora a parte prática do projeto, apresentando a instalação da biblioteca do módulo DHT-22, a comunicação entre a Raspberry Pi e o módulo por meio de comando, o circuito/montagem realizado e o código.


Instalação da Biblioteca do Módulo DHT-22


No projeto do termômetro digital é utilizado o módulo AM2302, similar ao módulo DHT-22. Por este motivo é utilizada a biblioteca Python do Módulo DHT-11/22.

Para a instalação dessa biblioteca, deve-se primeiramente conectar a Raspberry Pi à internet. Em seguida, abre-se o LX Terminal e executa-se os comandos a seguir:

Sem seguida, acesse a pasta Adafruit_Python_DHT com o comando:

Deve-se atualizar o Raspbian e baixar o python-dev para que a biblioteca funcione corretamente. Execute os comandos abaixo:

Agora é o momento de instalar a biblioteca, portanto execute o comando a seguir:


Comandos


Os comandos Python utilizados para realizar a comunicação entre a Raspberry Pi e o módulo AM2302 fazem parte da biblioteca Adafruit_Python_DHT-22 e devemos usar o comando import para poder utilizar esses comandos nos nossos códigos. Como utilizar o comando import é demonstrado na seção “Código”.

A função para se realizar a leitura dos dados de temperatura e umidade é mostrada abaixo. Maiores informações podem ser obtidas na referência da biblioteca.

As duas próximas declarações definem qual o modelo de sensor irá ser usado no código.

Para um melhor entendimento dos comandos referentes ao display de LCD, recomendo a leitura do artigo publicado sobre este assunto, aqui.


Circuito


A montagem do circuito do termômetro digital é similar ao mostrado no artigo anterior sobre o display de LCD, agora é acrescentado o módulo AM2302. A pinagem desse módulo pode ser vista na Figura 1. Para esta montagem, o módulo é alimentado por uma tensão de 3,3V para se evitar que a tensão no barramento de dados supere a máxima tensão suportada pelas portas GPIO da Raspberry Pi e, por consequência, as danifique. Um resistores de pull-up é colocado entre o VCC e o barramento de dados do módulo AM2302 para mantê-lo em nível lógico alto quando não estiver sendo utilizado o barramento. Para se evitar ruídos e interferências na medição do módulo 2302, é colocado um capacitor cerâmico de 100 nF mais próximo possível dos terminais de VCC e GND do módulo AM2302. Os dois botões presentes na montagem são utilizados para que se possa visualizar a máxima e a mínima temperatura registrada durante o período de medição que são pressionados.

Módulo AM2302
Figura 1 - Módulo AM2302

Esquema Elétrico


Termômetro Digital com Python - Esquema Elétrico do Projeto Termômetro com Python
Figura 2 - Esquema Elétrico do Projeto Termômetro com Python


Montagem


Termômetro Digital com Python - Montagem no Protoboard do Projeto Termômetro com Python
Figura 3 - Montagem no Protoboard do Projeto Termômetro com Python


Código


O código em linguagem Python descrito abaixo faz com que os dados de temperatura e umidade relativa do ar obtidos do módulo AM2302 sejam interpretados pela Raspberry Pi e esta mostre as informações na tela do display de LCD. O código também faz o registro de máxima e mínima temperaturas obtidas durante o intervalo de medição, apresentando o instante que o evento ocorreu.

Aconselho para um bom entendimento deste código em Python dar uma recapitulada nos artigos anteriores desta série. Então vamos lá.



Descrição do Código


Entre as linhas 2 e 6 são declaradas as bibliotecas das funções que serão usadas no código.

Na linha 10 é definido qual modelo de sensor que iremos utilizar, no caso usar o modelo DHT-22.

Entre as linhas 13 a 19 é definida a pinagem do display de LCD.

Nas linhas 22, 23 e 24 são definidas as variáveis que definem quais são os GPIOs que serão utilizados como entrada de dados.

Na linha 27 são desabilitados os avisos de warnings.

Na linha 30 é configurado o modo de utilização das portas definidas pelo número dos GPIOs.

Nas linhas 33, 34 e 35 é configurada a pinagem dos GPIOs que receberam os dados.

Nas linhas 38 e 39 define-se que o display de LCD utilizado será 16 colunas e 2 linhas.

Na linha 42 define-se um valor inicial para a variável que será utilizada para armazenar o valor de temperatura máxima e na linha 43 define-se um valor inicial para a variável que será utilizada para armazenar o valor de temperatura mínima.

Nas linhas 46, 47 e 48 é declarado o objeto “lcd” a partir da função que define quais GPIOs irão ser utilizados para manipular o display de LCD.

Na linha 50 é onde o loop infinito principal deste código fonte é definido.

Nas linhas 52 e 53 as variáveis “tdy” e “now” recebem a informação de tempo, respectivamente dia e hora.

Na linha 56 as variáveis “umid” e “temp” recebem, respectivamente, as informações de umidade e temperatura geradas pelo módulo AM2302.

Na linha 59 é testado se os dados gerados pelo módulo AM2302 são válidos. Sendo válidos, o código é executado. Caso contrário, é gerada uma mensagem de erro presente entre as linhas 229 e 232.

Entre as linhas 61 e 68 é configurada a forma de apresentação dos dados de temperatura e entre as linhas 71 e 77 é configurada a forma de apresentação dos dados de umidade no display de LCD.

Entre as linhas 80 e 95 são realizados os registros de máxima e mínima temperatura que são realizados durante o período de medição.

Entre as linhas 98 e 160 são acessados os dados referentes à maior temperatura registrada durante o intervalo de medição, e se realiza a manipulação desses dados para sua apresentação no display de LCD. Os dados são de hora, dia, mês e ano que este evento ocorreu. Para se mostrar esses dados, quando se é pressionado o botão que dá acesso a estas informações, se entra num loop infinito que só é interrompido pressionando o botão novamente, fazendo que se retorne a tela inicial.

Entre as linhas 163 e 226 são acessados os dados de menor temperatura registrada durante o intervalo de medição. A manipulação dos dados é realizada de forma similar ao que é realizado para temperatura máxima.


Conclusão


Com o desenvolvimento do projeto do termômetro digital, pode-se adquirir conhecimento teórico e prático sobre o módulo sensor de temperatura e umidade, no caso o modelo AM2302. Também foi apresentado como instalar e utilizar as funções da biblioteca Python para o módulo DHT-11/22, que nos permite conseguir manipular os dados obtidos.

Com essas informações em mãos, pode-se observar que é simples utilizar o módulo AM2303 ou DHT-22 para outras aplicações onde se há a necessidade de analisar as informações de temperatura e umidade relativa ar e realizar algumas atuações a partir desses dados.

O leitor agora é capaz de desenvolver os seus próprios projetos utilizando o módulo DHT-22 (composto de um sensor de temperatura e outro de umidade) e similares.


Referências | Fontes

https://www.embarcados.com.br/

Como ligar o sensor de temperatura DHT22 ao Raspberry Pi B+

Datasheet Sensor Am2302

Biblioteca DHT-22

Referência da Figura 2

Referência das Tabelas: Datasheet Sensor Am2302
Close Menu