Este projeto demonstra a implementação do protocolo MQTT (Message Queuing Telemetry Transport) utilizando o framework ESP-IDF em uma placa ESP32-C6. O objetivo da atividade foi estabelecer uma comunicação bidirecional (Publicação e Assinatura) entre o microcontrolador e um Broker local configurado em uma máquina com sistema operacional Fedora.
- Hardware: ESP32-C6-DevKitM-1.
- Framework: ESP-IDF v5.2.2 (ou superior).
- Broker: Mosquitto MQTT instalado localmente no Fedora.
- Cliente de Teste: MQTTX para monitoramento e envio de comandos.
- Linguagem: C.
O broker foi configurado no Fedora para aceitar conexões externas e permitir acesso anônimo.
Arquivo de configuração (/etc/mosquitto/mosquitto.conf):
listener 1883 0.0.0.0
allow_anonymous true
A porta 1883/tcp foi liberada no firewall do Fedora para permitir a comunicação vinda do ESP32:
sudo firewall-cmd --add-port=1883/tcp --permanent
sudo firewall-cmd --reloadO firmware utiliza a biblioteca oficial esp-mqtt. A lógica principal baseia-se em:
- Conexão automática à rede Wi-Fi através do componente
protocol_examples_common. - Inicialização do cliente MQTT apontando para o IP do Host (
192.168.1.7). - Evento CONNECTED: Publica uma mensagem de status em
ifpb/c6/statuse se inscreve no tópicoifpb/c6/comando. - Evento DATA: Captura mensagens enviadas pelo Broker e as exibe no monitor serial.
case MQTT_EVENT_DATA:
ESP_LOGI(TAG, "MENSAGEM RECEBIDA DO MQTTX!");
printf("Tópico: %.*s\r\n", event->topic_len, event->topic);
printf("Dados: %.*s\r\n", event->data_len, event->data);
break;A atividade foi validada com sucesso:
- Monitor Serial: O ESP32 logou a conexão e exibiu os payloads JSON enviados via MQTTX.
- MQTTX: Recebeu a confirmação
"ESP32 Ativo"assim que o hardware foi reiniciado. - Infraestrutura: O Broker Mosquitto no Fedora gerenciou corretamente as sessões de ambos os clientes na mesma sub-rede.
main/: Código fonte e lógica do protocolo.idf_component.yml: Gerenciamento de dependências..gitignore: Configurado para ignorar as pastasbuild/e.vscode/.
Aluno: Rodrigues
Disciplina: IoT
Instituição: IFPB