Raspberry Pi

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar

Raspberry Pi 4 Model B

Página Oficial
Instalação
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.

Descobrindo a Configuração de Rede

Referência

É possível descobrir o endereço IP de seu Raspberry Pi sem conectar um monitor usando um dos seguintes métodos:

Lista dos dispositivos conectados ao roteador
A partir de um navegador é possível acessar a configuração do seu roteador navegando no endereço http://192.168.1.1, geralmente utilizado pelos roteadores caseiros. Usando as credenciais do administrador do equipamento, pode-se acessar a lista dos dispositivos conectados, geralmente apresentadas na listagem do DHCP.
Resolvendo o nome raspberrypi.local com mDNS
Se seu dispositivo suporta mDNS, você pode descobrir o endereço IP de seu Raspberry Pi usando seu hostname e o sufixo .local:
ping raspberrypi.local
Comando nmap
O comando nmap (Network Mapper) é uma ferramenta para descobrir redes disponível para Linux, macOS e Windows.

Para Linux pode ser instalada com:

apt install nmap

Para descobrir os dispositivos conectados em sua rede local, utilizar o identificador da rede e a máscara de rede:

nmap -sn 192.168.1.0/24 
parâmetros: -s (scan) e -n (mostrar IP)

Acesso Remoto

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:

Bridge com Raspberry Pi Wifi para Ethernet

Permite ao Raspberry Pi conectado a uma rede WiFi funcionar como bridge para um dispositivo conectado a sua porta Ethernet [1].

Pinagem GPIO

Comando via terminal:
pi@raspberrypi:~ $ pinout

Acesso aos drives GPIO pelo terminal

Exemplo de acionamento de led [2]
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 [3].

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 [2]
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 [4] e DAC [5] ao Raspberry Pi.

Programação Python para controle GPIO

Biblioteca RPi.GPIO

A biblioteca RPi.GPIO [6] é um módulo de controle para as portas GPIO do Raspberry Pi. 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 # Importa o módulo RPi.GPIO e usa localmente o nome GPIO para referenciá-lo.
Programa para piscar led

Código Python [7]:

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 Gpio Zero

A biblioteca Gpio Zero [8] é uma interface GPIO para uso com o Raspberry Pi. Esta biblioteca é instalada por default no Raspberry Pi.

Exemplos[9]:

Programa para piscar led
from gpiozero import LED
from time import sleep

led = LED(17)
while True:
    led.on()
    sleep(0.5)
    led.off()
    sleep(0.5)
Programa para ler chave
from gpiozero import Button
from time import sleep

button = Button(2)
while True:
    if button.is_pressed:
        print("Pressed")
    else:
        print("Released")
    sleep(1)

Biblioteca CircuitPython

A biblioteca CircuitPython, da Adafruit, é uma versão amigável e open source do Python, especialmente desenvolvida para microcontroladores e pequenos dispositivos [10].

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

Esta biblioteca suporta I2C e SPI, os quais precisam ser habilitados.

Confira os procedimentos para instalação do CircuitPython e exemplos em [11].

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

Raspberry Pico

Ver link: Raspberry Pico


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