IoT e IA

O que é TinyML? Machine Learning em Microcontroladores Explicado

TinyML é machine learning em microcontroladores que funcionam com miliwatts e kilobytes. Este guia aborda as restrições, os frameworks, casos de uso reais e por que dispositivos minúsculos publicam resultados de inferência compactos via MQTT.

Ilustração do que é TinyML, com uma placa microcontroladora executando uma pequena rede neural e publicando uma mensagem de inferência compacta via MQTT
Rode isso no seu próprio broker MQTTTenha um broker MQTT privado e gerenciado no plano Free e comece com exemplos de código prontos.
Teste grátis Exemplos de código Sem cartão de crédito

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:

  1. Os modelos precisam ser pequenos. Redes convolucionais ou densas pequenas, com dezenas de milhares de parâmetros, são o típico.
  2. 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.
  3. 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.
  4. 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:

  1. Colete dados de sensores rotulados a partir do dispositivo real, no ambiente real.
  2. Projete as features e um modelo pequeno, geralmente em TensorFlow/Keras ou em uma plataforma como o Edge Impulse.
  3. Treine e valide em uma workstation ou na nuvem.
  4. Converta e quantize o modelo, por exemplo para um arquivo .tflite com quantização int8 completa.
  5. Incorpore o modelo ao firmware como um array de bytes e vincule o runtime de inferência.
  6. Meça no dispositivo: tempo de inferência, uso de RAM (tamanho da arena), uso de flash e precisão.
  7. 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

  1. Treinar apenas com dados de laboratório. A montagem, a temperatura e o ruído de fundo em campo alteram o sinal.
  2. Ignorar o tamanho da arena. Se AllocateTensors() falhar, a arena é pequena demais; meça o requisito real e adicione uma margem.
  3. 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.
  4. 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.
  5. 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.

Artigos relacionados

Todos os artigos →

Seu broker MQTT privado está a poucos cliques de distância

Crie uma conta, receba as credenciais do seu broker e conecte seu primeiro dispositivo — sem servidores para instalar, atualizar ou escalar.