O ESP32 tem suporte para Bluetooth Classic e Bluetooth Low Energy. Aqui vamos nos concentrar no Bluetooth Low Energy. Vamos ver em detalhes.
O que é Bluetooth Low Energy
BLE ou Bluetooth Low Energy é um modo de economia de energia do Bluetooth. Seu aplicativo principal inclui transferência de dados em distâncias curtas, como entrada de porta, relógios inteligentes, wearables, monitor de pressão arterial, segurança e automações domésticas. Ble pode transferir dados limitados.
Ao contrário do clássico Bluetooth, que permanece ativado o tempo todo, o ble permanece no modo de suspensão, exceto quando é chamado ou a conexão é iniciada. Isso torna o ble muito eficiente em termos de energia e consome 100 vezes menos energia do que o clássico.
Aqui está uma breve comparação do Bluetooth Classic com Bluetooth Low Energy:
Especificação | Bluetooth Classic | Bluetooth Low Energy/BLE |
Taxa de transferência de dados | 2-3Mbps | 1Mbps |
Faixa | ~ 10-100m | ~ 50m |
Frequência de operação | 79 RF | 40 RF |
Consumo de corrente de pico | ~ 30Ma | <15mA |
Consumo de energia | 1w | 0.01-0.5W |
Tempo total para enviar dados | 100ms | 3ms |
Formulários | Áudio, streaming de música | Sensor, wearables |
Para uma comparação mais detalhada, clique aqui para visitar o site oficial do Bluetooth.
Servidor e cliente BLE
Bluetooth Low Energy suporta o dispositivo de duas maneiras diferentes: servidor e cliente. O ESP32 pode atuar como servidor e cliente para Bluetooth de baixa energia.
Suporte a seguir os seguintes modos de comunicação:
Ao atuar como servidor, a ESP32 anuncia sua existência para dispositivos clientes próximos. Uma vez que os dispositivos clientes digitalizem os dispositivos Bluetooth disponíveis, o servidor estabelece a conexão entre eles e transfere os dados do servidor para o dispositivo cliente. Esta comunicação é chamada de ponto a ponto.
Neste tutorial, daremos um exemplo de comunicação ponto a ponto entre duas placas ESP32.
Termos importantes em ble
Aqui estão alguns termos importantes que devemos saber ao trabalhar com aplicativos ESP32 BLE:
Gatt: Atributos Gatt ou genéricos que definem uma estrutura hierárquica para transferências de dados entre dispositivos BLE usando serviço e característica. Ele define como dois dispositivos comunicam dados entre eles.
Serviço ble: Nível superior dentro da hierarquia gatt é um perfil que contém um ou mais serviços. Ble contém mais de um único serviço. Cada um desses serviços tem suas próprias características que também podem atuar como referência para outros serviços.
Característica ble A característica é um grupo de informações sempre pertencentes ao serviço; É onde os dados reais são armazenados na hierarquia (valor). Ele sempre contém dois atributos:
Uuid: UUID (identificador universalmente único) é um ID único dado a um serviço e característica. É um ID único de 128 bits que pode ser gerado usando qualquer gerador UUID online. Verifique este gerador uuid grátis. Uma amostra uuid se parece com o seguinte:
583F8B30-74B4-4757-8143-56048FD88B25Um grupo universal de interesse especial do Bluetooth (SIG) predefinou alguns dos UUIDs reduzidos para diferentes tipos de serviços e perfil para lê -los clique aqui.
Configurar o BLE no ESP32 com Arduino IDE
Para entender o funcionamento do BL, usaremos duas placas ESP32 diferentes, uma delas agirá como servidor e anuncie um sinal Bluetooth enquanto o outro ESP32, que está agindo como um cliente Vou tentar conectar o servidor Bluetooth.
Arduino IDE tem exemplos separados para o scanner e o servidor.
Para ver como instalar um ESP32 com Arduino IDE no Windows, clique aqui.
Esp32 BLE Server
Primeiro, enviaremos o código de exemplo do servidor dentro de nossa primeira placa ESP32, que está atuando como um servidor.
Para abrir o exemplo do servidor, vá para: Arquivo> Exemplos> Esp32 Ble Arduino> ble_server:
O código dado abaixo será aberto no Arduino IDE.
Código do servidor
Carregue o código abaixo na placa ESP32 usando o Arduino IDE. Mas certifique -se de desconectar a segunda placa por um tempo para evitar o upload do mesmo código para uma única placa.
#incluirO código começa com a inclusão de arquivos necessários da biblioteca Bluetooth. Então uuid é definido para serviço e característica. Você pode ir com o UUID padrão ou pode gerar usando o gerador UUID gratuito. A próxima comunicação serial é inicializada definindo a taxa de transmissão.
Em seguida, criamos um dispositivo BLE chamado Esp32. Depois disso, definimos o dispositivo BLE como um servidor usando o CreateServer () função e mais tarde definimos o valor característico. Na etapa final, iniciamos o serviço anunciando -o para que outros dispositivos possam pesquisá -lo.
Esp32 Ble Scanner
Agora vamos fazer upload de um exemplo de varredura ESP32 na segunda placa ESP32. Para fazer isso, vá para: Arquivo> Exemplos> Esp32 Ble Arduino> ble_scan
O código abaixo será aberto no Arduino IDE Editor.
Código do scanner
#incluirO código acima procurará o número total de dispositivos disponíveis para BLE e exibirá sua contagem total com endereços. Depois de fazer upload do código na placa de scanner Esp32, pressione o Habilitar Botão, a placa ESP32 pesquisará automaticamente os dispositivos disponíveis.
Saída
Depois que o ESP32 verifica os dispositivos disponíveis, o seguinte resultado aparecerá. Aqui, o ESP32 digitalizou 9 dispositivos entre os quais um é uma placa ESP32 com código ble_server e outro dispositivo é a banda Mi 6. Resto de todos os dispositivos está disponível perto do meu ESP32.
Como consertar a biblioteca de varredura ESP32 BLE não contando dispositivos
O exemplo da biblioteca de varredura ESP32 tem um bug de não contar o número total de dispositivos. Para corrigir esse problema, vá para o local mencionado e substitua o código abaixo.
C: \ Usuários \ Nome de usuário \ AppData \ Local \ Arduino15 \ Pacotes \ Esp32 \ Hardware \ Esp32 \ 1.0.6 \ bibliotecas \ ble \ src \ blascan.cppLembrar de uncida Todas as pastas porque a pasta AppData dentro do diretório C permanece oculta por padrão. Depois de abrir o arquivo de origem ble_scan .cpp Substitua a condição abaixo dada dentro do código.
if (m_padvertisedDeviceCallbacks)Testando o servidor esp32 ble com smartphone
A maioria dos smartphones modernos trabalha com a tecnologia BLE para se comunicar com diferentes dispositivos, como smartwatch, wearables, sensores e outros dispositivos de automação residencial. Aqui a placa ESP32 atuará como um ponto de acesso. Então, vamos conectar um telefone Android com uma placa ESP32.
Código do servidor ble para acesso ao smartphone ESP32
Carregue o código dado abaixo na placa ESP32.
#include /*biblioteca Bluetooth incluída* /Instalando o aplicativo BLE no smartphone Android
As etapas a seguir o guiarão a instalar aplicativos BLE em smartphones e ajudarão a interface os dispositivos móveis com as placas ESP32.
Passo 1: Open Google Play Store Install Scanner ble aplicativo.
Passo 2: Após a instalação, abra o aplicativo e permita toda a permissão necessária e lembre -se de ativar o celular Bluetooth.
Etapa 3: Agora digitalize os dispositivos Bluetooth disponíveis. Conecte a placa ESP32.
Passo 4: Depois que a placa ESP32 estiver conectada ao smartphone após a especificação da placa ESP32 aparecerá. Aqui podemos ver os endereços UUID e podemos ler e escrever novos valores característicos.
Etapa 5: Para ler o valor da característica salva clique R. Resultado será exibido.
Etapa 6: Para escrever qualquer novo valor de característica, clique C.
Etapa 7: Um novo pop -up aparecerá aqui, podemos escrever qualquer valor característico e clicar OK.
Etapa 8: Novo valor que está escrito aparecerá.
Etapa 9: Além disso, podemos ver o mesmo novo valor característico impresso no monitor serial do Arduino IDE.
Nós conectamos com sucesso um dispositivo com esp32 ble.
Conclusão
O ESP32 vem com Bluetooth duplo que é clássico e de baixa energia. Aqui neste artigo, discutimos BL e suas várias aplicações e trabalho. Mais tarde, configuramos o BLE com duas placas ESP32 diferentes com uma atuação como servidor e outra como scanner. Por fim, conectamos nosso smartphone com o servidor ESP32 e escrevemos um novo valor característico.