Pular para o conteúdo principal

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

Linux GPIOFunçãoRPi GPIONº do pinoNº do pinoRPi GPIOFunçãoLinux GPIO
3.3V125V
386I2C5_SDABCM2_SDA345V
387I2C5_SCLBCM3_SCL56TERRA (GROUND)
337BCM478BCM14_TXD493UART0_TXD
TERRA (GROUND)910BCM15_RXD492UART0_RXD
364BCM171112BCM18338
412BCM271314TERRA (GROUND)
413BCM221516BCM23421
3.3V1718BCM24422
359SPI0_MOSIBCM10_MOSI1920TERRA (GROUND)
358SPI0_MISOBCM9_MISO2122BCM25390
355SPI0_CLKBCM11_SCLK2324BCM8_CE0356SPI0_FSO
TERRA (GROUND)2526BCM7_CE1357SPI0_FS1
388I2C6_SDABCM0_ID_SD2728BCM1_ID_SCL389I2C6_SCL
415BCM52930TERRA (GROUND)
416BCM63132BCM12391
417BCM133334TERRA (GROUND)
339BCM193536BCM16410
419BCM263738BCM20340
TERRA (GROUND)3940BCM21341

Legenda dos Pinos
GPIO
UART
I2C
SPI

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.

nota

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
sudo pip3 install python-periphery
  1. Baixe o script de teste IRQtest para o seu disco local.

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

  1. Reinicie seu ODYSSEY - X86J41x5 e continue pressionando a tecla DEL durante a inicialização para entrar no menu da BIOS.

  2. Navegue até Advanced -> HAT Configuration.

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

nota

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:

  1. Baixe o arquivo zip aqui e descompacte no seu disco local.

  2. Entre no diretório onde você descompactou o arquivo:

chmod +x acpi-add acpi-upgrades install_hooks
sudo ./install_hooks && sudo acpi-add spidev*
  1. 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.

Loading Comments...