Raspberry Pi: Programacao GPIO com Python: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
 
(3 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 52: Linha 60:
===Programa para ler chave ''pull-up'' e acionar led===
===Programa para ler chave ''pull-up'' e acionar led===


Chave conectada ao pino 18 (entrada ''pull-up'') e led ao pino 17 (saída).
Chave conectada ao pino 26 (entrada ''pull-up'') e led ao pino 21 (saída).


<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
Linha 59: Linha 67:
      
      
GPIO.setmode(GPIO.BCM)     
GPIO.setmode(GPIO.BCM)     
GPIO.setup(18,  GPIO.IN, pull_up_down=GPIO.PUD_UP)     
GPIO.setup(26,  GPIO.IN, pull_up_down=GPIO.PUD_UP)     
GPIO.setup(17, GPIO.OUT)
GPIO.setup(21, GPIO.OUT)
      
      
while True:               
while True:               
     if GPIO.input(18):   
     if GPIO.input(26):   
         print("Led ON")   
         print("Led ON")   
         GPIO.output(17, 1)           
         GPIO.output(21, 1)           
     else:   
     else:   
         print("Led OFF")  
         print("Led OFF")  
         GPIO.output(17, 0)     
         GPIO.output(21, 0)     
     sleep(0.1)
     sleep(0.1)
</syntaxhighlight>
</syntaxhighlight>

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)