Conectando Sensor de Temperatura e Umidade no Raspberry Pi

Iremos instalar e configurar o sensor de temperatura e umidade do ar DHT22 no Raspberry Pi 3.  Este sensor possui um irmão azul DHT11 um pouco mais barato, porém mais limitado (não existe almoço grátis, certo) – as principais limitações são as faixas de operação e a precisão. Seguem suas imagens e comparativos:

be6255fa0046a758e1c630d26c2fb590

dht11-vs-dht22-specifications-parameters

Apesar de alguns modelos do mercado serem vendidos conforme as fotos acima, com uma pequena placa, é possível encontrá-los apenas em suas embalagens pláticas.

Para conexão no Raspberry Pi, caso esteja apenas com o sensor (sem a placa) em mãos, deve-se adicionar um resistor conforme circuito abaixo:

ut6z2zqauj6hqr4it0mo

Caso tenha adquirido com a placa, a conexão fica um pouco mais simplificada:

dht22_example

A nossa ligação será com o módulo e ficará desta forma (DHT para GPIO):

  • VCC >> 3.3V
  • GND >> GND
  • DATA >> GPIO 24 (ou qualquer outra GPIO que deseje)

A transmissão dos dados do DHT não é analógica nem digital, os mesmos são enviados de forma serial pelo pino DATA, porém o protocolo não é nenhum padrão conhecido como SPI ou I2C, já presentes e reconhecidos pelo Raspberry Pi.

Porém uma das revendas de maior nome da Raspberry Pi, a Adafruit, desenvolveu uma biblioteca específica para leitura deste sensor que deixa o nosso coração mais feliz 🙂

Vamos instalar a bibiliteca:

  1. git clone https://github.com/adafruit/Adafruit_Python_DHT.git
  2. sudo aptget update
  3. sudo aptget install buildessential pythondev pythonopenssl
  4. sudo python setup.py install

E agora vamos rodar o exemplo (com o pino DATA do sensor conectado na GPIO 24 – se estiver conectado em outra, ajuste o código para refletir a sua GPIO):

#!/usr/bin/python
#-*- coding:utf-8 -*-

import Adafruit_DHT as DHT

# O método read_retry irá tentar captar as medicoes até 15 vezes
# em intervalos de 2 seg para cada medica
# Os parametros sao (sensor, GPIO)
# sensor :
#     22 (para DHT 22)
#     11 (para DHT 11)
# GPIO:
#     24 (utilizada neste exemplo)

umidade, temperatura = DHT.read_retry(22, 24)

# formata os dados de saída
if umidade is not None and temperatura is not None:
 print('Temp={0:0.1f}* Umidade={1:0.1f}%'.format(temperatura, umidade))
else:
 print('Não foi possível obter nenhuma leitura')
 sys.exit(1)

Abs

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s