Automação com Python na Raspberry Pi - MakerHero
Automação com Python na Raspberry Pi

Automação com Python na Raspberry Pi

Deixe um comentário

Nesta aula, vamos explorar o poder da automação com Python na Raspberry Pi, apresentando conceitos fundamentais e exemplos práticos de como utilizar a linguagem Python para automatizar tarefas variadas. Vamos aprender como configurar o ambiente de desenvolvimento, agendar scripts usando bibliotecas como schedule e cron, e criar um projeto prático. 

Introdução à Automação com Python na Raspberry Pi

Automação é o processo de utilizar tecnologias para realizar tarefas de forma automática, sem a necessidade de intervenção humana constante. No contexto da Raspberry Pi, a automação abre um mundo de possibilidades para projetos que variam de simples controles de dispositivos a sistemas complexos de monitoramento e resposta.

Python é uma das linguagens de programação mais populares para automação, especialmente na Raspberry Pi. Essa popularidade se deve à sua simplicidade, clareza de sintaxe e à vasta quantidade de bibliotecas e frameworks disponíveis para as mais diversas tarefas. Na Raspberry Pi, Python é uma escolha natural para automação porque já vem pré-instalado na Raspberry Pi OS e tem suporte direto para acessar as portas GPIO (General Purpose Input/Output), que são essenciais para controlar dispositivos externos e ler sensores.

Por que automatizar com Python na Raspberry Pi?

Automatizar tarefas com Python na Raspberry Pi oferece diversos benefícios, tais como:

  • Eficiência: A automação permite a execução de tarefas repetitivas de maneira rápida e precisa, liberando tempo para outras atividades.
  • Conveniência: Dispositivos automatizados podem ser controlados remotamente ou agendados para funcionar em horários específicos, melhorando a conveniência do usuário.
  • Economia de Energia: Sistemas automatizados podem ajudar a reduzir o consumo de energia desligando automaticamente dispositivos quando não estão em uso.
  • Personalização: Usando Python, é possível adaptar as funcionalidades dos projetos conforme a necessidade específica do usuário, criando soluções personalizadas e flexíveis.
  • Interação com o Mundo Físico: Ao combinar Python com os pinos GPIO da placa Raspberry Pi, você pode controlar LEDs, motores, relés, sensores e outros dispositivos físicos, transformando ideias em projetos reais e funcionais.

Alguns exemplos práticos de automação com Raspberry Pi estão listados abaixo:

  • Controle de Dispositivos Domésticos: Acender e apagar luzes automaticamente, controlar ventiladores ou aquecedores com base em condições ambientais (como temperatura e umidade), ou mesmo acionar sistemas de irrigação automatizados para jardins.
  • Monitoramento de Ambientes: Criar sistemas que monitoram a qualidade do ar, temperatura, nível de ruído, e enviam alertas quando um parâmetro específico é excedido.
  • Automação Industrial e Segurança: Desenvolver sistemas de controle de acesso, detecção de movimento e câmeras de segurança que enviam notificações ou alertas em tempo real.
  • Integração com a Internet das Coisas (IoT): Conectar dispositivos a plataformas de IoT para gerenciar remotamente sensores e atuadores em casa, na indústria ou em projetos acadêmicos.

Configuração do Ambiente Python na Raspberry Pi

Para começar a criar projetos de automação com Python na Raspberry Pi, é importante garantir que seu ambiente de desenvolvimento esteja configurado corretamente. 

O Raspberry Pi OS já vem com Python instalado por padrão. Para verificar se o Python está instalado corretamente e qual versão está disponível, abra o terminal (ícone de terminal na barra de tarefas) e digite o seguinte comando:

python3 --version

Este comando deve retornar a versão do Python instalada, como Python 3.x.x. O Python 3 é a versão recomendada, pois é a mais atual e suportada. Caso o Python 3 não esteja instalado, você pode instalá-lo com:

sudo apt update
sudo apt install python3
sudo apt install python3-pip

Para escrever e editar seus scripts Python, você pode usar diferentes editores de código ou IDEs (Ambientes de Desenvolvimento Integrado).

Agendamento de Tarefas com Python na Raspberry Pi

O agendamento de tarefas é uma parte fundamental da automação, permitindo que scripts Python sejam executados em horários específicos ou em intervalos regulares. Você pode usar ferramentas como o módulo schedule em Python ou o cron, que é uma ferramenta de agendamento de tarefas em sistemas Unix/Linux.

schedule

O schedule é uma biblioteca Python que permite agendar e executar tarefas repetitivas de forma simples e direta. É ideal para scripts Python que precisam executar funções em horários específicos ou intervalos regulares.

As principais características do schedule são:

  • Facilidade de Uso: Com uma sintaxe intuitiva, você pode agendar tarefas para serem executadas a cada minuto, hora, dia, ou qualquer outro intervalo.
  • Integração com Python: Tudo é feito dentro do próprio script Python, sem necessidade de ferramentas externas.
  • Flexibilidade: Permite definir múltiplos horários e intervalos de execução.

Você pode instalar o schedule usando pip:

pip3 install schedule

Após realizar a instalação, você pode ser criar um script de teste:

import schedule
import time

def job():
    print("Executando tarefa...")

# Agende a tarefa para ser executada a cada 10 segundos
schedule.every(10).seconds.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

Neste exemplo, a função job será executada a cada 10 segundos. O loop while True mantém o script ativo, verificando e executando tarefas agendadas.

cron

O cron é um utilitário de agendamento de tarefas em sistemas Unix e Linux. Ele permite que usuários e administradores configurem comandos ou scripts para serem executados em horários específicos ou em intervalos regulares. O cron é uma ferramenta de sistema, não específica para Python, e é bastante robusta e amplamente utilizada em servidores.

As principais características do cron são:

  • Agendamento Baseado em Tempo: Permite agendar tarefas baseadas em minuto, hora, dia do mês, mês e dia da semana.
  • Persistência: As tarefas agendadas com cron persistem mesmo após reinicializações do sistema.
  • Versatilidade: Pode ser usado para agendar uma ampla gama de comandos e scripts, não apenas Python.

Para adicionar ou modificar tarefas agendadas, você edita o arquivo crontab usando:

crontab -e

Exemplo de entrada no crontab:

* * * * * /usr/bin/python3 /caminho/para/seu_script.py

Esta linha executa o script seu_script.py a cada minuto. A sintaxe do crontab é:

* * * * * comando
| | | | |
| | | | +----- Dia da semana (0 - 7) (domingo é 0 e 7)
| | | +------- Mês (1 - 12)
| | +--------- Dia do mês (1 - 31)
| +----------- Hora (0 - 23)
+------------- Minuto (0 - 59)

Exemplo Prático de Agendamento Python na Raspberry Pi

Vamos criar um exemplo prático que combina o uso do módulo schedule com a leitura de um sensor DHT11 (um sensor de temperatura e umidade) em uma placa Raspberry Pi. Os materiais e o circuito são os mesmos apresentados na Aula 10 – Utilizado sensores na Raspberry Pi.

Exemplo Prático de Agendamento Python na Raspberry Pi

Abra o terminal e execute os seguintes comandos para instalar as bibliotecas necessárias para o projeto.

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 schedule
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

Agora você pode criar um script Python para agendar a leitura dos dados do sensor com a Raspberry Pi. Crie um arquivo Python com um nome como agendamento-raspberry-pi.py.

nano agendamento-raspberry-pi.py

Use o seguinte código:

# Importa as bibliotecas necessarias
import time  # Para fazer pausas entre as execucoes
import board  # Para definir os pinos GPIO
import adafruit_dht  # Para trabalhar com o sensor DHT11
import schedule  # Para agendar a execucao de tarefas

# Cria uma instancia do sensor DHT11 conectado ao pino GPIO 23
dhtDevice = adafruit_dht.DHT11(board.D23)

def ler_dht11():
    """
    Funcao para ler e exibir a temperatura e umidade do sensor DHT11.
    """
    try:
        # Le a temperatura em graus Celsius do sensor
        temperature_c = dhtDevice.temperature
        
        # Converte a temperatura de Celsius para Fahrenheit
        temperature_f = temperature_c * (9 / 5) + 32
        
        # Le a umidade do sensor
        humidity = dhtDevice.humidity
        
        # Exibe a temperatura e umidade no terminal
        print("Temp: {:.1f} F / {:.1f} C Humidity: {}%".format(temperature_f, temperature_c, humidity))
    except Exception as e:
        # Captura e exibe erros que podem ocorrer durante a leitura do sensor
        print("Erro ao ler o sensor: ", e)

# Agenda a execucao da funcao ler_dht11 a cada 10 minutos
schedule.every(10).minutes.do(ler_dht11)

while True:
    """
    Loop principal que mantem o script em execucao e verifica se ha tarefas agendadas.
    """
    # Executa as tarefas que foram agendadas com a biblioteca schedule
    schedule.run_pending()
    
    # Faz uma pausa de 1 segundo para evitar uso excessivo da CPU
    time.sleep(1)

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 agendamento-raspberry-pi.py

O script começará a ler os dados do sensor a cada 10 minutos e imprimirá os resultados no terminal.

Aplicações da Automação com Python na Raspberry Pi

Aqui estão algumas ideias de tarefas que podem ser agendadas usando o schedule:

  • Backup de Arquivos: Realizar backups regulares de arquivos importantes ou bancos de dados.
  • Envio de Relatórios: Gerar e enviar relatórios diários ou semanais por e-mail.
  • Monitoramento de Sistema: Verificar o uso de CPU, memória ou espaço em disco e gerar alertas se os limites forem excedidos.
  • Atualização de Dados: Baixar ou atualizar dados de uma API externa em intervalos regulares.
  • Limpeza de Arquivos Temporários: Remover arquivos temporários ou logs antigos para liberar espaço.
  • Execução de Scripts de Manutenção: Rodar scripts para manter a integridade e o desempenho do sistema.
  • Controle de Dispositivos: Acionar ou desligar dispositivos como luzes, aquecedores, ou ventiladores com base em horários ou condições.
  • Leitura de Sensores Ambientais: Coletar dados de sensores como temperatura, umidade, qualidade do ar, e armazenar essas informações.
  • Atualização de Software: Verificar e instalar atualizações de software ou pacotes regularmente.
  • Notificações de Eventos: Enviar notificações ou lembretes para eventos ou tarefas importantes.
  • Reinício de Serviços: Reiniciar serviços ou aplicações para garantir que estejam funcionando corretamente.
  • Análise de Logs: Analisar logs do sistema para detectar padrões ou erros e gerar relatórios.
  • Sincronização de Arquivos: Sincronizar arquivos entre diferentes locais ou sistemas.
  • Verificação de Conectividade: Checar a conectividade com servidores ou serviços externos e tomar ações em caso de falhas.
  • Execução de Tarefas de Teste: Rodar testes automatizados para verificar a funcionalidade de software ou hardware.

Faça seu comentário

Acesse sua conta e participe