Primeiros passos com o ESP32 e broker MQTT

Finalmente recebi as placas ESP32 que havia comprado no Aliexpress.
Já possuo algumas placas como Arduino Nano, Mini e Uno, mas nenhuma dessa outra linha.

Abaixo um pouco sobre a configuração e seus recursos. Mais informações podem ser obtidas em www.esp32.com.

Legenda dos sinais para ESP32-DevKitC. (https://www.esp32.com)
Diagrama de blocos de componentes internos do ESP32. (https://www.sparkfun.com)

Como aplicação exemplo, resolvi fazer um teste implementando a conectividade entre ela, um broker na cloud e uma app android como origem de controle.

Broker MQTT na cloud

Para esse tipo de projeto é comum a utilização de brokers na nuvem, onde alguns oferecem contas gratuítas com algumas limitações.

Inicialmente esperava utilizar a io.adafruit.com, porém tive problemas para conseguir postar no feed, então parti para outro broker, o cloudmqtt.com.

Nesse serviço, pode-se criar uma conta gratuíta (Cute Cat) a partir de um e-mail válido. Logo após a criação da conta, será solicitado um local para criação da instância.

Acessando a instância, temos a lista de informações da conta em Details. Nesta seção as informações abaixo serão utilizadas para conectar ao broker:
- Server
- User
- Port

Seção details do cloudmqtt.com

No menu Websocket UI, através do formulário Send Message, é possível postar mensagens para os tópicos.

Postando mensagem em um tópico pela interface web do cloudmqtt.com

Existem mais opções que são úteis como:
- Connections: permite verificar conexões estabelecidas;
- Users & ACLS: permite adicionar novos usuários e definir restrições como leitura e escrita sobre os tópicos;
- Log: acompanhar o log de interação de conexões de usuários com a conta.

Aplicação para o ESP32

Para validar o conceito, busquei alguns exemplos na internet e cheguei ao código abaixo, onde ocorrem ações básicas como:
- estabelece conexão na rede wi-fi;
- conecta ao broker;
- posta uma mensagem de hello world no tópico esp/test;
- define a aplicação como subscriber desse mesmo tópico com a função callback, para receber mensagens que o mesmo obtém do tópico;

É necessário algumas melhorias de organização no código, além de reconexão, upload do código pela rede wi-fi, etc…

Nesse exemplo foram utilizadas bibliotecas básicas. Espero fazer uma nova tentativa com o broker da Adafruit usando as bibliotecas da própria empresa.

App MQTT Dash

Para fazer a publicação de mensagem no tópico, utilizei o aplicativo MQTT Dash. Possui uma interface amigável para adicionar widgets, que vão de leitores, botões switchs, lista de opções e outros controles.

O uso do mesmo é muito simples, basta criar a conexão com o broker definido para a aplicação, informando: host, porta, usuário e senha.

Após isso criar os controles adicionando widgets na seção de tela daquele broker, associando estes aos tópicos e aos seus respectivos valores que serão aplicados. No meu caso, criei um botão do tipo switch que posta no tópico esp/test o conteúdo “0” ou “1”. Como no código fone acima acima, 0 define o led como LOW e 1 como HIGH, obtemos o resultado do led ligando e desligando, conforme o vídeo abaixo.

ESP32 e MQTT Dash

Espero poder explorar mais essa placa, mas o fato é: fica muito fácil prototipar aplicações como essa, por ela já estar pronta, ou seja, já possui toda a parte de conectividade (wi-fi e bluetooth) na própria placa, sem a necessidade de adicionar outros módulos para tal.