GPIO (Raspberry)

GPIO define os pinos que fazem comunicação digital de entrada e saída de sinal. São 26 pinos no Raspberry Pi B e 40 Pi B+. Estas entradas e saídas permitem o controlo ou leitura de dispositivos externos. Mapa de Pinos

FunçãoPinoPinoFunção
3.3v 1 2 5V
GPIO 2 3 4 5V
GPIO 3 5 6 GND
GPIO4 7 8 GPIO 14
GND 9 10 GPIO 15
GPIO 17 11 12 GPIO 18
GPIO 27 13 14 GND
GPIO 22 15 16 GPIO 23
3.3V 17 18 GPIO 24
GPIO 10 19 20 GND
GPIO 09 21 22 GPIO 25
GPIO11 23 24 GPIO 8
GND 25 26 GPIO 7
ID_SD 27 28 ID_SC
GPIO 5 29 30 GND
GPIO 6 31 32 GPIO 12
GPIO13 33 34 GND
GPIO 19 35 36 GPIO 16
GPIO 26 37 38 GPIO 20
GND 39 40 GPIO 21
GPIO Pinouts raspberry

Para que possamos entender nosso diagrama de uma forma mais clara, separamos em 8 cores diferentes. As características de cada uma:

  • Vermelho: Saída para alimentação, tem uma tensão de 5V. Não deve ser colocada em contacto directo com outras portas que tem têm tensões lógicas de 3V3. Deve ser usada unicamente como alimentação.
  • Laranja: Saída para alimentação, tem uma tensão de 3.3V. É possível comunicar com outras portas, deve ser sempre usado uma resistência(resistor) ou em pull_up ou pull_down, ou uma resistência(resistor) limitador de modo a não sobrecarregar a placa RPi.
  • Preto: Portas Terra (GROUND).
  • Azul: Portas para o interface 2C (Inter-Integrated Circuit).
  • Amarelo: Portas serie com protocolo RS-232 para o envio e receção de sinal digital.
  • Verde: Pinos GPIO enviam e recebem dados digitais.
  • Violeta: Pinos para entrada e saída de dados digitais com comunicação serie Full Duplex síncrono, que permite ao processador do Raspberry comunicar com algum periférico externo de forma bidirecional. Mas essa comunicação só acontece, se e somente se o protocolo for implementado.
  • Cinza: Portas do ID EEPROM  (Electrically-Erasable Programmable Read-Only Memory). Este é um tipo de memória que pode ser programado e apagado várias vezes, através de uma tensão elétrica interna ou externa.
GPIO.setmode(GPIO.BOARD) # Usa o pino na placa
GPIO.setmode(GPIO.BCM) # Usa a referenciação BCM

Níveis lógicos CMOS 3,3 V

O avanço tecnologico permitiu criar dispositivos que exigem menor consumo de energia e funcionam com uma tensão de base mais baixa (Vcc = 3,3 V em vez de 5 V). Intervalo de tensão Em circuitos digitais os níveis de tensão correspondente a HIGH e LOW ficam em um intervalo determinado. A tensão que representa o valor "alto" e "baixo" varia em função da tecnologia, tecnologias diferentes (TTL, CMOS, ETL, BTL, GTL, LowV) têm valores diferentes, entradas e saídas podem ter valores diferentes. Por exemplo, a tecnologia TTL, na entrada(input) Nível 1(2 a 5V) Nível 0 (0 a 0,8V), na saída(output) Nível 1(2,7 a 5V) Nível 0 (0 a 0,4V). Tensão porta lógica Tensão sinal lógico CMOS A tecnologia CMOS onde o nível LOW está a menos de 1,5 V do nível da terra (entre -0,3V e +1,5V) e o nível HIGH a 1,5V dos +5V (entre 3,5 e 5,5V), a qual é a tensão de alimentação. Isto permite ter em conta os defeitos de fabrico, as variações com a temperatura e com a tensão de entrada, a presença de ruído, etc. tabela tensões níveis lógicos em função tecnologia

TTL
5V
CMOS
3,3V

Software de controlo GPIO

Wiring Pi

GPIO Interface library para o Raspberry Pi

O WiringPi é pré-instalado nos sistemas Raspbian padrão.

Instalação wiringPI no Raspberry

1. Verificar se o wiring pi já está instalado
sudo gpio -v
2. Instalar o wiring pi
sudo apt install wiringpi

verificar todas as portas do rpi

sudo gpi readall
+-----+-----+---------+------+---+---Pi 3B+-+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 0 | OUT  | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT5 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 1 | 11 || 12 | 1 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI | ALT0 | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO | ALT0 | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 0 | OUT  | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | OUT  | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 1 | OUT  | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 3B+-+---+------+---------+-----+-----+

Instalar RPi.gpio

sudo apt-get update
sudo apt-get install rpi.gpio

Verificar se o RPI.GPIO está instalado

find /usr | grep -i gpio