Aula — 29 de Outubro(Quarta feira) - theedwilk/JoystickRaspberry-HandsOn-DevTitans GitHub Wiki

Atualização do firmware — Hardware/ControlJoystick02

Resumo: houve uma mudança no mapeamento de pinos e no formato de saída Serial para os sketches ControlJoystick02.ino e ControlJoystick02v2.ino.
Também existe uma questão de compatibilidade do kernel com o AOSP (Android Open Source Project) que afeta testes e integração do driver.


Arquivos atualizados

  • Hardware/ControlJoystick02/ControlJoystick02.ino — versão que usa impressão CSV (texto) no Serial (baud 9600).
  • Hardware/ControlJoystick02/ControlJoystick02v2.ino — evolução que envia 1 byte de status (binário) + \n (baud 115200).

Mapeamento de pinos (novo)

Função Pino
UP 36
RIGHT 39
DOWN 34
LEFT 35
START 32
SELECT 33
ANALOGB 25 (apenas em ControlJoystick02.ino)
X Axis 26
Y Axis 27

Observação: ControlJoystick02v2.ino removeu o botão ANALOG (PIN_ANALOGB). Os eixos passaram a ser representados por bits no byte de status.


Diferenças principais entre as versões

ControlJoystick02.ino (texto / CSV)

  • Serial.begin(9600).
  • 7 botões + eixos X e Y.
  • Saída Serial em texto CSV (uma linha por leitura), formato:

UP,RIGHT,DOWN,LEFT,START,SELECT,ANALOG,X-AXIS,Y-AXIS

Exemplo de linha: 1,0,0,1,0,1,0,1,0

  • Debounce por software (DEBOUNCE_MS = 25 ms).
  • Eixos X/Y enviados como 0/1 (movimento detectado com AXIS_EPS).

ControlJoystick02v2.ino (binário compacto)

  • Serial.begin(115200).
  • 6 botões (UP, RIGHT, DOWN, LEFT, START, SELECT) + eixos X, Y.
  • Compacta o estado em 1 byte (status) com mapeamento:
  • bit7 = UP
  • bit6 = RIGHT
  • bit5 = DOWN
  • bit4 = LEFT
  • bit3 = START
  • bit2 = SELECT
  • bit1 = X-AXIS (1 = movimento)
  • bit0 = Y-AXIS (1 = movimento)
  • Envia:
  • Serial.write(status);
  • Serial.write('\n'); // 0x0A como sincronizador

Problema: compatibilidade do kernel com o AOSP

  • Situação: ao integrar o driver no AOSP (Raspberry)
  • símbolos não encontrados ao carregar módulo,
  • insmod/modprobe falhando,
  • políticas SELinux bloqueando.

Histórico de versões

Data Alteração
29/09 Criação da versão base (simulação / userspace: joy_driver.c).
15/10 Migração para módulo de kernel (joy_driver_module.c) — integração com subsistema input.
29/10 Atualização do firmware: mudança no mapeamento de pinos e alteração do formato Serial (ControlJoystick02v2.ino envia 1 byte binário + \n).

Também foi finalizado a instalação do AOSP com DRIVE no Raspberry Pi - Tutorial de Compilação do AOSP e Inclusão de Driver na Raspberry Pi