Quem vem do software está acostumado a um mundo em que o mesmo código, com a mesma entrada, dá sempre o mesmo resultado. Hardware não é assim. Um fio mal encaixado funciona às vezes, falha às vezes, e te faz duvidar do próprio código.
Juntei aqui o que mais me fez perder tempo, na esperança de que você perca menos.
- Tenha um cabo USB de dados que você sabe que funciona. Muitos cabos são só de carga. Separe um que funciona, marque ele e use sempre esse.
- Protoboard barata tem mau contato. Se algo funciona quando você encosta o dedo e para quando solta, o problema não é o código. Troque o jumper ou mude de fileira.
- Ligue o GND de tudo junto. Sensor alimentado por uma fonte e placa por outra, sem o terra em comum, dá leitura sem sentido. Foi a causa de uma tarde inteira de valores aleatórios.
- Confira a tensão: 3,3 V não é 5 V. O ESP32 trabalha em 3,3 V. Alguns sensores e módulos esperam 5 V. Olhe a especificação antes de ligar, porque essa lição pode custar uma placa.
- O monitor serial é o seu
console.log. Imprima tudo: se entrou na função, o valor lido do sensor, se conectou no Wi-Fi. Sem isso, você está depurando no escuro. - Um componente por vez. Ligue o sensor sozinho e confirme que ele lê direito. Só depois ligue o próximo. Montar tudo e testar no final é pedir pra não saber o que quebrou.
- Aprenda o básico do multímetro. Medir tensão e continuidade já resolve metade dos mistérios. Ainda estou aprendendo a usar o meu direito, mas só o teste de continuidade já me salvou várias vezes.
- Fotografe a montagem quando funcionar. Quando você desmontar e não lembrar onde ia cada fio, vai agradecer.
Antes de reescrever o código, puxe o fio e encaixe de novo. Sério.
A parte boa
Depurar hardware me deixou mais paciente com software também. Aprendi a não assumir que "essa parte com certeza está certa" e a testar de baixo pra cima. No fim, a lógica é a mesma: separar o problema em partes pequenas e verificar uma de cada vez. Só que aqui algumas partes você consegue segurar na mão.