09 fevereiro 2015

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

No último artigo eu falei sobre o sensor de temperatura DHT22 e mostrei como ligar esse sensor ao Arduino. No artigo de hoje, vou mostrar como utilizar esse mesmo sensor com o Raspberry Pi B+.

ligar sensor temperatura DHT22 raspberry


Se você ainda não instalou o Raspbian ou não está familiarizado com o Raspberry Pi B+, recomendo a leitura do artigo Raspberry Pi : Instale o Raspbian e crie seu primeiro programa em Python, onde eu mostro como instalar o Raspbian, informações sobre a GPIO e como criar um programa básico utilizando Python.

Circuito DHT22 e Raspberry Pi B+

No nosso circuito vamos utilizar um botão (push-button) para enviar as informações de temperatura e umidade para a tela do Raspbian. Utilizaremos alimentação de 3.3V tanto para o DHT22 como para o botão. 

Isso é importante pois poderíamos, por exemplo, alimentar o DHT22 com os 5V da GPIO, mas as portas do Raspberry trabalham com nível de sinal de 3.3V, e com isso corremos o risco de danificar as portas da placa. Assim, as portas de ENTRADA, que são os pinos 16 (sensor) e 40 (botão), utilizarão 3.3V.

Circuito Raspberry Pi B+ e DHT22

O resistor no pino de dados do DHT22 é de 10K, e no push-button utilizamos um de 330 ohms.

Instalação da biblioteca do DHT22

Para o programa em Python vamos utilizar a biblioteca da Adafruit, baixando e instalando a biblioteca diretamente no Raspbian.

Certifique-se de que o Raspberry está conectado à internet, abra o LX Terminal e digite o seguinte comando :

git clone https://github.com/adafruit/Adafruit_Python_DHT.git

Em seguida, entre na pasta Adafruit_Python_DHT :

cd Adafruit_Python_DHT

Antes de instalar a biblioteca, utilize os comandos abaixo para atualizar o Raspbian e baixar o python-dev para o correto funcionamento da biblioteca :

sudo apt-get update
sudo apt-get install build-essential python-dev

Instale a biblioteca utilizando o seguinte comando :

sudo python setup.py install

O processo de download e instalação da biblioteca pode demorar alguns minutos, dependendo da velocidade da conexão à internet. Após esse procedimento, a biblioteca estará instalada e pronta para uso.

Enviando informações do DHT22 para o Raspbian

Clique no ícone IDLE na tela principal do Raspbian. Na interface de programação do Python, selecione FILE, depois NEW WINDOW. Na nova tela, digite o programa abaixo :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Programa : Raspberry B+ e sensor DHT22
# Autor : Arduino e Cia

# Carrega as bibliotecas
import Adafruit_DHT
import RPi.GPIO as GPIO

# Define o tipo de sensor
# sensor = Adafruit_DHT.DHT11
sensor = Adafruit_DHT.DHT22

GPIO.setmode(GPIO.BOARD)

# Define a GPIO conectada ao pino de dados do sensor
pino_sensor = 23

# Define o pino conectado ao push-button
GPIO.setup(40, GPIO.IN)

# Informacoes iniciais
print ("Pressione o botao para obter a temperatura...");

while(1):
# Verifica se o botao foi pressionado
 if GPIO.input(40) == True:
   # Efetua a leitura do sensor
   umid, temp = Adafruit_DHT.read_retry(sensor, pino_sensor);
   # Caso leitura esteja ok, mostra os valores na tela
   if umid is not None and temp is not None:
     print ("Temp = {0:0.1f}  Umidade = {1:0.1f}\n").format(temp, umid);
     print ("Aguarde 2 segundos para efetuar a leitura novamente\n");
   else:
     # Mensagem de erro de comunicacao com o sensor
     print("Falha ao ler dados do sensor !!!")

No início do programa são carregadas as bibliotecas Adafruit_DHT, para uso do sensor de temperatura, e também a biblioteca.GPIO. Definimos que o sensor será ligado à GPIO 23 (pino 16), e o push-button ao pino 40 (GPIO 21), sendo que este último será uma porta de ENTRADA.

O programa verifica se o botão foi pressionado (TRUE), e em caso positivo efetua uma leitura do sensor e mostra os dados em uma nova janela :

Python Shell - Temperatura DHT22



Você pode melhorar esse projeto implementando a leitura dos dados em determinados intervalos, e enviando essess dados para um display LCD. Utilize as informações do post Como ligar um display LCD 16x2 ao Raspbeery Pi .

Clique aqui para ver outros artigos sobre Raspberry Pi aqui no Arduino e Cia !


7 comentários:

  1. Muito bom o post preciso montar um projeto parecido com esse mas não vai ter lcd, será monitorado por um servidor zabbix.

    ResponderExcluir
  2. Boa noite, estou fazendo tcc usando arduino e zabbix, onde no arduino tem um pluviometro conectado que possui um reed switch (interruptor liga e desliga quando começa a chover), assim executando uma trigger no zabbix enviando um email e SMS. mas não esta funcionando pois o zabbix esta virtualizado. Então pensei, se o zabbix estiver no raspbeery poderia funcionar, alguem sabe algo a respeito ?

    ResponderExcluir
    Respostas
    1. Boa tarde Patrick,

      Nunca utilizei o Raspberry nessa configuração, mas achei esses dois artigos falando sobre a instalação do Zabbix no Raspberry Pi:

      http://spinola.net.br/blog/?p=405
      http://www.helviojunior.com.br/it/monitoramento/zabbix/instalando-zabbix-em-raspberry-pi/

      Espero que ajude.

      Abraço!

      Excluir
  3. Boa tarde.
    Você sabe me dizer se dá pra usar o sensor supersônico no lugar do DHT22?

    ResponderExcluir
    Respostas
    1. Oi Suellen,

      Eu ainda não tenho um post sobre isso, mas creio que esse daqui pode te ajudar:

      https://www.modmypi.com/blog/hc-sr04-ultrasonic-range-sensor-on-the-raspberry-pi

      Abraço!

      Excluir
  4. Boa noite, como fazer isso utilizando o Windows 10 iot Core?

    ResponderExcluir
  5. É possível fazer a ligação entre o dht 22 e o Pi sem o resistor?

    ResponderExcluir