Índice:

Como usar o Bluetooth (BLE) com ESP32: 3 etapas
Como usar o Bluetooth (BLE) com ESP32: 3 etapas

Vídeo: Como usar o Bluetooth (BLE) com ESP32: 3 etapas

Vídeo: Como usar o Bluetooth (BLE) com ESP32: 3 etapas
Vídeo: ESP32, o Arduino que já vem com Bluetooth e WiFi. Saiba como programar para conectar no celular. 2024, Junho
Anonim

#####NOTA#####

O método mostrado neste Instructables é antigo e desatualizado. Assista a este vídeo para conhecer o método mais recente.

###############

Enquanto o ESP32 possui uma extensa lista de recursos (Wikipedia), o maior recurso que chama a atenção é o bluetooth v4.2 integrado com suporte BLE. Mas essa afirmação pode ser enganosa, enquanto o hardware está lá, o suporte de software para usar o Bluetooth está ausente. (Está em desenvolvimento)

Para quem não sabe o que é BLE, significa Bluetooth Low Energy. É um protocolo bluetooth que aumenta o consumo de energia consideravelmente menor em comparação com o Bluetooth "clássico".

Neste Instructables, vou mostrar como você pode usar os recursos limitados (software) à sua disposição para enviar dados de uma placa ESP32 para o seu telefone por BLE.

Algumas isenções de responsabilidade …

Devo mencionar algumas coisas antes de prosseguir com este guia.

Nota 1: Quando digo que o suporte a Bluetooth ainda não está disponível, quero dizer no ambiente de desenvolvimento arduino.

O suporte pode muito bem estar disponível no SDK oficial assim como no IDF mas não encontrei nenhuma instrução competente para eles.

Nota 2: O método que estou usando é muito mais uma solução alternativa e não como BLE deve funcionar idealmente. O suporte da biblioteca para a criação de serviços em BLE não está aqui para o ambiente arduino.

A única coisa que você pode fazer com segurança é criar um Beacon que divulgue seu nome. Um comentário do YouTube colocou de forma muito elegante: "LOL, um hack brutal. Mas o que você pode fazer?"

Nota 3: o único tipo de dado que você pode enviar é string.

Você pode muito bem decidir codificar e decodificar outros tipos de dados de e para string, mas isso está além do escopo deste guia.

Etapa 1: o exemplo de compilação

Image
Image
O Exemplo de Compilação
O Exemplo de Compilação
O Exemplo de Compilação
O Exemplo de Compilação
O Exemplo de Compilação
O Exemplo de Compilação

Se você está aqui apenas para obter a explicação, pode pular esta etapa, mas passar por ela pode lhe dar um pouco mais de clareza.

Primeiro, vou construir um projeto de exemplo e, em seguida, vou tentar explicar como funciona e como você pode replicar a comunicação Bluetooth. Estaremos construindo um sensor de temperatura portátil que envia um feed ao vivo para o seu smartphone. A compilação pode ser executada por dias em um único li-po e demonstra facilmente os benefícios do BLE.

Você pode usar o módulo como um descanso para isolar suas bebidas e receber uma notificação assim que sua bebida atingir a temperatura ideal. Porque seria uma caricatura se você tivesse que bebericar um chá com um grau acima de 40.

O único hardware de que você precisa é uma placa ESP32 e um sensor digital de temperatura. Minha placa suporta bateria externa, então estou usando um li-po 3,7v que recuperei de algum dispositivo antigo para tornar este projeto portátil.

Hardware

As conexões para o sensor de temperatura são simples. O fio vermelho se conecta a 3,3 V, o preto se conecta ao aterramento (gnd), o amarelo se conecta ao GPIO 2, que na minha placa está marcado como D9. Conecte um resistor de 4,7 k ohm entre os fios vermelho e amarelo. Não estou usando o resistor, em vez disso, estou usando um terminal plugável de 3 pinos que acompanha meu sensor. Ele tem um resistor pull up embutido.

O li-po deve realmente ser conectado usando um conector JST, mas não me dei ao trabalho de comprar um, então apenas calcei alguns cabos de jumper (fêmea para fêmea) no conector e soldou outro par aos terminais da bateria. Isso proporciona uma conexão confiável e um interruptor de alimentação improvisado.

Agora, como um invólucro do projeto, estou usando um disco de isopor que foi cortado de uma folha maior. Isso é um ótimo isolante. Outro disco muito menor está preso na parte superior, mas um pouco para o lado. Isso é para embrulhar o comprimento extra dos fios para que não fiquem pendurados por todo o lugar. Depois de usar generosamente sua cola e fazer um pequeno orifício para a sonda do sensor, você está pronto para prosseguir com o software.

Programas

Se você ainda não instalou o IDE do arduino, acesse este link para fazer o download. O software arduino por padrão não vem com as definições de placa para as várias placas ESP32. Para que eles acessem este link e baixem os arquivos em um zip. Você precisa descompactá-los neste local:

C: / Usuários // Documentos / Arduino / hardware / espserrif / ESP32

Onde está o seu nome de usuário no seu PC. Certifique-se de que os vários arquivos estejam disponíveis na pasta ESP32 e não em outra pasta.

Agora, se você iniciar o software arduino e acessar ferramentas-> placas, deverá ver várias placas ESP32 ao rolar a tela para baixo.

A maioria dos sensores de temperatura digital usa o protocolo OneWire para se comunicar com os microcontroladores, portanto, precisamos obter a biblioteca. Vá para esboço-> incluir biblioteca-> gerenciar bibliotecas e pesquise onewire e instale a biblioteca que contém muitos autores. Você não precisa do hub onewire. Ignore isto.

Agora você pode baixar e abrir o código anexado a esta etapa (temperatura-exemplo.ino).

Se você estiver usando um sensor diferente do meu, terá que alterar o código de acordo. Substitua o código em getTemp (). Basta retornar a temperatura final na forma de

Retornar;

Onde está o flutuador contendo a temperatura.

Conecte a placa, selecione a placa e a porta corretas em ferramentas e clique em upload.

Se o código se recusar a fazer o upload, desconecte o sensor e conecte o GPIO 0 ao aterramento. Restaure as conexões após o upload.

Seu PES agora deve estar gritando a temperatura do seu café para o mundo, mas você precisa de alguém que possa entendê-lo.

O aplicativo Android

Usuários de iPhone desculpem (… não realmente).

Baixe o apk aqui e instale-o. Ao iniciar o aplicativo, você será saudado com uma interface muito simples.

Se receber uma mensagem de erro dizendo 'publicidade não suportada', clique em OK e ignore-a, mas se receber uma mensagem de que 'BLE não é suportado', seu telefone não tem Bluetooth 4.0 ou superior e não será capaz de funcionar a aplicação.

Certifique-se de que o Bluetooth em seu telefone está ligado e clique em ‘Iniciar varredura’, enquanto o esp estiver dentro do alcance e ligado, você deve receber algum valor de temperatura.

Possíveis erros:

  • -1000:: Isso significa que seu dispositivo não conseguiu encontrar o ESP. certifique-se de que o Bluetooth está ligado e tente reiniciar o ESP.
  • SNA:: Isso significa que seu telefone está recebendo dados do ESP, mas o próprio ESP não conseguiu encontrar um sensor de temperatura no GPIO 2. Certifique-se de que as conexões estão seguras, veja se você está usando um resistor com o valor correto. Verifique com o esquema da placa se você está conectado ao GPIO 2 e não a um pino marcado como D2.

Etapa 2: a explicação

O BLE normalmente funciona quando um dispositivo anuncia seu nome como um beacon, esse nome pode ser visto por qualquer pessoa e é usado para identificar o dispositivo. Em seguida, o dispositivo pode criar vários serviços que são vistos por outras pessoas quando se conectam a ele. Esses serviços podem ter diferentes fluxos de dados.

Por exemplo. Um dispositivo denominado ‘Estação Meteorológica’ pode receber manutenção como ‘Temperatura’, ‘Umidade’ e ‘Vento’. Quando outro dispositivo BLE como o seu smartphone procura por dispositivos, ele veria a Estação Meteorológica e quando se conectasse a ela, seria capaz de receber os fluxos de dados correspondentes aos diferentes serviços.

As bibliotecas (para o ESP32) que estão disponíveis atualmente nos permitem criar um farol que outros podem descobrir, mas é só isso. Não podemos criar serviços e nenhum dispositivo pode se conectar a ele.

Então, estou enviando dados sem criar serviços, empregando uma técnica semelhante ao protocolo WiFi chamada Beacon Stuffing. Isso significa que estou incluindo dados a serem enviados no próprio nome do beacon. Isso me permite anunciar dados sem a necessidade de outros dispositivos para se conectar ao beacon.

ble.begin (beaconMsg); // beaconMsg é o nome anunciado

Estamos usando a biblioteca SimpleBLE para criar um beacon com seu nome no formato ESP. Onde ‘ESP’ sempre permanece inalterado no início do nome e é substituído pelos dados mais recentes retornados pela função getValue () a cada 100 milissegundos.

float getValue () {return sensorValue;}

O aplicativo Android procura nomes de dispositivos BLE começando com ‘ESP’, uma vez encontrado, ele divide o nome e exibe apenas os dados do final.

A comunicação é apenas uma via, o aplicativo não envia nada de volta.

Etapa 3: Conclusão

No final do dia, esse método não é um substituto para uma biblioteca BLE devidamente implementada, mas pode ser o suficiente para manter alguns projetos até que o suporte BLE completo chegue ao Arduino. Esperançosamente, este Instructables foi de alguma ajuda para você.

Um GRANDE obrigado ao DFRobot.com por me enviar estes produtos:

  • ESP32 FireBeetle Board
  • Escudo de expansão FireBeetle
  • Sensor de Temperatura DS18B20

Recentemente encontrei esta biblioteca. O ReadME afirma que você pode se conectar a outros dispositivos BLE para receber dados (não é possível se anunciar). Ainda não experimentei, mas você pode conferir se estiver interessado.

Você pode conferir o vídeo do projeto em: YouTube

Recomendado: