Primeiros passos com a placa
Do cabo ao LED piscando: achar a porta, gravar o StandardFirmata, e o doctor que diz por que nada responde.
Uma placa que não responde também não dá erro: a porta abre, e nada chega. As causas são poucas e sempre as mesmas, e o doctor confere cada uma na ordem em que elas acontecem.
1. Ver se o computador enxerga a placa#
$ dataforge iot portas
2 porta(s):
/dev/cu.usbmodem1101 Arduino UNO R4 WiFi
/dev/cu.Bluetooth-Incoming-Port BluetoothNenhuma porta é o sintoma mais comum de todos, e quase nunca é a placa:
- O cabo é só de energia. Muitos cabos de celular não têm os fios de dados. É a causa nº 1.
- Falta o driver. Clones de UNO usam o CH340; ESP32 costuma usar CP2102 ou CH9102.
- Num contêiner, a porta precisa ser passada:
docker run --device=/dev/ttyACM0.
2. Gravar o StandardFirmata#
O Firmata é um sketch como outro qualquer: ele fica na placa esperando ordens. Sem ele, a porta abre e o silêncio é total. A linguagem escreve o sketch e chama o arduino-cli para gravar:
$ dataforge iot sketch firmata --em=/tmp/fw
escrito: /tmp/fw/firmata/firmata.ino
grave com: dataforge iot carregar /tmp/fw/firmata --fqbn=arduino:avr:uno
$ dataforge iot carregar /tmp/fw/firmata --fqbn=arduino:avr:uno
gravado.3. Piscar#
$ dataforge iot piscar --pino=13 --vezes=5
1/5 ●
2/5 ●
3/5 ●
4/5 ●
5/5 ●
se o LED piscou, o caminho inteiro funciona.Quando não funciona: o doctor#
$ dataforge iot doctor
✓ porta serial /dev/cu.usbmodem1101 — Arduino UNO R4 WiFi
✓ a porta abre 57600 baud, 8N1
✗ responde Firmata nada chegou em 5 s
✓ arduino-cli 0.35.3
O que costuma ser:
1. o cabo é só de energia — troque por um de dados
2. falta o driver USB-serial (CH340, CP2102) do clone
3. o StandardFirmata não está gravado:
dataforge iot sketch firmata --em=/tmp/fw
dataforge iot carregar /tmp/fw/firmata --fqbn=arduino:avr:uno
4. o monitor serial da IDE está com a porta abertaA última linha pega o erro que mais custa tempo a quem vem da IDE: duas coisas não abrem a mesma porta. Com o monitor serial aberto na IDE, a conexão daqui falha ou fica muda, e nada na tela explica isso.
A velocidade tem de ser a do sketch#
adopt Arcane.IoT as IoT
// o StandardFirmata fala 57600 — e é o padrão de IoT.conectar
assert "pwm" in IoT.modos()
out "os modos:", len(IoT.modos())Para um sketch seu, que escreve com Serial.println, a velocidade é a do Serial.begin() dele — e o monitor do terminal pergunta:
$ dataforge iot monitorar --velocidade=9600 --linhas=5 --prazo=10
temperatura: 21.4
temperatura: 21.5
temperatura: 21.4