GPIO na Labrador: casos de uso, versões, problemas e soluções

Olá pessoal,

Criei este tópico com o objetivo de agregar relatos sobre o uso da GPIO na Labrador.

A ideia é que possamos ajudar quem está começando. Lembrando também que temos um conteúdo sobre GPIOs na wiki.

Para quem já usou a GPIO com sucesso, gostaria que respondesse esse tópico contendo o máximo de detalhes possível. Para facilitar, preparei o template abaixo:

- O que e quando foi feito: <em 1 ou 2 frases>
- Qual versão da Labrador: <quanto mais detalhes melhor, se possível detalhar Baseboard, Coreboard, Kernel e Distro>
- Que features utilizou: <read/write, pwm, se fez com polling ou event-based>
- Qual interface: <sysfs, chardev>
- Qual lib: <WiringPi, libgpiod, etc.>
- Código fonte, se disponível: <link para o repositório no github>
- Teve problemas ou limitações? Descreva: 
- Outros comentários:

Vou começar exemplificando e falando como eu usei:

  • O que e quando foi feito: Em Março de 2022 eu criei uma biblioteca simples em Python para abstrair o uso da sysfs.
  • Qual versão da Labrador: 64 bits, eu acho que era com Kernel 4.19 e certamente era Debian 10.
  • Que features utilizou: write; read com polling. (na prática usei mais o write).
  • Qual interface: sysfs
  • Qual lib: labrador-gpio (um wrapper para a interface sysfs)
  • Código fonte, se disponível: https://github.com/caninos-loucos/labrador-gpio-python
  • Teve problemas ou limitações? Descreva: Funcionou para o que eu queria. Foi meio chato ajustar as permissões para não precisar estar logado como super usuário (sudo su) mas deu certo. Nessa lib não há suporte para PWM. Além disso, em 08 de Julho de 2022 eu testei na Labrador 32 e por algum motivo não funcionou.
  • Outros comentários: N/A.

Olá pessoal, trabalhei brevemente com a labrador no início de 2020 então não lembro com clareza de algumas coisas. A seguir está meu relato de uso da GPIO da labrador.

  • O que e quando foi feito: Em 2020 foi montado um carrinho-tanque controlado pela Labrador, conectado ao celular usando um hotspot wifi criado também pela própria labrador.
  • Qual versão da Labrador: Labrador 32 bits
  • Que features utilizou: read/write, foi tentado usar pwm mas não funcionava direito (movimento do motor não era suave)
  • Qual interface: (não lembro)
  • Qual lib: WirkingK9 / WiringPi (WirkingK9 era uma lib provisória e agora está deprecated)
  • Código fonte, se disponível: https://github.com/caninos-loucos/labrador-examples
  • Teve problemas ou limitações? Descreva: não foi possível utilizar o pwm de forma adequada
  • Outros comentários: N/A
1 Curtida

Olá a todos! Estou mexendo atualmente com GPIO, e segue meu relato:

  • O que e quando foi feito: Em Julho de 2022 fiz meus primeiros teste com a GPIO, inicialmente testando leds e depois servomotores (SG90).
  • Qual versão da Labrador: 32 bits, Kernel 4.19.98 e Debian 10.
  • Que features utilizou: write; read e pwm**.
  • Qual interface: chardev
  • Qual lib: libgpiod
  • Código fonte, se disponível: libgpiod-example/libgpiod-led at master · starnight/libgpiod-example · GitHub
  • Teve problemas ou limitações? Descreva: Incialmente tentei usar a WiringPi/WiringK9, porém elas estão deprecated para as versões do kernel mais novas, portanto nem mesmo o gpio readall funcionava. Utilizei então o chardev, com a api em c libgipod, porém a interface /dev/gpiochip não tem suport built-in para PWM. A minha solução foi realiza-lo via software, o que vem atentendo as minhas necessidades (assim que terminar os testes, disponibilizo o código fonte, mas estou baseado neste: https://github.com/jeroen1602/rt-pwm-test/blob/master/pwm.cpp).
  • Outros comentários: N/A.