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
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 segundoPara 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:
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
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 segundosAo executa-lo, termos o comportamento visto no vídeo abaixo:
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
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_1O funcionamento do código pode ser verificado no vídeo abaixo:
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.
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!