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. Ele utiliza um display HDMI de 7" conectado a uma Raspberry Pi, que atua como cliente de visualização, recebendo e renderizando os dados enviados via rede local pelo software SimHub.

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 e inicialização automática na tela de telemetria sem interação do usuário;
  • Baixa latência na comunicação via Ethernet, garantindo que os dados da simulação sejam refletidos na tela com mínima defasagem.

A comunicação é realizada via cabo Ethernet direto entre o PC e a Raspberry Pi, com endereçamento IP estático em ambas as interfaces. Essa configuração cria uma sub-rede ponto-a-ponto dedicada, dispensando roteadores ou DHCP, e assegurando que o sistema funcione de forma autônoma e confiável a cada inicialização.

Implementação das Telas no SimHub

A interface gráfica de telemetria foi totalmente implementada utilizando o Dash Studio, módulo de criação de dashboards visuais do SimHub. Esse ambiente permite montar telas interativas com dados em tempo real, utilizando uma abordagem de edição visual por drag-and-drop (arrastar e soltar), facilitando a criação e ajuste dos elementos gráficos sem necessidade de programação direta.

Etapas da Implementação

  1. Protótipos visuais foram desenvolvidos no Figma para validar a disposição e legibilidade dos elementos durante a simulação.

  2. Esses protótipos foram reproduzidos fielmente dentro do SimHub, respeitando resoluções, espaçamentos e agrupamentos definidos na etapa de design.

  3. O projeto de dashboard foi criado com resolução 800x480, compatível com o display HDMI de 7", e estruturado em três páginas distintas que o usuário pode alternar durante a simulação:

    • Tela 1: Foco em desgaste dos pneus e combustível.
    • Tela 2: Gap, estratégia e número da volta.
    • Tela 3: Mapa do circuito e classificação geral.
  4. Os dados de telemetria foram vinculados aos elementos gráficos utilizando o sistema de bindings do SimHub, baseado em expressões semelhantes a JavaScript, como:

    round([SpeedKmh], 0) + " km/h"
  5. Os componentes implementados incluem indicadores digitais (velocidade, marcha, delta), gráficos de RPM com cores dinâmicas, alertas visuais ativados por condições específicas (como combustível baixo), e mapas interativos do circuito carregados em SVG.

  6. Após a criação, o dashboard foi publicado no servidor web embutido do SimHub, sendo acessado pela Raspberry Pi via navegador Chromium, configurado para iniciar automaticamente em modo kiosk (tela cheia) e com cache desativado.

Benefícios do SimHub para o Projeto

A escolha do SimHub se deu por sua:

  • Alta compatibilidade com jogos como Assetto Corsa, F1 2020, iRacing, entre outros;
  • Interface amigável para criação de dashboards personalizados;
  • Desempenho otimizado para visualização em tempo real;
  • Integração nativa com Raspberry Pi via navegador e rede local;
  • Comunidade ativa, com recursos prontos e documentação disponível.

O resultado foi um sistema de telemetria modular, de fácil manutenção e altamente adaptável, validado com usuários reais em testes práticos durante simulações de corrida.

🧭 Leia a documentação completa com protótipos e detalhes da construção em Tela de Telemetria ↗

Se quiser, posso exportar isso para um arquivo .md ou .pdf. Deseja algum desses formatos?


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
18/07/2025Alexandre BeckAdição de explicações referentes a telemetria