Descrição
Uma das desvantagens do Raspberry Pi é o facto de não ter uma forma clara de desligar a placa sem interferir com o terminal ou com o interface gráfico do sistema operativo que tenhamos instalado. Ele não tem um Botão de desligar como qualquer outro dispositivo eletrónico que se preze.
Como você sabe, desligar o Raspberry Pi “quente”, ou seja, puxando o cabo de alimentação ou desligando o interruptor do filtro de linha onde ele está ligado sem fechar antes o sistema operativo fará com que o sistema de arquivos seja corrompido e que haja uma série de procedimentos críticos que se tenham de efectuar no momento de encerramento do sistema.
Neste pequeno tutorial mostra-se como montar um Botão de desligar no Raspberry Pi, mas o melhor de tudo é que podemos modificar o comando a ser executado, pressionando o botão para que possamos dar-lhe qualquer uso que imaginemos, como ligar e desligar o WiFi ou reiniciar o Raspberry Pi. Isso vos deixo ao vosso gosto….
Montagem e ligações do Botão de desligar
Para montar o botão, pode usar uma breadboard para fazer ensaios ou soldar os componentes directamente. Na imagem mais abaixo, pode ver o esquema de ligações, como você vai ver, eu usei o pino de saída 3.3V e um pino GND, também o pino GPIO nº4 (BCM). Quando se pressiona o botão, cria-se um curto circuito entre o pin 3.3V e GND, por isso, eu coloquei uma resistência de 330 Ohms para não queimar a placa.

Script Python
Uma vez montado o esquema, falta-nos iniciar um pequeno script no Python que vai detectar as pulsações do botão e lançará o comando de desligar e de reiniciar do nosso Raspberry Pi
Este seria o código do nosso script de desligar. Na linha, poderá ver “sudo halt” que é o comando para desligar o Raspberry Pi, pode trocá-lo por “sudo reboot” ou qualquer outro comando que queira executar quando pressiona o botão.
import os import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(4,GPIO.IN) prev_input = 0 while True: input = GPIO.input(4) if ((not prev_input) and input): os.system("sudo halt") prev_input = input #Pequeña pausa time.sleep(0.05)
Para iniciar o script, é so escrever para o terminal:
sudo python shutdown.py
Automatização
O problema deste sistema é que temos que iniciar o script manualmente a partir da consola cada vez que arrancamos o Raspberry Pi, por isso vamos automatizar o processo. Criamos um terminal e escrevêmos:
sudo vi /etc/rc.local
Uma vez aberto escrevemos “sudo vi /etc/rc.local” mesmo antes de “exit 0”, acabando assim:
sudo python shutdown.py exit 0
Agora podemos reinicar ou desligar o nosso Raspberry Pi sem problemas porque a próxima vez que arrancar, o script inciar-se-á automaticamente.
Atualização: Encontrei outro script en Python que serve para o mesmo e consome menos CPU!
# Importamos os módulos para enviar comandos ao sistema e acceder aos pinos GPIO from subprocess import call import RPi.GPIO as gpio # Definimos una função para que o script no se detenha def loop(): raw_input() # Definimos una função que se vai executar quando se chama a interrupção def shutdown(pin): call('halt', shell=False) gpio.setmode(gpio.BOARD) # Colocamos a placa em modo BOARD gpio.setup(4, gpio.IN) # Configuramos o pin 4 como entrada # Configuramos una interrupção para quando se apertar o botão gpio.add_event_detect(4, gpio.RISING, callback=shutdown, bouncetime=200) loop() # Iniciamos a função para que o script continue em marcha
Gostaram deste artigo ? Deixem o vosso comentário no formulário a baixo.
Não se esqueçam de fazer like na nossa página no facebook.
Todos os produtos utilizados neste artigo podem ser encontrados na loja de componentes eletrónicos ElectroFun.