ESP32 unterstützt sowohl Bluetooth Classic als auch Bluetooth Low Energy. Hier konzentrieren wir uns auf Bluetooth niedrige Energie. Lassen Sie es uns im Detail sehen.
Was ist Bluetooth niedriger Energie
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 es aufgerufen wird oder die Verbindung eingeleitet wird. Dies macht die BLE sehr leistungsfähig und verbraucht 100 -mal weniger Leistung als die klassische.
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.
Ble Server und Client
Bluetooth Low Energy unterstützt das Gerät auf zwei verschiedene Arten: Server und Client. ESP32 kann sowohl als Server als auch als Client für Bluetooth mit niedriger Energie fungieren.
Ble -Unterstützung nach Kommunikationsmodi:
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 enthält mehr als einen einzigen Dienst. 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:
UUid: UUID (allgemein eindeutige Kennung) ist eine eindeutige ID für einen Service und eine Merkmal. 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-56048FD88B25Eine universelle Bluetooth Special Interest Group (SIG) hat einige der verkürzten Uuids für verschiedene Arten von Diensten und Profilen vordefiniert, um sie zu lesen. Klicken Sie hier.
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 ein ESP32 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 ESP32 -Board mit Arduino IDE hoch. Stellen Sie jedoch sicher.
#enthaltenDer 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. Danach haben wir das BLE -Gerät als Server mit dem definiert 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
#enthaltenDer 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 Die ESP32 -Karte 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.CPPErinnere 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)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 Hausautomationsgeräten zu kommunizieren. Hier wird das ESP32 -Vorstand als Zugangspunkt fungieren. 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* /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 angezeigt.
Schritt 6: Um einen neuen charakteristischen Wert zu schreiben, klicken Sie auf W.
Schritt 7: Ein neues Popup erscheint hier, wir können jeden charakteristischen Wert schreiben und klicken OK.
Schritt 8: Neuer Wert, der geschrieben wird.
Schritt 9: Außerdem können wir den gleichen neuen charakteristischen Wert sehen, der auf dem Serienmonitor von Arduino IDE gedruckt ist.
Wir haben ein Gerät erfolgreich mit ESP32 Ble verbunden.
Abschluss
ESP32 wird mit einem Dual -Bluetooth geliefert, der klassisch und niedrig Energie ist. Hier in diesem Artikel haben wir Ble und seine verschiedenen Anwendungen und Arbeiten besprochen. Später konfigurierten wir BLE mit zwei verschiedenen ESP32 -Boards mit einem als Server und anderer als Scanner. Endlich haben wir unser Smartphone mit dem ESP32 -Server verbunden und einen neuen charakteristischen Wert geschrieben.