Propaganda

Aprender a usar os pinos GPIO no seu Raspberry Pi abre um mundo inteiro de possibilidades. Os princípios básicos aprendidos em projetos iniciantes pavimentam o caminho para o conhecimento útil da eletrônica e programação DIY.

Este tutorial mostrará duas maneiras de adicionar um botão ao seu projeto Raspberry Pi. O botão será usado para controlar um LED. Instruções escritas estão disponíveis abaixo do vídeo.

Você precisará

Para começar, verifique se você tem os seguintes componentes:

  • 1 x Raspberry Pi (Qualquer um serve, o modelo 3B é usado neste tutorial)
  • 1 x botão de pressão
  • 1 x LED
  • Resistor de 1 x 220 Ohm (valores mais altos são bons, seu LED ficará mais escuro)
  • 1 x tábua de pão
  • Ligar os fios

Uma vez reunidos, você deve ter componentes parecidos com o seguinte:

Peças necessárias para o tutorial do botão Pi

Você também precisará de um cartão SD com o sistema operacional Raspbian instalado. A maneira mais rápida de fazer isso é com a imagem NOOBS (novo software pronto para uso). Instruções sobre como fazer isso estão disponíveis neste vídeo:

Configurando o circuito

Você usará os pinos GPIO do Pi para fazer o circuito e, se não estiver familiarizado com eles, nosso guia para pinos do Raspberry Pi GPIO vai ajudar. O circuito aqui é quase o mesmo que no nosso anterior Projeto de LED Raspberry Pi, com a adição do botão que você usará hoje.

Configure seu circuito de acordo com este diagrama:

Tutorial Fritzing Diagram para Pi Button
  • o 5v e GND pinos se conectam aos trilhos de força da placa de ensaio.
  • Pino 12 (GPIO 18) conecta-se à perna positiva do LED.
  • Uma perna do resistor anexa à perna negativa do LED e a outra perna ao trilho de terra da placa de ensaio.
  • Pino 16 (GPIO 23) anexa a um lado do botão, o outro lado ao trilho de terra da tábua de pão.

Depois de configurado, veja como deve ficar:

Raspberry Pi conectado a um botão e LED em uma placa de ensaio.

Verifique seu circuito para verificar se está correto e ligue o Raspberry Pi.

Método 1: O RPi. Biblioteca GPIO

Depois que o Pi for inicializado, vá para o menu e selecione Programação> Thonny Python IDE. Um novo script Python será aberto. Se você é totalmente novo no Python, é uma ótima linguagem para iniciantes e existem muitos ótimos lugares para aprender mais sobre Python depois de terminar este tutorial!

Thonny Python IDE

Comece importando o RPi. Biblioteca GPIO e configuração do modo de placa.

RPi de importação. GPIO como GPIO GPIO.setmode (GPIO.BOARD)

Agora declare as variáveis ​​para os números dos pinos do LED e do botão.

ledPin = 12. buttonPin = 16. 

Observe que, como temos o modo de placa definido como BORDA estamos usando os números dos pinos em vez dos números GPIO. Se isso é confuso para você, um gráfico de pinagem do Raspberry Pi pode ajudar a esclarecê-lo.

My Pi Pinout

Configurando o botão

É hora de configurar os pinos do GPIO. Coloque o pino do LED na saída e o pino do botão na entrada com um resistor de pull-up

GPIO.setup (ledPin, GPIO.OUT) GPIO.setup (buttonPin, GPIO.IN, pull_up_down = GPIO.PUD_UP)

O texto após GPIO.IN refere-se ao resistor de pull-up interno do Raspberry Pi. Você precisa habilitar isso para obter uma leitura limpa a partir do botão. Como o botão está indo para o pino de aterramento, precisamos de um resistor pull-up para manter o pino de entrada ALTO até que você o pressione.

Antes de prosseguirmos, vejamos os resistores pull-up e pull-down.

Intermissão: Resistores Pull Up / Pull Down

Quando você configura um pino GPIO para entrada, ele lê esse pino para determinar seu estado. Nesse circuito, você precisa ler se um pino é ALTO ou BAIXO para acionar o LED quando o botão é pressionado. Isso seria simples se esses fossem os únicos estados que um pino pode ter, mas, infelizmente, existe um terceiro estado: FLUTUANDO.

Um pino flutuante tem um valor entre alto e baixo, fazendo com que a entrada aja de forma imprevisível. Resistores pull-up / pull-down resolvem isso.

Diagrama de exemplo do resistor pull-up

A imagem acima é um diagrama simplificado de um botão e um Raspberry Pi. O pino GPIO se conecta ao terra através do botão O resistor de pull-up interno conecta o pino GPIO à fonte de alimentação Pi interna. Essa corrente flui e o pino é puxado com segurança para ALTO.

Quando você pressiona o botão, o pino GPIO se conecta diretamente ao pino de aterramento e o botão indica baixo.

Diagrama de exemplo do resistor pull-down

Os resistores pull-down são para quando o interruptor está conectado ao pino de energia. Desta vez, o resistor interno conecta o pino GPIO ao terra, mantendo-o BAIXO até você pressionar o botão.

A teoria dos resistores pull-up e pull-down é confusa à primeira vista, mas é um conhecimento importante a ter ao trabalhar com microcontroladores. Por enquanto, se você não entende direito, não se preocupe!

Vamos continuar de onde paramos.

O loop do programa

Em seguida, configure o loop do programa:

while True: buttonState = GPIO.input (buttonPin) se buttonState == False: GPIO.output (ledPin, GPIO.HIGH) mais: GPIO.output (ledPin, GPIO.LOW)

o enquanto True loop executa continuamente o código dentro dele até terminarmos o programa. Toda vez que ele faz um loop, ele atualiza o buttonState lendo a entrada do buttonPin. Enquanto o botão não está sendo pressionado, ele permanece ALTO.

Depois de pressionar o botão, buttonState torna-se BAIXO. Isso aciona o declaração if, Desde a Falso é o mesmo que BAIXOe o LED acende. o outro A instrução apaga o LED sempre que o buttonPin não for False.

Salvar e executar seu script

Salve seu script clicando em Arquivo> Salvar como e escolhendo um nome de arquivo. Você pode executar o esboço clicando no botão verde Jogar botão na barra de ferramentas Thonny.

Thonny Control Panel

Agora pressione o botão e seu LED acenderá! Pressione o vermelho Pare a qualquer momento para interromper o programa

Push Button Testing Gif

Se você estiver com dificuldades, verifique o código e a configuração do circuito cuidadosamente quanto a erros e tente novamente.

Método 2: Biblioteca Zero GPIO

O RPi. A biblioteca GPIO é fantástica, mas há um garoto novo no quarteirão. A Biblioteca Zero do GPIO foi criado por Ben Nuttall, gerente da comunidade Raspberry Pi com a intenção de tornar o código mais simples e mais fácil de ler e escrever.

Para testar a nova biblioteca, abra um novo arquivo Thonny e importe a biblioteca.

de importação gpiozero LED, botão. da pausa na importação do sinal. 

Você notará que não importou a biblioteca inteira. Como você está usando apenas um LED e um botão, você precisa apenas desses módulos no script. Nós também importamos Pausa da biblioteca de sinais, que é uma biblioteca Python para gerenciamento de eventos.

A configuração dos pinos é muito mais fácil com o GPIO Zero:

led = LED (18) button = Botão (23)

Como a biblioteca GPIO Zero possui módulos para o LED e o botão, você não precisa configurar entradas e saídas como antes. Você notará que, embora os pinos não tenham sido alterados, os números aqui são diferentes dos acima. Isso ocorre porque o GPIO Zero usa apenas os números dos pinos GPIO (também conhecidos como números Broadcom ou BCM).

O restante do script é de apenas três linhas:

button.when_pressed = led.on. button.when_released = led.off pause ()

o pausa() A chamada aqui simplesmente impede que o script saia quando chega ao fundo. Os eventos de dois botões são acionados sempre que o botão é pressionado e solto. Salve e execute seu script e você verá o mesmo resultado de antes!

Duas maneiras de adicionar um botão ao Raspberry Pi

Das duas maneiras de configurar o botão, o método GPIO Zero parece ser o mais fácil. Ainda vale a pena aprender sobre o RPi. Biblioteca GPIO como projetos iniciantes de Raspberry Pi use-o. Por mais simples que seja esse projeto, o conhecimento pode ser usado para várias coisas.

O uso dos pinos GPIO é uma ótima maneira de aprender e inventar seus próprios dispositivos, mas está longe de tudo o que você pode fazer com o Pi. Nosso guia não oficial do Raspberry Pi Raspberry Pi: o tutorial não oficialSe você é um proprietário atual do Pi que deseja saber mais ou um proprietário em potencial desse dispositivo de tamanho de cartão de crédito, este não é um guia que você deseja perder. consulte Mais informação está repleto de idéias criativas e tutoriais que você pode experimentar! Para outro tutorial como este, confira como criar um botão conectado por Wi-Fi Como fazer seu próprio botão Wi-Fi conectado com o ESP8266Neste tutorial, você aprenderá como criar um botão habilitado para Wi-Fi usando o NodeMCU e o IFTTT. consulte Mais informação .

Ian Buckley é jornalista freelancer, músico, intérprete e produtor de vídeo que vive em Berlim, Alemanha. Quando ele não está escrevendo ou no palco, está mexendo com eletrônicos ou códigos DIY, na esperança de se tornar um cientista louco.