O que é TinyML? É machine learning que roda em microcontroladores, a mesma classe de chips que fica dentro de termostatos, wearables e nós sensores, com memória medida em kilobytes e consumo medido em miliwatts. Este guia explica o que diferencia o TinyML de outras formas de edge AI, quais frameworks e placas usar, os casos de uso em que ele se destaca e por que esses dispositivos devem publicar resultados de inferência compactos via MQTT em vez de dados brutos de sensores.
TinyML em termos simples
Um microcontrolador (MCU) é um pequeno computador em um único chip: um processador, um pouco de RAM, memória flash e periféricos para sensores. Não existe sistema operacional no sentido de um desktop, nem runtime Python e, muitas vezes, nem hardware de ponto flutuante. TinyML é o conjunto de técnicas que tornam uma rede neural treinada pequena e eficiente o bastante para rodar nesse ambiente, continuamente, muitas vezes com bateria.
O resultado é um sensor que entende o que mede. Em vez de transmitir áudio bruto, um nó de microfone com TinyML informa "palavra-chave detectada". Em vez de amostrar vibração em alta taxa e enviá-la, um nó de motor informa "desbalanceamento, confiança 0,9". TinyML é um subconjunto da edge AI; se quiser primeiro a visão mais ampla, leia o que é edge AI.
As restrições que definem o TinyML
| Recurso | Dispositivo TinyML típico | Dispositivo de borda Linux típico |
|---|---|---|
| RAM | Dezenas a centenas de KB, às vezes alguns MB de PSRAM | Gigabytes |
| Armazenamento | Centenas de KB a alguns MB de flash | Gigabytes |
| Processamento | Um ou dois núcleos, dezenas a centenas de MHz | CPU multicore em GHz, às vezes GPU/NPU |
| Energia | Miliwatts; pode funcionar com bateria de moeda ou pequena bateria | Watts |
| Software | Bare metal ou RTOS, C/C++ | Sistema operacional completo, Python, contêineres |
| Tamanho do modelo | Faixa de KB | Faixa de MB a GB |
Esses limites moldam todas as decisões de projeto:
- Os modelos precisam ser pequenos. Redes convolucionais ou densas pequenas, com dezenas de milhares de parâmetros, são o típico.
- Aritmética de inteiros. Os modelos são quantizados para inteiros de 8 bits, o que reduz o tamanho em cerca de quatro vezes em comparação com floats de 32 bits e roda rápido em chips sem unidade de ponto flutuante ou com instruções SIMD.
- Memória estática. Não há alocação dinâmica durante a inferência. Os frameworks usam um bloco de memória fixo (a tensor arena) dimensionado em tempo de compilação.
- A extração de features importa. Os sinais brutos são convertidos em features compactas, como um espectrograma para áudio ou RMS e picos espectrais para vibração, antes de chegarem ao modelo.
Como um modelo TinyML é construído
O fluxo de trabalho espelha qualquer projeto de ML, com um aperto extra no final:
- Colete dados de sensores rotulados a partir do dispositivo real, no ambiente real.
- Projete as features e um modelo pequeno, geralmente em TensorFlow/Keras ou em uma plataforma como o Edge Impulse.
- Treine e valide em uma workstation ou na nuvem.
- Converta e quantize o modelo, por exemplo para um arquivo
.tflitecom quantização int8 completa. - Incorpore o modelo ao firmware como um array de bytes e vincule o runtime de inferência.
- Meça no dispositivo: tempo de inferência, uso de RAM (tamanho da arena), uso de flash e precisão.
- Itere. Reduzir a janela de entrada ou o número de features costuma ajudar mais do que reduzir a rede.
Frameworks e ferramentas de TinyML
- TensorFlow Lite for Microcontrollers (hoje parte da família LiteRT do Google): o runtime aberto mais usado. Você carrega um modelo flatbuffer, registra apenas os operadores necessários e executa um interpretador sobre uma arena estática. Veja o guia de primeiros passos com TensorFlow Lite Micro.
- Edge Impulse: uma plataforma completa para coleta de dados, engenharia de features, treinamento e exportação de uma biblioteca C++ ou Arduino para uma placa-alvo. Veja o tutorial de Edge Impulse com MQTT.
- Bibliotecas de fabricantes: o Arm CMSIS-NN oferece kernels otimizados para Cortex-M; a Espressif oferece o ESP-DL e um port do TensorFlow Lite Micro otimizado para ESP32 (esp-tflite-micro); outros fabricantes de silício têm suas próprias toolchains.
- Bibliotecas Arduino e PlatformIO facilitam a combinação de inferência com drivers de sensores e rede em placas de hobby.
Placas populares para TinyML
Placas ESP32-S3 são uma escolha comum para TinyML conectado porque reúnem em um único chip barato instruções vetoriais úteis para kernels de redes neurais, PSRAM opcional e Wi-Fi integrado. O Arduino Nano 33 BLE Sense e placas Cortex-M4 semelhantes com sensores embarcados são populares para aprendizado, e a família Raspberry Pi Pico oferece uma opção Cortex-M de baixo custo. Placas sem Wi-Fi ainda podem participar de um sistema IoT enviando resultados por serial ou Bluetooth a um gateway. Para uma comparação direta entre classes de dispositivos, incluindo aceleradores, veja hardware para edge AI comparado.
No que o TinyML é bom
- Detecção de palavras-chave e eventos sonoros: wake words, alarmes, quebra de vidro, ruído anormal de máquinas.
- Reconhecimento de movimento e gestos a partir de acelerômetros e giroscópios em wearables e ferramentas.
- Manutenção preditiva: classificação de padrões de vibração em motores, bombas e ventiladores, como os pivôs de irrigação de uma fazenda ou os exaustores de um frigorífico.
- Visão simples: presença de pessoas, leitura de dígitos ou "objeto presente" em câmeras de baixa resolução, com placas equipadas com PSRAM.
- Sensoriamento ambiental: inferência de ocupação ou anomalias a partir de padrões de gás, temperatura e umidade.
O TinyML não é adequado para tarefas que exigem vocabulários grandes, imagens de alta resolução, contexto longo ou mudanças frequentes de modelo. Essas pertencem a um gateway ou à nuvem.
Por que dispositivos TinyML publicam resultados compactos via MQTT
Nós TinyML conectados enfrentam dois limites ao mesmo tempo: processamento minúsculo e tempo de rádio caro. Em dispositivos com bateria, o rádio costuma consumir muito mais energia do que a inferência. Enviar uma mensagem curta apenas quando algo interessante acontece é a maior economia de energia e de banda disponível.
O MQTT se encaixa nesse padrão. O overhead do protocolo é pequeno, bibliotecas cliente como PubSubClient e esp-mqtt rodam com folga em MCUs, e o broker distribui cada mensagem para quem precisar dela. Uma mensagem de inferência TinyML típica tem bem menos de 200 bytes:
{"dev":"fan-12","m":"vib-v2","label":"imbalance","p":0.91,"ms":7}
Chaves curtas são uma escolha deliberada em dispositivos com restrições. Combine-as com um topic que carregue o contexto, como plant1/hvac/ahu3/fan-12/inference, e com um topic de status retido com Last Will, para que os dashboards saibam quando o nó fica offline. Do lado receptor, um broker MQTT permite que dashboards, alertas e analytics na nuvem assinem sem que o dispositivo saiba da existência deles.
Um padrão mínimo de publicação para microcontroladores
O loop principal em um ESP32 com PubSubClient fica assim. A chamada de inferência é um placeholder; o tutorial de TinyML no ESP32 mostra um modelo completo funcionando.
// Chamada após cada inferência; publica apenas na mudança ou a cada 60 s.
void reportResult(PubSubClient &mqtt, const char *topic, const char *label, float p) {
static char lastLabel[24] = "";
static unsigned long lastSent = 0;
if (strcmp(label, lastLabel) == 0 && millis() - lastSent < 60000) return;
char payload[96];
snprintf(payload, sizeof(payload),
"{\"dev\":\"fan-12\",\"m\":\"vib-v2\",\"label\":\"%s\",\"p\":%.2f}", label, p);
if (mqtt.publish(topic, payload)) {
strncpy(lastLabel, label, sizeof(lastLabel) - 1);
lastSent = millis();
}
}
Você pode testar um nó como esse com o servidor MQTT público (gratuito) em broker.connectmq.com, na porta 1883, com qualquer client ID único e um prefixo de topic exclusivo. Lembre-se de que o servidor MQTT público pode ser lido por todos e serve apenas para testes e protótipos, então migre as implantações reais para credenciais privadas, como um broker MQTT gerenciado da ConnectMQ com TLS na porta 8883.
Erros comuns em TinyML
- Treinar apenas com dados de laboratório. A montagem, a temperatura e o ruído de fundo em campo alteram o sinal.
- Ignorar o tamanho da arena. Se
AllocateTensors()falhar, a arena é pequena demais; meça o requisito real e adicione uma margem. - Operadores não suportados. Nem toda camada do TensorFlow tem um kernel para microcontrolador. Verifique os operadores do modelo convertido antes de projetar em torno deles.
- Publicar cada inferência. Um modelo que roda dez vezes por segundo não deve publicar dez mensagens por segundo; agregue ou publique na mudança.
- Nenhuma versão do modelo. Inclua-a em todas as mensagens para poder rastrear o comportamento após uma atualização over-the-air.
Para ver como o TinyML se encaixa em um sistema completo com analytics na nuvem e agentes LLM, leia o guia de IA e IoT.
Comece a usar o ConnectMQ
Depois que o seu nó TinyML funcionar na bancada, dê a ele um lar seguro. O ConnectMQ é um broker MQTT gerenciado com TLS na porta 8883, suporte a MQTT 3.1.1 e 5.0 e um explorador de topics em tempo real para acompanhar a chegada das mensagens de inferência. Crie um broker no plano Serverless (Free) em app.connectmq.com, sem cartão de crédito.
Perguntas frequentes
Para que serve o TinyML?
O TinyML é usado em tarefas de sensoriamento sempre ativas em dispositivos de baixo consumo, como detecção de palavras-chave, reconhecimento de gestos, detecção de falhas por vibração e detecção simples de presença.
Um ESP32 consegue rodar TinyML?
Sim. A família ESP32, especialmente o ESP32-S3 com instruções vetoriais e opções de PSRAM, roda modelos do TensorFlow Lite Micro e do Edge Impulse e pode publicar resultados via Wi-Fi com MQTT.
TinyML é a mesma coisa que edge AI?
O TinyML é uma parte da edge AI focada em microcontroladores. A edge AI também abrange dispositivos maiores, como computadores de placa única, aceleradores e módulos com GPU.
Modelos TinyML precisam de internet?
Não. A inferência roda inteiramente no dispositivo. A conectividade só é necessária para informar resultados, receber configurações ou atualizar o modelo.



