Taula de continguts:

Com utilitzar Bluetooth (BLE) amb ESP32: 3 passos
Com utilitzar Bluetooth (BLE) amb ESP32: 3 passos

Vídeo: Com utilitzar Bluetooth (BLE) amb ESP32: 3 passos

Vídeo: Com utilitzar Bluetooth (BLE) amb ESP32: 3 passos
Vídeo: AUTOMAÇÃO BLUETOOTH COM ESP32 2024, De novembre
Anonim

#####NOTA#####

El mètode que es mostra en aquest manual és antic i obsolet. Mireu aquest vídeo per conèixer l'últim mètode.

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

Tot i que l’ESP32 compta amb una extensa llista de funcions (Wikipedia), la característica més important que crida l’atenció és el Bluetooth v4.2 integrat amb suport BLE. Però aquesta afirmació pot ser enganyosa, mentre hi ha el maquinari, falta el suport de programari per utilitzar Bluetooth. (Està en desenvolupament)

Per a aquells que no saben què és BLE, significa Bluetooth Low Energy. És un protocol bluetooth que augmenta el consum d'energia considerablement inferior en comparació amb el Bluetooth "clàssic".

En aquest manual d’instruccions us mostraré com podeu utilitzar els recursos limitats (de programari) a la vostra disposició per enviar dades des d’una placa ESP32 al vostre telèfon mitjançant BLE.

Alguns avís de responsabilitat …

Alguns aspectes destacables que he de mencionar abans de continuar amb aquesta guia …

Nota 1: quan dic que la compatibilitat Bluetooth encara no està disponible, em refereixo a l'entorn de desenvolupament arduino.

És possible que el suport estigui disponible tant a l'SDK oficial com a l'IDF, però no he trobat cap instrucció competent per a aquestes.

Nota 2: El mètode que faig servir és una solució pràctica i no com se suposa que funciona BLE. La biblioteca compatible amb la creació de serveis a BLE no és aquí per a l'entorn arduino.

L'únic que podeu fer de manera fiable és crear un far que anunciï el seu nom. Un comentari de YouTube ho va posar molt elegantment: "LOL, un hack brutal. Però, què podeu fer?"

Nota 3: L'únic tipus de dades que podeu enviar és la cadena.

És possible que decidiu codificar i descodificar dades d’altres tipus cap a i des de cadenes, però això està fora de l’abast d’aquesta guia.

Pas 1: l'exemple de compilació

Image
Image
La compilació d’exemples
La compilació d’exemples
La compilació d’exemples
La compilació d’exemples
La compilació d’exemples
La compilació d’exemples

Si només esteu aquí per obtenir l'explicació, podeu ometre aquest pas, però si el feu, us pot proporcionar una mica més de claredat.

Primer vaig a construir un projecte d’exemple i després intentaré explicar com funciona i com es pot replicar la comunicació Bluetooth. Construirem un sensor de temperatura portàtil que enviarà una transmissió en directe al vostre telèfon intel·ligent. La compilació es pot executar durant dies en un sol li-po i demostra fàcilment els avantatges de BLE.

Podeu utilitzar el mòdul com a muntanya russa per aïllar les begudes i rebre'n una notificació tan aviat com la vostra beguda arribi a la temperatura òptima. Perquè seria un engany si haguéssiu de prendre un te que superés els 40 graus.

L'únic maquinari que necessiteu és una placa ESP32 i un sensor de temperatura digital. El meu tauler admet bateria externa, de manera que estic fent servir un li-po de 3,7 v que he recuperat d’un dispositiu antic per fer aquest projecte portàtil.

Maquinari

Les connexions del sensor de temperatura són senzilles. El cable vermell es connecta a 3,3 v, el negre es connecta a terra (gnd), el groc es connecta a GPIO 2, que al meu tauler està marcat com a D9. Connecteu una resistència de 4,7 k ohm entre el fil vermell i el groc. No faig servir la resistència, sinó que faig servir un terminal endollable de 3 pins que venia amb el meu sensor. Té una resistència incorporada incorporada.

El li-po hauria de connectar-se realment mitjançant un connector JST, però no em podria molestar en comprar-ne un, de manera que només he llançat uns cables (de femella a femella) al connector i heu soldat un altre parell als terminals de la bateria. Això proporciona una connexió fiable i un interruptor d’alimentació improvisat.

Ara, com a recinte del projecte, estic fent servir un disc d’espuma de poliestir que s’ha retallat d’un full més gran. Això fa que sigui un gran aïllant. Un altre disc molt més petit està enganxat a la part superior però una mica al costat. Això serveix per embolicar la longitud addicional dels cables de manera que no es pengin per tot arreu. Després de fer un ús generós de la cola i un petit forat per a la sonda del sensor, esteu a punt per accedir al programari.

Programari

Si encara no teniu l’IDE arduino instal·lat, aneu a aquest enllaç per descarregar-lo. Per defecte, el programari arduino no inclou les definicions de placa per a les diverses plaques ESP32. Per aconseguir que accedeixin a aquest enllaç i descarreguin els fitxers en format zip. Els heu de descomprimir a aquesta ubicació:

C: / Usuaris // Documents / Arduino / hardware / espserrif / ESP32

On és el vostre nom d'usuari al vostre PC. Assegureu-vos que els diversos fitxers estiguin disponibles a la carpeta ESP32 i que no es trobin a cap altra carpeta.

Ara, si inicieu el programari arduino i aneu a eines-> taules, hauríeu de veure diverses taules ESP32 quan baixeu.

La majoria de sensors de temperatura digitals utilitzen el protocol OneWire per comunicar-se amb els microcontroladors, de manera que necessitem obtenir la biblioteca. Aneu a croquis-> inclou biblioteca-> gestioneu biblioteques i cerqueu onewire i instal·leu la biblioteca que sigui, per cert, amb massa autors. No necessiteu el centre onewire. Ignora-ho.

Ara podeu descarregar i obrir el codi adjunt a aquest pas (temperature-example.ino).

Si utilitzeu un sensor diferent al meu, haureu de canviar el codi en conseqüència. Substituïu el codi a getTemp (). Només cal retornar la temperatura final en forma de

Retorn;

On és el flotador que conté la temperatura.

Connecteu el tauler, seleccioneu el tauler i el port correctes a sota de les eines i premeu Pujar.

Si el codi es nega a penjar-lo, desconnecteu el sensor i connecteu el GPIO 0 a terra. Restaura les connexions després de la càrrega.

El vostre ESP ara hauria de cridar la temperatura del cafè al món, però necessiteu algú que el pugui entendre.

L’aplicació per a Android

Disculpeu els usuaris d'iPhone (… realment no).

Descarregueu l'apk des d'aquí i instal·leu-lo. Quan inicieu l'aplicació, us rebrà una interfície molt senzilla.

Si rebeu un missatge d'error que diu "No s'admet la publicitat", feu clic a D'acord i ignoreu-lo, però si rebeu el missatge "BLE no s'admet", el vostre telèfon no té Bluetooth 4.0 o superior i no es podrà executar l'aplicació.

Assegureu-vos que el Bluetooth del telèfon estigui activat i feu clic a "Comença a escanejar", sempre que el punt esp estigui al seu abast i encès, hauríeu de rebre un cert valor de temperatura.

Possibles errors:

  • -1000:: Això significa que el dispositiu no ha pogut trobar l'ESP. assegureu-vos que el Bluetooth estigui activat i proveu de reiniciar l'ESP.
  • SNA:: Això vol dir que el vostre telèfon rep dades de l'ESP, però el propi ESP no ha pogut trobar cap sensor de temperatura al GPIO 2. Assegureu-vos que les connexions siguin segures; comproveu si utilitzeu una resistència del valor correcte. Comproveu de nou amb els esquemes de la vostra placa que esteu connectat al GPIO 2 i no a un pin marcat com a D2.

Pas 2: l'explicació

El funcionament normal de BLE és que un dispositiu anuncia el seu nom com un far, qualsevol persona el pot veure i s’utilitza per identificar el dispositiu. A continuació, el dispositiu pot crear diversos serveis que altres veuen quan s’hi connecten. Aquests serveis poden tenir diferents fluxos de dades.

Per exemple. Un dispositiu anomenat "Estació Meteorològica" pot tenir serveis a sota, com ara "Temperatura", "Humitat" i "Vent". Quan un altre dispositiu BLE com el vostre telèfon intel·ligent busca dispositius, veuria l'estació meteorològica i, quan es connecta, podia rebre els fluxos de dades corresponents als diferents serveis.

Les biblioteques (per a l’ESP32) que tenim actualment disponibles ens permeten crear una balisa que altres puguin descobrir, però aquesta és la seva extensió. No podem crear serveis ni cap dispositiu hi pot connectar.

Per tant, com envio dades sense crear serveis és mitjançant una tècnica similar al protocol WiFi anomenat Beacon Stuffing. Això vol dir que incloc dades que s’enviaran dins del propi nom de la balisa. Això em permet anunciar dades sense necessitar altres dispositius per connectar-se a la balisa.

ble.begin (beaconMsg); // beaconMsg és el nom anunciat

Estem utilitzant la biblioteca SimpleBLE per crear una balisa amb el seu nom en format ESP. Quan ‘ESP’ sempre no canvia al principi del nom i se substitueix per les darreres dades retornades per la funció getValue () cada 100 mil·lisegons.

float getValue () {return sensorValue;}

L’aplicació per a Android busca noms de dispositius BLE que comencen per ‘ESP’; un cop trobat, divideix el nom i només mostra les dades del final.

La comunicació és només una manera, l'aplicació no envia res.

Pas 3: Conclusió

Al cap i a la fi, aquest mètode no substitueix una biblioteca BLE implementada correctament, però pot ser suficient per marcar alguns projectes fins que el suport BLE complet arribi a Arduino. Esperem que aquest Instructables us sigui d’ajuda.

UN GRÀCIES Gràcies a DFRobot.com per enviar-me aquests productes:

  • ESP32 FireBeetle Board
  • FireBeetle Expantion Shield
  • Sensor de temperatura DS18B20

Fa poc he trobat aquesta biblioteca. ReadME afirma que podeu connectar-vos a altres dispositius BLE per rebre dades (no us podeu anunciar). No ho he provat, però podeu comprovar-ho si us interessa.

Podeu consultar el vídeo del projecte a: YouTube

Recomanat: