A Internet das Coisas (IoT) já é uma realidade consolidada. O crescimento da IoT, especialmente em aplicações que envolvem dispositivos com baixo poder computacional e conectividade limitada, vem aumentando a demanda por protocolos de comunicação leves e eficientes, capazes de garantir a troca de dados entre dispositivos (comunicação M2M, Machine-to-Machine) de forma confiável e escalável. Entre esses protocolos, o MQTT (Message Queuing Telemetry Transport) se destaca como um dos mais populares, sendo amplamente utilizado para comunicação em tempo real tanto entre dispositivos variados quanto entre dispositivos e plataformas Cloud/IoT.
Neste post, exploraremos em detalhes o que é o protocolo MQTT, como ele funciona e quais vantagens oferece para a Internet das Coisas, explicando por que ele é tão adotado atualmente.
O que é MQTT?
Para termos uma visão geral do MQTT, um bom ponto de partida é definir o que é o protocolo MQTT. O acrônimo MQTT significa Message Queuing Telemetry Transport, e foi criado pela IBM no final dos anos 90.
O MQTT utiliza o protocolo TCP/IP como base para a transferência de dados e foi projetado para ser leve e simples de usar, ideal para dispositivos com recursos limitados. Seu funcionamento se baseia no modelo publish/subscribe, que permite a troca de mensagens entre dispositivos de forma assíncrona, desacoplada e altamente escalável.

Essa abordagem torna o MQTT uma excelente escolha para soluções embarcadas e aplicações IoT que demandam baixo consumo de rede, baixa latência e eficiência energética, como em projetos com ESP32 ou Raspberry Pi.
Atualmente, o MQTT é suportado pelas principais plataformas de nuvem como AWS IoT, Google Cloud IoT e Azure IoT, além de brokers open-source como o Mosquitto MQTT. Por isso, está presente em uma variedade de aplicações, desde automação residencial até soluções de monitoramento industrial.
Como funciona o MQTT?
Cada nó em uma comunicação MQTT (geralmente chamado de cliente MQTT) se conecta a um servidor central, conhecido como broker MQTT, que atua como intermediador na troca de mensagens entre os dispositivos.
Toda a comunicação é realizada por meio de tópicos MQTT, que funcionam como canais organizados onde as mensagens são publicadas e distribuídas conforme a inscrição dos clientes.
Quando um cliente publica uma mensagem, ele a envia com um payload (os dados que deseja transmitir) para um tópico específico. Todos os clientes que estiverem subscritos a esse tópico recebem a mensagem automaticamente. É possível que um único cliente publique e/ou se inscreva em diversos tópicos simultaneamente, o que permite uma comunicação flexível e escalável entre dispositivos.

Esse modelo é chamado de publish/subscribe, onde os dispositivos não se comunicam diretamente entre si, mas sempre através do broker. Essa abordagem promove baixo acoplamento, facilita o gerenciamento da comunicação e melhora a escalabilidade da solução.
Além disso, o protocolo é compatível com diversas tecnologias de conectividade, como Wi-Fi, 4G/5G, NB-IoT e LoRa, o que o torna ideal para aplicações em ambientes com baixa largura de banda ou conectividade intermitente.
É importante destacar que, apesar de ser leve, o MQTT também oferece recursos robustos, como os níveis de QoS (Quality of Service), que garantem diferentes níveis de confiabilidade na entrega das mensagens. Eles serão explicados em um tópico próprio mais adiante neste post.
Arquitetura e protocolo MQTT
A arquitetura do MQTT é baseada em três elementos principais, que formam a base da comunicação entre dispositivos em soluções IoT:
- Cliente MQTT: qualquer dispositivo, aplicação embarcada ou software que publica (envia) ou assina (recebe) mensagens por meio de tópicos. Pode ser, por exemplo, um ESP32 enviando dados de sensor ou um aplicativo Android monitorando estados de um sistema.
- Broker MQTT: é o servidor central responsável por todo o gerenciamento da comunicação. Ele recebe as mensagens publicadas por clientes, filtra com base nos tópicos e entrega somente aos dispositivos que assinaram esses tópicos. Nenhum cliente fala diretamente com outro — tudo passa pelo broker.
- Tópicos MQTT: são canais de comunicação organizados de forma hierárquica (por exemplo, casa/sala/luz), que funcionam como “endereços” para os dados. Os clientes publicam e se inscrevem em tópicos específicos, o que permite criar arquiteturas de comunicação flexíveis e modulares.
O MQTT opera sobre a pilha TCP/IP, utilizando o protocolo TCP como meio de transporte confiável. Isso significa que, antes de qualquer dado ser enviado via MQTT, uma conexão TCP é estabelecida entre o cliente e o broker.
Abaixo, uma representação simplificada das camadas envolvidas em uma comunicação MQTT típica:

Dentro da camada de aplicação, o protocolo define:
- Como as mensagens são formatadas,
- Como os tópicos são definidos,
- Como a entrega confiável é gerenciada via níveis de QoS (Quality of Service),
- E como eventos como conexões e desconexões são tratados.
Essa estrutura é essencial para aplicações IoT que precisam de comunicação leve, eficiente e confiável, mesmo em ambientes com conectividade limitada ou intermitente.
Como implementar um cliente MQTT?
Após entender a arquitetura, o próximo passo é saber como colocar em prática o uso do protocolo no seu projeto. Para isso, há diversas bibliotecas disponíveis que permitem implementar um cliente MQTT de forma simples nas linguagens mais populares.
A tabela abaixo traz algumas opções amplamente utilizadas:
| Linguagem | Biblioteca | Repositório Oficial |
| C | Paho MQTT C | GitHub |
| C++ | Paho MQTT C++ | GitHub |
| Python | Paho MQTT Python | GitHub |
| JavaScript | MQTT.js | GitHub |
Essas bibliotecas são compatíveis com plataformas como ESP32, Raspberry Pi e NodeMCU, e são ideais tanto para prototipagem quanto para aplicações reais. Um exemplo prático disso pode ser visto em nosso tutorial: Como desenvolver um cliente MQTT em C na Raspberry Pi.
Dica: Para facilitar ainda mais o desenvolvimento e testes com MQTT, é possível utilizar ferramentas como o MQTT Explorer, que permite visualizar tópicos e mensagens em tempo real. Outra alternativa é o Mosquitto MQTT, um dos brokers MQTT open-source mais utilizados, com versões para diferentes sistemas operacionais.
Qualidade de Serviço (QoS) no MQTT
Um dos recursos mais importantes do MQTT é a possibilidade de configurar o nível de Qualidade de Serviço (QoS) para cada mensagem transmitida. Isso permite adaptar a confiabilidade da comunicação de acordo com a criticidade da aplicação.
O protocolo define três níveis de QoS, conforme descrito abaixo:

QoS 0 – At most once (no máximo uma vez)
A mensagem é enviada apenas uma vez, sem confirmação de recebimento. Caso o pacote se perca, não há retransmissão. É o modo mais rápido e leve, ideal para dados que não precisam de confirmação, como leituras periódicas de sensores não críticos.
QoS 1 – At least once (pelo menos uma vez)
A mensagem é enviada e o cliente espera uma confirmação do broker. Caso não receba essa confirmação, a mensagem será reenviada até que isso aconteça. Pode gerar mensagens duplicadas, mas garante a entrega. Indicado para aplicações onde a perda de dados não é aceitável.
QoS 2 – Exactly once (exatamente uma vez)
Garante que cada mensagem será entregue uma única vez, sem duplicação, por meio de um processo de handshake em quatro etapas. É o nível mais seguro, porém também o mais custoso em termos de tráfego e processamento. Recomendado para comandos críticos ou transações sensíveis.
A escolha do QoS adequado impacta diretamente no desempenho e no consumo de energia dos dispositivos IoT. Em projetos com sensores alimentados por bateria, por exemplo, QoS 0 pode ser mais apropriado. Já em sistemas de controle ou automação, QoS 1 ou 2 oferecem mais segurança na entrega.
Vantagens e desvantagens
Com base em tudo o que foi abordado até aqui, podemos destacar as principais vantagens do protocolo MQTT para aplicações em Internet das Coisas:
- Baixo consumo de banda e energia: projetado para ser um protocolo leve (lightweight), o protocolo exige poucos bytes para envio/recebimento de mensagens, tornando-se ideal para dispositivos com conectividade limitada ou alimentados por bateria.
- Alta escalabilidade: o modelo publish/subscribe desacopla os dispositivos, permitindo que centenas ou milhares de clientes troquem mensagens de forma eficiente, sem conexões ponto a ponto.
- Facilidade de integração: o MQTT é suportado pelas principais plataformas em nuvem e por diversas bibliotecas nas linguagens mais populares. Isso simplifica a integração com sistemas existentes e acelera o desenvolvimento.
- Controle de confiabilidade (QoS): a possibilidade de configurar diferentes níveis de QoS permite adaptar o protocolo a diferentes níveis de criticidade, desde sensores simples até comandos industriais.
- Amplo suporte da comunidade e ferramentas: existem brokers gratuitos como o Mosquitto MQTT e ferramentas como o MQTT Explorer, além de diversos tutoriais com microcontroladores:
Apesar das vantagens, o MQTT também apresenta limitações que devem ser consideradas ao escolher o protocolo para um projeto IoT:
- Dependência de um broker MQTT: toda a comunicação passa por um ponto central. Caso o broker fique offline ou falhe, a comunicação entre os dispositivos é interrompida. Para aplicações críticas, é necessário planejar alta disponibilidade e redundância.
- Segurança limitada por padrão: o protocolo, por si só, não oferece criptografia ou autenticação forte. Para garantir segurança, é necessário configurar camadas adicionais, como TLS/SSL e autenticação via usuário/senha. Veja exemplo de arquitetura segura com MQTT: Use o Raspberry Pi para controlar o NodeMCU.
- Modelo assíncrono de mensagens: o protocolo não garante resposta imediata a comandos (como o HTTP faz com request/response). Isso pode ser uma limitação em sistemas que exigem resposta em tempo real a eventos críticos.
- Maior consumo de energia em QoS altos: quanto maior o nível de QoS, maior o número de mensagens trocadas (confirmações, retransmissões, handshakes), o que pode impactar significativamente o consumo de energia em dispositivos com bateria.
- Gerenciamento complexo de tópicos em grandes projetos: em aplicações com muitos dispositivos e tópicos, a organização e controle de permissões sobre os canais MQTT podem se tornar desafiadores. Um planejamento inadequado pode gerar vazamento de dados, tópicos sobrepostos ou falhas de escalabilidade.
Aplicações do MQTT
O protocolo MQTT é muito adotado em projetos de Internet das Coisas por sua leveza, confiabilidade e compatibilidade com diversos dispositivos e plataformas. Sua flexibilidade permite uso em aplicações simples e também em sistemas complexos e críticos.
Abaixo, destacamos algumas aplicações reais que utilizam este protocolo como base para a comunicação entre dispositivos:
Automação residencial
Dispositivos como interruptores, lâmpadas inteligentes, sensores de presença e alarmes podem se comunicar entre si via tópicos MQTT, permitindo automações seguras e responsivas.
Exemplo prático:
Sensoriamento remoto e agricultura de precisão
Sensores de temperatura, umidade, luminosidade e outros parâmetros ambientais podem transmitir dados via MQTT para monitoramento remoto em aplicações agrícolas ou ambientais.

Exemplos no práticos:
Monitoramento industrial
Máquinas e equipamentos industriais podem enviar dados de status, falhas e métricas operacionais para plataformas SCADA ou dashboards em nuvem usando MQTT.
Exemplo prático:
Rastreamento de veículos e frotas
Dispositivos embarcados com GPS e conectividade (via Wi-Fi ou 4G/5G) podem enviar dados de localização e telemetria em tempo real usando MQTT.
Exemplo prático:
Energia limpa e monitoramento inteligente
O MQTT também pode ser usado para monitorar geração e consumo de energia em tempo real, tanto em sistemas solares quanto em turbinas eólicas conectadas.
Exemplo prático:
Testes locais e redes offline
Em ambientes sem acesso à nuvem, é possível montar redes locais com brokers MQTT rodando em dispositivos como o Raspberry Pi, permitindo comunicação entre dispositivos mesmo sem Internet.

Exemplo prático:
Robótica e dispositivos móveis conectados
Projetos com robôs, carrinhos autônomos e dispositivos móveis conectados também se beneficiam do protocolo, pela baixa latência e leveza no tráfego de mensagens.

Exemplo prático:
Conclusão
O MQTT é um protocolo muito consolidado e lembrado por ser leve e fácil de integrar a a soluções implementadas com limitação de poder computacional e/ou limitação de conectividade à Internet. Este protocolo atende com excelência aos requisitos da grande maioria de soluções IoT do mercado, tanto por sua leveza no tráfego de rede, escalabilidade, quanto pelo baixo consumo de recursos computacionais que exige dos dispositivos que fazem uso dele, tornando-se assim uma opção extremamente interessante para soluções que envolvem comunicação M2M e integração com plataformas em nuvem.
Sendo assim, utilizar MQTT é uma excelente escolha para quem busca eficiência no uso de recursos de rede e recursos computacionais, além de ser essencial para garantir a integração com soluções na Internet das Coisas, uma vez que é largamente presente em plataformas em nuvem.
