- Introdução ao ESP32 Bluetooth
- Compreendendo o Bluetooth de baixa energia (BLE) e o ESP32 Classic Bluetooth
- Preparando Arduino IDE para ESP32
- Programa de Bluetooth serial para ESP32
- Testando Bluetooth Serial com ESP32
Módulos Bluetooth como HC-05 e HC-06 são fáceis de configurar e rápidos de usar com Arduino IDE, mas eles têm suas próprias limitações, como alto consumo de energia, e operam no antigo Bluetooth V2.0. Além disso, recentemente eu comprei um novo kit ESP32 DEV, esses módulos têm uma série de recursos como Wi-Fi e Bluetooth embutidos, amplos pinos ADC e DAC, suporte de áudio, suporte para cartão SD, modo de sono profundo etc. quase tem tudo para construir projetos de IoT.
E assim como qualquer amador adoraria, o ESP32 agora é oficialmente suportado pelo IDE do Arduino. Anteriormente, tivemos que fazer uma grande solução alternativa com a Biblioteca Neil Kolbans, mas agora, graças ao trabalho árduo desse cara, programar o ESP32 com o IDE do Arduino se tornou uma tarefa fácil. Portanto, lancei meu IDE Arduino e passei por alguns programas BLE de exemplo, por meio dos quais não entendi nada. Depois de muito surfar e fazer youtubing, percebi que há muito mais coisas para entender se você tiver que trabalhar com Bluetooth Low Energy (BLE) usando ESP32. Decidi cobrir o BLE em artigos separados, então aqui usaremos o Bluetooth Serial Clássico do ESP32 para alternar um LED usando o Smart Phone. Se você estiver interessado em verificar como usar os recursos do BLE, consulte este artigo no ESP32 BLE Server e ESP32 BLE Client
Introdução ao ESP32 Bluetooth
O primeiro programa que eu queria experimentar era um programa simples com o qual eu pudesse ligar ou desligar um LED de um aplicativo Terminal Bluetooth de um celular, assim como o bom e velho HC-05 dias. Mas acontece que o Bluetooth Low Energy (BLE) não foi criado para isso. Também descobri que existem dois tipos de Bluetooth no módulo ESP32, um é o Bluetooth Clássico e o outro é o Bluetooth BLE de baixa energia. Ok, mas por quê?…. por que temos dois tipos de Bluetooth e o que devo usar no meu projeto?
Compreendendo o Bluetooth de baixa energia (BLE) e o ESP32 Classic Bluetooth
O Bluetooth Low Energy, como o nome indica, consome menos energia do que o Bluetooth clássico. Isso é obtido através do envio de dados conforme necessário com atualizações periódicas predefinidas. Mas, ao contrário do Bluetooth clássico, não é usado para transferir arquivos ou músicas. Você já se perguntou como seu telefone identifica automaticamente que o dispositivo Bluetooth que você acabou de emparelhar é um dispositivo de áudio ou um laptop ou telefone? Você também pode ter visto que o nível da bateria no reprodutor de áudio sem fio ou faixa de fitness é mostrado automaticamente na barra de status seu celular; tudo isso é possível com as características dos dispositivos BLE. Um dispositivo BLE funciona com Bluetooth V4.0 e pode operar com baixa energia como servidor ou cliente, o que tornaBLE uma escolha ideal para beacons, relógios inteligentes, bandas de fitness etc.
O Bluetooth clássico, por outro lado, é apenas o velho e simples Bluetooth que usamos para transferir arquivos e outros dados. Quase todos os dispositivos BLE têm a funcionalidade Bluetooth Clássica associada a ele. O Bluetooth usado em módulos como o HC-05 é uma versão do Bluetooth clássico chamado Bluetooth SSP (Serial Port Protocol), ou seja, o Bluetooth segue o protocolo serial padrão que facilita o envio e recebimento de dados sem muita sobrecarga. No final deste tutorial, aprenderemos como usar a funcionalidade Serial Bluetooth no ESP32.
Aqui neste artigo , usaremos a função Bluetooth serial no ESP32 para emparelhá-lo com um smartphone e usar qualquer aplicativo Terminal Bluetooth existente da Play Store para enviar comandos ao ESP32 e alternar o LED integrado de acordo.
Em artigos posteriores, cobriremos o ESP32 BLE como servidor e também como cliente. O servidor BLE é geralmente usado para enviar dados BLE para outros dispositivos Bluetooth e o cliente BLE é usado para fazer a varredura de outros dispositivos BLE, agindo assim como beacon.
Preparando Arduino IDE para ESP32
Observe que o IDE do Arduino, por padrão, não oferece suporte à placa ESP32; você deve baixá-los e instalá-los usando o gerenciador de placa. Se este for seu primeiro programa com ESP32, siga este tutorial de introdução para adicionar a placa ESP32 ao Arduino e fazer upload de um esboço de teste.
Além disso, você pode fazer mais projetos com o ESP32, sem usar nenhum microcontrolador com ele.
Programa de Bluetooth serial para ESP32
O programa completo para alternar um LED usando ESP32 Bluetooth é fornecido no final desta página. Sob este título, vamos dividir o código em pequenos trechos e tentar entendê-los. Se você já usou outros módulos Bluetooth como o HC-05, você verá que este programa de exemplo ESP32 Bluetooth Classic é muito semelhante.
A ideia do programa é inicializar uma conexão Bluetooth serial usando ESP32 e ouvir os dados de dispositivos emparelhados. Se os dados de entrada forem '1', então ligamos o LED e se for '0', devemos desligar o LED. Começamos nosso programa adicionando o arquivo de cabeçalho BluetoothSerial que faz o ESP32 Bluetooth funcionar como Bluetoth SSP.
#include "BluetoothSerial.h" // Arquivo de cabeçalho para Bluetooth serial, será adicionado por padrão ao Arduino
Há muitas coisas acontecendo por trás dessa biblioteca, mas optamos não nos aprofundar nisso para manter as coisas simples. A próxima coisa de que precisamos é um objeto para nossas operações relacionadas ao Bluetooth. Aqui, chamei o meu de ESP_BT , mas você pode escolher qualquer nome.
BluetoothSerial ESP_BT; // Objeto para Bluetooth
A seguir, dentro da função void setup () . Começamos a comunicação serial com taxa de baud 9600 e inicializamos o sinal Bluetooth com um nome. Aqui, chamei-o de “ESP32_LED_Control ”, este será o nome que será encontrado por nosso telefone ao tentar emparelhar. Finalmente, declarei o pino de LED embutido como pino de saída, já que vamos alterná-lo com base no sinal Bluetooth.
void setup () { Serial.begin (9600); // Iniciar o monitor serial em 9600 ESP_BT.begin ("ESP32_LED_Control"); // Nome do seu sinal Bluetooth Serial.println ("Dispositivo Bluetooth está pronto para emparelhar"); pinMode (LED_BUILTIN, OUTPUT); // Especifique se o pino do LED é emitido }
Dentro da função de loop vazio infinito, verificamos se há algum dado vindo do módulo Bluetooth, se sim então os dados são lidos e armazenados na variável de entrada . Também imprimimos esse valor no monitor Serial apenas para verificar o que está sendo recebido pelo Arduino.
if (ESP_BT.available ()) // Verifique se recebemos algo do Bluetooth { entrando = ESP_BT.read (); // Leia o que recebemos Serial.print ("Recebido:"); Serial.println (entrada);
Agora, quaisquer dados recebidos são armazenados na variável entrando , então podemos comparar diretamente esta variável com o valor esperado e realizar a ação necessária. Mas o valor enviado do Bluetooth estará na forma de char e o Arduino lerá o valor decimal do char que está sendo enviado do telefone. No nosso caso para char '0' o valor decimal será 48 e para char '1' o valor decimal será 49. Você pode consultar o gráfico ASCII para entender qual será o valor decimal para cada caractere.
Aqui , comparamos a variável de entrada com 48 e 49 para verificar 0 e 1, respectivamente. Se for 1, desligamos o LED e também imprimimos uma mensagem de confirmação para o Bluetooth, informando que o LED foi desligado e vice-versa para 0.
if (entrando == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED ligado"); } if (entrando == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED apagado"); }
Testando Bluetooth Serial com ESP32
Conecte seu ESP ao seu Arduino IDE e selecione a placa e a porta corretas conforme discutido no tutorial de introdução. Uma vez que é um 3 rd gerente de bordo partido que pode demorar um pouco mais para o código para se compilado e carregado. Uma vez carregado, inicie os monitores seriais (apenas para depuração) e abra a configuração de Bluetooth no seu telefone. Você deve encontrar um dispositivo Bluetooth chamado ESP32_LED_Control par com.
Agora você pode abrir qualquer aplicativo de terminal Bluetooth em seu smartphone, estou usando o chamado “Terminal Bluetooth”, que foi baixado da Google App Store. Conecte o aplicativo Bluetooth ao dispositivo que acabamos de emparelhar, digite 1 e pressione enviar.
O módulo ESP32 deve recebê-lo e ligar o LED de acordo com nosso programa e também dar a você uma mensagem de confirmação dizendo que o LED está LIGADO como a imagem mostrada acima. Você também pode verificar o monitor Serial que mostrará os dados que estão sendo recebidos pelo ESP32 Bluetooth em formato decimal, ou seja, seu Arduino lerá 48 para 0 e 49 para 1 conforme explicado anteriormente. O instantâneo da janela do meu terminal é mostrado abaixo.
Da mesma forma, você também deve ser capaz de desligar o LED enviando 0 do aplicativo móvel. O trabalho completo é mostrado no vídeo abaixo. Espero que você tenha entendido o tutorial e aprendido algo útil. Se você tiver alguma dúvida, fique à vontade para deixá-la na seção de comentários abaixo ou utilize nossos fóruns para outras ajudas técnicas.