IoT e Arduino
A linguagem falando com placa de verdade: Firmata para prototipar, sketch em C++ para o que precisa de tempo, MQTT para o resto do mundo.
Arcane.IoT liga a linguagem a uma placa física. São três caminhos, e a escolha entre eles é a primeira decisão de qualquer projeto: Firmata (o computador manda, a placa obedece), sketch (o programa roda na placa, e a linguagem só o escreve e grava) e MQTT (a placa e o painel conversam por uma rede).
| Caminho | Onde o programa roda | Serve para | O preço |
|---|---|---|---|
| Firmata | no computador | prototipar, sensor de mesa, painel | cada ordem atravessa o cabo — milissegundos |
| Sketch | na placa | tempo real, autonomia, bateria | compilar e gravar a cada mudança |
| MQTT | os dois, ligados por rede | vários sensores, telemetria, automação | depende de um broker de pé |
O menor programa que fala com hardware#
Com a placa ligada e o StandardFirmata gravado nela, isto acende o LED da placa:
precisa de placa
adopt Arcane.IoT as IoT
placa := IoT.conectar() // acha a porta sozinha, se houver uma só
placa.modo(13, "saida")
placa.escrever(13, yes)
sleep(500)
placa.escrever(13, no)
placa.fechar()dataforge
adopt Arcane.IoT as IoT
placa := IoT.conectar_simulada("uno")
placa.modo(13, "saida")
placa.escrever(13, yes)
assert placa.simulador.pino(13) is 1 // o simulador deixa PERGUNTAR
placa.fechar()
out "o LED acendeu — num Arduino de mentira"O que existe#
- Porta serial escrita aqui —
termiosno macOS e no Linux,ctypessobre a API do Windows. Sempyserial, e sem dependência nenhuma. - Firmata 2.x completo: modos, digital, analógico, PWM, servo, I²C,
sendString, amostragem, reset. - Um simulador com o mapa de seis placas (UNO, Nano, Mega, Leonardo, UNO R4, ESP32).
- Seis sketches gerados em C++, prontos para o
arduino-clicompilar e gravar. - MQTT 3.1.1 falado à mão sobre TCP, com QoS 0 e 1, curingas e testamento.
- `dataforge iot` no terminal:
portas,doctor,monitorar,sketch,carregar,piscar.
O que não existe — e não vale fingir#
| Não há | Porque |
|---|---|
| compilador de C++ próprio | o arduino-cli faz isso, e bem; reimplementá-lo seria refazer o GCC e o avrdude |
| gravador de bootloader próprio | idem — IoT.carregar chama o arduino-cli |
| TLS no MQTT | o ssl da biblioteca padrão resolveria; a decisão espera um teste com certificado de verdade |
| QoS 2 | exige guardar o estado de quatro mensagens por publicação, e quase nenhum projeto de sensor usa |
| tempo real por Firmata | cada ordem atravessa o cabo. O que precisa de microssegundos é sketch — ver Quando usar cada um |