O que é o MosquitOS e por que alguém usaria em Ilhabela
MosquitOS é uma plataforma de programação para microcontroladores baseada em C, criada originalmente no Brasil como ferramenta educacional e de prototipagem rápida. Ela serve como uma espécie de bridge entre a linguagem C pura e abstrações de alto nível, permitindo que estudantes e desenvolvedores escrevam firmware para chips da família AVR, ESP32 e similares sem precisar ler datasheets inteiros. O projeto tem ligações com a UFRJ e o PEE-COPPE, e existe desde meados dos anos 2000. Ilhabela, a ilha no litoral norte de São Paulo, tem condições particulares que tornam o MosquitOS interessante como base de desenvolvimento. Umidade alta, variação térmica durante o dia, proximidade com o mar — tudo isso exige sensores robustos e firmware que não quebre sob condições adversas. Eu já montei um sistema de monitoramento básico ali usando um ESP32 com MosquitOS, porque a plataforma permite compilar e fazer upload rápido sem depender de ecossistemas fechados como o Arduino IDE tradicional.
Instalação e preparação do ambiente
O primeiro passo é instalar as dependências. No Ubuntu ou Debian, o comando que funciona é algo como sudo apt install mosquitto mosquitto-clients build-essential. Isso instala o broker MQTT e as ferramentas de compilação. Se você está usando Windows, aí o processo fica mais chato — recomenda-se usar WSL2 com Ubuntu embutido. Não tente rodar MosquitOS nativamente no Windows, perde tempo. Depois disso, baixe o toolkit do MosquitOS diretamente do repositório oficial no GitHub. O link é algo como github.com/mosquitto-org/mosquitOS ou projetos relacionados da UFRJ. Clone o repositório, entre na pasta e rode o script de instalação. Ele vai verificar se o compilador avr-gcc está presente e configurar o PATH corretamente. Se aparecer algum erro de dependência, instale os pacotes sugeridos e tente de novo. Costuma funcionar na segunda tentativa.
Para dispositivos ESP32, você precisa do toolchain do ESP-IDF ou do framework ESP8266, dependendo do chip. O MosquitOS suporta ambos, mas a configuração muda. Com o ESP32, defina a variável de ambiente MOSQUITTO_BOARD para esp32 antes de compilar. Sem isso, o make vai reclamar e abortar.
Configurando mosquito ilha bela como contexto de desenvolvimento
Aqui entra a parte específica. Quando o projeto é voltado para Ilhabela, o diferencial não está na plataforma em si, mas em como você configura os pinos, os sensores e o broker MQTT local. Eu recomendo criar um diretório de projeto separado dentro da pasta do MosquitOS, tipo projeto_ilhabela/, e copiar o template base de C lá. Os arquivos de configuração de hardware ficam em hardware.h e pinout.h, que você edita manualmente. No meu caso, eu mapeei o sensor DHT22 para o GPIO 4 do ESP32, o sensor de pressão BMP280 para I2C (SDA no GPIO 21, SCL no GPIO 22), e usei o MQTT para publicar os dados em um broker rodando no próprio Raspberry Pi que fica na casa onde faço o monitoramento. A porta padrão do Mosquitto é 1883, mas se você for expor isso pela internet — o que eu não recomendo sem VPN — mude a porta e coloque autenticação.
Escrevendo o firmware
O código em si é simples. Você inclui os headers do MosquitOS, define os pinos, lê os sensores e publica via MQTT. Um esqueleto básico de main.c fica assim: #include "mosquitto_os.h"
#include "hardware.h"
int main(void) {
init_mqtt("ilhabela_sensor", "localhost:1883");
init_dht22(GPIO4);
init_bmp280(I2C0);
while(1) {
float temp = read_dht22();
float press = read_bmp280();
publish_mqtt("ilhabela/temp", temp);
publish_mqtt("ilhabela/press", press);
delay_ms(5000);
}
}
Compila com make BOARD=esp32 e faz upload com make upload. O processo leva cerca de 30 segundos para compilar e alguns segundos para subir no chip. Na prática, esse loop de feedback rápido é uma das vantagens reais do MosquitOS em relação a escrever direto em C puro com makefiles manuais.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Problema real que encontrei e como resolvi
Um dia, o sensor DHT22 parava de responder aleatoriamente. O firmware travava no read_dht22() e o ESP32 precisava de reset manual. O problema era umidade condensada dentro do módulo sensor — comum em Ilhabela, onde a umidade relativa fica acima de 85% na maior parte do ano. O DHT22 não é selado, então a água condensa nos pinos e cria curtos intermitentes. A solução foi dupla. Primeiro, coloquei uma capa protetora 3D impressa com fenda para entrada de ar, mas sem exposição direta à chuva. Segundo, no firmware, adicionei um timeout de 2 segundos na leitura do DHT22. Se a leitura falhar dentro desse prazo, o código registra "NaN" no tópico MQTT e continua, em vez de travar. Fica algo como:
float read_dht22_timeout(uint8_t pin, uint16_t timeout_ms) {
uint32_t start = millis();
float val = read_dht22_raw(pin);
if (val == ERROR_TIMEOUT || millis() - start > timeout_ms) {
return NAN;
}
return val;
} Isso estabilizou o sistema completamente. O broker passa a receber dados mesmo quando o sensor falha, e o painel de monitoramento mostra "sem leitura" em vez de congelar.
Pontos cegos e limitações do MosquitOS
Existem coisas que o MosquitOS não faz bem, e é importante saber antes de investir tempo. A documentação é fragmentada — muitos exemplos estão em fóruns antigos ou em PDFs desatualizados. Se você precisa de suporte para sensores novos ou periféricos específicos, provavelmente vai ter que implementar você mesmo ou adaptar código de outro projeto. O sistema de gerenciamento de memória também é básico. Em projetos pequenos, como o de Ilhabela que descri above, funciona perfeitamente. Mas se você for adicionar muitos sensores, buffers grandes ou logging persistente, o heap do ESP32 pode estourar. Já vi casos onde o sistema reiniciava a cada hora por causa de memory leak em strings alocadas dinamicamente dentro do loop principal. A correção é alocar buffers estáticos no início do programa e reutilizá-los.
Outro problema: a comunidade de desenvolvedores de MosquitOS diminuiu bastante nos últimos anos. O projeto ainda funciona, mas atualizações são esporádicas. Se o seu projeto é crítico e precisa de manutenção a longo prazo, considere também alternativas como PlatformIO com ESP-IDF, que tem comunidade ativa e documentação atualizada.
Download e recursos
O toolkit do MosquitOS está disponível gratuitamente no GitHub. O repositório principal é mantido por contribuidores brasileiros e a licença é MIT, o que permite uso comercial e modificação livre. Para o ESP32, verifique se a versão do toolchain compatível está listada no README — versões muito novas do esp-idf às vezes quebram a compatibilidade com o makefile do MosquitOS. Para o broker MQTT, o Mosquitto pode ser instalado via pacote do sistema operacional ou rodar em Docker. Um comando rápido para subir o broker é docker run -d -p 1883:1883 -p 9001:9001 eclipse-mosquitto. Isso cria um broker com porta MQTT na 1883 e porta WebSocket na 9001, útil se quiser um painel web depois.
Se você está em Ilhabela ou qualquer local com condições similares e quer montar um sistema de monitoramento ambiental de baixo custo, o MosquitOS é uma opção válida. Não é a mais moderna, não tem UI bonita, mas funciona, é transparente e o código fonte é seu para modificar. O custo total do hardware para um nó completo com DHT22, BMP280 e ESP32 fica em torno de R$ 60 a R$ 80, dependendo de onde compra as peças.