Índice:

Botão de desligamento para Raspberry Pi: 3 etapas
Botão de desligamento para Raspberry Pi: 3 etapas

Vídeo: Botão de desligamento para Raspberry Pi: 3 etapas

Vídeo: Botão de desligamento para Raspberry Pi: 3 etapas
Vídeo: Turbinando o Raspberry Pi 3 - Resfriamento e botão para ligar e desligar 2024, Novembro
Anonim
Botão de desligamento para Raspberry Pi
Botão de desligamento para Raspberry Pi

O Raspberry Pi é uma plataforma de computação muito útil que permite a criação de vários aplicativos de projeto IoT / robótica / smart-home /…. Porém, a única coisa que ele não tem, em comparação com um computador normal, é um botão de desligamento. Então, como podemos criar um? Tudo bem, vamos fazer isso juntos!

Para este tutorial, você precisará do seguinte:

  • 1 Raspberry Pi já configurado e pronto para usar
  • 1 placa de ensaio ou algo que permitirá que você crie o circuito eletrônico
  • 1 botão de pressão
  • 2 fios de ligação

Se você nunca usou um Raspberry Pi, pode verificar meu tutorial sobre como e o que fazer para configurá-lo:

www.instructables.com/How-to-Setup-a-Raspberry-Pi-and-Start-Using-It/

Etapa 1: Circuito Eletrônico

Circuito eletronico
Circuito eletronico
Circuito eletronico
Circuito eletronico
Circuito eletronico
Circuito eletronico

Nada muito complicado aqui, é um circuito bastante simples. As 2 fotos acima explicam a construção do circuito. Você pode usar qualquer pino GPIO que desejar para a entrada do botão, você só precisa se certificar de atualizar o código para refletir isso.

Vamos explicar rapidamente como isso vai funcionar:

  • o fio VERMELHO está levando os 3,3 V para uma das extremidades do botão.
  • o cabo PRETO conecta a outra extremidade do botão a um Pi GPIO que será usado como entrada.
  • por padrão, o botão está aberto, então não há tensão passando por ele. Portanto, o cabo PRETO está em 0 V quando o botão não está pressionado. Isso significa que o estado lógico da entrada Pi GPIO é 0.
  • quando o botão for pressionado, a tensão passará por ele e o cabo PRETO será conectado ao 3,3V. O Raspberry Pi verá uma voltagem de 3,3 V em sua entrada, correspondendo a um estado lógico de 1.

Etapa 2: código Python

Código Python
Código Python

Agora que o circuito está pronto para ser usado, precisamos escrever o código que irá executá-lo, e estou usando Python em um ambiente PyCharm aqui. Eu configurei o botão para desligar o Raspberry Pi apenas quando for pressionado por mais de 3 segundos consequentemente. Estou fazendo isso porque é muito fácil pressioná-lo acidentalmente e você não quer desligar seu Pi por acidente.

A tela de impressão acima é do meu ambiente PyCharm e o código é o seguinte (com uma pequena diferença na linha 26, que está vinculada a outro projeto, mas não é obrigatória aqui):

# Este é um código para desligar o Raspberry Pi ao pressionar e segurar um botão definido # Módulo externo importaçõesimportar RPi. GPIO como GPIOimportar tempoimportar os # Definição de pinos e variáveis do Raspberry Pi & hold_time = 3 # Tempo de espera em segundos para poweroffbutton_poweroff = 1 # Botão de pressão para desligar Raspberry PiGPIO.setwarnings (False) GPIO.setmode (GPIO. BCM) # Broadcom pin-numbering schemeGPIO.setup (button_poweroff, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) # Botão definido como inputwhile True: GPIO.wait_for_edge (button_poweroff, GPIO. RISING) start = time.time () time.sleep (0.2) # Switch debounce enquanto GPIO.input (button_poweroff) == 1: time.sleep (0.01) length = time.time () - inicia se comprimento > hold_time: os.system ("sudo poweroff")

A primeira coisa, se você conectou o botão a um GPIO diferente, é atualizar a linha 11 na tela de impressão acima com a entrada GPIO relevante:

button_poweroff = GPIO_X # Atualize com o GPIO correto usado em seu circuito

Além disso, a variável hold_time permite que você modifique o tempo de espera que aciona o encerramento do Pi.

Etapa 3: Como iniciar o script automaticamente após o procedimento de inicialização

Como iniciar o script automaticamente após o procedimento de inicialização
Como iniciar o script automaticamente após o procedimento de inicialização
Como iniciar o script automaticamente após o procedimento de inicialização
Como iniciar o script automaticamente após o procedimento de inicialização

Agora que temos o código pronto, só precisamos executá-lo. Porém, seria conveniente se pudéssemos ter esse script executado toda vez que o Pi estiver inicializando, de forma automática, para que o botão funcionasse sem que nós executássemos o script todas as vezes. Existem muitas maneiras de fazer isso. Eu adicionei aqui uma linha no arquivo rc.local que está localizado na pasta / etc / do seu Pi. Ele é executado como parte da sequência de inicialização.

Você precisa abrir uma linha de comando e digitar os seguintes comandos (1ª tela de impressão acima):

CD /

cd etc sudo nano rc.local

O primeiro comando o levará de seu diretório / home / pi para o diretório raiz, que é /.

O segundo comando o levará ao diretório / etc /.

Finalmente, o terceiro abrirá o arquivo rc.local como um superusuário, com direitos totais de edição, necessários para modificar o arquivo.

Uma vez no arquivo, você só precisa adicionar uma linha no final dele, mas antes da instrução exit 0 (2ª tela de impressão acima):

# Adicione esta linha ao arquivo rc.local para iniciar o script

sudo python /home/pi/Documents/shutdown_with_hold.py &

Existem algumas coisas às quais você precisa prestar atenção, aqui:

  1. o nome do seu arquivo: na linha acima, estou assumindo que o arquivo é shutdown_with_hold.py. Mas pode ser o que você quiser, basta atualizar o nome com o seu.
  2. onde você salvou seu arquivo: na linha acima, estou assumindo que ele está salvo em seu diretório / home / pi / Documentos. Mas, novamente, pode estar em qualquer lugar. Você só precisa ter certeza de colocar o caminho absoluto para o seu arquivo aqui.
  3. o caractere "&" no final: isso é importante e permite que este comando seja executado em segundo plano

E é isso! Portanto, agora, o script será executado sempre que seu Pi estiver LIGADO, e você só terá que pressionar mais de 3 segundos no botão para desligá-lo.

Recomendado: