12 de abril de 2021

Do bit Ao Byte

Embarcados, Linux e programação

Análise de barramento serial com Bus Pirate

serial com Bus Pirate

Aconteceu uma situação espetacular, que me fez sentir vontade de mostrar como de fato fazer a análise de barramento serial com Bus Pirate. Se perdeu a primeira série do Laboratório Maker, vou deixar os links abaixo:

Nos links acima estou citando apenas a série com Bus Pirate, Laboratório Maker já está na oitava edição e seguindo!

O problema a analisar

Na maquineta do banco imobiliário temos uma comunicação serial entre o Arduino Mega e o ESP-01. O desenvolvimento foi feito standalone com o ESP-01 e as consultas de teste foram feitas pelo laptop, portanto, sabidamente funcional. Porém ao conectar o ESP-01 ao Arduino, a consulta não aconteceu. Será que o código utilizado para ler a Serial1 não está adequado? Será problema com o divisor resistivo? Será que a Serial1 não corresponde aos pinos 18 e 19? Poderia fazer alguns debugs com cada uma dessas possibilidades, ainda que possa ser outra coisa, mas a maneira mais rápida é interceptar o barramento serial e enxergar a comunicação. No pior dos casos, injetar uma comunicação para pegar a resposta. Isso é muito mais rápido do que desmontar o circuito e fazer testes individuais. Então vamos lá.

Como interceptar o barramento serial com Bus Pirate

Primeira coisa, identifique os fios TX e RX do Bus Pirate. Rx é de Receiver e Tx é de Transmitter. Só precisamos “escutar” o barramento, portanto devemos pegar o Rx do Bus Pirate e ligar ao Tx do divisor resistivo se quisermos escutar o Arduino. Fiz isso primeiro para ver se estava mandando a arroba adequadamente (pois ‘@’ foi escolhida como símbolo de requisição do valor do Bitcoin).

Após verificar que estava tudo certo, peguei o Rx do Bus Pirate e conectei ao Rx do Arduino (Serial1) para ver o que o ESP-01 estava mandando para ele. Bem, não estava mandando nada. Como eu já havia constatado no desenvolvimento que a comunicação acontecia normalmente, e como constatei que o Arduino estava mandando o arroba, o problema foi óbvio: O ESP-01 não está funcionando. Perceba que não foi necessário escrever 1 linha de código para depurar o problema. Mas como resolvê-lo? – Primeiro, vamos ver como iniciar o barramento serial no Bus Pirate.

Habilitar a serial no Bus Pirate

A sequência é simples, como mostro no vídeo. Após conectar o GND e o Rx do Bus Pirate ao circuito, entre no menu com m e selecione a opção 3, então escolha a velocidade (5 no meu caso, já que o projeto está utilizando 9600 bauds). Depois é só ir confirmando as demais opções até que chegue ao prompt. Feito isso, inicie a macro de monitoramento serial com (2). Qualquer tecla pressionada retornará ao terminal serial, portanto agora apenas observe.

Diagnóstico do ESP-01

serial com Bus Pirate - esp-01

Já havia anos que eu não conectava um ESP-01 sem um barramento próprio fazendo interface, como é o caso das placas MaxBlitz e Waldunano. Acabamos nos acostumando mal e, claro, esqueci de conectar o CH_PD ao 3V3 através de um resistor de 10K. O fiz, reiniciei e então imediatamente passei a pegar os valores no Bus Pirate:

serial com Bus Pirate - cutecom

Se fosse problema no formato da mensagem em qualquer um dos lados, também teria pego de forma tão simples quanto detectar que era problema físico. Com isso poupa-se ao menos 30 minutos de testes, já que em dois ou 3 minutos temos todas as possibilidades que fazendo por software levaria mais tempo. E se fosse problema de mensagem daria pra identificar com muita facilidade o que precisaria ser corrigido por estarmos olhando “através” da comunicação.

Essa é sem dúvida uma das melhores ferramentas de laboratório, indispensável para quem trabalha com barramentos seriais!

Revisão: Ricardo Amaral de Andrade