Raspberry Pi: Portas GPIO: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Sem resumo de edição
(Sem diferença)

Edição das 11h37min de 18 de fevereiro de 2022

Raspberry Pi: GPIO

Raspberry Pi: Programação GPIO com Python

Pinagem GPIO

Comando via terminal:
pi@raspberrypi:~ $ pinout

Acesso aos drives GPIO pelo terminal

Exemplo de acionamento de led [1]
Pino GPIO 21

Acesso aos drives de controle dos pinos GPIO e verificar se o pino está ativo

cd  /sys/class/gpio/
ls

Se não estiver ativo, ativar com o comando

echo 21 > /sys/class/gpio/export

Configurar o pino como saída (default entrada)

echo out > /sys/class/gpio/gpio21/direction

Acionar led com 0 (LOW) ou 1 (HIGH):

echo 1 > /sys/class/gpio/gpio21/value
echo 0 > /sys/class/gpio/gpio21/value

Desativar acesso ao pino:

echo 21 > /sys/class/gpio/unexport

Programa GPIO

O biblioteca WiringPi fornece comandos para acesso direto aos pinos GPIO do Raspberry Pi [2].

Para verificar a versão instalada:

gpio -v

Para atualizar a versão:

cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

Ajuda para comandos:

man gpio

Verificação do estado atual dos pinos gpio:

gpio readall

Saídas digitais

Acionamento de led
Pino GPIO 17 (físico 11)
gpio -g mode 17 out
gpio -g write 17 1
gpio -g write 17 0
O parâmetro -g indica numeração dos pinos BCM_GPIO (na caso de -i indica numeração física dos pinos).
Piscar led
gpio -g blink 17
Script para piscar led [1]
Usar editor de textos e salvar como blink.sh
#!/bin/sh
gpio -g mode 17 out
while true
do
   gpio -g write 17 1
   sleep 1
   gpio -g write 17 0
   sleep 1
done

Dar permissão de execução:

chmod +x blink.sh

Saídas PWM

Uma saída PWM gera uma onda quadrada, com frequência constante, em que a fração de tempo em que o sinal é HIGH (3,3 V) pode variar entre 0 e 100% (duty cycle), fornecendo uma média de tensão variável na saída. O controle do duty cycle no Raspberry Pi usa 10 bits e pode ser variado de 0 a 1024.

No Raspberry Pi os pinos GPIO12, GPIO13, GPIO18 e GPIO19 aceitam saída PWM.

Controle da luminosidade de um led
Pino GPIO 18
gpio -g mode 18 pwm

Luminosidade máxima:

gpio -g pwm 18 1024

Luminosidade média:

gpio -g pwm 18 512

Luminosidade mínima:

gpio -g pwm 18 0

Entradas digitais

Um pino GPIO configurado como entrada digital pode ler valores HIGH (3V3) ou LOW (0V).

Também podem ser utilizados os resistores internos pull-up ou pull-down. Os pinos GPIO2 e GPIO3 tem resistores pull-up fixos, os demais podem ser configurados por software.

Exemplo chave eletrônica e uso de resistor pull-up interno
pino 26: Com a chave aberta o pino recebe HIGH através do resistor pull-up. Com a chave fechada o pino recebe LOW.

Configuração:

gpio -g mode 26 up

Leitura:

gpio -g read 26

Módulos externos para entradas e saídas analógicas

O Raspberry Pi não possui pinos para entradas analógicas, para tal é necessário especificar um módulo externo e o parâmetro -x.

Exemplos:

gpio -x mcp3002:200:0 aread 200       # Módulo ADC mcp3002
gpio -x mcp4802:200:0 awrite 200 128  # Módulo DAC mcp4802

Exemplos conexão de módulos externos ADC [3] e DAC [4] ao Raspberry Pi.

Programação Python para controle GPIO

Interação entre Raspberry Pi e Node-RED

Referências


Evandro.cantu (discussão) 14h44min de 11 de fevereiro de 2022 (-03)