Utilizando sensores na Raspberry Pi - MakerHero
Utilizando sensores na Raspberry Pi

Utilizando sensores na Raspberry Pi

Deixe um comentário

Nesta aula, aprenderemos como utilizar sensores na Raspberry Pi, cobrindo desde a escolha e conexão física dos sensores até a programação necessária para ler os dados coletados. Veremos o exemplo prático da leitura de um sensor DHT11, além de dicas sobre como evitar e solucionar problemas comuns que podem surgir ao trabalhar com sensores na Raspberry Pi.

Como utilizar sensores na Raspberry Pi?

Utilizar sensores na Raspberry Pi é um processo que envolve a conexão física do sensor à placa e a programação para ler os dados do sensor. Abaixo estão os passos gerais para utilizar sensores na placa Raspberry Pi:

  • Escolha do Sensor: Primeiramente, escolha o sensor que deseja utilizar. Existem diversos tipos de sensores, como sensores de temperatura, umidade, movimento, distância, etc. Cada sensor tem um tipo específico de comunicação (analógica, digital, I2C, SPI) e requer um tipo de conexão diferente.
  • Conexão Física: A conexão física varia de acordo com o tipo de sensor:
    • Sensores Digitais: Conectam-se diretamente aos pinos GPIO da Raspberry Pi. Exemplos incluem sensores de movimento ou botões.
    • Sensores Analógicos: A Raspberry Pi não possui entradas analógicas, então é necessário um conversor analógico para digital (ADC), como o MCP3008.
    • Sensores I2C: Utilizam o barramento I2C. Conectam-se aos pinos SDA e SCL da Raspberry Pi. Exemplos incluem sensores como o de temperatura e pressão BMP280.
    • Sensores SPI: Utilizam o barramento SPI. Conectam-se aos pinos MOSI, MISO, SCLK e CS. Exemplos incluem alguns sensores de distância.
  • Configuração do Barramento de Comunicação: Se o sensor usa I2C ou SPI, você precisará habilitar esses barramentos no sistema:
    • I2C: Use o comando sudo raspi-config para habilitar o I2C.
    • SPI: Use o mesmo comando para habilitar o SPI.
  • Instalação das Bibliotecas Necessárias: Dependendo do sensor, você pode precisar instalar bibliotecas Python específicas para facilitar a comunicação. 
  • Documentação e Referências: Sempre consulte a documentação do sensor para entender suas especificações e requisitos. A documentação frequentemente fornece exemplos de código e diagramas de conexão que são extremamente úteis.

Utilizar sensores na Raspberry Pi permite criar projetos interativos e monitorar dados do mundo real, expandindo as possibilidades de aplicação da sua placa.

Materiais Necessários

Para montar o circuito para ler um sensor DHT11 com a Raspberry Pi, vamos precisar dos seguintes materiais:

Circuito para ler o sensor DHT11 com a Raspberry Pi

 Aqui estão algumas características principais do sensor DHT11:

  • Alimentação: 3 a 5,5 V
  • Faixa de leitura da Umidade: 20% a 80%
  • Precisão da Umidade: ±5%
  • Faixa de leitura da Temperatura: 0 a 50 ºC
  • Precisão da Temperatura: ±2 ºC

O sensor DHT11 transmite os dados para a Raspberry Pi através de um único pino de dados, enquanto os outros dois pinos são destinados à alimentação (VCC) e ao terra (GND). O terceiro pino do sensor não é utilizado. Para mais detalhes sobre a pinagem e outras especificações, consulte o datasheet do sensor e observe a imagem da pinagem abaixo.

Circuito para ler o sensor DHT11 com a Raspberry Pi

Abaixo está representado o circuito de montagem para ler o sensor DHT11 com a Raspberry Pi:

circuito de montagem para ler o sensor DHT11 com a Raspberry Pi

O circuito montado conforme o esquema ficará como mostrado na figura abaixo:

circuito de montagem para ler o sensor DHT11 com a Raspberry Pi

Instalação das bibliotecas para o sensor DHT11 na Raspberry Pi

Para usar o sensor DHT11 com a Raspberry Pi, é necessário instalar algumas bibliotecas específicas.

Antes de instalar qualquer biblioteca, é recomendável atualizar o sistema operacional para garantir que todas as dependências estejam atualizadas. Execute os seguintes comandos no terminal:

sudo apt-get update
sudo apt-get upgrade

A biblioteca libgpiod2 fornece acesso à interface de GPIO de dispositivos Linux, necessária para o sensor DHT11:

sudo apt-get install libgpiod2

Para gerenciar as bibliotecas Python de forma isolada, é recomendável criar um ambiente virtual. Primeiro, instale o pacote python3-venv (caso ainda não esteja instalado):

sudo apt-get install python3-venv

Escolha um diretório para o ambiente virtual (por exemplo, myenv) e crie o ambiente com o comando:

python3 -m venv myenv

Ative o ambiente virtual:

source myenv/bin/activate

Após ativar o ambiente virtual, o nome do ambiente aparecerá no prompt do terminal, indicando que o ambiente está ativo.

Com o ambiente virtual ativado, instale as seguintes bibliotecas necessárias para o projeto:

pip3 install gpiod
pip3 install adafruit-circuitpython-dht

Depois de instalar todas as bibliotecas e fazer as configurações necessárias, você pode desativar o ambiente virtual com o comando:

deactivate

Código Python para ler o sensor DHT11 com a Raspberry Pi

Agora você pode criar um script Python para ler os dados do sensor com a Raspberry Pi. Crie um arquivo Python com um nome como dht11-raspberry-pi.py.

nano dht11-raspberry-pi.py

Use o seguinte código:

# Bibliotecas utilizadas
import time
import board
import adafruit_dht

# Inicializa o dispositivo DHT11 com o pino de dados conectado ao GPIO 23
dhtDevice = adafruit_dht.DHT11(board.D23)

# Loop infinito para ler dados do sensor continuamente
while True:
    try:
        # Lê a temperatura em Celsius do sensor
        temperature_c = dhtDevice.temperature
        # Converte a temperatura de Celsius para Fahrenheit
        temperature_f = temperature_c * (9 / 5) + 32
        # Lê a umidade do sensor
        humidity = dhtDevice.humidity
        
        # Imprime a temperatura e a umidade formatadas
        print(
            "Temp: {:.1f} F / {:.1f} C    Humidity: {}% ".format(
                temperature_f, temperature_c, humidity
            )
        )

    except RuntimeError as error:
        # Captura erros de execução comuns durante a leitura do sensor (como falhas
        # de comunicação) e imprime a mensagem de erro. Esses erros são comuns com 
        # sensores DHT e o programa continua.
        print(error.args[0])
        # Aguarda 2 segundos antes de tentar novamente
        time.sleep(2.0)
        continue

    except Exception as error:
        # Captura outros erros inesperados e sai do modo de leitura do
        # sensor e levanta a exceção para ser tratada fora do loop
        dhtDevice.exit()
        raise error

    # Aguarda 2 segundos antes de fazer a próxima leitura do sensor
    time.sleep(2.0)

Depois de colar o código no nano, pressione Ctrl+O para salvar e Enter para confirmar. Finalmente, saia do editor com Ctrl+X.

Agora ative novamente o ambiente virtual com o seguinte comando:

source myenv/bin/activate

Por fim, use o seguinte comando para executar o programa Python:

python3 dht11-raspberry-pi.py

Quando o código for executado, ele irá interagir com o sensor DHT11 conectado ao pino GPIO 23 da placa Raspberry Pi para ler a temperatura e a umidade do ambiente em intervalos regulares de 2 segundos.

código

Possíveis Erros

Ao trabalhar com sensores na placa Raspberry Pi, alguns erros comuns podem ocorrer, como:

  • Conexão Incorreta dos Pinos: Um dos problemas mais frequentes é a conexão incorreta dos pinos do sensor à Raspberry Pi. Certifique-se de que o pino de dados do sensor está conectado ao pino GPIO correto configurado no seu código, e que os pinos de alimentação (Vcc e GND) estejam devidamente conectados. Verifique também a tensão de operação do sensor para evitar danos à Raspberry Pi.
  • Falhas de Leitura do Sensor: Erros de leitura, como mensagens indicando “Failed to read from sensor” ou “Checksum error”, podem ocorrer devido a instabilidades na comunicação entre o sensor e a Raspberry Pi. Isso pode ser causado por cabos de conexão defeituosos, interferências eletromagnéticas, ou ainda pela falta de um resistor de pull-up na linha de dados do sensor.
  • Configuração de Software Incorreta: O uso de bibliotecas incompatíveis ou versões incorretas da biblioteca necessária para o sensor pode gerar falhas na execução do código. Certifique-se de instalar a biblioteca correta (como a Adafruit_DHT para o sensor DHT11) e que ela esteja atualizada e compatível com a versão do Python e do sistema operacional da sua Raspberry Pi.
  • Problemas com o Ambiente Virtual: Quando se utiliza um ambiente virtual Python para instalar bibliotecas, é importante lembrar de ativá-lo antes de executar o código. Se o ambiente virtual não estiver ativado, o código pode não encontrar as bibliotecas necessárias, resultando em erros de “Module not found”.
  • Erros de Alimentação: O sensor pode não funcionar corretamente se não estiver recebendo a alimentação adequada. Sensores como o DHT11 precisam de uma tensão específica (normalmente entre 3V e 5.5V) para operar corretamente. Certifique-se de que a alimentação fornecida está de acordo com o especificado no datasheet do sensor.
  • Atualização e Configuração do Sistema Operacional: Certifique-se de que o sistema operacional da Raspberry Pi está atualizado. Alguns problemas de compatibilidade de hardware e software podem ser resolvidos com atualizações do sistema. Use os comandos sudo apt update e sudo apt upgrade para garantir que todos os pacotes estejam atualizados.

Entender esses erros comuns e suas causas ajudará a diagnosticar e solucionar problemas ao utilizar sensores na Raspberry Pi, garantindo leituras mais precisas e o correto funcionamento do seu projeto.

Faça seu comentário

Acesse sua conta e participe