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
| Bloco | Responsabilidades-Chave |
|---|---|
| PC + Jogo | Renderiza a pista, recebe comandos do volante/pedais, gera pacotes de force feedback (FFB) e telemetria. |
| SimHub | Middleware que interpreta a telemetria do jogo, envia-a ao display e distribui comandos a atuadores externos. |
| Arduino | Lê sensores (pedais, botões) e controla motores de vibração via PWM. |
| Odesc | Controladora de motor brushless: aplica torque no volante e lê posição via encoder. |
| Raspberry Pi | Recebe telemetria do SimHub por Ethernet e exibe dashboards no display de 7 ". |
| Volante & Pedais | Dispositivos de entrada física; recebem FFB/vibração para reforçar realismo. |
| Motor Drive + Atuadores | Executam 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
-
Tela Inicial – O usuário abre o software e vê a interface principal.
-
Iniciar Simulação – Clica no botão correspondente.
-
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.
-
Escolha do Cenário – Com veículo definido, usuário seleciona pista, clima e horário.
-
Carregamento – O sistema carrega cenário e parâmetros.
-
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):
- Jogador → Arduino: Movimenta volante/pedais/botões.
- Arduino → PC (USB HID): Envia valores analógicos/digitais.
- PC/Jogo → Odesc: Transmite comandos FFB.
- Odesc → Motor: Aplica torque proporcional; lê encoder.
- Motor → Odesc: Devolve posição/rotação para controle em malha fechada.
- PC → SimHub (Ethernet): Repassa telemetria.
- SimHub → Raspberry Pi: Envia dados processados.
- Raspberry Pi → Display 7 " (HDMI): Renderiza dashboard (RPM, marcha, velocidade…).
- Arduino → Motor Drive → Atuadores: Gera vibrações nos pedais/volante.
- 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
-
Protótipos visuais foram desenvolvidos no Figma para validar a disposição e legibilidade dos elementos durante a simulação.
-
Esses protótipos foram reproduzidos fielmente dentro do SimHub, respeitando resoluções, espaçamentos e agrupamentos definidos na etapa de design.
-
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.
-
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" -
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.
-
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
| Termo | Definição Simples |
|---|---|
| Arduino | Microcontrolador que faz a ponte entre sensores/atuadores e o PC. |
| Display 7 " | Pequena tela HDMI montada no painel do simulador. |
| Encoder | Sensor 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. |
| HID | Human Interface Device, protocolo USB para dispositivos de entrada. |
| Odesc | Placa controladora de motor brushless usada em volantes DIY. |
| PWM | Modulação por largura de pulso; controla energia enviada a motores. |
| SimHub | Software que converte telemetria do jogo em sinais para displays e atuadores. |
| Telemetria | Dados em tempo real (RPM, velocidade, marcha…) emitidos pelo jogo. |
Histórico de Versões
| Data | Editor(es) | Descrição |
|---|---|---|
| 27/05/2025 | Alexandre Beck | Criação desta versão unificada |
| 30/05/2025 | Alexandre Beck | Adição de subsistema de telemetria |
| 18/07/2025 | Alexandre Beck | Adição de explicações referentes a telemetria |