Raspberry Pi: Programacao GPIO com Python: mudanças entre as edições
(4 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
=Raspberry Pi: Programação GPIO com Python= | =Raspberry Pi: Programação GPIO com Python= | ||
O '''Raspberry Pi''' possui 40 pinos '''GPIO''' (''General Purpose Input/Output'') que podem ser utilizados pra controlar hardware externo. | |||
Para programar as portas GPIO com Python é necessário bibliotecas para o controle das portas de entrada e saída digitais do Raspberry Pi. | ==Pinagem GPIO== | ||
*https://www.raspberrypi.org/documentation/usage/gpio/ | |||
[[Arquivo:rpi-gpio.png|500px]] | |||
:Comando via terminal: | |||
pi@raspberrypi:~ $ pinout | |||
==Programação GPIO com Python== | |||
Para programar as portas '''GPIO''' com '''Python''' é necessário bibliotecas para o controle das portas de entrada e saída digitais do '''Raspberry Pi'''. | |||
Algumas bibliotecas disponíveis são a '''RPi.GPIO''' <ref>https://pypi.org/project/RPi.GPIO/</ref>, a '''Gpio Zero''' <ref>https://gpiozero.readthedocs.io/en/stable/</ref> e a '''CircuitPython''' <ref>https://circuitpython.readthedocs.io/en/5.3.x/README.html</ref>. | Algumas bibliotecas disponíveis são a '''RPi.GPIO''' <ref>https://pypi.org/project/RPi.GPIO/</ref>, a '''Gpio Zero''' <ref>https://gpiozero.readthedocs.io/en/stable/</ref> e a '''CircuitPython''' <ref>https://circuitpython.readthedocs.io/en/5.3.x/README.html</ref>. | ||
==Biblioteca RPi.GPIO== | ===Biblioteca RPi.GPIO=== | ||
A biblioteca '''RPi.GPIO''' <ref>https://pypi.org/project/RPi.GPIO/</ref> é um módulo de controle para as portas '''GPIO''' do '''Raspberry Pi''' usando linguagem '''Python'''. Entretanto, está biblioteca não é apropriada para aplicações tempo real ou com restrições temporais, pois roda sobre o ''kernel'' Linux, o qual não apropriado para aplicações tempo real. A versão atual desta biblioteca não suporta SPI, I2C, hardware PWM ou interface serial. | A biblioteca '''RPi.GPIO''' <ref>https://pypi.org/project/RPi.GPIO/</ref> é um módulo de controle para as portas '''GPIO''' do '''Raspberry Pi''' usando linguagem '''Python'''. Entretanto, está biblioteca não é apropriada para aplicações tempo real ou com restrições temporais, pois roda sobre o ''kernel'' Linux, o qual não apropriado para aplicações tempo real. A versão atual desta biblioteca não suporta SPI, I2C, hardware PWM ou interface serial. | ||
Linha 18: | Linha 26: | ||
==Thonny== | ==Thonny== | ||
O '''Thonny''' é um ambiente de desenvolvimento integrado para '''Python'''. Quando utilizado com o Raspberry Pi o Thonny permite abrir/salvar os programas em arquivos, carregar os programas para execução, assim como realizar ''debug'' dos programas. | |||
;Instalação no Raspberry Pi: | |||
sudo apt install thonny | |||
;Acesso remoto via SSH | |||
ssh -Y pi@<IP_RaspberryPi> | |||
thonny& | |||
==Exemplo de programas== | |||
===Programa para piscar led=== | ===Programa para piscar led=== | ||
Linha 42: | Linha 60: | ||
===Programa para ler chave ''pull-up'' e acionar led=== | ===Programa para ler chave ''pull-up'' e acionar led=== | ||
Chave conectada ao pino | Chave conectada ao pino 26 (entrada ''pull-up'') e led ao pino 21 (saída). | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
Linha 49: | Linha 67: | ||
GPIO.setmode(GPIO.BCM) | GPIO.setmode(GPIO.BCM) | ||
GPIO.setup( | GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP) | ||
GPIO.setup( | GPIO.setup(21, GPIO.OUT) | ||
while True: | while True: | ||
if GPIO.input( | if GPIO.input(26): | ||
print("Led ON") | print("Led ON") | ||
GPIO.output( | GPIO.output(21, 1) | ||
else: | else: | ||
print("Led OFF") | print("Led OFF") | ||
GPIO.output( | GPIO.output(21, 0) | ||
sleep(0.1) | sleep(0.1) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 142: | Linha 160: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
--> | --> | ||
==Interação entre Raspberry Pi e Node-RED== | ==Interação entre Raspberry Pi e Node-RED== | ||
Edição atual tal como às 12h16min de 22 de fevereiro de 2022
Raspberry Pi: Programação GPIO com Python
O Raspberry Pi possui 40 pinos GPIO (General Purpose Input/Output) que podem ser utilizados pra controlar hardware externo.
Pinagem GPIO
- Comando via terminal:
pi@raspberrypi:~ $ pinout
Programação GPIO com Python
Para programar as portas GPIO com Python é necessário bibliotecas para o controle das portas de entrada e saída digitais do Raspberry Pi.
Algumas bibliotecas disponíveis são a RPi.GPIO [1], a Gpio Zero [2] e a CircuitPython [3].
Biblioteca RPi.GPIO
A biblioteca RPi.GPIO [4] é um módulo de controle para as portas GPIO do Raspberry Pi usando linguagem Python. Entretanto, está biblioteca não é apropriada para aplicações tempo real ou com restrições temporais, pois roda sobre o kernel Linux, o qual não apropriado para aplicações tempo real. A versão atual desta biblioteca não suporta SPI, I2C, hardware PWM ou interface serial.
- Procedimentos para uso
- Verificar se a biblioteca rpi.gpio está instalada:
apt list --installed | grep rpi.gpio
- Importar biblioteca no interpretador ou código Python:
import RPi.GPIO as GPIO
Thonny
O Thonny é um ambiente de desenvolvimento integrado para Python. Quando utilizado com o Raspberry Pi o Thonny permite abrir/salvar os programas em arquivos, carregar os programas para execução, assim como realizar debug dos programas.
- Instalação no Raspberry Pi
sudo apt install thonny
- Acesso remoto via SSH
ssh -Y pi@<IP_RaspberryPi>
thonny&
Exemplo de programas
Programa para piscar led
Código Python [5]:
import RPi.GPIO as GPIO
from time import *
GPIO.setmode(GPIO.BCM) # Numeração nomes GPIO
#GPIO.setmode(GPIO.BOARD) # Numeração pinagem da placa
GPIO.setup(21, GPIO.OUT)
while True:
GPIO.output(21, GPIO.HIGH)
print("Led ON")
sleep(1)
GPIO.output(21, GPIO.LOW)
print("Led OFF")
sleep(1)
Programa para ler chave pull-up e acionar led
Chave conectada ao pino 26 (entrada pull-up) e led ao pino 21 (saída).
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(21, GPIO.OUT)
while True:
if GPIO.input(26):
print("Led ON")
GPIO.output(21, 1)
else:
print("Led OFF")
GPIO.output(21, 0)
sleep(0.1)
Interação entre Raspberry Pi e Node-RED
Referências
Evandro.cantu (discussão) 17h51min de 17 de fevereiro de 2022 (-03)