ESPTOP 10 Bluetooth - Ultimate Guide

ESPTOP 10 Bluetooth - Ultimate Guide
ESP32 ist eine Mikrocontroller-basierte Karte, die mit Wi-Fi- und Bluetooth-Support geliefert wird. Es handelt sich um ein IoT -basierter Board, das in mehrere Sensoren integriert werden kann, um Anweisungen auszuführen. Das ESP32 -Board hat eine breite Bewerbung, bei der drahtlose Kommunikation erforderlich ist.

ESP32 unterstützt die Dual -Bluetooth -enthalten Bluetooth Classic und das Bluetooth niedrige Energie (BLE). In diesem Artikel werden wir die Arbeit dieser beiden Bluetooth diskutieren.

Hier finden Sie einen kurzen Vergleich von Bluetooth Classic mit Bluetooth Low Energy:

Spezifikation Bluetooth Classic Bluetooth niedriger Energie/BLE
Datenübertragungsrate 2-3 Mbit / s 1 Mbit / s
Bereich ~ 10-100 m ~ 50 m
Arbeitsfrequenz 79 rf 40 rf
Spitzenstromverbrauch ~ 30 mA <15mA
Energieverbrauch 1W 0.01-0.5W
Gesamtzeit zum Senden von Daten 100 ms 3 ms
Anwendungen Audio, Musik -Streaming Sensor, Wearables

Für einen detaillierteren Vergleich finden Sie hier, um die offizielle Bluetooth -Site zu besuchen.

Im Folgenden finden Sie die beiden Bluetooth -Modi, die in der ESP32 -Karte verfügbar sind:

  • Bluetooth Classic
  • Bluetooth niedrige Energie (BLE)

1: ESP32 Bluetooth Classic mit Arduino IDE

Die ESP32 -Karte wird mit einer Dual -Bluetooth -Unterstützung geliefert. Heute werden wir nur über Bluetooth Classic diskutieren. Der einzige Unterschied, der zwischen beiden besteht. Ble bleibt im Schlafmodus, bis es für die Datenübertragung initialisiert wird.

ESP32 Bluetooth Classic serielle Kommunikation

ESP32 verfügt über integrierte Bluetooth-Module, die zuerst Daten empfangen und dann an den XTensa-Prozessor weiterleiten. Also, um diese Kommunikation festzustellen "Bluetoothserial" Die Bibliothek wird verwendet, die der Arduino -Serienbibliothek ähnelt, aber nur innerhalb von ESP32 ist. Im Folgenden finden Sie einige Funktionen, die von der Bluetooth -Serienbibliothek angeboten werden:

  • Start()
  • verfügbar()
  • schreiben()
  • lesen()

Bluetooth kontrollierte LED mit ESP32

Schreiben wir einen einfachen Code, mit dem eine LED mithilfe von Mobile Bluetooth über Bluetooth -drahtlose Kommunikation steuern kann. Im Folgenden ist die Hardware erforderlich, um die LED mithilfe der Bluetooth -Serienkommunikation zu steuern:

  • ESP32
  • LED
  • Brotbrett
  • Android-Gerät
  • Serienbluetooth Terminalanwendung

Schaltkreis

Verbinden Sie die LED am Digital Pin 15 von ESP32 mit einem negativen Anschluss an GND der ESP32 -Karte. Für eine sichere Stromlimit können wir auch den Widerstand (220 Ohm) zwischen ihnen anschließen:

Code

Öffnen Sie Arduino IDE und wählen Sie das ESP32 -Board im Board Manager aus, um zu sehen, wie Sie das ESP32 -Board in Arduino IDE installieren. Klicken. Nach Auswahl der Karte schreiben Sie den folgenden Code im Editor -Fenster:

#include /*Bluetooth Serienkommunikationsbibliothek* /
#define led_pin 15 /*LED -PIN initialisiert* /
BluetoothSerialer -Serialbt;
byte bt_inp;
#Wenn !definiert (config_bt_enabled) || !definiert (config_bluedroid_enabled)/*nach Bluetooth in SDK*/prüfen
#Error Bluetooth Off-Run "Make Menuconfig", um es zu aktivieren
#endif
void setup ()

PinMode (LED_PIN, Ausgabe); /*LED -Pin als Ausgabe eingestellt*/
Serie.Beginnen Sie (115200); /*Baudrate für serielle Kommunikation*/
Serialbt.Start(); /*Bluetooth -Kommunikation beginnt*/
Serie.println ("Bluetooth ist bereit zu kombinieren ..."); /*Wenn Bluetooth einschalten*/

Hohlraumschleife ()

if (serialBt.Verfügbar ()) /*auf Bluetooth -Datenverfügbarkeit* /prüfen

Bt_inp = serialBt.lesen(); /*Bluetooth -Daten vom Gerät lesen*/
Serie.write (bt_inp); /*Drucken Sie die Lesedaten*////

if (bt_inp == '1') /*if Bedingung für LED -Status* /

DigitalWrite (LED_PIN, High); /*LED einschalten, wenn 1 Eingabe empfangen wird*/

if (bt_inp == '0')

DigitalWrite (LED_Pin, niedrig);/*LED deaktivieren, wenn 0 Eingabe empfangen wird*/

Hier im obigen Code haben wir mit der Bluetooth -Serienbibliothek für ESP32 begonnen. Als nächstes haben wir Bluetooth Serial Library -Funktionen aufgenommen, mit denen das ESP32 Bluetooth ermöglicht werden kann.

Der nächste LED -Pin 15 wird initialisiert und verwendet die PinMode () Funktions -LED -Pin wird als Ausgabe eingestellt.

Im Schleifen Teil des Codes wird das Programm auf serielle Bluetooth -Datenverfügbarkeit überprüfen. Wenn die Eingabedaten 1 LED eingeschaltet sind und die empfangenen Daten 0 LED sind, schaltet sich die LED aus.

Sobald der Code hochgeladen ist. Bluetooth der ESP32 -Karte wird eingeschaltet und die folgende Nachricht wird auf dem Serienmonitor angezeigt:

Installation des seriellen Bluetooth -Terminals auf Smartphone

Wir benötigen ein Bluetooth -Gerät, mit dem Anweisungen an ESP32 gesendet werden können, sodass wir ein Android -Smartphone verwenden können, um es mit ESP32 Bluetooth zu interpretieren. Zuerst müssen wir ein Serienterminal in einem Android -Telefon installieren. Befolgen Sie die unten angegebenen Schritte, um das Android -Telefon mit ESP32 Schnittstellen zu haben:

Schritt 1: Öffnen Sie den Google Play Store auf Ihrem Smartphone und suchen Sie Serial Bluetooth Terminal. Installieren Sie die folgende Anwendung:

Schritt 2: Öffnen Sie nach der Installation die Bluetooth -Einstellungen von Mobiltelefonen. Suchen Sie nach ESP32 Bluetooth und klicken Sie, um es mit Ihrem Smartphone zu kombinieren, indem Sie auf klicken Paar:

Schritt 3: Nach dem Tippen auf ein Paar, Das Mobiltelefon beginnt mit ESP32 Bluetooth:

Schritt 4: Öffnen Sie nun die serielle Bluetooth -Terminalanwendung und gehen Sie zu Geräte Aus der Seitenmenü:

Schritt 5: Sobald die Geräteoption geöffnet ist, fordert sie einige Berechtigungen an oder drücken Sie die AKTUALISIERUNG Schaltfläche oben rechts Ecke:

Schritt 6: Das folgende Pop-up kommt auf Klicken Sie auf Einstellungen und erlauben Sie die Erlaubnis, die sie fordert:

Schritt 7: Jetzt ist ESP32 -Board bereit, Anweisungen über Bluetooth zu nehmen. Unter Bluetooth Classic Option Wählen Sie ESP32 -Board:

Schritt 8: Sobald ESP32 ausgewählt ist, beginnt es mit der Verbindung und bei Erfolg a In Verbindung gebracht Nachricht erscheint:

Schritt 9: Jetzt können wir jede Anweisung senden, indem wir sie hier eingeben. Typ 1 und klicken. In ähnlicher Weise durch Tippen 0 LED wird ausschalten:

In ähnlicher Weise können wir den Ausgang auf dem Serienmonitor des Arduino -IDE sehen, was er erhält:

Ausgang

LED schaltet sich nach dem Senden 1 ein:

LED schaltet sich nach dem Senden von 0 aus:

Notiz: Wir können auch Schaltflächen für bestimmte Anweisungen konfigurieren, wie sie im Bild unten gezeigt sind. Klicken Sie dazu auf die Schaltflächen und legen Sie den gewünschten Wert ein. Hier haben wir zwei Schaltflächen für hoch und andere für einen niedrigen Zustand gesetzt. Sie können diese Verknüpfungen auch in Hexadezimalwerten konfigurieren.

2: ESP32 Bluetooth Low Energy (BLE) mit Arduino IDE

Ble oder Bluetooth Low Energy ist ein Stromsparmodus von Bluetooth. Die Hauptanwendung umfasst die Datenübertragung über kurze Entfernungen wie Türeintritt, Smart Watches, Wearables, Blutdruckmonitor, Sicherheit und Heimautomationen. Ble kann begrenzte Daten übertragen.

Im Gegensatz zu Bluetooth Classic, der die ganze Zeit eingeschaltet bleibt, bleibt Ble im Schlafmodus, außer wenn er aufgerufen wird, oder die Verbindung wird eingeleitet. Dies macht die BLE sehr leistungsfähig und verbraucht 100 -mal weniger Leistung als die klassische.

Ble Server und Client

Bluetooth Low Energy unterstützt das Gerät auf zwei verschiedene Arten, wodurch ESP32 sowohl als Server als auch als Client für Bluetooth mit niedrigem Energie.

Ble -Unterstützung nach Kommunikationsmodi:

  • Punkt zu Punkt: Kommunikation zwischen zwei Punkten oder Knoten, die Server und Client sind.
  • Broadcast -Modus: Der Server überträgt Daten auf viele Geräte.
  • Mesh-Netzwerk: Mehrere Geräte, die auch mit vielen Verbindungen miteinander verbunden sind, auch als viele Verbindungen bezeichnet.

Wenn ESP32 als Server fungiert. Sobald der Client -Geräte nach verfügbaren Bluetooth -Geräten scannt, stellt der Server die Verbindung zwischen ihnen her und überträgt die Daten vom Server zum Client -Gerät. Diese Kommunikation wird als Punkt zu Punkt bezeichnet.

In diesem Tutorial werden wir ein Beispiel für eine Punkt-zu-Punkt-Kommunikation zwischen zwei ESP32-Boards nehmen.

Wichtige Begriffe in BLE

Hier sind einige wichtige Begriffe, die Sie bei der Arbeit mit ESP32 -Anwendungen kennen sollten:

Gatt: GATT- oder GATERISCHE Attribute, die eine hierarchische Struktur für Datenübertragungen zwischen BLE -Geräten unter Verwendung von Dienst und Merkmal definieren. Es definiert die Art und Weise, wie zwei Geräte Daten zwischen ihnen kommunizieren.

BEIISCHER SERVICE: Die obere Ebene in der GATT -Hierarchie ist ein Profil, das einen oder mehrere Dienste enthält. Ble hat mehr als einen Service. Jeder dieser Dienste hat ihre eigenen Merkmale, die auch als Referenz für andere Dienste dienen können.

Ble charakteristisch: Merkmal ist eine Gruppe von Informationen, die immer im Besitz von Dienst sind. Hier werden tatsächliche Daten in Hierarchie (Wert) gespeichert. Es enthält immer zwei Attribute:

  • Erklärung: Charakteristische Eigenschaften wie Ort, Typ, Lesen, Schreiben und Benachrichtigen.
  • Charakteristischer Wert: Datenwert der charakteristischen.

UUid: UUID (allgemein eindeutige Kennung) wird jedem Dienst und Charakteristik gegeben. Es ist eine eindeutige 128-Bit-ID, die mit einem Online-UUID-Generator generiert werden kann. Überprüfen Sie diesen kostenlosen UUID -Generator. Ein Beispiel Uuid sieht so aus:

583F8B30-74B4-4757-8143-56048FD88B25

Eine Universal Bluetooth Special Interest Group (SIG) hat einige der verkürzten Uuids für verschiedene Arten von Diensten und Profilen vordefiniert, um sie hier zu lesen.

Auf ESP32 mit Arduino IDE aufstellen

Um die Arbeit von Ble zu verstehen, werden wir zwei verschiedene ESP32 -Boards verwenden Server und bewerben Klient Versucht, den Server -Bluetooth zu verbinden.

Arduino IDE hat separate Beispiele für Scanner und Server.

Um zu sehen, wie Sie eine ESP32 -Karte mit Arduino IDE in Windows installieren.

ESP32 Ble Server

Zunächst werden wir den Server -Beispielcode in unserem ersten ESP32 -Board hochladen, der als a wirkt Server.

Zum Öffnen von Ble Server -Beispiel gehen Sie zu: Datei> Beispiele> ESP32 Ble Arduino> Ble_Server:

Der folgende Code wird in Arduino IDE geöffnet.

Servercode

Laden Sie den folgenden Code in der ESP32 -Board mit Arduino IDE hoch, stellen Sie jedoch sicher, dass Sie die zweite Karte für eine Weile trennen, um zu vermeiden, dass der gleiche Code auf eine einzelne Karte hochgeladen wird:

#enthalten
#enthalten
#enthalten
#define service_uuid "4FAFC201-1FB5-459E-8FCC-C5C9C331914B"
#define charakteristik_uuid "Beb5483e-36e1-4688-B7F5-EEA07361B26A8"
void setup ()
Serie.Beginnen Sie (115200);
Serie.println ("Start ble Arbeit!");
Bledevice :: init ("ESP32");
Bleserver *PSERVER = BLEDEVICE :: CreateServer ();
Bleservice *pService = PSERVER-> CreateService (service_uuid);
Blecharacteristic *pcharacteristic = PSVICICE-> CreateCharacteristic (
Charakteristisch_uuid,
Blecharacteristic :: Property_Read |
Blecharacteristic :: Property_Write
);
pcharacteristic-> setValue ("Hallo Sage LinuxHint.com ");
PService-> start ();
// Bleadvertising *padvertising = psserver-> getAdvertising (); // Dies funktioniert immer noch für die Rückwärtskompatibilität
Bleadvertising *padvertising = Bledevice :: getAdvertising ();
padvertising-> addServiceuuid (service_uuid);
padvertising-> setScanResponse (true);
padvertising-> setMinPreferred (0x06); // Funktionen, die beim Problem der iPhone -Verbindungen helfen
padvertising-> setMinPreferred (0x12);
BLEDEVICE :: startadvertising ();
Serie.println ("charakteristisch definiert! Ble Server bereit ");

void Loop ()
// Setzen Sie Ihren Hauptcode hier ein, um wiederholt auszuführen:
Verzögerung (2000);

Der Code beginnt mit der Einbeziehung der erforderlichen Bluetooth -Bibliotheksdateien. Dann ist UUID sowohl für Service als auch für die Eigenschaft definiert. Sie können mit dem Standard -UUID gehen oder mit dem kostenlosen UUID -Generator generieren. Die nächste serielle Kommunikation wird durch Definition der Baudrate initialisiert.

Als nächstes haben wir ein BLE -Gerät namens ESP32 erstellt und danach das BLE -Gerät als Server mithilfe des CreateServer () Funktion und später setzen wir den charakteristischen Wert. Im letzten Schritt begannen wir den Service, indem wir ihn bewerben, damit andere Geräte danach suchen können.

ESP32 BLE -Scanner

Jetzt werden wir ein ESP32 -Scan -Beispiel in der zweiten ESP32 -Karte hochladen. Um dies zu tun, gehen Sie zu: Datei> Beispiele> ESP32 BLE Arduino> Ble_Scan:

Der folgende Code ist im Arduino IDE -Editor geöffnet.

Scannercode

Der angegebene Code wird im Scanner ESP32 -Board verwendet. Öffnen Sie die IDE und laden Sie den Code hoch. Denken Sie daran, andere Boards zu trennen, bevor Sie den Scannercode hochladen.

#enthalten
#enthalten
#enthalten
#enthalten
int skantime = 5; //In Sekunden
Blescan* peltscan;
Klasse myAdvertisedDeviceCallbacks: public BleadvertisedDeviceCallbacks
void onResult (BleadvertisedDevice beworbeneDevice)
Serie.printf ("angekündigtes Gerät: %s \ n", beworbeneDevice.tostring ().c_str ());

;
void setup ()
Serie.Beginnen Sie (115200);
Serie.println ("Scannen ...");
Bledevice :: init ("");
peltlescan = Bledevice :: GetCan (); // Neuen Scan erstellen
pblescan-> setAdvertisedDeviceCallbacks (neue myAdvertisedDeviceCallbacks ());
plescan-> setactiveScan (true); // Active Scan verwendet mehr Leistung, aber erzielen Sie schneller Ergebnisse
plescan-> setInterval (100);
plescan-> setWindow (99); // weniger oder gleicher SetInterval -Wert

void Loop ()
// Setzen Sie Ihren Hauptcode hier ein, um wiederholt auszuführen:
BlescanResults foundDevices = peltscan-> start (spärlich, falsch);
Serie.print ("Geräte gefunden:");
Serie.println (FoundDevices.getCount ());
Serie.println ("Scan erledigt!");
peltscan-> clearResults (); // Ergebnisse aus BLESCAN -Puffer löschen, um den Speicher freizusetzen
Verzögerung (2000);

Der obere Code sucht nach der Anzahl der verfügbaren verfügbaren Geräte für BLE und zeigt deren Gesamtzahl mit Adressen an. Nach dem Hochladen des Code in der ESP32 -Scannerplatine drücken Sie die Ermöglichen Button, ESP32 -Board sucht automatisch nach verfügbaren Geräten:

Ausgang

Sobald der ESP32 die verfügbaren Geräte scannt, wird das folgende Ergebnis angezeigt. Hier sind ESP32 9 Geräte gescannt, darunter eine ESP32 -Karte mit Ble_Server -Code und ein anderes Gerät ist Mi Band 6. Der Rest aller Geräte sind in der Nähe meines ESP32 erhältlich.

So reparieren Sie die ESP32 -BLE -Scan -Bibliothek nicht Zählgeräte

Das Beispiel für die ESP32 -Scan -Bibliothek hat den Fehler, nicht die Gesamtzahl der Geräte zu zählen. Um dieses Problem zu beheben, gehen Sie zum genannten Ort und ersetzen Sie den unten angegebenen Code:

C: \ Benutzer \ Benutzername \ AppData \ Local \ Arduino15 \ Pakete \ ESP32 \ Hardware \ ESP32 \ 1.0.6 \ Bibliotheken \ Ble \ src \ blescan.CPP

Erinnere dich an unhide Alle Ordner, da der AppData -Ordner im C -Verzeichnis standardmäßig verborgen bleibt. Nach dem Öffnen der BLE_SCAN -Quelldatei .CPP Ersetzen Sie die folgende Bedingung im Code:

if (m_padvertisedDeviceCallbacks)
m_padvertisedDeviceCallbacks-> onResult (*beworbene Device);

Wenn (!m_wantduplicates && !gefunden)
m_scanresults.M_VectorAdvertisedDevices.einfügen (STD :: Paar(beworbenes Einsatz.toString (), beworbenesDevice));
Solltedelete = false;

Testen von ESP32 Ble Server mit Smartphone

Die meisten modernen Smartphones arbeiten mit BLE -Technologie, um mit verschiedenen Geräten wie Smartwatch, Wearables, Sensoren und anderen Hausautomationskräften zu kommunizieren. Hier ist ESP32 ein Zugangspunkt für Geräte. Also verbinden wir ein Android -Telefon mit einem ESP32 -Board.

BLE -Servercode für ESP32 -Smartphone -Zugriff

Laden Sie den folgenden Code in ESP32 -Board hoch:

#include /*Bluetooth -Bibliothek inklusive* /
#enthalten
#enthalten
#define service_uuid "A484A399-7272-4282-91CF-9018E075FC35"
#define charakteristik_uuid "C7E084BD-5279-484D-8319-FFF7D917537D"
Klasse Mycallbacks: öffentliche Blecharacteristiccallbacks

void Onwrite (Blecharacteristic *pcharacteristic)

std :: string value = pcharacteristic-> getValue ();
if (Wert.Länge ()> 0)

Serie.print ("aktualisierter charakteristischer Wert:");
für (int i = 0; i createService (service_uuid);
Blecharacteristic *pcharacteristic = PSVICICE-> CreateCharacteristic (
Charakteristisch_uuid,
Blecharacteristic :: Property_Read |
Blecharacteristic :: Property_Write
);
pcharacteristic-> setCallbacks (neue mycallbacks ());
pcharacteristic-> setValue ("LinuxHint.Com ");
PService-> start ();
Bleadvertising *padvertising = psserver-> getAdvertising ();
padvertising-> start ();

Hohlraumschleife ()

Verzögerung (2000);

Installation der BLE -Anwendung im Android -Smartphone

In den folgenden Schritten werden BLE -Anwendungen in Smartphones installiert und dazu beitragen, mobile Geräte mit ESP32 -Boards zu fördern.

Schritt 1: Öffnen Sie die Installation von Google Play Store Ble Scanner Anwendung:

Schritt 2: Öffnen Sie nach der Installation die Anwendung und ermöglichen Sie die erforderliche Berechtigung und denken Sie daran, mobile Bluetooth einzuschalten:

Schritt 3: Scannen Sie nun nach den verfügbaren Bluetooth -Geräten. ESP32 -Board verbinden:

Schritt 4: Sobald die ESP32 -Karte mit dem Smartphone verbunden ist, wird die ESP32 -Karte angezeigt. Hier sehen wir die UUID -Adressen und können neue charakteristische Werte lesen und schreiben:

Schritt 5: Um den gespeicherten charakteristischen Wert zu lesen, klicken Sie auf R. Das Ergebnis wird wie in Bild unten erwähnt angezeigt:

Schritt 6: Um einen neuen charakteristischen Wert zu schreiben, klicken Sie auf W:

Schritt 7: Hier erscheint ein neues Popup, wo wir einen jeglichen charakteristischen Wert schreiben und klicken können OK:

Schritt 8: Der neue Wert, der geschrieben wird, erscheint wie in Bild gezeigt:

Schritt 9: Außerdem können wir den gleichen neuen charakteristischen Wert sehen, der auf dem seriellen Monitor von Arduino IDE gedruckt ist:

Wir haben ein Gerät erfolgreich mit ESP32 Ble verbunden.

Abschluss

ESP32 wird mit Dual Bluetooth geliefert, die Bluetooth Classic und Bluetooth Low Energy sind. Hier in diesem Artikel haben wir sowohl Bluetooth Classic als auch seine verschiedenen Anwendungen und Arbeiten besprochen. Bluetooth Classic wird zur hohen Datenübertragung verwendet, während BLE (Bluetooth Low Energy) für kurze Strecken mit weniger Strombedarf verwendet wird. Dieser Artikel gibt einen ultimativen Leitfaden für die ESP32 -Board -Bluetooth -Arbeit und die Konfiguration.