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. 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
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 |