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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.