fbpixel
Os diferentes protocolos de comunicação

Os diferentes protocolos de comunicação

Qualquer que seja o seu projeto de eletrónica, programação ou domótica, irá certamente utilizar um protocolo de comunicação. Seja para programar o microcontrolador ou para comunicar com um sensor. Este artigo apresenta vários protocolos de comunicação normalmente utilizados no Arduino, Raspberry Pi e ESP8266/ESP32.

Barramento de comunicação série

Porta série

USB

USB (Universal Serial Bus) é uma norma de barramento de comunicação utilizada para trocar dados entre periféricos de computador. A caraterística especial desta norma é o facto de permitir a ligação de dispositivos enquanto estes estão em funcionamento e de permitir o reconhecimento automático do periférico).

UART

UART (Universal Asynchronous Receiver Transmitter) é a norma que especifica a forma como os dados são enviados através da porta série.

RS-232

O protocolo RS-232 é um protocolo de comunicação que define a conetividade e permite a comunicação assíncrona e duplex entre dois equipamentos. A caraterística especial deste protocolo é o facto de utilizar tensões de 3 a 25 V para transmitir dados, tornando-o um barramento menos sensível a interferências e ruídos.

(RS232/RS422/RS485)

I2C

O barramento de comunicação I2C é um protocolo que permite a ligação de vários dispositivos “Master” a vários dispositivos “Slave”, permitindo a comunicação de até 128 dispositivos. Permite ligações assíncronas entre vários componentes para partilhar informações através de um “barramento comum”. Este protocolo é geralmente utilizado para trocas placa a placa, mas pode ser utilizado em distâncias mais longas.

SPI

SPI (Serial Peripheral Interface) é um bus de dados em série que funciona em modo full-duplex, o que significa que pode transmitir e receber dados ao mesmo tempo. Utiliza uma arquitetura mestre-escravo e o escravo é selecionado através de uma linha dedicada.

CAN

O barramento CAN (Controller Area Network) é um barramento de comunicação em série amplamente utilizado na indústria automóvel. Permite a multiplexagem de diferentes dispositivos, permitindo-lhes comunicar utilizando o mesmo bus. Isto reduz a quantidade e a complexidade da cablagem.

Ethernet

A Ethernet é um protocolo de comunicações com fios que troca dados em pacotes a alta velocidade.

(I2S)

MIDI

MIDI (Musical Instrument Digital Interface) é um protocolo de comunicação entre instrumentos electrónicos, controladores e software de música. Envolve o envio de uma série de bytes para especificar o tipo de mensagem e as informações associadas (nota, duração da nota, instrumento, etc.).

Protocolos de comunicação sem fios

Bluetooth

BLE

A rede BLE (Bluetooth Low Energy) é uma rede Bluetooth com baixo consumo de energia.

Wifi

ESP-NOW

Um protocolo de comunicação de baixo consumo desenvolvido pela Espressif que utiliza ondas de 2,4 GHz.

RF 433MHz

RF 2.4GHz

(Zigbee)

LoRaWAN

A rede Lora (Long Range Wide-area network) é uma rede de rádio que permite que dispositivos de baixo consumo comuniquem a baixa velocidade. Isto torna possível ter objectos ligados com uma autonomia significativa.

Tem agora uma visão completa dos protocolos de comunicação com e sem fios mais utilizados em eletrónica e informática.

Cópia de segurança ligeira de imagens Raspberry Pi

Cópia de segurança ligeira de imagens Raspberry Pi

Aqui apresentamos um método para fazer uma cópia de segurança ligeira e restaurar um Raspberry Pi. Criar uma cópia de segurança, uma imagem do seu Raspberry Pi, é essencial em caso de corrupção do cartão SD ou falha de energia. No Raspberry Pi e noutros computadores de placa única, o cartão SD falha frequentemente. Por conseguinte, é necessário criar uma cópia de segurança sob a forma de uma imagem ou de um ficheiro iso para poder carregar esta imagem num novo cartão SD e recuperar a sua configuraçãouração.

O problema é que guardar uma imagem inclui toda a memória do cartão SD. Assim, pode acabar por ter vários ficheiros de 32, 64 ou 128 Gb.

Hardware

  • Raspberry Pi
  • Dois cartões SD
  • Uma ligação à Internet

Método de cópia de segurança do SO

Não existe outro método tão direto. O método que proponho consiste numa série de etapas, mas permite-lhe ter uma cópia de segurança ligeira do Raspberry Pi e atualizar facilmente os seus projectos.

O método consiste nos seguintes pontos

  • Recuperação de informações do sistema operativo
  • Recuperar informações de hardware (opcional)
  • Recuperação de ficheiros de configuraçãouração
  • Recuperar pacotes instalados
  • Recuperar pacotes Python instalados

A lista não está de modo algum completa, mas com isto pode aproximar-se de uma cópia exacta do que tinha antes.

Limpeza da instalação

sudo apt-get  --purge -y autoremove 

Também pode eliminar qualquer software que nunca tenha utilizado.

Criar uma pasta de cópia de segurança

Pode assumir a forma que quiser. O importante é que seja clara para que se possa orientar.

  • RPiBckp
    • versão
    • projectos
    • configuração

Recuperação de informações do sistema operativo

Dependendo do seu projeto, é importante conhecer a versão do sistema operativo, uma vez que podem surgir problemas de compatibilidade em função dos pacotes utilizados.

cat /etc/os-release
cat /etc/os-release > /home/pi/RPiBckp/versão/os-versão.txt

Outra informação importante é a versão do kernel e a configuração do hardware.

uname -a > /home/pi/RPiBckp/versão/sys-versão.txt
ls -l /lib/modules

N.B.: uname -r dá-lhe especificamente a versão do Kernel. Pode encontrar o ficheiro de instalação na lista de firmware

Recuperar pacotes instalados

Para obter uma lista dos pacotes instalados, pode introduzir o comando

dpkg --get-selections

Se pretender a lista de pacotes com o número de versão

apt list --installed

Nota: para todos estes comandos, pode utilizar o grep para filtrar a sua pesquisa

É importante notar que existem vários pacotes instalados automaticamente e outros que instala de acordo com as suas necessidades.

A lista de pacotes instalados automática e manualmente pode ser obtida com os respectivos comandos

apt-mark showauto # paquets automatique
apt-mark showmanual # paquets manuel

Pessoalmente, mantenho um ficheiro com todos os pacotes instalados para manter um registo de todas as versões.

apt list --installed > /home/pi/RPiBckp/versão/apt-list-installed.txt

um ficheiro com os pacotes instalados manualmente

apt list --installed | grep -v automatic > /home/pi/RPiBckp/versão/apt-list-manual.txt

e crio o ficheiro apenas com o nome para começar a instalar os pacotes

apt-mark showmanual > /home/pi/RPiBckp/versão/packages.txt

Posso então instalar as versões correctas individualmente, caso não sejam adequadas para mim.

Recuperar pacotes Python instalados

python3 -m pip freeze
python3 -m pip freeze > /home/pi/RPiBckp/versão/requirements.txt

Recuperação de ficheiros de configuração

Certains fichiers de configuraçãourations peuvent être intéressant à récupérer notamment la configuraçãouration du wifi

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
cp /etc/wpa_supplicant/wpa_supplicant.conf /home/pi/RPiBckp/versão/wpa_supplicant.conf

Criar um repositório Git

Pode ser uma boa ideia criar um repositório git para cada um dos seus projectos, seja para configurar um Raspberry Pi ou para um conjunto de scripts Python. Um projeto git será ideal para atualizar os seus projectos, particularmente em termos de actualizações de pacotes e de SO.

Depois de ter recuperado todos os ficheiros de interesse, é altura de restaurar o seu projeto.

Instalando uma versão do Raspbian

Pode utilizar o software Gerador de imagens Raspberry Pi

ou descarregar a imagem pretendida do sítio http://downloads.raspberrypi.org/raspbian/images/

N.B.: As versões demasiado antigas do SO podem não ser compatíveis com o novo hardware e podem ter problemas de segurança.

Instalar uma versão do Kernel

Pode verificar a versão do Kernel instalada com o comando

ls -l /lib/modules

Para instalar uma versão específica do firmware Raspberry Pi, pode encontrar a lista de firmwares pelo seu número de versão.

Pode então copiar o hash Git correspondente à versão pretendida (por exemplo, 5.10.63: 64132d67d3e083076661628203a02d27bf13203c).

E instalá-lo utilizando o comando:

sudo rpi-update <git_hash>

Por exemplo:

sudo rpi-update 2ef601a50b68eebeeb4dc3c6c525855961891be6

Aviso: tenha cuidado com a versão que instala. A versão do Kernel só deve ser modificada por utilizadores experientes que tenham um problema de compatibilidade que não possa ser resolvido de outra forma.

Copiar a pasta de cópia de segurança

Numa nova instalação do Raspbian, pode copiar a sua pasta de cópia de segurança e/ou clonar o repositório Git. Pode então instalar os pacotes e copiar os ficheiros da sua configuração anterior.

Instalar os pacotes necessários

É possível instalar um conjunto de pacotes APT a partir de um ficheiro de texto que contém a lista de ficheiros a instalar

xargs -a packages.txt sudo apt-get install -y

Pode fazer o mesmo para instalar pacotes Python

python3 -m pip install -r requirements.txt

Copiar ficheiros de configuração

Para o ficheiro de configuração wifi ou qualquer outro ficheiro, pode utilizar o comando copy ou move no modo de superutilizador (sudo)

sudo cp wpa_supplicant.conf /etc/wpa_supplicant/

Conclusão

Cette méthode ne permet pas d’obtenir une copie parfaite de votre projet mais elle permet de reproduire et de maintenir votre projet avec peu d’espace mémoire ce qui peut être un énorme avantage. Vous vous retrouverez ainsi avec un ensemble de fichier de configuraçãouration qui vous permettrons rapidement de restaurer une carte SD corrompue.

Se tiver alguma ideia de ficheiros importantes para fazer cópias de segurança ou outros métodos de restauração de um cartão SD, deixe um comentário.

Fontes

Descrição geral do microcontrolador Raspberry Pi Zero

Descrição geral do microcontrolador Raspberry Pi Zero

O microcomputador Raspberry Pi Zero é muito compacto e tem um módulo Bluetooth e WiFi integrado. Muito fácil de utilizar, é mais pequeno mas menos potente do que o Raspberry Pi3.

Características do microcontrolador

O microcontrolador Raspberry Pi Zero utiliza o microprocessador ARM11 de núcleo único. Este processador funciona a uma frequência de relógio de 1000 MHz. Tem NC kB de RAM, NC kB de EEPROM e 512.000 kB de memória Flash (para programação e armazenamento de dados).

  • CPU single-core ARM11
  • Voltage : 3.3V
  • Flash : 512000 kB
  • RAM : NC kB
  • EEPROM : NC kB
  • Clock speed : 1000MHz
  • WiFi : Yes
  • Bluetooth : Yes
  • SD : Yes

O microcontrolador tem um chip WiFi que lhe permite ligar-se à rede local, criar um servidor ou criar a sua própria rede para que outros dispositivos possam ligar-se a ela. O microcontrolador tem um chip Bluetooth que lhe permite interagir com outros dispositivos. O microcontrolador Raspberry Pi Zero também tem uma ranhura para cartão SD para armazenar ficheiros para um sítio Web, por exemplo.

Alimentação eléctrica

O microcontrolador Raspberry Pi Zero funciona numa gama de tensões de 4,9-5,2V graças ao seu regulador de tensão integrado, enquanto o microprocessador funciona com uma tensão de 3,3V. Em funcionamento normal, o microcontrolador consome até 45mA (se não houver alimentação) e pode aceitar uma corrente máxima de 20mA em cada um dos seus pinos IO.

Pinagem

  • Digital I/O : 29 (GPIO0, GPIO1, GPIO2, GPIO3, GPIO4, GPIO5, GPIO6, GPIO7, GPIO8, GPIO9, GPIO10, GPIO11, GPIO12, GPIO13, GPIO14, GPIO15, GPIO16, GPIO17, GPIO18, GPIO19, GPIO20, GPIO21, GPIO22, GPIO23, GPIO24, GPIO25, GPIO26, GPIO27, GPIO28)
  • Broches PWM : 29 (GPIO0, GPIO1, GPIO2, GPIO3, GPIO4, GPIO5, GPIO6, GPIO7, GPIO8, GPIO9, GPIO10, GPIO11, GPIO12, GPIO13, GPIO14, GPIO15, GPIO16, GPIO17, GPIO18, GPIO19, GPIO20, GPIO21, GPIO22, GPIO23, GPIO24, GPIO25, GPIO26, GPIO27, GPIO28)
  • Comunicação Série: 1 ((‘GPIO14’, ‘GPIO15’))
  • Comunicação I2C: 1 ((‘GPIO2’, ‘GPIO3’))
  • Comunicação SPI: 1 ((‘GPIO8’, ‘GPIO11’, ‘GPIO9’, ‘GPIO10’))
  • Comunicação I2S: 1 ((‘GPIO18’, ‘GPIO19’, ‘GPIO21’))

Resumo das características

Microcontrôleur
Nom: RaspberryPiZero
Marque: RaspberryPi
Caractéristiques
CPU: single-core ARM11
Tension d’alimentation : 4.9-5.2V
Tension logic: 3.3V
E/S digitales: -1
Entrées analogiques: 0
Flash: 512000kB
SRAM: NCkB
EEPROM: NCkB
Fréquence d’horloge: 1000 MHz
Wifi: Yes
Bluetooth: Yes
SD card: Yes
Touch: No
UART/SPI/I2C/I2S: Yes/Yes/Yes/Yes

Como começar

Utilização do CAN HAT com o Raspberry Pi

Utilização do CAN HAT com o Raspberry Pi

É possível trabalhar com o protocolo CAN utilizado nos automóveis no Raspberry Pi utilizando um HAT CAN. Isto permite-lhe ligar e descodificar mensagens do computador de bordo e obter informações como o consumo de combustível, a velocidade oua rotação do motor.

Instalação de bibliotecas

Para usar o chapéu CAN com o Raspberry Pi, é necessário apenas um pacote python can-utils

sudo apt-get install can-utils

Este pacote gere o protocolo de comunicação CAN normalmente utilizado na indústria automóvel.

  • ler e descodificar mensagens CAN
  • guardar mensagens num ficheiro CANlog
  • reproduzir o ficheiro CANlog num bus CAN real ouvirtual para simular um dispositivo

N.B.: pode também instalar o pandas e o matplotlib para processar e rastrear os dados recebidos.

Configuração do bus CAN

sudo ip link set can0 up type can bitrate 50000
sudo ip link set can0 down

Para um barramento de latas virtual, é possível introduzir os seguintes comandos

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

Para verificar se o barramento de latas está no lugar, introduza o comando

ifconfig can

ou

ip addr | grep can

Envio e receção de mensagens CAN

Introduzir o comando de transmissão num terminal

cansend can0 001#1122334455667788

Em seguida, noutro terminal, introduza o comando de receção

candump -tz can0

o sinalizador -tz é opcional e é utilizado para mostrar a hora

(1668600101.854788) can0 0B2#0000000000000000
(1668600101.855011) can0 116#04045CAE092596FF
(1668600101.855285) can0 11E#6B04000000000000
(1668600101.855949) can0 107#0000FE46411404E7
(1668600101.856174) can0 0A7#CDD35F7FFDF5173F
(1668600101.856408) can0 0A8#C1D35FC98C643C0F
(1668600101.856652) can0 32C#0003000098240810
(1668600101.856904) can0 557#0000000000000000
(1668600101.857743) can0 086#1703C82100000000
(1668600101.858067) can0 23D#0000F8FFFFFF3F00
(1668600101.859665) can0 3D0#000000A380008000
(1668600101.859913) can0 33C#0000012080000000
(1668600101.860199) can0 16A954C2#006B000000000000
(1668600101.863567) can0 464#0000000000000000
(1668600101.863814) can0 3DE#FE00000000000000
(1668600101.864582) can0 0B2#0000000000000000
(1668600101.864826) can0 0FD#E5E53F8000000000
(1668600101.865070) can0 101#B4057E0582030000
(1668600101.865308) can0 106#B985B3040000AF20
(1668600101.865631) can0 120#860200020008FF01
(1668600101.865866) can0 121#4602004039627EFE
(1668600101.866109) can0 15A#760E000001E60000
(1668600101.866339) can0 0A8#71D45FC98C643E0F
(1668600101.866574) can0 0A7#F7D45F7FFDF5173F

Gravação e reprodução de um ficheiro CANlog

Para guardar um ficheiro de registo das mensagens CAN, introduzir o comando:

candump -l can0

este comando cria um ficheiro candump–.log

O ficheiro pode ser reproduzido no mesmo barramento de latas ou num barramento diferente.

canplayer -I candump-2022-11-16_120141.log #play can on same canbus as in the file
canplayer vcan0=can1 -v -I candump-2022-11-16_120141.log #play saved canbus (can1) on vcan0
canplayer -l 2 -I candump-2022-11-16_120141.log #play can data twice
canplayer -l i -I candump-2022-11-16_120141.log #play can data inifinitely

Descodificação das mensagens do bus CAN

Para descodificar as mensagens num bus CAN, é necessário ter a definição das mensagens no bus CAN. Esta definição está descrita num ficheiro .dbc, que é a base de dados do bus CAN. Este documento contém o identificador da mensagem e o nome dos sinais que ela contém.

Aplicações

Depois de dominar o protocolo, pode utilizar a placa CAN hat com o Raspberry Pi para desenvolver dispositivos incorporados para a indústria automóvel.

Fontes

Configuração de um Raspberry Pi sem cabeça

Configuração de um Raspberry Pi sem cabeça

Configurar o Raspberry Pi em modo headless pode ser interessante quando se utiliza o microcomputador sem ecrã. A principal vantagem é ter uma instalação mais leve, sem a área de trabalho e softwares desnecessários.

Configurar o Raspberry sem cabeça

descarregar e gravar o ficheiro de imagem do Raspberry Pi OS Lite no cartão SD

Autorizar o acesso ssh

para autorizar o acesso ssh, crie um ficheiro vazio chamado ssh na pasta /boot/ da partição (SEM EXTENSÃO)

Configurar a ligação WiFi

Na raiz da partição, crie um ficheiro wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=FR

network={
    ssid="wifi_ssid"
    psk="wifi_password"
    key_mgt="WPA-PSK"
}

Recuperar o endereço IP do seu Raspberry Pi

Existem várias formas de recuperar o endereço IP do seu Raspberry Pi.

  1. utilizar a página de gestão da caixa para ver as ligações
  2. procurar endereços IP utilizando arp -a (Windows

Ligar com ssh

Se o Raspberry Pi estiver ligado à rede, pode ser acedido via ssh com o endereço ip, o login e a password. Por defeito, os identificadores são:

  • login: pi
  • palavra-passe: raspberry
ssh pi@192.168.1.0 #replace with raspberry pi ip adress

Já pode aceder ao seu Raspberry Pi em modo Headless. Para facilitar a utilização neste modo, aqui ficam algumas dicas.

Navegação em vários terminais

Pode navegar pelos diferentes separadores de terminais utilizando as teclas Alt+F1-F12, o que lhe permite lançar até 12 terminais em paralelo. Isto pode ser muito útil quando quiser:

  • executar tarefas em paralelo
  • executar tarefas com diferentes utilizadores
  • executar tarefas contínuas, como o htop, em segundo plano

Copiar o conteúdo de uma pen USB

a chave usb deve aparecer em media

Para verificar se a chave USB é reconhecida, introduza o seguinte comando e anote o nome do volume (neste caso, sda1)

lsblk --fs

Para montar a chave USB numa pasta, utilizamos o comando mount.

mkdir /home/pi/mntusb
sudo mount /dev/sda1 /home/pi/mntusb

Depois de a chave USB ter sido montada corretamente, pode copiar os ficheiros para o seu Raspberry utilizando o comando cp

cp home/pi/mntusb/myfile.txt home/pi/myfile.txt

N.B.: Se o exfat não for reconhecido, introduzir

sudo apt-get install exfat-fuse exfat-utils

Em seguida, reinicie o Raspberry Pi

Antes de remover o volume de armazenamento, utilize o comando umount

sudo umount /dev/sda1

Fonte