Pular para o conteúdo principal

Software

Documentação da Equipe de Software do Simulador Automotivo

O intuito deste documento é apresentar de forma consolidada tudo que foi desenvolvido pela equipe de software no projeto do simulador automotivo. Nele estão reunidos o diagrama de componentes do sistema, o fluxo de início da simulação, o diagrama de sequência das interações entre os módulos e os requisitos funcionais e não funcionais definidos para o software. Trata-se de uma documentação completa que organiza e descreve as principais decisões técnicas, integrações realizadas e funcionalidades implementadas ao longo do desenvolvimento.


Visão Geral do Sistema

O simulador automotivo combina hardware (volante, pedais, Raspberry Pi, etc.) com software (jogo de corrida, SimHub) para criar uma experiência de direção imersiva. O PC executa o simulador, processa entradas e envia feedback físico para atuadores, enquanto um display HDMI de 7 " apresenta telemetria em tempo real.

📊 Explore a topologia completa no Diagrama de Componentes UML ↗.

Componentes Principais e Funções

BlocoResponsabilidades-Chave
PC + JogoRenderiza a pista, recebe comandos do volante/pedais, gera pacotes de force feedback (FFB) e telemetria.
SimHubMiddleware que interpreta a telemetria do jogo, envia-a ao display e distribui comandos a atuadores externos.
ArduinoLê sensores (pedais, botões) e controla motores de vibração via PWM.
OdescControladora de motor brushless: aplica torque no volante e lê posição via encoder.
Raspberry PiRecebe telemetria do SimHub por Ethernet e exibe dashboards no display de 7 ".
Volante & PedaisDispositivos de entrada física; recebem FFB/vibração para reforçar realismo.
Motor Drive + AtuadoresExecutam vibrações táteis conforme comandos do Arduino.

Caminhos de comunicação: USB para entradas/FFB, Ethernet para telemetria, HDMI para vídeo, PWM para vibração, sinais de torque entre Odesc ↔ Motor.


Fluxo do Usuário – Início de Simulação

  1. Tela Inicial – O usuário abre o software e vê a interface principal.

  2. Iniciar Simulação – Clica no botão correspondente.

  3. Verificação de Veículo – Se não houver veículo selecionado:

    • Exibe alerta: “Selecione um veículo antes de simular.”
    • Fluxo retorna ao passo 1.
  4. Escolha do Cenário – Com veículo definido, usuário seleciona pista, clima e horário.

  5. Carregamento – O sistema carrega cenário e parâmetros.

  6. Simulação em Execução – Inicia-se a corrida com controles ativos, FFB habilitado e telemetria transmitida.

🔗 Fluxograma detalhado disponível em Fluxo da Jornada do Usuário ↗.


Interação entre Componentes (Sequência)

Resumo dos 10 passos (ver diagrama para linha do tempo completa):

  1. Jogador → Arduino: Movimenta volante/pedais/botões.
  2. Arduino → PC (USB HID): Envia valores analógicos/digitais.
  3. PC/Jogo → Odesc: Transmite comandos FFB.
  4. Odesc → Motor: Aplica torque proporcional; lê encoder.
  5. Motor → Odesc: Devolve posição/rotação para controle em malha fechada.
  6. PC → SimHub (Ethernet): Repassa telemetria.
  7. SimHub → Raspberry Pi: Envia dados processados.
  8. Raspberry Pi → Display 7 " (HDMI): Renderiza dashboard (RPM, marcha, velocidade…).
  9. Arduino → Motor Drive → Atuadores: Gera vibrações nos pedais/volante.
  10. Feedback Físico → Jogador: FFB e vibração completam o ciclo de imersão.

📈 Diagrama de Sequência completo ↗: Diagrama de Sequência**


Requisitos Funcionais

Em alto nível, o simulador precisa:

  • Integrar‑se aos softwares de simulação (SimHub, FFBeast, XInput) e aos jogos de corrida suportados.
  • Capturar entradas precisas do volante e pedais, oferecendo calibração e ajustes de sensibilidade.
  • Exibir telemetria em tempo real numa tela externa de 7" conectada à Raspberry Pi.
  • Gerar feedback físico responsivo (force feedback e vibrações) com latência imperceptível.

➡️ Veja a lista completa de RFs na Tabela Completa de Requisitos Funcionais.

Requisitos Não Funcionais

Em linhas gerais, espera‑se que o simulador:

  • Responda em até 50 ms entre ação do usuário e retorno na simulação.
  • Seja ergonômico e robusto, operando de forma silenciosa e segura mesmo em longas sessões.
  • Permita upgrades modulares de hardware e software, mantendo comunicação estável entre componentes.

➡️ Veja todos os RNF detalhados na Tabela Completa de Requisitos Não Funcionais.


Subsistema da Tela de Telemetria

É o subsistema dedicado à exibição de telemetria em tempo real, projetado para fornecer feedback visual instantâneo ao jogador durante a simulação. Essa funcionalidade é implementada por meio de um display HDMI de 7" conectado a uma Raspberry Pi, que recebe os dados do SimHub via rede Ethernet.

A Raspberry Pi foi escolhida por três motivos principais:

  • Baixo custo, sendo subsidiada pelo professor da disciplina;
  • Capacidade de configuração plug and play com IP fixo, permitindo que ela seja ligada já pronta para exibir a telemetria, sem interação manual;
  • Baixa latência, garantindo que os dados recebidos da simulação sejam exibidos de forma praticamente instantânea.

A comunicação entre o PC e a **Raspberry Pi é realizada por cabo Ethernet direto, com endereçamento IP fixo configurado em ambas as interfaces. Essa abordagem elimina a necessidade de roteadores ou servidores DHCP, formando uma sub-rede ponto-a-ponto dedicada exclusivamente à transmissão da telemetria. Com isso, o sistema opera de forma autônoma e plug and play.

As telas são compostas por componentes obrigatórios (como velocidade, RPM e marcha) e componentes auxiliares (como temperatura dos pneus, mapa da pista e ranking). Os dados são organizados em diferentes telas que o usuário pode alternar conforme a necessidade.

A implementação das interfaces será feita com o SimHub, ferramenta amplamente reconhecida por sua compatibilidade com simuladores, editor visual intuitivo, suporte à Raspberry Pi e excelente desempenho em tempo real. Essa escolha permite transformar os protótipos desenhados em Figma em dashboards funcionais de forma eficiente e confiável.

🧭 Leia a documentação completa com protótipos e referências em Tela de Telemetria ↗


Glossário

TermoDefinição Simples
ArduinoMicrocontrolador que faz a ponte entre sensores/atuadores e o PC.
Display 7 "Pequena tela HDMI montada no painel do simulador.
EncoderSensor que mede rotação do volante com alta precisão.
FFB (Force Feedback)Retorno de força aplicado ao volante para simular peso, colisões, etc.
HIDHuman Interface Device, protocolo USB para dispositivos de entrada.
OdescPlaca controladora de motor brushless usada em volantes DIY.
PWMModulação por largura de pulso; controla energia enviada a motores.
SimHubSoftware que converte telemetria do jogo em sinais para displays e atuadores.
TelemetriaDados em tempo real (RPM, velocidade, marcha…) emitidos pelo jogo.

Histórico de Versões

DataEditor(es)Descrição
27/05/2025Alexandre BeckCriação desta versão unificada
30/05/2025Alexandre BeckAdição de subsistema de telemetria