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

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
 
(28 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
=Raspberry Pi 4 Model B=
=Raspberry Pi=


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


;Instalação:
;Raspberry Pi 3 Model B+:
*https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up
*https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/
 
==Instalação==
*https://www.raspberrypi.com/documentation/computers/getting-started.html
 
Baixar o '''instalador''' ('''imager''') para o '''Raspberry Pi OS''' para seu sistema operacional e fazer a instalação deste aplicativo no computador. Depois executar o aplicativo '''Imager''' para gravar o '''Raspberry Pi OS''' no cartão '''microSD'''.


;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.
;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.
:*https://www.raspberrypi.org/documentation/configuration/config-txt/README.md
:*https://www.raspberrypi.org/documentation/configuration/config-txt/README.md


===Descobrindo a Configuração de Rede===
==Descobrindo a Configuração de Rede==


É possível descobrir o '''endereço IP''' de seu '''Raspberry Pi''' sem conectar um monitor usando diversos métodos:
É possível descobrir o '''endereço IP''' de seu '''Raspberry Pi''' sem conectar um monitor usando diversos métodos:
Linha 30: Linha 35:
;Android e aplicativo Fing: O aplicativo '''Fing''', disponível para '''Android''', permite descobrir os dispositivos conectados a mesma rede local do ''smartphone''.
;Android e aplicativo Fing: O aplicativo '''Fing''', disponível para '''Android''', permite descobrir os dispositivos conectados a mesma rede local do ''smartphone''.


===Acesso Remoto===
==Acesso Remoto==


===Instalação do monitor===
O '''acesso remoto''' ao '''Raspberry Pi''' pode ser realizado usando um terminal com o protocolo '''SSH''' (''Secure Shell'').


;Raspberry Pi Touch Screen 7‘’ Display 1024×600
===Habilitação do SSH===
Por default o servidor '''SSH''' é desabilitado no Raspberry Pi. Pode ser habilitado manualmente através da interface gráfica ou por um terminal:
*'''Interface Gráfica''':
:No menu <code>Preferences</code>, abrir a guia de <code>Vonfiguration</code>, <code>interfaces</code>, e habilitar o '''SSH'''.
*'''Terminal''':
:Comando
sudo raspi-config
:Selecionar <code>Interfacing Options</code> e habilitar '''SSH'''.


Informações sobre configurações de vídeo do arquivo '''config.txt''':
===Acesso remoto com SSH===
*https://www.raspberrypi.org/documentation/configuration/config-txt/video.md
No computador remoto executar o comando:
ssh pi@<IP_RaspberryPi>


Link consulta utilizado:  
;Aplicações gráficas de forma remota (X11 Forwarding):
*https://www.4hobby.com.br/Tela-Lcd-Hdmi-7-Touch-1024x600-Raspberry-Pi2-Pi3-110302
ssh -Y pi@<IP_RaspberryPi>
**https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=24679


===[https://willhaley.com/blog/raspberry-pi-wifi-ethernet-bridge/ Bridge com Raspberry Pi Wifi para Ethernet]===
==[https://willhaley.com/blog/raspberry-pi-wifi-ethernet-bridge/ 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''' <ref>https://willhaley.com/blog/raspberry-pi-wifi-ethernet-bridge/</ref>.
Permite ao '''Raspberry Pi''' conectado a uma rede '''WiFi''' funcionar como '''''bridge''''' para um dispositivo conectado a sua porta '''Ethernet''' <ref>https://willhaley.com/blog/raspberry-pi-wifi-ethernet-bridge/</ref>.


==Pinagem GPIO==
==Instalação do monitor==
*https://www.raspberrypi.org/documentation/usage/gpio/
[[Arquivo:rpi-gpio.png|500px]]
:Comando via terminal:
pi@raspberrypi:~ $ pinout


===Acesso aos drives GPIO pelo terminal===
;Raspberry Pi Touch Screen 7‘’ Display 1024×600


;Exemplo de acionamento de led <ref name=GPIO>https://www.electrofun.pt/blog/curso-raspberry-pi-12-nocoes-basicas-sobre-gpio-scripts/</ref>:  Pino físico 21
Link de consulta utilizado:
*https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=24679


Acesso aos drives de controle dos pinos GPIO e verificar se o pino está ativo
==Laboratórios com Hardware do Raspberry Pi==
cd  /sys/class/gpio/
*[[Raspberry Pi: Programacao GPIO com Python|'''Raspberry Pi: Programação GPIO com Python''']]
ls
*[[Raspberry Pi: Laboratorios Node-RED|'''Raspberry Pi: Laboratórios Node-RED''']]
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==
==Raspberry Pico==
 
O biblioteca '''WiringPi''' fornece comandos para acesso direto aos pinos '''GPIO''' do '''Raspberry Pi''' <ref>http://wiringpi.com/the-gpio-utility/</ref>.
 
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 <ref name=GPIO/>: Usar '''editor de textos''' e salvar como '''blink.sh'''
 
<syntaxhighlight lang="bash">
#!/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
</syntaxhighlight>
 
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.
[[Arquivo:ChaveDigital-pullup.png]]
 
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 <ref>https://www.raspberrypi.org/forums/viewtopic.php?f=37&t=123962</ref> e DAC <ref>https://www.raspberrypi.org/forums/viewtopic.php?t=124184</ref> ao Raspberry Pi.
 
==Programação Python para controle 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. 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''':
<syntaxhighlight lang="python">
import RPi.GPIO as GPIO # Importa o módulo RPi.GPIO e usa localmente o nome GPIO para referenciá-lo.
</syntaxhighlight>
 
;Programa para piscar led:
 
Código Python <ref>https://www.electrofun.pt/blog/curso-raspberry-pi-14-python-basico-gpio/</ref>:
 
<syntaxhighlight lang="python">
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)
</syntaxhighlight>
 
;Programa para ler chave ''pull-up'' e acionar led: Chave conectada ao pino 18 (entrada ''pull-up'') e led ao pino 17 (saída).
 
<syntaxhighlight lang="python">
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)
</syntaxhighlight>
 
==Biblioteca Gpio Zero==
 
A biblioteca '''Gpio Zero''' <ref>https://gpiozero.readthedocs.io/en/stable/</ref> é uma interface GPIO para uso com o Raspberry Pi. Esta biblioteca é instalada por ''default'' no Raspberry Pi.


Exemplos<ref>https://www.raspberrypi.org/documentation/usage/gpio/python/README.md</ref>:
*'''[[Raspberry Pico]]'''
 
;Programa para piscar led:
<syntaxhighlight lang="python">
from gpiozero import LED
from time import sleep
 
led = LED(17)
while True:
    led.on()
    sleep(0.5)
    led.off()
    sleep(0.5)
</syntaxhighlight>
 
;Programa para ler chave:
<syntaxhighlight lang="python">
from gpiozero import Button
from time import sleep
 
button = Button(2)
while True:
    if button.is_pressed:
        print("Pressed")
    else:
        print("Released")
    sleep(1)
</syntaxhighlight>
 
===Biblioteca CircuitPython===
 
A biblioteca '''CircuitPython''',  da '''Adafruit''', é uma versão amigável e ''open source'' do Python, especialmente desenvolvida para microcontroladores e pequenos dispositivos <ref>https://circuitpython.readthedocs.io/en/5.3.x/README.html</ref>.
 
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 <ref>https://www.digikey.com/en/maker/projects/circuitpython-on-linux-and-raspberry-pi/2aac644c44f1418e987417b229a67c23?utm_adgroup=Adafruit&utm_source=google&utm_medium=cpc&utm_campaign=Dynamic%20Search_EN_Suppliers&utm_term=&utm_content=Adafruit&gclid=Cj0KCQjwg8n5BRCdARIsALxKb972kt1RhdKJR7h8JvQnJQtVGCfBbIZ0vAjN_GvyKyLOkDGq11ctO4kaAtNaEALw_wcB</ref>.
 
;Piscar led: Led conectado a saída GPIO 17.
<syntaxhighlight lang="python">
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)
</syntaxhighlight>
 
;Chave digital: Chave na entrada GPIO 18 e led na saída GPIO 17.
<syntaxhighlight lang="python">
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!
</syntaxhighlight>
 
==Interação entre Raspberry Pi e Node-RED==
 
Ver link: [[Node-RED]]
 
==Raspberry Pico==


Ver link: [[Raspberry Pico]]
==Referências==
<references />


----
----
[[Usuário:Evandro.cantu|Evandro.cantu]] ([[Usuário Discussão:Evandro.cantu|discussão]]) 09h03min de 23 de julho de 2020 (-03)
[[Usuário:Evandro.cantu|Evandro.cantu]] ([[Usuário Discussão:Evandro.cantu|discussão]]) 14h44min de 11 de fevereiro de 2022 (-03)
----
----


[[Categoria: IoT]]
[[Categoria:Raspberry Pi]] [[Categoria:IoT]]

Edição atual tal como às 12h26min de 19 de setembro de 2023

Raspberry Pi

Página Oficial
Raspberry Pi 3 Model B+

Instalação

Baixar o instalador (imager) para o Raspberry Pi OS para seu sistema operacional e fazer a instalação deste aplicativo no computador. Depois executar o aplicativo Imager para gravar o Raspberry Pi OS no cartão microSD.

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

É possível descobrir o endereço IP de seu Raspberry Pi sem conectar um monitor usando diversos 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 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 o comando:
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 
Android e aplicativo Fing
O aplicativo Fing, disponível para Android, permite descobrir os dispositivos conectados a mesma rede local do smartphone.

Acesso Remoto

O acesso remoto ao Raspberry Pi pode ser realizado usando um terminal com o protocolo SSH (Secure Shell).

Habilitação do SSH

Por default o servidor SSH é desabilitado no Raspberry Pi. Pode ser habilitado manualmente através da interface gráfica ou por um terminal:

  • Interface Gráfica:
No menu Preferences, abrir a guia de Vonfiguration, interfaces, e habilitar o SSH.
  • Terminal:
Comando
sudo raspi-config 
Selecionar Interfacing Options e habilitar SSH.

Acesso remoto com SSH

No computador remoto executar o comando:

ssh pi@<IP_RaspberryPi>
Aplicações gráficas de forma remota (X11 Forwarding)
ssh -Y pi@<IP_RaspberryPi>

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].

Instalação do monitor

Raspberry Pi Touch Screen 7‘’ Display 1024×600

Link de consulta utilizado:

Laboratórios com Hardware do Raspberry Pi

Raspberry Pico

Referências


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