/
/
Introdução às GPIO do Raspberry Pi 3 B

Introdução às GPIO do Raspberry Pi 3 B

Sumário

Baixe agora a apostila Arduino Iniciante e comece seus projetos

Compartilhe seu conhecimento e receba em dinheiro ou produtos.

blog-eletrogate-post-raspberry-gpio-introducao-capa

Introdução

No primeiro post da série, vimos como instalar o S.O. Raspbian no Raspberry Pi e alguns dos recursos que podem ser explorados nele. Já neste post, veremos como utilizar algumas das funções proporcionadas pelas GPIO do Raspberry Pi para controlar LED's e ler botões utilizando python. Como vimos, o Raspbian vem com um interpretador da Python 3 embutido, nos poupando este processo de instalação. Além disso, a biblioteca que utilizaremos para o controle da interface, gpiozero, e o editor de texto no qual escreveremos o código, nano, também acompanham o sistema nativamente.

Ferramentas utilizadas no tutorial
Para verificar qual versão do Python 3 está instalada em seu sistema, acesse o terminal e digite python --version. Para verificar se a gpiozero está adequadamente instalada, basta utilizar os comandos para instalação dela: sudo apt install python3-gpiozero ou sudo pip3 install gpiozero, conforme a documentação do módulo. Já para o nano, utilize, também, nano --version. A seguir, os comandos e as respectivas saídas esperadas:
Verificação das versões das ferramentas utilizadas
Diversas utilidades podem ser acessadas pelas GPIO do Raspberry Pi, como entradas e saídas digitais, comunicação I2C, UART, SPI e PWM. Neste post, usaremos somente o controle e a leitura de nível lógico das portas digitais. Abaixo, um esquema com as funções de cada pino:
Pinout detalhado da GPIO. Fonte

Primeiro Exemplo

Nosso primeiro exemplo será o simples piscar de um led. Para ele, utilizaremos os seguintes componentes: Materiais necessários para o projeto Piscar LED

A montagem pode ser vista abaixo:
Esquemático do exemplo 1
Para escrever o programa, abra a pasta que preferir no terminal e digite nano ledblink.py. O código pode ser visto abaixo:
#importa os módulos que serão utilizados
import gpiozero
import time

#instancia o led
led = gpiozero.LED(19)

while True: 		#loop infinito
    led.on()	        #acende o led
    time.sleep(1)	#aguarda 1 segundo
    led.off()	        #apaga o led
    time.sleep(1)	#aguarda 1 segundo
Para salvar, utilize Ctrl+O e, então, Enter, para confirmar o nome. Utilize Ctrl+X para fechar o editor. Daí, para executar o programa, digite python3 ledblink.py no terminal. O funcionamento pode ser visto abaixo:

Segundo Exemplo

Neste exemplo, veremos o funcionamento da saída PWM desta placa. Para ele, os seguintes componentes serão necessários: Materiais necessários para o projeto PWM em LED

  • LED difuso vermelho 5 mm
  • Resistor 100 ohm
  • Jumpers
  • Protoboard
  • Raspberry Pi 3 B
E serão feitas as seguintes conexões:
Esquema de conexões do exemplo 2
Para escrever o código, que pode ser visto abaixo, siga os mesmos passos do exemplo anterior, mas com um arquivo de nome pwmled.py.
#importa os módulos que serão utilizados
import gpiozero
import time

#instancia o led
led = gpiozero.PWMLED(26)

while True:			  #loop infinito
    for i in range(11):		  #faz 10 ciclos
                                  #incrementando i
                                  #em 1 a cada ciclo
        led.value = i / 10	  #define o duty-cicle
        time.sleep(0.1)		  #aguarda 0.1 segundos
    for i in range(11):		  #faz o mesmo ciclo
        led.value = (10 - i) / 10 #define o duty-cicle
        time.sleep(0.1)		  #aguarda 0.1 segundos
Ao executa-lo, termos o comportamento visto no vídeo abaixo:

Terceiro Exemplo

Por fim, será mostrado o uso das GPIO junto a botões. Para isso, utilizaremos 3 botões para controlar o estado de 2 LED's a partir de diferentes métodos relacionados a eles. Neste exemplo, usaremos: Materiais necessários para o projeto Entradas e Saídas do Raspberry PI

  • LED difuso vermelho 5 mm
  • Resistor 100 ohm
  • Jumpers
  • Protoboard
  • Raspberry Pi 3 B
  • Botões
A montagem seguira o esquemático:
Esquemático do exemplo 3
O código é baseado na documentação do módulo gpiozero e utiliza os principais métodos destinados a botões.
#importa os módulos que serão utilizados
import gpiozero
import time

#instancia os botões
botao_1 = gpiozero.Button(5)
botao_2 = gpiozero.Button(6)
botao_3 = gpiozero.Button(13)

#instancia os leds
led_1 = gpiozero.LED(19)
led_2 = gpiozero.PWMLED(26)

#função para encerrar a pulsação do led_2
def para_led_2():
    led_2.value = 0
    botao_2.when_pressed = pulsa_led_2

#função para iniciar a pulsação do led_2
def pulsa_led_2():
    led_2.pulse()
    botao_2.when_pressed = para_led_2

#determina a primeira função que o botão
#irá chamar
botao_2.when_pressed = pulsa_led_2


while True:		         #loop infinito
    if botao_1.is_pressed:	 #se o botao_1 estiver pressionado
        led_1.on()		 #acende o led_1
        botao_3.wait_for_press() #pausa o loop até que o botao_3 seja pressionado
        led_1.off()		 #apaga o led_1
O funcionamento do código pode ser verificado no vídeo abaixo:

Conclusão

Neste post, vimos funções básicas das GPIO presentes no Raspberry Pi 3 B. Com a clara compreensão delas, o processo de uso das demais torna-se mais fácil e eficiente. Portanto, caso haja qualquer dúvida a respeito do tema, deixe nos comentários. O poder de processamento do Raspberry usado junto a suas I/O compatíveis com diversos sensores e atuadores permite sua aplicação em complexos sistemas embarcados, tornando-o uma ferramenta muito valiosa. Esperamos que o post tenha sido útil e agradecemos pela leitura! Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.

Sobre o Autor


Eduardo Henrique

Formado técnico em mecatrônica no CEFET-MG, atualmente estuda Engenharia de Controle e Automação na UFMG.

Neste post, veremos como utilizar algumas das funções proporcionadas pelas GPIO do Raspberry Pi.

Precisa dos componentes para este projeto?

Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *