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

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Linha 103: Linha 103:
===Entradas digitais===
===Entradas digitais===


Um pino GPIO configurado como '''entrada digital''' pode ser valores HIGH (3V3) ou LOW (0V).  
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.
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.
;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.

Edição das 11h51min de 12 de agosto de 2020

Raspberry Pi 4 Model B

Página Oficial: https://www.raspberrypi.org/

Instalação:

Acesso remoto:

config.txt
Este arquivo de texto é usado pelo Raspberry Pi para obter as configurações do sistema, ao invés da BIOS que é normalmente usada por PCs. Deve ficar localizado na partição principal do cartão SD, junto com os arquivos bootcode.bin e start.elf. É acessível na localização /boot/config.txt e deve ser editado como root.
Instalação do monitor
Raspberry Pi Touch Screen 7‘’ Display 1024×600

Informações sobre configurações de vídeo do arquivo config.txt:

Link consulta utilizado:

Pinagem GPIO

Comando via terminal:
pi@raspberrypi:~ $ pinout

Acesso aos drives GPIO pelo terminal

Exemplo de acionamento de led [1]
Pino físico 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

Entradas 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

Biblioteca rpi.gpio

Verificar se a biblioteca rpi.gpio está instalada:

apt list --installed | grep rpi.gpio

Importar biblioteca no interpretador ou no código em Python:

import RPi.GPIO as GPIO

Uso da biblioteca time para implementar temporizações (delays):

from time import *
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(17, GPIO.OUT)
 
while True:
    GPIO.output(17, GPIO.HIGH)
    print("Led ON")
    sleep(1)
    GPIO.output(17, GPIO.LOW)
    print("Led OFF")
    sleep(1)
Programa para ler chave pull-up e acionar led: Chave conectada ao pino 18 (entrada pull-up) e led ao pino 17 (saída).
import RPi.GPIO as GPIO  
from time import sleep
    
GPIO.setmode(GPIO.BCM)    
GPIO.setup(18,  GPIO.IN, pull_up_down=GPIO.PUD_UP)     
GPIO.setup(17, GPIO.OUT)
    
while True:              
    if GPIO.input(18):   
        print("Led ON")  
        GPIO.output(17, 1)           
    else:  
        print("Led OFF") 
        GPIO.output(17, 0)     
    sleep(0.1)

Biblioteca CircuitPython

A biblioteca CircuitPython adiciona a parte de circuitos ao Python, permitindo que o Python converse com sensores, motores, Leds e outros dispositivos.

Confira os procedimentos para instalação e exemplos em [6].

Piscar led
Led conectado a saída GPIO 17.
import time
import board
import digitalio

print("hello blinky!")

led = digitalio.DigitalInOut(board.D17)
led.direction = digitalio.Direction.OUTPUT

while True:
    led.value = True
    time.sleep(0.5)
    led.value = False
    time.sleep(0.5)
Chave digital
Chave na entrada GPIO 18 e led na saída GPIO 17.
import time
import board
import digitalio

print("press the button!")

led = digitalio.DigitalInOut(board.D17)
led.direction = digitalio.Direction.OUTPUT

button = digitalio.DigitalInOut(board.D18)
button.direction = digitalio.Direction.INPUT
button.pull = digitalio.Pull.UP

while True:
    led.value = not button.value # light when button is pressed!

Interação entre Raspberry Pi e Node-RED

Ver link: Node-RED


Evandro.cantu (discussão) 09h03min de 23 de julho de 2020 (-03)