Pular para o conteúdo principal

Configurar reComputer Industrial R21xx

Visão Geral

Aprenda como configurar e testar componentes de hardware na série reComputer Industrial R21xx após instalar os dispositivos. Este wiki abrange mapeamento de GPIO, teste do LED USER, comunicação SPI, varredura de Wi‑Fi e Bluetooth, LoRa®, 4G, 5G,Zigbee via Mini-PCIe, RS485, RS232, CAN, teste de DI/DO, UPS para desligamento seguro e mais.

Consultar Mapeamentos e Offsets de GPIO

Para consultar mapeamentos e offsets de GPIO, siga estas etapas:

  1. Copie e cole o seguinte comando para consultar os mapeamentos de GPIO:
cat /sys/kernel/debug/gpio

Este comando exibirá os mapeamentos e offsets de GPIO, fornecendo informações essenciais para depurar ou configurar os pinos de GPIO.

Teste do LED USER

Fornecemos LEDs nas três cores vermelho, azul e verde para uso dos usuários. Você pode entrar no diretório /sys/class/leds/ para visualizar:

1. Navegue até o diretório do LED

cd /sys/class/leds/
ls

Use o seguinte comando para acender o LED da cor correspondente.

sudo su
echo 1 > /sys/class/leds/led-red//brightness
echo 1 > /sys/class/leds/led-blue/brightness
echo 1 > /sys/class/leds/led-green/brightness

Isso irá acender o LED correspondente.

3. Desligar os LEDs (opcional)
Para desligar um LED específico, use:

echo 0 > /sys/class/leds/led-red/brightness
echo 0 > /sys/class/leds/led-blue/brightness
echo 0 > /sys/class/leds/led-green/brightness

Testando a Comunicação SPI

Para testar a comunicação SPI curto-circuitando os pinos MISO e MOSI do módulo TPM, siga estas etapas:

  1. Clone o repositório spidev-test:
# Don't forget to connect to network before running command
git clone https://github.com/rm-hull/spidev-test.git
  1. Acesse o diretório spidev-test:
cd spidev-test
  1. Compile o arquivo spidev_test.c:
gcc spidev_test.c -o spidev_test
  1. Execute o programa spidev_test com o seguinte comando:
./spidev_test -D /dev/spidev10.0 -v -p hello

Este comando testa a comunicação SPI no dispositivo SPI especificado (/dev/spidev10.0) com saída detalhada ( -v ) e envia a mensagem "hello" (-p hello). Ao curto-circuitar os pinos MISO e MOSI do módulo TPM, você cria efetivamente um cenário de loopback, onde os dados enviados em MOSI são recebidos em MISO. Esta configuração permite testar a comunicação SPI sem um dispositivo real conectado.

Varredura de Wi‑Fi

Para listar as redes Wi‑Fi disponíveis e seus detalhes, execute:

sudo iwlist wlan0 scan
  • Este comando varre todas as redes Wi‑Fi próximas e exibe seus SSIDs, força de sinal e tipo de criptografia.

Varredura de Bluetooth

Para procurar dispositivos Bluetooth, siga estas etapas:

Abra a interface de controle do Bluetooth:

sudo bluetoothctl

Este comando abrirá a interface de controle do Bluetooth. A partir daí, você pode executar comandos adicionais para procurar dispositivos Bluetooth próximos.

Habilite a varredura:

scan on

Este comando iniciará a varredura de dispositivos Bluetooth próximos. Você pode então usar outros comandos dentro da interface bluetoothctl para interagir com dispositivos Bluetooth, como parear ou conectar-se a eles.

LoRa® via Mini-PCIe

Configuração LoRa® SPI

Depois de instalar o LoRa® SPI no slot 2 Mini-PCIe, é possível configurar o LoRa® SPI, seguindo estas etapas:

  1. Clone o repositório SX1302_HAL:
cd ~/
git clone https://github.com/Lora-net/sx1302_hal
  1. Vá para o diretório clonado:
cd sx1302_hal
  1. Modifique o arquivo de configuração:

Abra o arquivo de configuração do dispositivo I2C:

sudo nano ./libloragw/inc/loragw_i2c.h

Altere esta linha:

#define I2C_DEVICE "/dev/i2c-1"

Para:

#define I2C_DEVICE "/dev/i2c-2"

Altere #define I2C_DEVICE "/dev/i2c-1" para #define I2C_DEVICE "/dev/i2c-2". Pressione ctrl+x para sair, pressione y para salvar as alterações e depois pressione Enter para retornar à página da linha de comando.

  1. 4.Adicione o arquivo packet_forwarder/reset_lgw.sh:
sudo nano packet_forwarder/reset_lgw.sh

Adicione o código de execução:

#!/bin/sh

# This script is intended to be used on SX1302 CoreCell platform, it performs
# the following actions:
# - export/unpexort GPIO23 and GPIO18 used to reset the SX1302 chip and to enable the LDOs
# - export/unexport GPIO22 used to reset the optional SX1261 radio used for LBT/Spectral Scan
#
# Usage examples:
# ./reset_lgw.sh stop
# ./reset_lgw.sh start

# GPIO mapping has to be adapted with HW
#

SX1302_RESET_PIN=632 # SX1302 reset
SX1302_POWER_EN_PIN=633 # SX1302 power enable
SX1261_RESET_PIN=634 # SX1261 reset (LBT / Spectral Scan)
AD5338R_RESET_PIN=623 # AD5338R reset (full-duplex CN490 reference design)

WAIT_GPIO() {
sleep 0.1
}

init() {
# setup GPIOs
echo "$SX1302_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO
echo "$SX1261_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO
echo "$SX1302_POWER_EN_PIN" > /sys/class/gpio/export; WAIT_GPIO
echo "$AD5338R_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO

# set GPIOs as output
echo "out" > /sys/class/gpio/gpio$SX1302_RESET_PIN/direction; WAIT_GPIO
echo "out" > /sys/class/gpio/gpio$SX1261_RESET_PIN/direction; WAIT_GPIO
echo "out" > /sys/class/gpio/gpio$SX1302_POWER_EN_PIN/direction; WAIT_GPIO
echo "out" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/direction; WAIT_GPIO
}

reset() {
echo "CoreCell reset through GPIO$SX1302_RESET_PIN..."
echo "SX1261 reset through GPIO$SX1302_RESET_PIN..."
echo "CoreCell power enable through GPIO$SX1302_POWER_EN_PIN..."
echo "CoreCell ADC reset through GPIO$AD5338R_RESET_PIN..."

# write output for SX1302 CoreCell power_enable and reset
echo "1" > /sys/class/gpio/gpio$SX1302_POWER_EN_PIN/value; WAIT_GPIO

echo "1" > /sys/class/gpio/gpio$SX1302_RESET_PIN/value; WAIT_GPIO
echo "0" > /sys/class/gpio/gpio$SX1302_RESET_PIN/value; WAIT_GPIO

echo "0" > /sys/class/gpio/gpio$SX1261_RESET_PIN/value; WAIT_GPIO
echo "1" > /sys/class/gpio/gpio$SX1261_RESET_PIN/value; WAIT_GPIO

echo "0" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/value; WAIT_GPIO
echo "1" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/value; WAIT_GPIO
}

term() {
# cleanup all GPIOs
if [ -d /sys/class/gpio/gpio$SX1302_RESET_PIN ]
then
echo "$SX1302_RESET_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
if [ -d /sys/class/gpio/gpio$SX1261_RESET_PIN ]
then
echo "$SX1261_RESET_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
if [ -d /sys/class/gpio/gpio$SX1302_POWER_EN_PIN ]
then
echo "$SX1302_POWER_EN_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
if [ -d /sys/class/gpio/gpio$AD5338R_RESET_PIN ]
then
echo "$AD5338R_RESET_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
}

case "$1" in
start)
term # just in case
init
reset
;;
stop)
reset
term
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac

exit 0

Pressione ctrl+x para sair, pressione y para salvar as alterações e depois pressione Enter para retornar à página da linha de comando.

  1. Modifique o código de configuração:
sudo vim ./tools/reset_lgw.sh

Atualize as configurações de pinos:

SX1302_RESET_PIN=632     # SX1302 reset
SX1302_POWER_EN_PIN=633 # SX1302 power enable
SX1261_RESET_PIN=634 # SX1261 reset (LBT / Spectral Scan)
# AD5338R_RESET_PIN=13 # AD5338R reset (full-duplex CN490 reference design)

Comente, respectivamente, as linhas 18, 29, 35, 42, 53 e 54:

......
# echo "$AD5338R_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO
......
# echo "out" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/direction; WAIT_GPIO
......
# echo "CoreCell ADC reset through GPIO$AD5338R_RESET_PIN..."
......
# echo "0" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/value; WAIT_GPIO
# echo "1" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/value; WAIT_GPIO

Pressione ctrl+x para sair, pressione y para salvar as alterações e depois pressione Enter para retornar à página da linha de comando.

  1. substitua a porta SPI padrão do módulo LoraWAN® no arquivo de configuração global_conf.json.sx1250.US915 (os arquivos de configuração são selecionados com base no módulo que você está usando):
sudo nano packet_forwarder/global_conf.json.sx1250.US915

Modifique o parâmetro com_path, alterando "com_path": "/dev/spidev0.0" para "com_path": "/dev/spidev2.0".

  1. Compile o código:
sudo make

Essas etapas irão configurar o LoRa® SPI e executar o packet forwarder com o arquivo de configuração especificado.

Configuração LoRa® USB

Para LoRa® USB, os comandos anteriores permanecem os mesmos do LoRa® SPI. No entanto, o comando final precisa ser alterado para:

cho  632  >  /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio632/direction
echo "1" > /sys/class/gpio/gpio632/value

sudo ./lora_pkt_fwd -c global_conf.json.sx1250.EU868.USB

Este comando especifica o arquivo de configuração a ser usado para LoRa® USB.

5G Celular via M.2 B-KEY

Para interagir com um módulo 5G/4G usando comandos AT via minicom, siga estas etapas:

  1. Crie um novo arquivo power_5g.sh:
nano power_5g.sh

Abra com sudo nano e insira o seguinte comando, depois pressione ctrl+x para salvar e sair.

#!/bin/bash

RESET_PIN=645
POWER_PIN=639

if [ ! -d "/sys/class/gpio/gpio$RESET_PIN" ]; then
echo $RESET_PIN > /sys/class/gpio/export
fi

if [ ! -d "/sys/class/gpio/gpio$POWER_PIN" ]; then
echo $POWER_PIN > /sys/class/gpio/export
fi

echo "out" > /sys/class/gpio/gpio$RESET_PIN/direction
echo "out" > /sys/class/gpio/gpio$POWER_PIN/direction

echo 1 > /sys/class/gpio/gpio$RESET_PIN/value
echo 1 > /sys/class/gpio/gpio$POWER_PIN/value

echo "Start to reboot 5g module"

echo 0 > /sys/class/gpio/gpio$RESET_PIN/value
sleep 0.05
echo 0 > /sys/class/gpio/gpio$POWER_PIN/value

echo "5g module reboot completed"
  1. Execute o arquivo:
sudo ./power_5g.sh

Após 10–15 segundos (leva um tempo para o módulo ligar e enumerar o USB), verifique se o nó do dispositivo aparece:

ls /dev/ttyUSB*

Saída /dev/ttyUSB0, etc.:

Abra o minicom com a porta serial e taxa de baud apropriadas:

sudo apt update
sudo apt install minicom
sudo minicom -D /dev/ttyUSB2 -b 115200

Este comando abre o minicom com a porta serial especificada (/dev/ttyUSB2) a uma taxa de baud de 115200.

  1. Quando o minicom estiver aberto, você pode começar a enviar comandos AT para o módulo 4G. Por exemplo:
AT

Este comando verifica se o módulo está respondendo. Você deve receber uma resposta "OK" se o módulo estiver funcionando corretamente.

  1. Para discar um número de telefone usando o módulo 4G, você pode usar o comando ATD seguido do número de telefone:
ATD<phone_number>;

Substitua phone_number pelo número de telefone desejado que você deseja discar. Certifique-se de incluir um ponto e vírgula ; no final do comando para indicar o fim do número de telefone.

4G Celular via Mini-PCIe

Crie um novo arquivo power_4g.sh:

sudo nano power_4g.sh

Abra com sudo nano e insira o seguinte comando, depois pressione ctrl+x para salvar e sair.

# SIM_MUX_SEL
echo 643 > export
echo out > gpio643/direction
echo 0 > gpio643/value

Execute o arquivo:

sudo ./power_4g.sh

Após 10–15 segundos (leva um tempo para o módulo ligar e enumerar o USB), verifique se o nó do dispositivo aparece:

ls /dev/ttyUSB*

Saída /dev/ttyUSB0. Confirme a ação real do GPIO:

cat /sys/class/gpio/gpio645/value # should be 0
cat /sys/class/gpio/gpio639/value # should be 0

Ambos os valores são 0 → o script foi corretamente puxado para baixo e o módulo está em estado de funcionamento. Entre no minicom para enviar comandos:

sudo minicom -D /dev/ttyUSB2 -b 115200

● Pressione Ctrl+A,Z,E em sequência. Primeiro envie AT para testar se está conectado. Se OK aparecer, a conexão foi bem-sucedida. Após executar o comando a seguir, o módulo será reiniciado automaticamente. Se você não sair do minicom, poderá ver as informações de configuração correspondentes. Acesso à Internet discado ECM:

AT+QCFG="usbnet",1

Até que a última linha mostre OK, terá sido bem-sucedido.

Note O dispositivo precisa aguardar por um tempo e então você pode visualizar o endereço IP de usb0 em ifconfig.

Teste o status da rede e a comunicação:

# Check network status
ifconfig
# Test communication
ping www.baidu.com -I usb0

Zigbee via Mini-PCIe

Para testar a comunicação Zigbee entre dois módulos Zigbee, siga estas etapas:

  1. Verificar portas seriais disponíveis

Use o seguinte comando para verificar as portas seriais disponíveis:

cat /dev/ttyUSB*

Instalar uma ferramenta de comunicação serial

  1. Instalar ferramenta de comunicação serial:
sudo apt-get install cutecom
  1. Abrir porta serial para o Coordenador (Primeiro módulo Zigbee):
  • Abra a ferramenta cutecom e configure-a para a primeira porta serial:
  • Taxa de baud: 115200
  • Marque a opção "Hex output" na parte inferior da interface.
  • Siga estas etapas para configurar o primeiro módulo Zigbee:
  • Definir como coordenador: Envie o comando ‘55 04 00 05 00 05’, espere a resposta ‘55 04 00 05 00 05’.
  • Redefinir dispositivo: Pressione o botão de reset ou envie o comando ‘55 07 00 04 00 FF FF 00 04’.
  • Formação de rede: Envie o comando ‘55 03 00 02 02’.
  1. Abrir porta serial para o Roteador (Segundo módulo Zigbee): Abra outra instância do cutecom e configure-a para a segunda porta serial com as mesmas configurações de antes. Siga estas etapas para configurar o segundo módulo Zigbee:
  • Definir como roteador: Envie o comando ‘55 04 00 05 01 04’, espere a resposta ‘55 04 00 05 00 05’.
  • Redefinir dispositivo: Pressione o botão de reset ou envie o comando ‘55 07 00 04 00 FF FF 00 04’.
  • Formação de rede: Envie o comando ‘55 03 00 02 02’.
  1. Verificar status do dispositivo: Envie o comando ‘55 03 00 00 00’ para verificar o status do dispositivo. Espere uma resposta semelhante a ‘55 2a 00 00 00 01 XX XX XX XX’, onde ‘XX’ representa informações do dispositivo.
  2. Entrar em modo transparente: Se a formação de rede for bem-sucedida, entre no modo transparente enviando o comando 55 07 00 11 00 03 00 01 13. Ambos os módulos devem estar em modo transparente para comunicação direta. Para sair do modo transparente, envie "+++".
  3. Notas adicionais:
  • Se a configuração do roteador falhar, o dispositivo pode já ser um coordenador. Saia da rede usando o comando '55 07 00 04 02 xx xx xx'.
  • Teste a potência de transmissão usando os comandos '55 04 0D 00 00 0D' (consulta) e '55 04 0D 01 XX XX' (configurar). Certifique-se de substituir /dev/ttyUSB pela porta serial correta para cada módulo Zigbee. Siga cuidadosamente estas etapas para testar com sucesso a comunicação Zigbee entre os dois módulos.

Teste de RS485

O reComputer Industrial R21xx inclui 2x portas RS485. Abaixo estão suas correspondentes portas COM e arquivos de dispositivo:

Número de portas RS485Porta COMIdentificação serigráficaArquivo de dispositivo
RS485-3COM3A3/B3/GND3/dev/ttyACM2
RS485-4COM4A4/B4/GND4/dev/ttyACM3

Para testar a função RS485, você pode seguir as etapas abaixo (tomando RS485_1 e RS485_2 como exemplos):

  1. Conecte A e B de RS485_1 e RS485_2.
  2. Abra o minicom em duas janelas de terminal, respectivamente:
sudo minicom -D /dev/ttyACM1
sudo minicom -D /dev/ttyACM2
nota

Se houver uma placa de expansão, o número precisa ser movido uma casa para trás, por exemplo /dev/ttyAcM2, /dev/ttyAcM3.

  1. As seguintes operações precisam ser realizadas em ambos os ACMs abertos:
  • Pressione Ctrl+A, depois pressione Z, e a interface de Resumo de Comandos do Minicom aparecerá:

  • Pressione O novamente para abrir a configuração, selecione Configuração da porta serial e pressione Enter; Abra todas as interfaces relacionadas ao RS485, pressione H/I/J/K/L em sequência para abrir;

  • Depois que todos exibirem "YES", pressione Enter para voltar e, em seguida, selecione Exit para sair.

nota

Tomando ACM2 e ACM3 como exemplo: Se você quiser enviar de ACM2 para ACM3, ACM2 precisa ser configurado novamente: ctrl+A, depois pressione Z e depois E, e então inicie o comando de escrita na porta serial. Nesse momento, você pode imprimir strings em ACM2 à vontade, e poderá ver o conteúdo de ACM2 em ACM3 ao mesmo tempo; Por outro lado, se você quiser enviar de ACM3 para ACM2, ACM3 precisa ser configurado novamente: ctrl+A, depois pressione Z e depois E, e então inicie o comando de escrita na porta serial. Nesse momento, você pode imprimir strings em ACM3 à vontade, e poderá ver o conteúdo de ACM3 em ACM2 ao mesmo tempo. Como mostrado na figura.

Teste de RS232

reComputer Industrial R21xx inclui 2x RS232 portas, e as correspondentes portas COM e arquivos de dispositivo são as seguintes:

Número de portas RS232Porta COMIdentificação serigráficaArquivo de dispositivo
RS232-1COM1RX1/TX1/GND1/dev/ttyACM0
RS232-2COM2RX2/TX2/GND2/dev/ttyACM1

Como o RS232 é comunicação full-duplex, faça curto-circuito diretamente entre TX e RX do RS232 para realizar um teste de loopback.

Você precisa abrir dois terminais, ACM1 se a placa de expansão estiver conectada e ACM2 se a placa de expansão não estiver conectada: Terminal 1:*

sudo minicom -D /dev/ttyACM1 -b 9600

Se a placa de expansão não estiver conectada, você precisa alterar /dev/ttyACM1 para /dev/ttyACM0 .

Terminal 2:

printf "hello seeed\r\n" > /dev/ttyACM1

Terminal 3:

printf "hello seeed\r\n" > /dev/ttyACM0
printf "hello seeed\r\n" > /dev/ttyACM1

O Terminal 1 exibirá o conteúdo solicitado pelo Terminal 2 para ser impresso.

Teste de DI (Entrada Digital)

reComputer Industrial R21xx contém 4x portas DI, o usuário pode configurar essas portas de acordo com as necessidades reais.

Número de portasPortas DIGPIO estendido correspondente
4DI1GPIO588
DI2GPIO589
DI3GPIO590
DI4GPIO595

O tipo de entrada das portas DI é PNP. Ela suporta tensão de entrada de 5VDC~24VDC, corrente - 1000mA. Para testar a funcionalidade da DI, você pode seguir estas etapas para testá-la:

  1. A conexão entre a porta DI do reComputer Industrial R21xx e a carga externa foi concluída.
  2. Insira o seguinte comando para obter o status do GPIO:
echo 588 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio588/direction
cat /sys/class/gpio/gpio588/value
  1. Quando o nível externo estiver alto, o valor de /sys/class/gpio/gpio588/value será 0; quando o nível externo estiver baixo, /sys/class/gpio/gpio588/value será 1.

DO (Saída Digital)

O reComputer Industrial R21xx contém 4 portas DO; o usuário pode configurar essas portas de acordo com as necessidades reais.

Número de portasPortas DIGPIO estendido correspondente
4DO1GPIO638
DO2GPIO637
DO3GPIO590
DO4GPIO636
DO5GPIO635

O tipo de saída das portas DO é transistor. Ela suporta tensão de saída - abaixo de 60 VDC, capacidade de corrente - 500 mA. Para testar a funcionalidade da DO, você pode seguir estas etapas para testá-la:

  1. A conexão entre a porta DO do reComputer Industrial R21xx e a carga externa foi concluída.
  2. Insira o seguinte comando para definir a saída para nível alto ou nível baixo:
echo 638 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio638/direction
echo 1 > /sys/class/gpio/gpio638/value
echo 0 > /sys/class/gpio/gpio638/value
  1. Quando o nível externo estiver alto, o valor de /sys/class/gpio/gpio638/value será 0; quando o nível externo estiver baixo, /sys/class/gpio/gpio638/value será 1.

Teste de CAN

Teste de loopback

Número de portasPortas DIGPIO estendido correspondente
4CAN-0_H/CAN-0_can0
CAN-1_H/CAN-1_Lcan1
  1. Use dois fios DuPont para curto-circuitar os H-H e L-L de can0 e can1, formando um teste de loop mínimo.
CAN-0_H─────●───── CAN-0_H
CAN-1_H─────●───── CAN-1_H
  1. Confirme que as duas interfaces de rede can0 e can1 realmente aparecem no sistema para evitar que o driver não seja carregado:
# should print can0 can1
ls /sys/class/net | grep can
# should see "successfully initialized"
dmesg | grep -i can
  1. Defina as duas interfaces CAN para 500 kbit/s e coloque-as online, prontas para enviar e receber dados (defina-as para nível baixo por segurança):
sudo ip link set can0 down
sudo ip link set can1 down
sudo ip link set can0 up type can bitrate 500000
sudo ip link set can1 up type can bitrate 500000
  1. Confirme o status dos pinos:
ip -d link show can0
ip -d link show can1
  1. Baixe e instale o can-utils para usar ferramentas essenciais como candump e cansend.
sudo apt install can-utils
  1. Enquanto monitora o can0, envie quadros a partir do can1. Se você conseguir ver a mensagem, isso significa que o caminho está normal.
# Terminal A
candump can0
# Terminal B
cansend can1 123#DE.AD.BE.EF.CA.FE.00.11
  1. Inversamente, você pode monitorar o can1 enquanto envia quadros a partir do can0. Se você conseguir ver a mensagem, isso significa que o caminho está normal.
# Terminal A
candump can1
# Terminal B
cansend can0 123#DE.AD.BE.EF.CA.FE.00.11
  1. Se você quiser tornar inicializações subsequentes mais simples, pode escrever o comando de inicialização em um script. Você só precisa executá-lo uma vez na inicialização para ativar automaticamente a interface.
#!/bin/bash
sudo ip link set can0 down
sudo ip link set can1 down
sudo ip link set can0 up type can bitrate 500000
sudo ip link set can1 up type can bitrate 500000
echo "can0 & can1 are up @ 500 kbit/s"

Teste com Python-CAN

Python-CAN é uma biblioteca Python multiplataforma que fornece uma interface de programação unificada para comunicação em barramento Controller Area Network (CAN), suportando uma ampla gama de interfaces de hardware CAN e barramentos virtuais, permitindo a fácil implementação de transmissão, recepção, filtragem de mensagens CAN, monitoramento do barramento e outras operações. Da mesma forma, as interfaces CAN precisam estar conectadas fisicamente para realizar a comunicação em loopback.

  1. Configure a taxa de baud CAN padrão (500 kbit/s):
sudo ip link set down can0
sudo ip link set down can1
sudo ip link set can0 type can bitrate 500000
sudo ip link set can1 type can bitrate 500000
sudo ip link set up can0
sudo ip link set up can1
  1. Verifique se ambas as interfaces estão no estado UP: a saída "state UP" indica o estado UP.
ip a show can0
ip a show can1

A saída "state UP" indica o estado UP.

  1. Configure o ambiente virtual Python e as dependências.
mkdir rpi_can_project
cd rpi_can_project
python3 -m venv can_env
source can_env/bin/activate
pip install python-can
  1. Insira o script Python:
# can_test.py
import can
import time

# create a bus instance using 'with' statement,
# this will cause bus.shutdown() to be called on the block exit;
# many other interfaces are supported as well (see documentation)
with can.Bus(interface='socketcan',
channel='vcan0',
receive_own_messages=True) as bus:

# send a message
message = can.Message(arbitration_id=0x7B, is_extended_id=True,
data=[0x11, 0x22, 0x33])

try:
bus.send(message, timeout=0.2)
print(f"Message sent: ID={message.arbitration_id:X}, Data={message.data.hex()}")
except can.exceptions.CanOperationError as e:
print(f"Error sending message: {e}")

# iterate over received messages
print("Listening for 5 seconds...")
start_time = time.time()


while time.time() - start_time < 5:
if msg:
print(f"Received - ID: {msg.arbitration_id:X}, Data: {msg.data.hex()}")
else:
print("No message received in 1 second.")

print("Bus shut down and program finished.")
  1. Execute e rode:
python can_test.py
deactivate

Teste do Hub USB

Para testar o hub USB, você pode usar as seguintes etapas:

  1. Verifique se o hub USB é detectado executando o comando lsusb. Este comando lista todos os dispositivos USB conectados, incluindo hubs.
lsusb

A execução deste comando deve exibir informações sobre os dispositivos USB conectados ao seu sistema, incluindo quaisquer hubs USB presentes. Se o hub USB estiver funcionando corretamente, você deverá ver seus detalhes listados na saída do comando lsusb. Se ele não estiver listado, pode haver um problema com o hub ou com sua conexão ao sistema. Nesses casos, pode ser necessário solucionar problemas do hub USB ou de suas conexões.

Teste do RTC (Relógio em Tempo Real)

Para testar a funcionalidade do Relógio em Tempo Real (RTC), siga estas etapas:

  1. Desative a sincronização automática de horário:
sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd
  1. Defina o horário: Defina o RTC para uma data e hora específicas:
sudo hwclock --set --date "2025-7-17 12:00:00"
  1. Sincronize o horário do RTC com o sistema Atualize o horário do sistema para corresponder ao horário do RTC:
sudo hwclock --hctosys
  1. Verifique o horário do RTC:
sudo hwclock -r

Este comando irá ler e exibir o horário armazenado no RTC.

  1. Desconecte a fonte de alimentação do RTC, aguarde alguns minutos, depois reconecte-a e verifique novamente o horário do RTC para ver se ele manteve o horário correto.

Teste do Timer Watchdog

Para realizar um teste do watchdog, siga estas etapas:

  1. Instale o software do watchdog:
sudo apt install watchdog
  1. Edite o arquivo de configuração do watchdog:
# make sure you install vim already, if haven't, can install by the command below
sudo apt-get install vim
sudo vim /etc/watchdog.conf

Modifique a configuração da seguinte forma:

watchdog-device = /dev/watchdog
# Uncomment and edit this line for hardware timeout values that differ
# from the default of one minute.
watchdog-timeout = 120
# If your watchdog trips by itself when the first timeout interval
# elapses then try uncommenting the line below and changing the
# value to 'yes'.
#watchdog-refresh-use-settimeout = auto
# If you have a buggy watchdog device (e.g. some IPMI implementations)
# try uncommenting this line and setting it to 'yes'.
#watchdog-refresh-ignore-errors = no
# ====================== Other system settings ========================
#
# Interval between tests. Should be a couple of seconds shorter than
# the hardware time-out value.
interval = 15
max-load-1 = 24
#max-load-5 = 18
#max-load-15 = 12
realtime = yes
priority = 1

Você pode ajustar outras configurações conforme necessário.

  1. Certifique-se de que o serviço de watchdog está em execução:
sudo systemctl start watchdog
  1. Para testar a funcionalidade do watchdog, execute o seguinte comando para simular um travamento do sistema:
sudo su

echo 1 > /proc/sys/kernel/sysrq
echo "c" > /proc/sysrq-trigger

Este comando aciona um crash do kernel e deve fazer com que o watchdog reinicie o sistema.

  1. Monitore o sistema para confirmar que ele é reiniciado após o período de tempo limite especificado. Essas etapas ajudarão você a testar e garantir a funcionalidade do temporizador watchdog no seu sistema.

Controlando o Buzzer via GPIO

O GPIO correspondente ao buzzer é o gpio627. Digite o seguinte script para ligar/desligar o buzzer:

  1. Ligar o buzzer:
echo 627 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio627/direction
echo 1 > /sys/class/gpio/gpio627/value
  1. Desligar o buzzer :Turn off the buzzer :
echo 627 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio627/direction
echo 0 > /sys/class/gpio/gpio627/value

TPM 2.0

Se você conectar o módulo TPM 2.0 ao dispositivo, o código a seguir pode ajudar a verificar a conexão do TPM.

ls /dev | grep tpm

Interpretando a saída:

Se você vir tpm0 e tpmrm0 na saída, isso significa que os dispositivos TPM (Trusted Platform Module) foram detectados e estão disponíveis no seu sistema. Isso indica que o hardware TPM foi reconhecido e está acessível, o que é um bom sinal. Você pode prosseguir usando funcionalidades ou aplicativos relacionados ao TPM, sabendo que os dispositivos estão presentes e acessíveis.

ATECC608A

Para interagir com o dispositivo ATECC608A e gerar um número de série aleatório, siga estas etapas:

  1. Clonar o repositório atecc-util:
curl -LJO https://github.com/wirenboard/atecc-util/releases/download/v0.4.12/atecc-util_0.4.12_arm64.deb
  1. Extraia o conteúdo do pacote .deb para o diretório atual:
dpkg -x ./atecc-util_0.4.12_arm64.deb .
  1. Navegue até o diretório atecc:
cd usr/bin
  1. Gerar um número de série aleatório:
./atecc -b 10 -s 192 -c 'serial'

Este comando instrui o utilitário ATECC a usar o slot 10 (-b 10), definir o tamanho do número de série para 192 bits (-s 192) e gerar um número de série aleatório (-c 'serial'). A saída será o número de série gerado, como "01235595d3d621f0ee". Esse processo permite que você interaja com o dispositivo ATECC608A e execute várias operações, como gerar números de série aleatórios.

Interagindo com a EEPROM

Aqui estão os comandos para interagir com uma EEPROM (Electrically Erasable Programmable Read-Only Memory):

  1. Conceder permissões totais (leitura, gravação e execução) ao arquivo de dispositivo da EEPROM:
 sudo chmod 777 /sys/bus/i2c/devices/10-0050/eeprom
  1. Escrever a string "This is a test string" no dispositivo EEPROM:
echo "This is a test string" > /sys/bus/i2c/devices/10-0050/eeprom
  1. Ler o conteúdo do dispositivo EEPROM e exibi-lo em formato hexadecimal usando o utilitário hexdump:
cat /sys/bus/i2c/devices/6-0050/eeprom | hexdump -C

Verificando a detecção do SSD

Para listar os discos, incluindo o SSD, você pode usar o comando fdisk -l. Veja como:

sudo fdisk -l

Este comando exibirá uma lista de todos os discos conectados ao seu sistema, incluindo o SSD se ele estiver devidamente detectado. Procure por entradas que representem o seu SSD. Elas normalmente começam com /dev/sd seguido por uma letra (por exemplo, /dev/sda, /dev/sdb, etc.). Depois de identificar a entrada correspondente ao seu SSD, você pode prosseguir com o particionamento ou formatação conforme necessário.

UPS para desligamento seguro

Um GPIO6 entre a CPU e a entrada de alimentação DC é usado para alertar a CPU quando a fonte de alimentação é desligada. Então a CPU deve fazer algo urgente em um script antes do esgotamento de energia do supercapacitor e executar um "$ shutdown". Outra maneira de usar essa função é iniciar um desligamento quando o pino GPIO mudar. O pino GPIO fornecido é configurado como uma tecla de entrada que gera eventos KEY_POWER. Este evento é tratado pelo systemd-logind iniciando um desligamento.

  1. Conexão de hardware.

Certifique-se de que o pino 'CM5_UPS_DET' do dispositivo UPS esteja conectado ao pino GPIO16 do dispositivo R21xx.

  1. Modificar o arquivo de configuração.
  • Abra o terminal.
  • Execute o seguinte comando para editar o arquivo de configuração:
sudo nano /boot/firmware/config.txt
  1. Adicione o seguinte conteúdo ao final do arquivo:
dtoverlay=gpio-shutdown,gpio_pin=GPIO16,active_low=1

Salve e saia do editor (pressione Ctrl+O para salvar, Enter para confirmar e Ctrl+X para sair).

  1. Preparar o script em Python
  • Crie um novo arquivo de script em Python:
cd ~
sudo nano ups_shutdown.py
  • Copie e cole o código a seguir no arquivo:
import RPi.GPIO as GPIO
import time, os

num = 0

GPIO.setmode(GPIO.BCM)

# Set GPIO16 to input mode
# Add 500ms anti-shake time to stabilize the software
GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(16, GPIO.FALLING, bouncetime=500)

while True:
if GPIO.event_detected(16):
print("...External power off...")
print("")

# Sync data to disk
os.system('sync')
print("...Data saving...")
print("")

# Sleep for 3 seconds
time.sleep(3)

# Synchronize data again
os.system('sync')

# Countdown 5 seconds
while num < 5:
print('----------')
s = 5 - num
print('---' + str(s) + '---')
num = num + 1
time.sleep(1)
print('----------')

# Execute shutdown command
os.system('sudo shutdown -h now')

Salve e saia do editor (pressione Ctrl+O para salvar, Enter para confirmar e Ctrl+X para sair).

  1. Execute o script.
  • Abra o terminal.
  • Execute o seguinte comando para rodar o script:
sudo python3 ups_shutdown.py
nota

Use sudo para garantir que o script tenha permissões suficientes para executar o comando de desligamento.

  1. Simular teste de falha de energia
  • Corte a fonte de alimentação externa.
  • Observe se o sistema salva automaticamente os dados e desliga.
  1. Verificar o resultado
  • Reconecte a fonte de alimentação.
  • Verifique se os dados do sistema estão completos e se ele inicia normalmente.
nota
  1. Para a função de UPS, entre em contato conosco para obter mais informações.
  2. O sinal de alarme é ativo em nível BAIXO.

Acelerador de IA

O slot M.2 M-KEY 2280 no reComputer Industrial R21xx foi projetado para acomodar o Acelerador de IA PCIE M.2. E a série R21xx-12 já vem pré-instalada com um Hailo-8 M.2 AI Acceleration de até 26TOPS. Se você adquiriu o produto da série R21xx-10, será necessário adquirir o módulo NPU da Hailo para habilitar a funcionalidade de IA. O dispositivo vem pré-instalado com o driver do acelerador Hailo, então você pode usá-lo diretamente e executar o caso de teste:

  1. Navegue até o diretório do caso de teste
cd /mnt/hailo-rpi5-examples/
  1. Inicie o ambiente virtual
source ./setup_env.sh
  1. Execute o exemplo simples de detecção
python basic_pipelines/detection_simple.py

Para fechar o aplicativo, pressione Ctrl+C . Esta é uma versão leve do exemplo de detecção, focada principalmente em demonstrar o desempenho do Hailo enquanto minimiza a carga da CPU. O pipeline interno de processamento de vídeo GStreamer é simplificado ao mínimo de tarefas de processamento de vídeo, e o modelo YOLOv6 Nano é utilizado.

nota

Se o reComputer que você comprou não incluir o Hailo-8 e você estiver considerando comprar um dispositivo Hailo para integração, consulte a documentação oficial da Hailo (https://github.com/hailo-ai) para configurar o firmware e o ambiente, e execute os exemplos para verificar se o dispositivo pode ser usado normalmente.

Suporte Técnico & Discussão de Produto

Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja o mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...