ED BMSdiag – Kit de Diagnóstico Arduino CAN‑BUS & OBD‑II
Componentes e Materiais
| Componente | Quantidade | Observações |
|---|---|---|
| Arduino UNO | 1 | |
| Shield CAN-BUS SparkFun | 1 | |
| Header Macho 36 Posições 1 Linha (0.1") | 1 | Para shield CAN-Bus SparkFun |
| Cabo OBD-II para DSUB-9 (SparkFun) | 1 | Padrão internacional para "makers" |
| Cabo OBD-II para DSUB-9 | 1 | Padrão alemão/europeu para "makers" |
| Shield CANdiy v2 CAN-Bus | 1 | Tensão de I/O selecionável entre 3.3V e 5V |
| Caixa para Arduino | 1 | Fora de estoque na loja oficial, mas disponível em distribuidores |
Aplicativos e Serviços Online
- Arduino IDE
Sobre o Projeto
Intenção
Dirijo um carro elétrico – um smart for two electric drive. A saúde da bateria de tração é essencial e gerenciada por um sistema de gerenciamento de bateria (BMS). Ele monitora todas as 93 células durante carga/descarga e garante equilíbrio de tensão. Normalmente, apenas ferramentas de serviço acessam informações desta ECU.
O carro possui modem GSM para dados de status como estado de carga (SOC), autonomia, etc. Por um tempo, o modem operou em modo estendido coletando dados de diagnóstico. Curioso, tentei interceptar o barramento CAN para saber o que era transmitido.
Inspirado por projetos similares para outros elétricos (como Nissan Leaf), gravei todo tráfego CAN durante condução e carga. Os primeiros dados incluíam informações de diagnóstico – mas como decodificá-los?
Detalhes sobre sniffing e engenharia reversa do barramento CAN estão em artigo separado.
O que é Necessário
Obtenha o hardware necessário. Em carros modernos, a camada física usa barramento CAN. Pelo menos dois shields CAN estão disponíveis – veja lista de componentes. Você deve conectar à porta de diagnóstico do carro – conector OBD, então compre um cabo ou faça o seu. NOTA: existem dois padrões para cabos OBD para DSUB-9 – escolha o correto! Veja imagens abaixo:




Se fizer seu próprio cabo, use cabo de rede twisted pair antigo. Use um dos pares para CAN-H e CAN-L – melhora integridade do sinal. NÃO exceda 1 metro de comprimento para minimizar reflexões de sinal.
Primeiros Passos
Passo 1: Prepare o Hardware
Monte as placas em uma caixa adequada.
Passo 2: Software
Baixe o projeto do repositório GitHub. Veja detalhes de instalação lá. Compile e carregue no Arduino.
Passo 3: Conexão com o Carro
Conecte ao carro e alimente. Inicie sessão de diagnóstico e obtenha informações úteis sobre seu pacote de baterias...


Passo 4: Análise de Dados
Use planilha para encontrar correlações. Exemplo: compare SOC do painel com SOC real do BMS. Ou plote tensões das células e veja quais limitam o pacote na carga, atingindo limite de corte primeiro...


Passo 5: Expansões
Melhore o código – faça seu próprio hack. O shield SparkFun tem leitor de cartão SD, permitindo construir seu próprio logger de barramento CAN. Ou crie um frontend/app para exibir os dados.
Espero que esta ferramenta seja útil – Divirta-se!
Código
Software ED_BMSdiag para Arduino
https://github.com/MyLab-odyssey/ED_BMSdiag.git
Esquemáticos
Para shield CAN-Bus SparkFun:
Para shield CANdiy:
Processo de manufatura
- Guia Profissional de Animação de Bitmap no Shield TFT Touchscreen ILI9341 2,4″ com Arduino
- Sistema de Iluminação DMX Controlado via Web – Controlador Mestre Arduino
- Construa um Spybot Controlado por Bluetooth com Arduino
- FlickMote: Controle Remoto IR por Gestos para Casa Inteligente
- DIY Arduino TV B-Gone: Controle Remoto Universal para Todas as TVs
- Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
- Relógio HSV: Relógio Vibrante e Personalizável para Entusiastas de Arduino
- Veículo Remoto Controlado por Android com Raspberry Pi e Motor Shield
- Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
- Soluções de Energia Otimizadas para Projetos Arduino