IoT DevKit - 17. Recebimento de Dados por Bluetooth




Introdução

No tutorial anterior aprendemos como utilizar os pinos virtuais do aplicativo Blynk para enviar dados do IoT DevKit. É possível fazer o caminho inverso, ou seja, enviar dados do aplicativo para o kit, também utilizando os pinos virtuais. O exemplo que vimos no tutorial de introdução à conectividade Bluetooth do kit é uma forma bem simples de envio de dados do aplicativo para a placa (utilizando os pinos físicos do ESP32). Porém, o controle que será utilizado neste tutorial é mais completo e uma ferramenta extremamente poderosa para diversas aplicações.

Neste tutorial veremos como receber dados do aplicativo através dos pinos virtuais, para acender a apagar o LED do kit assim que uma determinada mensagem for recebida.

Lista de Materiais

Configuração do Aplicativo

Como vamos acionar o LED do kit através de uma determinada mensagem, temos que excluir o "Widget" de botão que criamos no primeiro tutorial. Para isso, toque sobre o "Widget" e segure-o durante alguns instantes. Isso fará com que ele entre em modo de edição, podendo movê-lo, e será exibido na tela um ícone de reciclagem no canto superior direito da tela, como demarcado na imagem a seguir.

icone-reciclagem
Ícone de Reciclagem

Quando esse ícone for exibido, arraste o "Widget" sobre ele para que ele seja reciclado. Isso fará com que o "Widget" seja removido do painel e que os créditos gastos com ele sejam retornados para o projeto. Feito isso, clique sobre o botão de adicionar um "Widget" ao painel, e então busque pela opção "Terminal", como demarcado na imagem a seguir.

widget-terminal-encontrado
"Widget" "Terminal" Encontrado

Assim que encontrar essa opção, toque sobre ela para que ela seja adicionada ao painel, como na próxima imagem.

widget-adicionado
"Widget" Adicionado

Com o "Widget" adicionado, toque sobre ele para editá-lo. Quando a janela de configuração for aberta, digite um nome para ele, altere o pino virtual dele para "V1", e selecione a opção "ADD NEWLINE". Por fim, o seu "Widget" deve estar configurado como o da imagem a seguir.

widget-configurado
"Widget" Configurado

Após finalizar a configuração, será possível observar o painel completo com apenas três "Widgets".

Código

Com o aplicativo configurado, carregue o código a seguir para o seu ESP32. Lembre-se apenas de alterar a variável CHAVE_AUTENTICACAO com a chave de acesso do seu projeto no aplicativo, antes de carregar o código.

Entendendo o Código

As bibliotecas e funções deste código são exatamente as mesmas dos códigos utilizados anteriormente. Entretanto, além destas inclusões, nós também declaramos a variável PINO_LED, que armazena o pino em que o LED do kit está conectado, e o objeto terminal como instância da classe "WidgetTerminal", que já é incluída no código com a biblioteca principal do Blynk.

Em seguida temos a função BLYNK_WRITE(V1), que é responsável por ler o pino virtual "V1" do aplicativo sempre que ele for atualizado. Quando isso acontecer, o terminal terá suas informações salvas e apagadas graças ao comando terminal.clear(). Feito isso, verificamos se mensagem enviada no terminal do aplicativo é igual a "HIGH" através da condição if (String("HIGH") == param.asStr()) (a função param.asStr() retorna a mensagem enviada pelo terminal como uma String) e, se for, acendemos o LED do kit e informamos isso tanto no terminal quanto no monitor serial. Caso a mensagem não seja igual a "HIGH", verificamos se ela é igual a "LOW". Se for, apagamos o LED do kit, e então informamos isso no terminal e no monitor serial. Entretanto, caso a mensagem enviada não seja nenhuma dessas duas, apenas informamos no terminal e no monitor serial qual foi a mensagem enviada. Para finalizar a função BLYNK_WRITE(V1), temos o comando terminal.flush(), que basicamente garante que a mensagem seja enviada pelo ESP32.

Já na configuração do código, além de inicializamos o monitor serial e a execução do Blynk com a chave de autenticação, também configuramos a variável PINO_LED como uma saída do sistema através do comando pinMode(PINO_LED, OUTPUT).

O Que Deve Acontecer

Após carregar o código para a placa e inicializar o painel do aplicativo, digite "HIGH" no terminal do aplicativo, e então envie a mensagem. Isso fará com que o monitor serial e o terminal do Blynk se atualizem, como nas imagens abaixo.

resposta-monitor-serial
Resposta no Monitor Serial
resposta-terminal
Resposta no Terminal

Juntamente com isso, será possível observar que o LED do kit acendeu, como na imagem a seguir.

led-atualizado
LED Atualizado

Caso queira apagar o LED, basta enviar a mensagem "LOW", que também será exibida no monitor serial e no terminal do aplicativo, como nas próximas imagens.

resposta-monitor-serial
Resposta no Monitor Serial
resposta-terminal
Resposta no Terminal

Caso a mensagem enviada pelo terminal seja diferente das duas que foram configuradas pelo código, ela será apenas exibida no terminal e no monitor serial, como nas imagens a seguir.

resposta-monitor-serial
Resposta no Monitor Serial
resposta-terminal
Resposta no Terminal

Conclusão

Neste tutorial vimos como receber dados enviados pelo aplicativo Blynk e como utilizá-los para acionar uma carga externa dependendo da mensagem que foi enviada.

Solução de Problemas

Se mesmo seguindo as soluções propostas abaixo você não conseguir solucionar o seu problema, encaminhe um e-mail para suporte@robocore.net para que possamos te ajudar da melhor maneira possível.

Dispositivo "Blynk" não é Apresentado na Lista de Dispositivos Conectáveis

Se mesmo após carregar o código da página o ESP32 não for apresentado com o nome "Blynk" na lista de dispositivos do aplicativo, verifique se a chave de acesso ao seu projeto foi corretamente inserida no código e certifique-se que a conectividade Bluetooth está ativada em seu celular. Além disso, vale lembrar que o celular deve estar desconectado de qualquer outro dispositivo Bluetooth para que ele possa listar dispositivos disponíveis no aplicativo e se conectar ao ESP32.

Dispositivo "Blynk" é Apresentado, mas não se Conecta ao Aplicativo

Se isso ocorrer, verifique a chave de acesso inserida no código, pois ela pode estar incorreta ou incompleta.

Mensagem Enviada não Altera o Estado do LED e não é Apresentada no Monitor Serial

Caso isso aconteça, verifique a configuração do "Widget", pois provavelmente ele está configurado com outro pino virtual ao invés do pino "V1".

Avatar