Sua Próxima Ferramenta de Bancada: Como Construir um Scanner de Rede CAN para VRF com um ESP32 e seu Celular
Focar no passo a passo prático. Mostrar como essa ferramenta barata (ESP32) pode substituir equipamentos caros para diagnosticar erros de comunicação ...
INTRODUÇÃO
Se tem uma coisa que eu vejo todo dia na bancada é: erro de comunicação custa tempo, peça e reputação. Você chega na assistência de ar condicionado VRF/VRV (Daikin, Midea, Gree, LG, Carrier…) e o código de erro aponta “comunicação” — às vezes aparece como E4, outras vezes como Cx — e aí começa o cabo de guerra: ligar unidade por unidade, trocar placa, cobrar visita técnica… Nem sempre é necessário. Pega essa visão: com um ESP32, um transceiver CAN barato e o seu celular você pode montar um scanner de barramento CAN que entra na rede, mostra quem fala e quem cala, e aponta onde está o nó problemático — tudo acessível via uma interface web local. Eletrônica é uma só: entender sinais digitais e saber interpretá-los salva serviço.
Recentemente o Portal Embarcados publicou um projeto similar que usa ESP32 para varredura CAN e interface web (referência: embarcados.com.br). Eu, Lawhander, trago aqui um guia completo, prático e orientado para o técnico brasileiro. Vou mostrar por que o CAN é o padrão em sistemas VRF, listar o material, explicar ligação e software, e dar o passo a passo para você diagnosticar falhas de comunicação em campo usando apenas um ESP32 e o celular. Bora nós — tamamo junto!
No final você terá: uma ferramenta portátil, de baixo custo, que substitui em muitos casos equipamentos caros de diagnóstico; fluxo de testes para identificar unidade offline, erro de barramento, curtos, conflitos de ID e frames corrompidos; e dicas de bancada para não queimar placa nem inverter polaridade.
CONTEXTO TÉCNICO
O que é a rede CAN (noções essenciais)
O Controller Area Network (CAN) é um padrão de comunicação serial diferencial projetado para ambientes ruidosos (automotivo, industrial e HVAC). Características principais:
- Barramento diferencial: dois fios — CAN_H e CAN_L — que transportam sinais diferenciais para imunidade a ruído.
- Taxas típicas: até 1 Mbps (mas em HVAC normalmente valores como 125 kbps, 250 kbps ou 500 kbps aparecem conforme projeto).
- Mensagens estruturadas em frames com ID, DLC (comprimento), bytes de dados e bits de controle, com prioridade por ID (menor ID = maior prioridade).
- Mecanismo robusto de detecção e retransmissão de erros (CRC, ACK, bit stuffing), e estados como bus-off quando um nó comete muitos erros.
Para o técnico: imagine o CAN como uma linha de rádio entre placas. Cada unidade transmite pacotes periódicos (telemetria, status) e responde a comandos. Se uma unidade trava e fica com a linha dominada (nível permanente dominante), todo o barramento para — daí o valor de um scanner que mostre “quem está falando”.
Por que o CAN é usado em VRF/VRV
Sistemas VRF/VRV têm dezenas de unidades internas e uma ou mais externas. O CAN é adotado porque:
- Suporta múltiplos nós em um único par de fios, simplificando fiação.
- É tolerante a ruídos elétricos típicos de compressores e motores.
- Permite mensagens de curto prazo (controle em tempo real) e diagnósticos.
- Facilita endereçamento e priorização (comandos críticos do compressor, por exemplo).
Em resumo: estabilidade, custo e confiabilidade. E por isso fabricantes (Daikin, Midea, Gree etc.) adotam variações do CAN ou implementam protocolos proprietários sobre CAN.
ANÁLISE APROFUNDADA
Materiais e especificações — o que comprar (lista prática)
Recomendo duas abordagens: usar o controlador CAN interno do ESP32 (mais limpo) ou usar um módulo MCP2515 via SPI (mais universal). Vou listar o que funciona em campo:
Essencial
- ESP32 (DevKit) — preferencialmente versão USB com 3.3V IO.
- Transceiver CAN 3.3V, exemplo: SN65HVD230 (TI) — converte sinal do controlador para a linha diferencial CAN.
- Cabo para CAN: par trançado blindado (ou par trançado comum) para ligação até a placa do equipamento.
- Jumpers (fêmea-macho), soldador e pistola de estanho.
Opcional / alternativo
- Módulo MCP2515 + TJA1050 (MCP2515 é controlador via SPI; TJA1050 é transceiver) — atenção aos níveis de tensão (alguns módulos exigem 5V).
- Módulo pronto “CAN BUS” (MCP2515+TJA1050) disponível no mercado brasileiro — aceitável, mas confirme se o módulo opera em 3.3V.
- Fonte 12V/24V do equipamento (para alimentar placa) — não alimente o barramento com fonte separada sem entender o que faz.
- Osciloscópio portátil (altamente recomendado) — para ver formas de onda e detectar dominância.
Peças típicas de compra no Brasil:
- ESP32 DevKit V1 — R$ 30–80
- Módulo SN65HVD230 breakout — R$ 20–50 (às vezes vendido em módulos “CAN transceiver”)
- Módulo MCP2515+TJA1050 — R$ 25–70 Custos totais: aproximadamente R$ 60–200 dependendo das escolhas. Show de bola para uma ferramenta de bancada.
Esquema de ligação (conceito e conexões)
Pega essa visão básica: o ESP32 precisa conversar com o transceiver. Dois caminhos:
Opção A — Usar TWAI (CAN) interno do ESP32 + transceiver SN65HVD230
- SN65HVD230 VCC -> 3.3V do ESP32
- SN65HVD230 GND -> GND comum
- SN65HVD230 TXD -> GPIO configurado como CAN_TX (conforme driver/tua configuração)
- SN65HVD230 RXD -> GPIO configurado como CAN_RX
- CAN_H e CAN_L do transceiver -> rede CAN (para placa do ar)
- Terminação: 120 Ω entre CAN_H e CAN_L nas extremidades do barramento (máx. duas terminações)
Opção B — Usar MCP2515 (SPI) + transceiver (TJA1050) com ESP32
- MCP2515 VCC -> 3.3V ou 5V conforme módulo (verifique)
- SPI: MOSI -> GPIO23, MISO -> GPIO19, SCK -> GPIO18 (padrões no ESP32), CS -> p.ex. GPIO5
- INT (interrupção do MCP2515) -> GPIO4 (ou outra)
- TJA1050 VCC -> conforme módulo (normalmente 5V — cuidado!)
- TJA1050 CAN_H/L -> rede CAN
- GND comum sempre
⚠️ Importante: confira tensão do módulo. Muitos módulos MCP2515 vendidos usam reguladores e level shifters; outros exigem 5V. Conectar 5V a pinos do ESP32 pode queimar o microcontrolador.
Terminação e topologia
- Use 120 Ω entre CAN_H e CAN_L nas extremidades do barramento. Em uma instalação VRF, normalmente já existe uma terminação nas placas ponta. Se for conectar no meio do barramento, não adicionar terminação dupla.
- Nunca “alivie” o GND: conecte GND do seu ESP32 ao GND do sistema antes de conectar sinais.
Configuração de software e carregamento do firmware (passo a passo)
Escolha ambiente: Arduino IDE ou PlatformIO. Vou descrever com Arduino IDE (mais comum no serviço):
-
Instale suporte ESP32 no Arduino IDE:
- Vá em File > Preferences > Additional Boards Manager URLs e adicione o URL do core ESP32 (esp32arduino).
- Instale “esp32 by Espressif Systems” em Boards Manager.
-
Bibliotecas necessárias:
- Se usar CAN nativo: biblioteca “CAN” para ESP32 (ex.: ESP32CAN) ou o driver TWAI disponível no core.
- Se usar MCP2515: “MCP_CAN_lib” (ou “mcp_can”).
- Web server: “ESPAsyncWebServer” + “AsyncTCP” (melhor para websockets/real-time).
-
Código base (fluxo lógico — não preciso copiar tudo aqui):
- Inicializa CAN a uma taxa configurável (125k/250k/500k). Faça opção de selecionar taxa por UI.
- Varre frames recebidos, armazena em buffer circular.
- Serve página web com websocket que transmite frames em tempo real para o navegador do celular.
- Endpoints: /scan (iniciar varredura passiva), /frames (lista histórica), /busload (porcentagem de utilização), /ids (lista de IDs vistos).
-
Flash:
- Conecte ESP32 ao PC via USB.
- Selecione placa correta e porta.
- Compile e carregue.
- Ao iniciar, o ESP32 pode criar Access Point (modo AP) chamado por exemplo “CANScanner-XXXX”. Conecte seu celular nesse Wi‑Fi. Alternativa: configure para conectar à rede local se preferir.
-
Web UI:
- Página principal mostra tabela: Timestamp | ID | DLC | Data (hex) | Flags (RTR/ERR) | Contagem de frames.
- Botões: “Start/Stop”, “Set bitrate”, “Filter by ID”, “Export CSV”.
- Websocket para atualização em tempo real.
Dica: usar AP local é fundamental no campo, já que muitas instalações não têm Wi-Fi confiável. Tamamo junto com seu celular e o scanner.
Interpretando dados na interface web — o passo que separa generalista de técnico
O scanner te devolve frames. Agora o trabalho é interpretar. Vou listar os sinais típicos e o que significam para diagnóstico VRF:
O que observar primeiro
- Frames periódicos (beacons): a maioria das unidades envia pacotes periódicos. Se uma unidade interna 04 normalmente envia a cada 200 ms e sumiu, é suspeita.
- IDs duplicados: dois nós enviando com mesmo ID pode indicar erro de configuração ou placa com fuga, causando colisão.
- Frames corrompidos / ACK errados: veja flags de erro na UI. Transmissões repetidas e espaço de retransmissão apontam ruído ou nó com defeito.
- Bus load muito alto (>70%) pode indicar flooding (nó preso transmitindo demais) — isso derruba a comunicação.
Exemplos práticos
- Caso 1 — Unidade não responde: na tabela você nota ausência de frames com o ID referente à unidade. Próximo passo: desconectar fisicamente a unidade da linha CAN (isolamento) e observar se barramento volta ao normal; se voltar, provavelmente a unidade estava travando o barramento.
- Caso 2 — Frames com dados inconsistentes: IDs respondendo, mas bytes de status mostram valores estranhos (ex.: bit de erro acionado). Consulte manual de protocolo do fabricante (quando disponível) ou compare com outra unidade idêntica.
- Caso 3 — Erro E4 (comunicação): E4 é um exemplo comum (varia por fabricante). Com o scanner, veja se há mensagens de erro (frames especiais) ou se o controle central está acusando timeout de respostas. Se houver muitos erros e retransmissões, verifique terminação, integridade do par trançado e conectores. Se o barramento ficar “dominant” (nível lógico contínuo), há curto entre CAN_L e GND ou um transceiver com saída travada.
⚠️ Interpretação de protocolos proprietários: muitos fabricantes usam ID e payload proprietários — sem documentação, o caminho é comparar comportamento entre unidades sanas e a suspeita. A análise comparativa é poderosa.
Diagnóstico elétrico e procedimentos de bancada
Medidas simples antes de “trocar placa”:
- Verifique terminação (120 Ω). Use multímetro com ohmímetro offline.
- Medida de tensão DC entre CAN_H e GND/CAN_L: em repouso, CAN_H ≈ 2.5–3.5V e CAN_L ≈ 1.5–2.5V (valores dependem do transceiver), a diferença é pequena. Melhor usar osciloscópio para verificar forma de onda.
- Se o barramento estiver preso (nível dominante): desconecte módulos um a um (comece por internas) até que o barramento retorne a normal — assim você encontra o nó intruso.
- Cheque conectores: oxidação e mal contato geram erros intermitentes.
Ferramentas úteis
- Osciloscópio: identifica bit stuffing errado, frames truncados, níveis dominantes.
- Multímetro: teste de terminação e continuidade.
- Scanner ESP32: identifica rapidamente IDs, frequência e retransmissões — ótimo como primeiro recurso.
APLICAÇÃO PRÁTICA
Fluxo de trabalho no dia a dia (procedimento recomendado)
- Chegou chamado com código de comunicação ou sistema parcial:
- Conecte o scanner no conector CAN da central (desligue a alimentação principal se o manual recomendar — em muitos casos é ok conectar com sistema energizado, mas faça com cuidado).
- Inicie scan em modo passivo (não transmita) e observe por 1–2 minutos. Veja lista de IDs e frequência.
- Identificar anomalias:
- Unidade ausente → verificar alimentação, fusível e conexão.
- Unidade presente mas com payload estranho → testar na bancada, comparar com unidade boa.
- Barramento travado → isolar unidades até recuperar funcionamento.
- Se necessário, passe para modo ativo (envio de frames) para pingar uma unidade — cuidado: só faça se souber o protocolo ou tiver documentação, risco de mandar comandos indesejados.
- Anote logs (export CSV) e compare com histórico; isso ajuda ao homologar peça trocada ou justificar visita.
💡 Dica prática: sempre faça testes com o scanner em modo “AP” (access point). No local o técnico raramente tem rede Wi‑Fi disponível. Nomeie o AP com código do cliente e data — facilita rastrear logs depois.
Exemplo de detecção de unidade com problema
- Sintoma: 1 das 10 evaporadoras mostra falha intermitente. O comando para ligar não chega.
- Ação:
- Conecto o scanner (modo passivo). Observo IDs: 0x201 (evap 1) aparece a cada 200 ms; 0x20A (evap 10) não aparece.
- Desconecto evaporadora 10 fisicamente: barramento estabiliza e nenhuma outra unidade some — sinal de que evaporadora 10 está apenas offline, não provocando curto.
- Verifico alimentação e comunicação local da evaporadora: conector oxidado. Limpo pinos e reconecto — volta a aparecer 0x20A no scanner e operação normal. Resultado: economizei horas de teste e uma possível troca de placa externa.
⚠️ Alerta de segurança: desconectar unidades com equipamento energizado pode ser perigoso se não seguir procedimento do fabricante. Aja com EPIs e atenção.
CONCLUSÃO
Resumo rápido e prático: com um ESP32, um transceiver CAN compatível (preferencialmente SN65HVD230) e um pouco de software você monta uma ferramenta portátil, barata e muito poderosa para diagnosticar redes CAN em sistemas VRF. A solução substitui muitas visitas repetitivas e trocas desnecessárias de placas, pois permite identificar se o problema é elétrico (fiação, terminação), de barramento (nó travando) ou de aplicação (payload errático, unidade com defeito).
Ações imediatas que recomendo:
- Monte o scanner seguindo a opção que se adeque ao seu conforto (TWAI nativo ou MCP2515).
- Teste em bancada com um par de nós simulados antes de ir ao cliente.
- Salve logs e compare com unidades conhecidas — diagnóstico por comparação é ouro.
- Use AP local no ESP32 para acesso rápido via celular em campo.
Meu patrão, a manutenção moderna pede ferramentas simples, robustas e de baixo custo — pega essa visão: “Toda placa tem reparo”, e com a ferramenta certa você encontra o problema sem chutar. Se quiser, eu te passo um esboço de firmware com endpoints básicos (/scan, /frames, /set_bitrate) e layout da página web para começar. Tamamo junto — vamos reduzir custo de parada e elevar a sua eficiência na assistência técnica.
Referência: baseado no projeto publicado no Portal Embarcados (embarcados.com.br) e adaptado para aplicação prática em climatização VRF no Brasil.