Uma chave de botão é um dispositivo de entrada simples, mas eficaz, frequentemente usado em projetos como processos de partida ou parada, LEDs controlando ou acionando eventos. Este tutorial o levará conectando uma chave de botão ao Raspberry Pi, configurando a fiação e escrevendo um script python para detectar pressionamentos de botão.
O que você precisará
- Raspberry Pi (Qualquer modelo com suporte GPIO, por exemplo, PI 3, PI 4)
- Interruptor de botão
- Fios de pão e jumper
- Resistor (10kΩ para puxar)
- Python instalado no seu Raspberry Pi
- Biblioteca GPIO Para controlar os pinos GPIO do Raspberry Pi
Etapa 1: Fiação do botão para o Raspberry Pi
Uma chave de botão funciona conectando o pino GPIO a um estado alto (3,3V) quando pressionado ou puxando -o para baixo (0V) quando não for pressionado. Usaremos um resistor pull-down para garantir que o pino GPIO lê baixo quando o botão não for pressionado.
Ligando o botão
Pino de botão | Pino GPIO de Raspberry Pi |
---|---|
Um pino | Gpio17 (pino 11) |
Outro pino | Terra (pino 6) |
Um pino | Resistor de 10kΩ ao solo |
Aqui está a configuração da fiação:
- Conecte um terminal do botão para Gpio17 (Pino 11).
- Conecte o outro terminal do botão para Chão (Pino 6).
- Conectar um resistor de 10kΩ entre Gpio17 e Chão Atuar como um resistor de puxar.
Isso garante que, quando o botão for pressionado, o GPIO17 lê alto (3,3V) e, quando não é pressionado, o GPIO17 é puxado para baixo (0V) pelo resistor.
Etapa 2: Ativar pinos GPio em Python
-
Primeiro, atualize a lista de pacotes do Raspberry Pi:
sudo apt update sudo apt upgrade -y
-
Instale a biblioteca Python GPIO necessária (se ainda não estiver instalada):
sudo apt install python3-rpi.gpio
-
Importe a biblioteca em seu script Python:
import RPi.GPIO as GPIO import time
Etapa 3: Escrevendo o código Python
Agora, vamos escrever um script python para detectar quando o botão é pressionado e agir de acordo.
Exemplo de código Python
import RPi.GPIO as GPIO
import time
# Set up the GPIO mode and pin
GPIO.setmode(GPIO.BCM) # Use BCM numbering
button_pin = 17 # GPIO pin connected to the button
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # Set up pin with pull-down resistor
# Function to detect button press
def button_callback(channel):
print("Button was pressed!")
# Set up an event on the button pin
GPIO.add_event_detect(button_pin, GPIO.RISING, callback=button_callback, bouncetime=300)
try:
print("Press the button...")
while True:
# Keep the program running to wait for button press
time.sleep(0.1)
except KeyboardInterrupt:
print("Program exited")
finally:
GPIO.cleanup() # Clean up GPIO to ensure a clean exit
Explicação de código:
- Gpio.setMode (gpio.bcm): Define a numeração do pino GPIO no modo BCM (Broadcom).
- Gpio.setup (button_pin, gpio.in, pull_up_down = gpio.pud_down): Configura o pino do botão como uma entrada com um resistor pull-down, o que significa que ele lerá baixo quando não for pressionado.
-
Gpio.add_event_detect ():
button_callback
Quando o botão é pressionado. - time.sleep (0,1): Mantém o script funcionando, permitindo que ele aguarde uma pressão de botão.
- Gpio.cleanup (): Limpe as configurações do GPIO quando o script é excitado.
Etapa 4: testando o botão
-
Execute seu script python:
python3 button.py
-
Pressione o botão de pressão e observe a mensagem "O botão foi pressionado!" no terminal.
Etapa 5: Aplicações
Aqui estão algumas idéias para usar o botão em seus projetos:
- Controle um LED: Use o botão para atribuir e desativar um LED.
- Acionar um evento: Inicie ou pare um processo (por exemplo, inicie um motor, ligue um ventilador ou inicie um script).
- Campainha inteligente: Use o botão como campainha para enviar uma notificação ao seu telefone.
- Entrada do usuário: Obtenha entrada simples do usuário para seus projetos (como uma resposta "sim/não").
Solução de problemas
-
Botão não detectado:
- Verifique se o botão está conectado corretamente com o resistor de pull-down.
- Verifique duas vezes sua configuração de pino GPIO no código.
-
Erro gpio:
- Verifique se a biblioteca GPIO está instalada corretamente e se os números de pinos no seu script estão corretos.
-
Salto de botão:
- Se você notar que vários botões pressionam sendo detectados, poderá adicionar um tempo de debounce (
bouncetime=300
no script) para evitar detecções falsas.
- Se você notar que vários botões pressionam sendo detectados, poderá adicionar um tempo de debounce (
Conclusão
Usar uma chave de botão com o Raspberry Pi é uma maneira fácil de adicionar a funcionalidade de entrada aos seus projetos. Seja alternando LEDs, desencadeando eventos ou interagindo com outros hardware, essa configuração simples pode ser a base para muitas aplicações interessantes. Experimente diferentes pinos GPIO e configurações de Debounce para atender às suas necessidades!