Pular para o conteúdo

Quando não funciona

Os quinze sintomas de hardware, cada um com a causa que quase sempre é.

Depurar hardware é diferente de depurar software: a maioria dos sintomas não dá erro. Esta é a lista, na ordem em que os problemas aparecem.

A placa não aparece#

SintomaQuase sempre é
iot portas não mostra nadao cabo é só de energia — é a causa nº 1, e não parece
some e volta sozinhacabo ruim ou hub USB sem alimentação
aparece no Windows como "dispositivo desconhecido"falta o driver CH340/CP2102 do clone
não aparece dentro do contêinerfalta --device=/dev/ttyACM0 no docker run

A porta abre e nada chega#

SintomaQuase sempre é
conectar dá prazo esgotadoo StandardFirmata não está gravado
texto ilegível no monitora velocidade não é a do Serial.begin() do sketch
"permissão negada" ou "porta ocupada"o monitor serial da IDE está aberto — duas coisas não abrem a mesma porta
no Linux, permissão negada sempreo usuário não está no grupo dialout: sudo usermod -aG dialout $USER
as primeiras linhas são lixoabrir a porta reinicia a placa; espere ~2 s e limpar()

Responde, mas errado#

SintomaQuase sempre é
analógico sempre 0faltou relatar_analogico(canal) — é o erro nº 1 do Firmata
analógico sempre 1023o pino está solto: uma entrada sem nada ligada flutua
o botão "não pega"amostragem alta demais, ou falta o pull-up
temperatura absurda (−273, 500)termistor no fim da escala: fio solto ou curto
o valor treme muitoruído do ADC — média móvel resolve

Age, mas errado#

SintomaQuase sempre é
o relé liga quando devia desligarmódulo de relé com lógica invertida (ativo em LOW)
o LED acende no talo com PWM baixoo pino está em saida, não em pwm
o servo treme numa pontaos microssegundos de fim de curso — configurar_servo
a placa reinicia quando o motor parafalta o diodo de roda-livre; o pico indutivo derruba a alimentação
o pino parou de funcionarcorrente: um pino entrega ~20 mA, e motor/fita de LED precisam de driver

O diagnóstico, em ordem#

bash
$ dataforge iot doctor --porta=/dev/cu.usbmodem1101

Ele confere, nesta ordem: a porta existe → a porta abre → alguém responde Firmata → o arduino-cli está instalado. A ordem é a das causas, e a primeira falha é a que interessa — as de baixo são consequência.

Quando o problema não é o seu código#

dataforge
adopt Arcane.IoT as IoT

// a prova mais barata: o caminho inteiro, contra um simulador
placa := IoT.conectar_simulada("uno")
placa.modo(13, "saida")
placa.escrever(13, yes)
assert placa.simulador.pino(13) is 1
placa.fechar()
out "o programa está certo — o que falta é do lado do fio"

Rodar a mesma lógica contra o simulador separa as duas metades em segundos. Se ela funciona ali e não na placa, o problema é elétrico, é o sketch ou é a porta — e nenhuma releitura do código vai achá-lo.