Acessando e controlando o GPIO de 40 pinos do ODYSSEY - X86J41x5
Este tutorial demonstra como acessar e controlar o GPIO de 40 pinos do ODYSSEY - X86J41x5 em Linux (Ubuntu). Com isso, você pode começar a construir seus projetos de IoT usando o ODYSSEY - X86J41x5 com facilidade!
Diagrama de pinagem do GPIO de 40 pinos
Ubuntu 18.04
Ubuntu 20.04

Ubuntu 22.04

GPIO
Os pinos padrão no ODYSSEY - X86J41x5 são configurados para o modo de função, então, por exemplo, o pino 3 é definido como I2C por padrão em vez de modo GPIO. Se você preferir usar GPIO por padrão, por favor verifique abaixo.
O GPIO de 40 pinos foi equipado com conversão de nível bidirecional, e a corrente não deve exceder 1 mA durante o uso. Isso significa que a corrente de IO é bem baixa.
Você pode usar o GPIO ou mudar o pino de modo de função para GPIO usando a interface Linux sysfs GPIO. Vamos usar o pino 7 como exemplo, o código a seguir ligará um módulo de LED conectado ao Pino 7:
sudo -i
cd /sys/class/gpio
echo 337 > export
cd gpio337
echo "out" > direction
echo 1 > value

Para desligar o LED:
echo 0 > value
Depois de terminar de usar o GPIO, é necessário fazer o unexport:
echo "in" > direction
cd ..
echo 337 > unexport
Interrupções
Para testar interrupções no ODYSSEY - X86J41x5, siga as instruções abaixo:
Aqui eu usei o python-periphery para acessar a interface GPIO em espaço de usuário Linux (numeração de GPIO do Linux).
- Instale python3-pip.
sudo apt install python3-pip
- Instale python-periphery.
sudo pip3 install python-periphery
-
Baixe o script de teste IRQtest para o seu disco local.
-
Altere o diretório para onde o script foi baixado e execute o script de teste:
sudo python3 IRQtest.py

Alterando pinos para modo GPIO padrão
Se você preferir que o conector de 40 pinos esteja em GPIO por padrão, você pode fazer isso alterando a configuração na BIOS.
-
Reinicie seu ODYSSEY - X86J41x5 e continue pressionando a tecla DEL durante a inicialização para entrar no menu da BIOS.
-
Navegue até Advanced -> HAT Configuration.
-
Altere o GPIO de função para o modo GPIO como você preferir!

Nota: Você também pode definir outros GPIO como saída por padrão.
Usando o Grove Base Hat para controle simples
Você também pode usar o Grove Base Hat para Raspberry Pi para sinais digitais simples. Ou seja, as portas I2C e UART não podem ser usadas por enquanto (o firmware do Grove Base Hat para Odyssey-X86 está sendo desenvolvido e será lançado muito em breve).
Vamos pegar a porta D5 no Grove Base Hat como exemplo:
Nota: Isto se refere ao sistema de numeração BCM do Raspberry Pi -> BCM5. Então, por enquanto, para usar no Odyssey-X86, é necessário descobrir seus pinos físicos, que na verdade é o pino físico Nº 29. Referência: Raspberry Pinouts.
Portanto, os pinos físicos para usar D5 no Grove Base Hat conectado ao Odyssey-X86 é 29, que é o GPIO do Linux 415.
Agora, podemos usar os mesmos métodos acima para controlar esse GPIO:
sudo -i
cd /sys/class/gpio
echo 415 > export
cd gpio415
echo "out" > direction
echo 1 > value

Para fazer o unexport, siga os mesmos passos de antes.
UART
Para verificar os dispositivos UART no ODYSSEY - X86J41x5, execute o seguinte comando:
ls /sys/bus/pci/devices/0000\:00\:18.?/dw-apb-uart.*/tty/ | grep tty

O ttyS4 está associado ao pino UART no conector de 40 pinos (Pino 8 e Pino 10). Para acessar a partir desses pinos, siga:
sudo apt install screen
sudo screen /dev/ttyS4/ 115200
I2C
A velocidade I2C padrão para o ODYSSEY - X86J41x5 é 1MB/s, a qual não pode ser configurada.
Para identificar portas I2C no ODYSSEY - X86J41x5, você pode executar o seguinte comando:
- i2c_designware.0 -> Canal I2C nos Pinos 27 e 28 (I2C6_SDA e I2C6_SCL)
ls /sys/bus/pci/devices/*/i2c_designware.0/ | grep i2c
- i2c_designware.1 -> Canal I2C nos Pinos 3 e 5 (I2C5_SDA e I2C5_SCL)
ls /sys/bus/pci/devices/*/i2c_designware.1/ | grep i2c

E para detectar periféricos conectados ao canal I2C 0 execute o seguinte comando:
sudo apt install i2c-tools
sudo i2cdetect -r -y 0

Nota: Para o canal I2C 1, altere o último argumento de 0 para 1.
SPI
Dispositivos SPI podem ser identificados executando o seguinte comando:
ls /sys/bus/pci/devices/0000\:00\:19.*/pxa2xx-spi.*/spi_master/ | grep spi

Habilitando SPI em espaço de usuário
Para habilitar o acesso a dispositivos SPI pelos usuários, siga as etapas abaixo:
-
Baixe o arquivo zip aqui e descompacte no seu disco local.
-
Entre no diretório onde você descompactou o arquivo:
chmod +x acpi-add acpi-upgrades install_hooks
sudo ./install_hooks && sudo acpi-add spidev*
- Reinicie seu ODYSSEY - X86J41x5.
Agora você poderá verificar os dispositivos SPI dentro de /dev
ls /dev/spi*

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