Controle GPIO da Raspberry Pi e Python – Parte 1

Este é um tutorial sobre como usar a GPIO da Raspberry Pi usando a biblioteca Python. Ele foi dividido em quatro partes para facilitar o acesso:

  • Parte 1: introdução e configuração
  • Parte 2: acesso às entradas e saídas
  • Parte 3: aguardando eventos
  • Parte 4: callbacks

Introdução

Uma das características mais poderosa da Raspberry Pi é a barra de GPIO (General Purpose Input/Output – Entradas e Saídas de Propósito Geral). De uma forma mais simples, pense neles como chaves que podem ser ligadas/desligadas por você (entradas) ou pela RPi (saídas).

Esses pinos são a interface da RPi com o mundo externo e a quantidade de pinos disponíveis varia de acordo com o modelo. Como a maioria dos tutoriais de nosso site vai utilizar esses pinos, é interessante aprender a configurar e usar tudo o que oferece.

Raspberry Pi 1 (esquerda) e Raspberry Pi 3 (direita)

Materiais necessários

  • Raspberry Pi com sistema operacional Raspbian já instalado (vamos usar o a RPi 2 modelo B, mas pode ser utilizado outro, caso queira)
  • Led
  • Resistor 100 Ohm
  • Jumpers
  • Protoboard

Layout

A quantidade de pinos depende do modelo, mas varia entre 26 (sendo 17 de GPIO) para a RPi 1 modelo A/B e 40 (sendo 28 de GPIO) para a RPi 1 modelo A+/B+, RPi 2 modelo B e RPi 3 modelo B.

Layout dos pinos de GPIO para a RPi 1, 2 e 3 modelos A+/B+/B (esquerda) e RPi 1 modelo A/B (direita)

Como você pode perceber, há mais do que somente pinos de GPIO.

  • GPIO: são os pinos gerais de entrada e saída. O nível de saída é de 3.3V e um máximo de 50mA, portanto evite colocar uma carga muito grande, o que pode danificar o pino e até mesmo a placa. Um LED, ok. Um motor, nem pensar. Para o caso de ser usado como entradas, esse pinos podem ser configurados com um resistor de pull-up/pull-down, para auxiliar na detecção do nível.
  • I2C (Inter-Integrated Circuit): esses pinos permitem se conectar e conversar com hardwares que suportem o protocolo I2C. Tipicamente são necessários 2 pinos.
  • SPI (Serial Peripheral Interface Bus): esses pinos permitem sem conectar e conversar com hardwares que contêm SPI. Bem parecido com o I2C, mas usa um protocolo diferente.
  • UART (Universal Asynchronous Receiver/Trasmitter): pinos para se conversar com outros dispositivos usando serial.
  • Os pinos de potência são usados para alimentar outros dispositivos e são puxados diretamente da Raspberry Pi. Existem dois níveis:
    • 3.3V: limitado a 50mA.
    • 5.0V: puxa a corrente diretamente da alimentação USB, portanto vai depender da fonte usada. Por exemplo, se for usada uma fonte de 1A, pode ser fornecido até 300mA, uma vez que a placa vai consumir cerca de 700mA.
  • GND são os pinos de terra.

Pode parecer complicado a primeira vista, mas com o tempo isso se torna natural.

Configurando os pinos

Vamos mostrar de forma breve como configurar os pinos para você poder usá-los na Raspberry Pi.

Caso você tenha a última versão do Raspbian, você já pode sair programando a sua placa diretamente. Mas, caso esteja usando pela primeira vez, é bom atualizar o sistema.

sudo apt update
sudo apt upgrade

E depois instalar a versão mais recente da biblioteca python `RPi.GPIO.

sudo apt install rpi.gpio

Essa biblioteca facilita o uso dos pinos de GPIO e tem diversos recursos, que vamos ver com mais detalhes na parte 2.

Cabo de extensão

Existem no mercado diversos cabos de extensão para a Raspberry Pi, o que facilita muito no momento do desenvolvimento. Esse cabo permite a conexão da barra de pinos com uma protoboard e existem diversos formatos no mercado.

Usamos normalmente o formato T, como o da foto acima.

Conexão

Para vermos como funciona a programação e uso do GPIO, vamos dar uma olhada em um pequeno circuito. Como muita coisa em programação, vamos começar com um LED.

Monte o circuito abaixo, conectando o lado positivo do LED (anodo) ao pino 12 da RPi (GPIO 18). O lado negativo do LED (catodo) ao resistor e, finalmente, o outro lado do resistor ao terra (GND).

Caso esteja usando o extensor, a ligação pode sair um pouco diferente, mas lembre-se de conectar ao pino correto.

Código

Vamos criar o código, em Python, para fazer piscar o LED.

Crie um arquivo chamado blink.py.

nano blink.py

Copie o código abaixo e salve o arquivo (Ctrl+X e, depois, y).

import RPi.GPIO as GPIO
import time
 
# Configuracao da placa
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.OUT)
 
# Loop
try:
    while True:
        GPIO.output(12, 1)
        time.sleep(1)
        GPIO.output(12, 0)
        time.sleep(1)
 
except KeyboardInterrupt:
    pass
 
# Limpa as configuracoes
GPIO.cleanup()

E para rodar:

python blink.py

Caso esteja tudo corretamente conectado e configurado, o LED deve começar a piscar a cada 1s. Se isso não acontecer, verifique a conexão novamente.

Na parte 2 deste tutorial, vamos entrar em maiores detalhes da biblioteca RPi.GPIO.

Deixe uma resposta

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