🔗 Integração VL08 + Simulador J1939

Guia passo-a-passo para conectar, configurar e validar a comunicação CAN entre o rastreador VIRLOC VL08 e o J1939_OBD Simulator V4.3 (KingWell)

SAE J1939 CAN 250K 29-bit DTCs SPN/FMI Filtros PGN
⚠️
Este simulador é J1939-only (SAE J1939-4EXT-250K). Configure o VL08 para J1939 a 250 Kbps e use filtros PGN. O caminho OBD-II (ISO 15765, CAN 500K) descrito mais abaixo serve para veículos leves reais — o simulador KingWell não responde a requisições OBD-II.

📋 Pré-requisitos

🔧 Hardware Necessário
ItemDetalhes
VIRLOC VL08Com firmware _CAN (ex: V1.2_CAN). J1939 básico ≥ 153B06; DTCs J1939 ≥ 158B01
J1939_OBD Simulator V4.3KingWell — J1939 250K. Com fonte 12V DC conectada
Cabo OBD-II machoConectar o VL08 ao conector fêmea do simulador
Cabo MA-USBPara configuração serial do VL08 (opcional se usar BLE)
MultímetroPara verificar tensões antes de conectar
Fonte 12V DCPara alimentar o simulador
💻 Software Necessário
SoftwarePropósito
Terminal XVMEnviar comandos de configuração ao VL08
App VL08 Tester (BLE)Alternativa sem fio para configuração
Config OBD2 VIRLOC 1.4Ferramenta oficial para OBD2 (opcional)

🔄 Fluxo de Integração

1. Verificar
Firmware
2. Conectar
Hardware
3. Habilitar
CAN 250K
4. Filtros
PGN J1939
5. Ler Dados
(QCT)
6. DTCs
J1939

🔌 Diagrama de Fiação

O VL08 conecta-se ao simulador OBD-II via conector J1962 (16 pinos). As conexões essenciais são CAN-H (pino 6), CAN-L (pino 14) e GND (pino 4/5).

┌──────────────────────┐ │ SIMULADOR OBD-II │ │ V4.3 │ │ │ │ Conector J1962 (F) │ │ ┌──────────────┐ │ │ │ 1 2 3 4 5│ │ │ │ 6 7 8 ...│ │ │ │14 15 16 │ │ │ └──────┬───────┘ │ └─────────┼────────────┘ │ ┌────────────────┼────────────────┐ │ │ │ Pino 16 Pino 6 Pino 14 Pino 4/5 +12V BAT CAN-H CAN-L GND │ │ │ │ │ │ │ │ ┌────────────────┼────────────────┼────────────────┐ │ VIRLOC VL08 │ │ │ VCC (Red) CAN H CAN L GND (Black) │ │ └──────────────────────────────────────────────────┘
⚠️
CAN-H e CAN-L invertidos = silêncio total. Se o VL08 não receber dados CAN, inverta os fios dos pinos 6 e 14. Não há risco de dano ao inverter.
💡
Alimentação opcional via pino 16: O pino 16 do OBD fornece +12V da bateria. Pode alimentar o VL08, mas recomendamos fonte dedicada para testes prolongados.

Tabela de Conexão

Fio VL08Pino OBD-IIFunçãoCor Sugerida
CAN H6CAN High (barramento)Verde
CAN L14CAN Low (barramento)Azul
GND (preto)4 ou 5Referência de terraPreto
VCC (vermelho)16 (opcional)+12V bateriaVermelho

🎛️ DIP Switch do Simulador — não utilizado

⚠️
O DIP switch de 4 bits do simulador não tem função. O manual oficial afirma explicitamente: "the J1939_OBD Simulator only can support SAEJ1939-4EXT-250K, so the 4 bits switch is not used". Como só existe um protocolo (J1939 250K), não há nada a configurar no DIP — deixe em qualquer posição.

A escolha de protocolo/baudrate é feita no VL08 (comandos VS19_ENA abaixo), não no simulador. Para este simulador, o VL08 deve ficar em J1939 250 Kbps, 29-bit.

⚡ Alimentação

J1939_OBD Simulator V4.3

Fonte DC 12V — conectar pelo jack de alimentação na placa. LED POWER verde acende ao ligar.

Verificar no multímetro: pino 16 deve mostrar ~12V em relação ao pino 4/5 (GND).

VIRLOC VL08

Alimentar por fonte 12/24V dedicada nos fios VCC (vermelho) e GND (preto). Pode usar pino 16 do OBD como alternativa.

Aguardar boot completo (~15 segundos) antes de enviar comandos.

🔍 Passo 1 — Verificar Firmware CAN

O firmware do VL08 deve ter o sufixo _CAN para suportar telemetria CAN. Verifique com:

>QVR<

# Resposta esperada (exemplo):
>RVR_VL6_FIRM6.12_IAP6_BR58_MDM:2G_FULLCAN_F91_SEC:0000;ID=5589;#8004;*6C<
#                                   ^^^^^^^^ ← CAN habilitado!

# Se NÃO tiver _CAN ou FULLCAN:
>RVR_VL6_FIRM6.12_IAP6_BR58_MDM:2G_F91_SEC:0000;ID=5589;#8004;*XX<
# ❌ Firmware sem suporte CAN — necessita atualização
🚫
Sem _CAN no firmware = sem dados CAN. Atualize o firmware antes de prosseguir. Para este simulador (J1939): ≥ 153B06 para telemetria J1939 e ≥ 158B01 para leitura de DTCs J1939.

Versões de Firmware Relevantes

VersãoFuncionalidade
153B06Primeiro suporte OBD2 (veículos leves)
158B01Leitura de DTCs via J1939 (veículos pesados)
158B25OBD2 no CAN2 (porta secundária)
159B04Leitura de DTCs via OBD2 (veículos leves)

🔧 Passo 2 — Habilitar CAN Bus (J1939 250K)

CAN1 (Porta Primária)

# Habilitar CAN1 a 250kbps em modo normal (J1939 — leitura + escrita/ACK):
>VS19_ENA0250,1<

# Modo escuta/listen (só leitura, sem ACK — ideal para 1º diagnóstico):
>VS19_ENA0250,0<

# Desabilitar a leitura CAN:
>VS19_ENA0<
🕵️
Descobrir as PGNs do simulador (modo sniffer): habilite a CAN em modo de listagem de PGNs, zere a lista e consulte após alguns minutos:
>VS19_ENA0250,5<   # 5 = listagem PGNs (29-bit, com ACK)
>CPG<              # zera a lista
# aguarde alguns minutos com o simulador ligado
>GPG0,99<         # retorna as PGNs vistas no barramento

CAN2 (Porta Secundária — apenas VL08)

# Habilitar CAN2 a 250kbps (alternativa pela 2ª porta):
>VS29_ENA0250,1<

📡 Baudrate e Modo

BaudrateComandoUso Típico
50 kbps>VS19_ENA0050,1<Equipamentos legados
125 kbps>VS19_ENA0125,1<Alguns veículos europeus
250 kbps>VS19_ENA0250,1<J1939 — este simulador ✅
500 kbps>VS19_ENA0500,1<OBD-II ISO 15765 (veículos leves reais)
1000 kbps>VS19_ENA1000,1<Redes high-speed
💡
Baudrate errado = silêncio. Para o simulador KingWell use 250K. Se estiver diagnosticando uma rede desconhecida, use o modo listen (,0) e o modo sniffer de PGNs para descobrir o baudrate/PGNs corretos.

Modo de Operação (2º parâmetro de VS19_ENA)

ValorModoDescrição
,0Escuta (Silent)Só leitura, sem ACK — monitoramento passivo
,1NormalLê e escreve/ACK no barramento (recomendado com o simulador)
,5Listagem de PGNsSniffer (29-bit com ACK). Também 6=29-bit sem ACK, 7=11-bit com ACK, 8=11-bit sem ACK

🔰 Filtros CAN (VS19 / VS29)

O VL08 suporta 25 filtros CAN1 (VS1900–VS1924) e 13 filtros CAN2 (VS2900–VS2912). Cada filtro captura até 4 parâmetros do mesmo PGN.

Estrutura do Filtro

>VS19xx,PPPPP,mmm,dd,rrr,ss,ll,MMMMMMMM,mm,mm,tttt<

Onde:
  19xx    = Número do filtro (1900–1924 para CAN1)
  PPPPP   = PGN (Parameter Group Number) [0–65535]
  mmm     = Source Address (000 = desativa filtro de SA)
  dd      = Tipo CAN ID (11 = standard, 29 = extendido J1939)
  rrr     = Registrador CT (ou flag 200–231) para armazenar valor
  ss      = Byte inicial na mensagem [1–8]
  ll      = Comprimento em bytes [1–4]
  MMMMMMMM = Máscara de bytes (filtragem de bits)
  mm      = Modo (0=copia valor no CT, 1=acumula no CT)
  mm      = Ordem de bytes (0=inverter ordem, 1=não inverter)
  tttt    = Multiplicador/Divisor
ℹ️
Cada filtro VS19xx captura até 4 parâmetros do mesmo PGN (blocos separados por vírgula). Para mais de 4, use o filtro seguinte com o mesmo PGN. Os campos 2=OBD-II / 3=OBD-II invertido da ordem de bytes existem apenas em outros equipamentos (VL10/VL11); no VL08 a ordem é 0/1.

Exemplo (este simulador): Capturar RPM do motor — PGN 61444 (J1939 EEC1)

>VS1901,61444,000,29,01,1,1,000000FF,0,0,1000<

# Decompondo:
  61444   = PGN J1939 EEC1 (Engine — contém rotação do motor)
  000     = Source Address desativado (aceita qualquer origem)
  29      = CAN ID 29-bit (J1939)
  01      = Armazenar em CT01
  1       = Byte 1
  1       = 1 byte
  000000FF = Máscara
  0       = Modo copiar
  0       = Inverter ordem dos bytes
  1000    = Multiplicador/divisor
💡
Use o modo sniffer (>VS19_ENA0250,5< → >CPG< → >GPG0,99<) para listar as PGNs que o simulador realmente emite e então montar um filtro por parâmetro. PGNs J1939 FMS comuns: 61444 (rotação), 65265 (velocidade), 65262 (temp. líq. arref.), 65276 (nível combustível), 61443 (acelerador/carga).

Referência: captura via OBD-II (PGN 2024) — somente veículos leves reais

>VS1901,02024,012,11,01,4,2,0000FFFF,0,2,4000<

# Decompondo (NÃO se aplica ao simulador KingWell — só a veículos OBD-II reais):
  02024   = PGN de resposta padrão OBD-II
  012     = PID 12 (0x0C = RPM)
  11      = CAN ID 11-bit (OBD-II)
  01      = Armazenar em CT01
  4       = Iniciar no byte 4
  2       = 2 bytes
  0000FFFF = Máscara
  0       = Modo copiar
  2       = Ordem de bytes modo OBD-II (VL10/VL11)
  4000    = Divisor (fórmula RPM OBD-II)

📊 Protocolo OBD-II — referência para veículos leves reais

⚠️
Esta seção NÃO se aplica ao simulador KingWell (que é J1939-only). O modo OBD-II do VL08 requisita PIDs de uma ECU OBD-II real (ISO 15765) e é útil apenas com veículos leves de verdade. Para o simulador, use os filtros PGN J1939 acima. O conteúdo abaixo fica como referência do recurso OBD-II do VL08.
# Habilitar OBD-II com suporte até PID 166 (0xA6):
>VOBD_ENA1,166<

# Com suporte a DTCs:
>VOBD_ENA1,166,600,2015,2015,2016<

Parâmetros:
  1    = Habilitar (0 = desabilitar)
  166  = PID máximo suportado
  600  = Timeout DTC (seg) — remover DTC da lista após
  2015 = PGN para requisitar DTCs
  2015 = PGN para limpar DTCs
  2016 = PGN para flow control (multiframe)

# Habilitar transmissão OBD-II:
>VOBD_REQ1<
Sequência mínima para OBD-II (veículo leve real):
>VS19_ENA0500,1<>VOBD_ENA1,166<>VOBD_REQ1<

📋 PIDs OBD-II Comuns (veículos leves reais)

PIDs OBD-II não se aplicam ao simulador KingWell (J1939). Tabela mantida como referência do modo OBD-II do VL08.

PIDHexParâmetroUnidadeFaixa
40x04Carga Calculada%0–100
50x05Temperatura do Líquido de Arref.°C-40 a 85
100x0APressão de CombustívelkPa0–765
110x0BPressão do Coletor de AdmissãokPa0–255
120x0CRPM do Motorrpm0–16.383
130x0DVelocidadekm/h0–255
140x0EAvanço de Ignição° BTDC-64 a 63
150x0FTemperatura do Ar de Admissão°C-40 a 215
160x10Taxa de Fluxo de Ar (MAF)g/s0–655.35
170x11Posição da Borboleta%0–100
510x33Pressão BarométricakPa0–255
1020x66Odômetrokm0–4.294.967.295

⚙️ Configurar PIDs Individuais (veículos leves reais)

# Formato: >VOBDpp,f< onde pp=PID(dec) e f=frequência

# Habilitar RPM (PID 12) com leitura a cada 100ms:
>VOBD12,1<

# Habilitar Velocidade (PID 13) com leitura a cada 1s:
>VOBD13,2<

# Habilitar Temperatura (PID 5) com leitura a cada 10s:
>VOBD05,3<

# Desabilitar um PID:
>VOBD12,0<

Frequências:
  0 = Desabilitado
  1 = A cada 100ms (rápido)
  2 = A cada 1 segundo
  3 = A cada 10 segundos

Consultar PIDs Suportados

# Solicitar ao veículo/simulador lista de PIDs suportados:
>VOBD_ASK_PID<

# Consultar mapa de PIDs habilitados:
>VOBD_PID000<
>VOBD_PID_HEX<

📡 Passo 4 — Consultar Dados (QCT)

Os dados capturados pelos filtros CAN e pelo protocolo OBD-II são armazenados em registradores CT. Use os comandos QCT para consultá-los:

# Consultar CT individual:
>QCT01<
>RCT01 2500;ID=0081;#826E;*4F<    # RPM = 2500

# Consultar em hexadecimal:
>QCT01HEX<

# Consultar faixa de CTs (CT 01 a CT 10):
>QCT001010<

# Consultar faixa em hexadecimal:
>QCT001010HEX<

# Consultar status global (GPS, entradas, bateria):
>QTT<

Índices CT Comuns

CTParâmetroUnidadeComando
01RPMrpm>QCT01<
101Horímetrohoras>QCT101<
102Odômetrokm>QCT102<
103RPM (alternativo)rpm>QCT103<
109Velocidadekm/h>QCT109<
15Consumo de Combustívellitros>QCT15<
⚠️
Dados vazios? Se QCT01 retorna RCT01 0, verifique: (1) VL08 está em J1939 250K (>VS19_ENA0250,1<), (2) o filtro VS19xx aponta para a PGN certa, (3) simulador ligado e potenciômetro fora do mínimo, (4) use o modo sniffer para confirmar as PGNs no barramento.

🔴 Leitura de DTCs J1939 (SPN/FMI)

O simulador KingWell gera falhas no formato J1939 (SPN/FMI). A leitura de DTCs J1939 no VL08 requer firmware ≥ 158B01.

# Habilitar a CAN em modo normal já com leitura de DTCs J1939:
>VS19_ENA0250,1,TP1024,20,DTC060,59904,65226,65227,SA128<

# Campos específicos de DTC:
  TP1024 = Buffer (bytes) p/ recebimento J1939-21 (multiframe)
  20     = Timeout do pacote multiframe
  DTC060 = Timeout de cada DTC [1–255 s] — remove da lista se não recebido
  59904  = PGN de requerimento
  65226  = PGN de recepção DM1
  65227  = PGN de recepção DM2
  SA128  = Source Address solicitado ao conectar
# Consultar DTC lido no índice 0 (até 32: GTC00…GTC31):
>GTC00<
>GTC00,1,030724111340.009,1,000,1,0,0,0,3,3,3,3,000110,00,001,001<

# Decompondo a resposta:
  00     = Índice na tabela GTC (0–31)
  1      = Status (0=vazio, 1=dado válido)
  030724111340.009 = Data/hora (ddmmaaaahhmmss.sss)
  1      = DM1 ou DM2
  000    = Source Address da mensagem
  1,0,0,0,3,3,3,3 = Estado das lâmpadas (MIL, etc.)
  000110 = SPN (Suspect Parameter Number)
  00     = FMI (Failure Mode Identifier)
  001    = Occurrence Count (nº de ocorrências)
  001    = Tempo (s) desde a recepção

Estrutura de um DTC J1939

CampoBitsDescrição
SPN19Suspect Parameter Number — componente/subsistema com falha
FMI5Failure Mode Identifier — natureza da falha
OCOccurrence Count — quantas vezes ocorreu
🔔
Disparadores: TC00++TC31++ disparam enquanto o índice GTCxx correspondente contém um DTC; TC32++ ao acrescentar um novo DTC; TC33++ ao remover por timeout.

🧹 Limpeza / Referência OBD-II

No J1939 os DTCs saem da lista GTC automaticamente por timeout (parâmetro DTCxxx) quando o simulador para de enviá-los (desligue a falha pelo Fault SW). Não há um "limpar" ativo como no OBD-II.

📘
Referência — DTCs OBD-II (veículos leves reais): em ECUs OBD-II o VL08 usa >VOBD_ASK_DTC3</DTC7, consulta >VOBD_DTC00< (código P/C/B/U de 2 bytes) e limpa com >VOBD_CLR_DTC<. Isso não se aplica ao simulador KingWell (J1939).

💥 Simular Falhas no Simulador

O simulador possui o botão Fault SW, que injeta um código de falha J1939 (SPN/FMI) no barramento (LED Fault acende). Para falhas específicas, use os comandos seriais AT+DTC1/AT+DTC2 do simulador.

1

Ativar a falha

Pressione o Fault SW no simulador — o LED Fault acende e o código J1939 aparece no LCD.

2

Habilitar leitura de DTC no VL08

Envie >VS19_ENA0250,1,TP1024,20,DTC060,59904,65226,65227,SA128<.

3

Verificar DTC capturado

Consulte >GTC00< — deve retornar o SPN/FMI simulado.

4

Limpar e Repetir

Desative a falha (Fault SW ou AT+DTC1:0). O DTC sai da lista GTC por timeout. Repita para validar.

✅ Checklist de Integração

Progresso: 0 / 12

🔧 Troubleshooting

SintomaCausa ProvávelSolução
QCT01 retorna 0 CAN em baudrate errado ou filtro/PGN incorreto Usar >VS19_ENA0250,1< (J1939 250K) e conferir o filtro VS19xx
Nenhum dado, baudrate desconhecido Não sabe quais PGNs o simulador emite Modo sniffer: >VS19_ENA0250,5<>CPG<>GPG0,99<
QVR sem _CAN Firmware sem suporte CAN Atualizar para ≥ 153B06 (_CAN); DTC J1939 requer ≥ 158B01
Display do simulador apagado Sem alimentação ou fonte incorreta Verificar fonte 12V DC e chave liga/desliga
CAN-H e CAN-L invertidos Fios trocados nos pinos 6/14 Inverter os fios — sem risco de dano
DTCs J1939 não aparecem CAN não habilitada com parâmetros de DTC, ou FW < 158B01 Enviar >VS19_ENA0250,1,TP1024,20,DTC060,59904,65226,65227,SA128<
GTC00 vazio após Fault SW Falha ainda não injetada / timeout muito curto Confirmar LED Fault aceso; aumentar DTCxxx; aguardar alguns segundos
Tentou VOBD_ENA e nada responde Caminho OBD-II não se aplica ao simulador J1939 Usar filtros PGN J1939, não o modo OBD-II (VOBD)
Erros na CAN (VQ19_ST) Baudrate incorreto ou modo normal em rede errada Testar em modo escuta ,0; confirmar 250K
Valores RPM/Velocidade fixos Potenciômetros no mínimo Girar os potenciômetros no simulador e ler QCT novamente

📥 Scripts e Downloads

📜 Scripts XVM Padrão
ScriptDescrição
Config OBD2 VIRLOC 1.4 Ferramenta oficial de configuração OBD-II
vl08_can_j1939.xvm Script padrão J1939 — use este com o simulador ✅
vl08_can_obd2.xvm Script padrão OBD-II (veículos leves reais — não o simulador)
🔬 Ferramentas de Teste (repo)
ArquivoPropósito
tools/test_bluetooth.pyTeste de conectividade BLE + comandos XVM
tools/tcp_listener.pyServidor TCP para teste de conexões
tools/test_wifi.pyTeste de configuração Wi-Fi
tools/test_port.pyTeste de porta serial
tools/connection_diagram.mdReferência de conexão física

Sequência Rápida de Teste (J1939) — Copiar e Colar

# ── 1. Verificar firmware ──
>QVR<                          # Deve conter _CAN (DTC J1939: FW ≥ 158B01)

# ── 2. Descobrir PGNs (sniffer) ──
>VS19_ENA0250,5<               # CAN1 @ 250K, listagem de PGNs
>CPG<                          # zerar lista
>GPG0,99<                      # (após alguns minutos) listar PGNs

# ── 3. Habilitar CAN em modo normal ──
>VS19_ENA0250,1<               # CAN1 @ 250K, J1939, com ACK

# ── 4. Configurar filtro PGN (ex.: rotação — EEC1) ──
>VS1901,61444,000,29,01,1,1,000000FF,0,0,1000<

# ── 5. Ler dados ──
>QCT01<                        # valor capturado no CT01
>QCT001010<                    # CTs 01–10

# ── 6. Testar DTCs J1939 (ativar Fault SW antes) ──
>VS19_ENA0250,1,TP1024,20,DTC060,59904,65226,65227,SA128<
>GTC00<                        # ver DTC (SPN/FMI) no índice 0