- Visão geral do sensor DHT11:
- Pré-requisitos:
- Instalando a biblioteca Adafruit LCD no Raspberry Pi:
- Instalando a biblioteca Adafruit DHT11 no Raspberry Pi:
- Diagrama de circuito:
- Programação Python para sensor DHT11:
- Medindo umidade e temperatura usando Raspberry Pi:
Temperatura e Umidade são os parâmetros mais comuns monitorados em qualquer ambiente. Existem muitos sensores para escolher para medir temperatura e umidade, mas o mais usado é o DHT11 devido à sua faixa de medição decente e precisão. Também funciona com comunicação de um pino e, portanto, é muito fácil de fazer interface com microcontroladores ou microprocessadores. Neste tutorial, vamos aprender como fazer a interface do popular sensor DHT11 com o Raspberry Pi e exibir o valor da temperatura e umidade em uma tela LCD 16x2. Já o usamos para construir a estação meteorológica IoT Raspberry Pi.
Visão geral do sensor DHT11:
O sensor DHT11 pode medir umidade relativa e temperatura com as seguintes especificações
Faixa de temperatura: 0-50 ° C Precisão da temperatura: ± 2 ° C Faixa de umidade: 20-90% UR Precisão da umidade: ± 5%
O sensor DHT11 está disponível em forma de módulo ou em forma de sensor. Neste tutorial, estamos usando a forma de módulo do sensor, a única diferença entre os dois é que na forma de módulo o sensor possui um capacitor de filtragem e um resistor pull up conectado ao pino de saída do sensor. Portanto, se você estiver usando o sensor sozinho, certifique-se de adicionar esses dois componentes. Aprenda também a interface do DHT11 com o Arduino.
Como funciona o sensor DHT11:
O sensor DHT11 vem com um invólucro de cor azul ou branco. Dentro desta caixa, temos dois componentes importantes que nos ajudam a sentir a umidade relativa e a temperatura. O primeiro componente é um par de eletrodos; a resistência elétrica entre esses dois eletrodos é determinada por um substrato de retenção de umidade. Portanto, a resistência medida é inversamente proporcional à umidade relativa do ambiente. Quanto maior a umidade relativa menor será o valor da resistência e vice-versa. Observe também que a umidade relativa é diferente da umidade real. A umidade relativa mede o conteúdo de água no ar em relação à temperatura do ar.
O outro componente é um termistor NTC montado em superfície. O termo NTC significa coeficiente de temperatura negativo, para aumento da temperatura o valor da resistência diminuirá
Pré-requisitos:
Presume-se que o seu Raspberry Pi já tenha um sistema operacional atualizado e seja capaz de se conectar à Internet. Caso contrário, siga o tutorial Introdução ao Raspberry Pi antes de continuar.
Também presume-se que você tenha acesso ao seu pi por meio de janelas de terminal ou de outro aplicativo por meio do qual você possa escrever e executar programas em Python e usar a janela de terminal.
Instalando a biblioteca Adafruit LCD no Raspberry Pi:
O valor da temperatura e umidade será exibido em um display LCD 16 * 2. Adafruit nos fornece uma biblioteca para operar facilmente este LCD no modo de 4 bits, então vamos adicioná-lo ao nosso Raspberry Pi abrindo a janela do terminal Pi e seguindo as etapas abaixo.
Etapa 1: instale o git em seu Raspberry Pi usando a linha abaixo. O Git permite clonar qualquer arquivo de projeto no Github e usá-lo no seu Raspberry pi. Nossa biblioteca está no Github, então temos que instalar o git para baixar essa biblioteca no pi.
apt-get install git
Etapa 2: a linha a seguir leva à página do GitHub onde a biblioteca está presente, basta executar a linha para clonar o arquivo do projeto no diretório inicial do Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Passo 3: Use o comando abaixo para mudar a linha de diretório, para entrar no arquivo de projeto que acabamos de baixar. A linha de comando é fornecida abaixo
cd Adafruit_Python_CharLCD
Passo 4: Dentro do diretório terá um arquivo chamado setup.py , temos que instalá-lo, para instalar a biblioteca. Use o seguinte código para instalar a biblioteca
sudo python setup.py install
É isso que a biblioteca deveria ter sido instalada com sucesso. Agora, da mesma forma, vamos prosseguir com a instalação da biblioteca DHT, que também é da Adafruit.
Instalando a biblioteca Adafruit DHT11 no Raspberry Pi:
O sensor DHT11 funciona com o princípio do sistema de um fio. O valor de temperatura e umidade é detectado pelo sensor e, em seguida, transmitido pelo pino de saída como dados seriais. Podemos então ler esses dados usando o pino de E / S em um MCU / MPU. Para entender como esses valores são lidos, você teria que ler a ficha técnica do sensor DHT11, mas, por enquanto, para simplificar, usaremos uma biblioteca para conversar com o sensor DHT11.
A biblioteca DHT11 fornecida pela Adafruit pode ser usada para DHT11, DHT22 e outros sensores de temperatura de um fio também. O procedimento para instalar a biblioteca DHT11 também é semelhante ao seguido para instalar a biblioteca LCD. A única linha que mudaria é o link da página GitHub na qual a biblioteca DHT é salva.
Insira as quatro linhas de comando uma por uma no terminal para instalar a biblioteca DHT
git clone
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Assim que terminar, você terá ambas as bibliotecas instaladas com êxito em nosso Raspberry Pi. Agora podemos prosseguir com a conexão do hardware.
Diagrama de circuito:
O diagrama de circuito completo Interfaceando DH11 com Raspberry pi é dado abaixo, ele foi construído usando Fritzing. Siga as conexões e faça o circuito
Ambos os sensores LCD e DHT11 funcionam com alimentação de + 5V, então usamos os pinos de 5V no Raspberry Pi para alimentar ambos. Um resistor pull up de valor 1k é usado no pino de saída do sensor DHT11, se você estiver usando um módulo, pode evitar esse resistor.
Um potenciômetro de corte de 10k é adicionado ao pino V do LCD para controlar o nível de contraste do LCD. Fora isso, todas as conexões são bastante diretas. Mas anote quais pinos GPIO você está usando para conectar os pinos, pois nós precisaremos em nosso programa. O gráfico abaixo deve permitir que você descubra os números dos pinos GPIO.
Use o gráfico e faça suas conexões de acordo com o diagrama de circuito. Usei uma placa de ensaio e fios de jumper para fazer minhas conexões. Como usei o módulo DHT11, conectei-o diretamente ao Raspberry Pi. Meu hardware era assim abaixo
Programação Python para sensor DHT11:
Temos que escrever um programa para ler o valor de temperatura e umidade do sensor DHT11 e depois exibir o mesmo no LCD. Uma vez que baixamos bibliotecas para os sensores LCD e DHT11, o código deve ser bastante simples. O programa completo do python pode ser encontrado no final desta página, mas você pode ler mais para entender como o programa funciona.
Temos que importar a biblioteca LCD e a biblioteca DHT11 em nosso programa para usar as funções relacionadas a ela. Como já os baixamos e instalamos em nosso Pi, podemos simplesmente usar as seguintes linhas para importá-los. Também importamos a biblioteca de tempo para usar a função de atraso.
tempo de importação # tempo de importação para criar atraso importar Adafruit_CharLCD como LCD #Import LCD library importar Adafruit_DHT #Import DHT Library for sensor
A seguir, temos que especificar a quais pinos o sensor está conectado e que tipo de sensor de temperatura é usado. A variável sensor_name é atribuída a Adafruit_DHT.DHT11, pois estamos usando o sensor DHT11 aqui. O pino de saída do sensor é conectado ao GPIO 17 do Raspberry Pi e, portanto, atribuímos 17 à variável sensor_pin como mostrado abaixo.
sensor_name = Adafruit_DHT.DHT11 # estamos usando o sensor DHT11 sensor_pin = 17 # O sensor está conectado ao GPIO17 em Pi
Da mesma forma, também temos que definir a quais pinos GPIO o LCD está conectado. Aqui, estamos usando o LCD no modo de 4 bits, portanto, teremos quatro pinos de dados e dois pinos de controle para conectar aos pinos GPIO do pi. Além disso, você pode conectar o pino da luz de fundo a um pino GPIO se desejar controlar a luz de fundo também. Mas, por enquanto, não estou usando isso, então atribuí 0 a ele.
lcd_rs = 7 #RS do LCD está conectado ao GPIO 7 no PI lcd_en = 8 #EN do LCD está conectado ao GPIO 8 no PI lcd_d4 = 25 # D4 do LCD está conectado ao GPIO 25 no PI lcd_d5 = 24 # D5 do LCD é conectado ao GPIO 24 no PI lcd_d6 = 23 # D6 do LCD está conectado ao GPIO 23 no PI lcd_d7 = 18 # D7 do LCD está conectado ao GPIO 18 no PI lcd_backlight = 0 #LED não está conectado, então atribuímos a 0
Você também pode conectar o LCD no modo de 8 bits com Raspberry pi, mas os pinos livres serão reduzidos.
A biblioteca LCD da Adafruit que baixamos pode ser usada para todos os tipos de monitores LCD característicos. Aqui em nosso projeto, estamos usando um display LCD 16 * 2, portanto, estamos mencionando o número de linhas e colunas a uma variável, conforme mostrado abaixo.
lcd_columns = 16 #para 16 * 2 LCD lcd_rows = 2 #para 16 * 2 LCD
Agora que declaramos os pinos do LCD e o número de linhas e colunas do LCD, podemos inicializar o display LCD usando a linha a seguir que envia todas as informações necessárias para a biblioteca.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) #Envie todos os detalhes dos pinos para a biblioteca
Para iniciar o programa, exibimos uma pequena mensagem de introdução usando a função lcd.message () e então damos um atraso de 2 segundos para tornar a mensagem legível. Para imprimir na 2ª linha, o comando \ n pode ser usado conforme mostrado abaixo
lcd .message ('DHT11 with Pi \ n -CircuitDigest') #Dê uma mensagem de introdução time.sleep (2) #wait for 2 secs
Finalmente, dentro do nosso , enquanto ciclo devemos ler o valor da temperatura e umidade do sensor e exibi-lo na tela LCD para cada 2 segundos. O programa completo dentro do loop while é mostrado abaixo
enquanto 1: # Loop infinito
umidade, temperatura = Adafruit_DHT.read_retry (sensor_name, sensor_pin) # leia do sensor e salve os respectivos valores em temperatura e umidade varibale
lcd.clear () #Limpar a tela LCD lcd.message ('Temp =%.1f C'% temperatura) # Exibir o valor da temperatura lcd.message ('\ nHum =%.1f %%'% umidade) #Display o valor de Humidity time.sleep (2) #Espere por 2 segundos e atualize os valores
Podemos facilmente obter o valor de temperatura e umidade do sensor usando esta linha única abaixo. Como você pode ver, ele retorna dois valores que são armazenados nas variáveis umidade e temperatura. Os sensor_name e sensor_pin detalhes são passados como parâmetros; esses valores foram atualizados no início do programa
umidade, temperatura = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
Para exibir um nome de variável na tela LCD, podemos usar os identificadores como & d,% c etc. Aqui, como estamos exibindo um número de ponto flutuante com apenas um dígito após o ponto decimal, usamos o identificador%.1f para exibir o valor em a temperatura e umidade variáveis
lcd .message ('Temp =%.1f C'% temperatura) lcd .message ('\ nHum =%.1f %%'% umidade)
Medindo umidade e temperatura usando Raspberry Pi:
Faça as conexões de acordo com o diagrama de circuito e instale as bibliotecas necessárias. Em seguida, inicie o programa python fornecido no final desta página. Seu LCD deve exibir uma mensagem de introdução e, em seguida, exibir o valor atual de temperatura e umidade, conforme mostrado na imagem abaixo.
Se você não encontrar nada sendo exibido no LCD, verifique se a janela do shell python está exibindo algum erro, se nenhum erro for exibido, verifique suas conexões mais uma vez e ajuste o potenciômetro para variar o nível de contraste do LCD e verifique se há algo ligado a tela.
Espero que você tenha entendido o projeto e gostado de construí-lo. Se você encontrou algum problema para fazer isso, informe na seção de comentários ou use o fórum para obter ajuda técnica. Vou tentar o meu melhor para responder a todos os comentários.
Você também pode verificar nossos outros projetos usando DHT11 com outro microcontrolador.