Inhaltsverzeichnis:

So verwenden Sie Bluetooth (BLE) mit ESP32 - Gunook
So verwenden Sie Bluetooth (BLE) mit ESP32 - Gunook

Video: So verwenden Sie Bluetooth (BLE) mit ESP32 - Gunook

Video: So verwenden Sie Bluetooth (BLE) mit ESP32 - Gunook
Video: ESP32 Tutorial 37 - Using Bluetooth App with ESP32 BLE | SunFounder's ESP32 IoT Learnig kit 2024, November
Anonim

#####HINWEIS#####

Die in diesem Instructables gezeigte Methode ist alt und veraltet. Sehen Sie sich dieses Video für die neueste Methode an.

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

Während der ESP32 über eine umfangreiche Funktionsliste (Wikipedia) verfügt, ist das größte Feature, das die Aufmerksamkeit auf sich zieht, das integrierte Bluetooth v4.2 mit BLE-Unterstützung. Aber diese Aussage kann irreführend sein, während die Hardware vorhanden ist, fehlt die Softwareunterstützung für die Verwendung von Bluetooth. (Es ist in der Entwicklung)

Für diejenigen, die nicht wissen, was BLE ist, es steht für Bluetooth Low Energy. Es ist ein Bluetooth-Protokoll, das im Vergleich zu "klassischem" Bluetooth einen erheblich geringeren Stromverbrauch verursacht.

In diesem Instructables zeige ich Ihnen, wie Sie die Ihnen zur Verfügung stehenden begrenzten (Software-)Ressourcen verwenden können, um Daten von einem ESP32-Board über BLE an Ihr Telefon zu senden.

Ein paar Haftungsausschlüsse…

Einige wichtige Dinge, die ich erwähnen sollte, bevor Sie mit dieser Anleitung fortfahren.

Hinweis 1: Wenn ich sage, dass die Bluetooth-Unterstützung noch nicht verfügbar ist, meine ich in der Arduino-Entwicklungsumgebung.

Der Support kann sehr wohl sowohl im offiziellen SDK als auch im IDF verfügbar sein, aber ich habe keine kompetenten Anweisungen dafür gefunden.

Hinweis 2: Die Methode, die ich verwende, ist ein Workaround und nicht so, wie BLE idealerweise funktionieren sollte. Die Bibliothek unterstützt das Erstellen von Diensten in BLE nicht für die Arduino-Umgebung.

Das einzige, was Sie zuverlässig tun können, ist, einen Beacon zu erstellen, der mit seinem Namen wirbt. Ein YouTube-Kommentar drückte es sehr elegant aus: "LOL, a brutal hack. Aber was kann man tun?"

Hinweis 3: Die einzige Art von Daten, die Sie senden können, sind Zeichenfolgen.

Sie können sich sehr gut entscheiden, andere Arten von Daten in und aus Zeichenfolgen zu codieren und zu decodieren, aber das würde den Rahmen dieses Handbuchs sprengen.

Schritt 1: Der Beispiel-Build

Image
Image
Der Beispiel-Build
Der Beispiel-Build
Der Beispiel-Build
Der Beispiel-Build
Der Beispiel-Build
Der Beispiel-Build

Wenn Sie nur zur Erklärung hier sind, können Sie diesen Schritt überspringen, aber es könnte Ihnen etwas mehr Klarheit verschaffen.

Zuerst werde ich ein Beispielprojekt erstellen und dann versuchen zu erklären, wie es funktioniert und wie Sie die Bluetooth-Kommunikation nachbilden können. Wir bauen einen tragbaren Temperatursensor, der einen Live-Feed an Ihr Smartphone sendet. Der Build kann tagelang auf einem einzigen Li-Po ausgeführt werden und demonstriert leicht die Vorteile von BLE.

Sie können das Modul als Untersetzer verwenden, um Ihre Getränke zu isolieren und erhalten eine Benachrichtigung, sobald Ihr Getränk die optimale Temperatur erreicht hat. Denn es wäre eine Travestie, wenn Sie einen Tee mit einem Grad über 40 trinken müssten.

Die einzige Hardware, die Sie benötigen, ist ein ESP32-Board und ein digitaler Temperatursensor. Mein Board unterstützt eine externe Batterie, daher verwende ich einen 3,7-V-Li-Po, den ich von einem alten Gerät gerettet habe, um dieses Projekt tragbar zu machen.

Hardware

Die Anschlüsse für den Temperatursensor sind einfach. Das rote Kabel ist mit 3,3 V verbunden, das schwarze mit Masse (GND), das gelbe mit GPIO 2, das auf meinem Board als D9 gekennzeichnet ist. Schließen Sie einen 4,7 kOhm Widerstand zwischen dem roten und gelben Draht an. Ich verwende nicht den Widerstand, sondern einen 3-poligen steckbaren Anschluss, der mit meinem Sensor geliefert wurde. Es hat einen eingebauten Pull-Up-Widerstand.

Der Li-Po sollte wirklich mit einem JST-Stecker verbunden werden, aber ich konnte mich nicht darum kümmern, einen zu kaufen, also habe ich nur einige (weiblich zu weiblich) Überbrückungskabel in den Stecker gesteckt und ein weiteres Paar an die Batterieklemmen gelötet. Dies sorgt für eine zuverlässige Verbindung und einen behelfsmäßigen Netzschalter.

Als Projektbeilage verwende ich jetzt eine Styroporscheibe, die aus einem größeren Blatt ausgeschnitten wurde. Dies ergibt einen großartigen Isolator. Oben, aber etwas seitlich klebt noch eine viel kleinere Scheibe. Dies dient zum Umwickeln der zusätzlichen Kabellänge, damit sie nicht überall baumeln. Nach einem großzügigen Einsatz Ihres Klebers und einem kleinen Loch für die Sensorsonde können Sie mit der Software fortfahren.

Software

Wenn Sie die Arduino-IDE noch nicht installiert haben, gehen Sie zu diesem Link, um sie herunterzuladen. Die Arduino-Software enthält standardmäßig nicht die Board-Definitionen für die verschiedenen ESP32-Boards. Um sie dazu zu bringen, diesen Link zu öffnen und die Dateien in einer ZIP-Datei herunterzuladen. Sie müssen sie an diesen Ort entpacken:

C:/Benutzer//Dokumente/Arduino/hardware/espserrif/ESP32

Wo ist Ihr Benutzername auf Ihrem PC. Stellen Sie sicher, dass die verschiedenen Dateien im ESP32-Ordner verfügbar sind und sich nicht in einem anderen Ordner befinden.

Wenn Sie nun die Arduino-Software starten und zu Tools-> Boards gehen, sollten Sie beim Scrollen nach unten verschiedene ESP32-Boards sehen.

Die meisten digitalen Temperatursensoren verwenden das OneWire-Protokoll, um mit den Mikrocontrollern zu kommunizieren, sodass wir die Bibliothek benötigen. Gehen Sie zu Sketch->Bibliothek einschließen->Bibliotheken verwalten und suchen Sie nach onewire und installieren Sie die Bibliothek, die von viel zu vielen Autoren ist. Sie brauchen den Onewire-Hub nicht. Ignoriere es.

Jetzt können Sie den diesem Schritt beigefügten Code herunterladen und öffnen (temperature-example.ino).

Wenn Sie einen anderen Sensor als mich verwenden, müssen Sie den Code entsprechend ändern. Ersetzen Sie den Code unter getTemp(). Geben Sie einfach die Endtemperatur in Form von. zurück

Zurückkehren;

Wo ist der Schwimmer mit der Temperatur.

Stecken Sie das Board ein, wählen Sie das richtige Board und den richtigen Port unter Tools aus und klicken Sie auf Upload.

Wenn der Code das Hochladen verweigert, trennen Sie den Sensor und verbinden Sie den GPIO 0 mit Masse. Stellen Sie die Verbindungen nach dem Hochladen wieder her.

Ihr ESP sollte jetzt die Temperatur Ihres Kaffees in die Welt schreien, aber Sie brauchen jemanden, der es verstehen kann.

Die Android-App

Sorry iPhone-Nutzer (…nicht wirklich).

Laden Sie die APK von hier herunter und installieren Sie sie. Wenn Sie die App starten, werden Sie mit einer sehr einfachen Benutzeroberfläche begrüßt.

Wenn Sie eine Fehlermeldung erhalten, die besagt, dass Werbung nicht unterstützt wird, klicken Sie auf OK und ignorieren Sie sie. Wenn Sie jedoch eine Meldung erhalten, dass BLE nicht unterstützt wird, verfügt Ihr Telefon nicht über Bluetooth 4.0 oder höher und kann nicht ausgeführt werden die App.

Stellen Sie sicher, dass Bluetooth auf Ihrem Telefon eingeschaltet ist und klicken Sie auf „Scannen starten“. Solange sich das ESP in Reichweite befindet und eingeschaltet ist, sollten Sie einen Temperaturwert empfangen.

Mögliche Fehler:

  • -1000:: Dies bedeutet, dass Ihr Gerät den ESP nicht finden konnte. Stellen Sie sicher, dass Bluetooth eingeschaltet ist, und starten Sie das ESP neu.
  • SNA:: Dies bedeutet, dass Ihr Telefon Daten vom ESP empfängt, aber der ESP selbst keinen Temperatursensor am GPIO 2 finden konnte. Stellen Sie sicher, dass die Verbindungen sicher sind, und prüfen Sie, ob Sie einen Widerstand mit dem richtigen Wert verwenden. Überprüfen Sie mit Ihren Platinenschaltplänen, dass Sie mit dem GPIO 2 verbunden sind und nicht mit einem als D2 gekennzeichneten Pin.

Schritt 2: Die Erklärung

Wie BLE normalerweise funktioniert, ist, dass ein Gerät seinen Namen wie ein Beacon ankündigt, dieser Name kann von jedem gesehen werden und wird verwendet, um das Gerät zu identifizieren. Dann kann das Gerät verschiedene Dienste erstellen, die von anderen gesehen werden, wenn sie sich damit verbinden. Diese Dienste können unterschiedliche Datenströme haben.

Für zB. Ein Gerät mit dem Namen "Wetterstation" kann darunter wie "Temperatur", "Luftfeuchtigkeit" und "Wind" gewartet haben. Wenn ein anderes BLE-Gerät wie Ihr Smartphone nach Geräten sucht, sieht es die Wetterstation und wenn es sich damit verbindet, kann es die Datenströme entsprechend den verschiedenen Diensten empfangen.

Die uns derzeit zur Verfügung stehenden Bibliotheken (für den ESP32) ermöglichen es uns, einen Beacon zu erstellen, den andere entdecken können, aber das ist der Umfang. Wir können keine Dienste erstellen und keine Verbindung zu einem Gerät herstellen.

So sende ich Daten, ohne Dienste zu erstellen, indem ich eine Technik verwende, die dem WiFi-Protokoll namens Beacon Stuffing ähnelt. Das bedeutet, dass ich die zu sendenden Daten in den Beacon-Namen selbst einbeziehe. Dies ermöglicht es mir, Daten zu bewerben, ohne dass andere Geräte eine Verbindung zum Beacon herstellen müssen.

ble.begin(beaconMsg); //beaconMsg ist der beworbene Name

Wir verwenden die SimpleBLE-Bibliothek, um ein Beacon mit seinem Namen im ESP-Format zu erstellen. Dabei bleibt ‚ESP‘am Anfang des Namens immer unverändert und wird alle 100 Millisekunden durch die neuesten Daten ersetzt, die von der Funktion getValue() zurückgegeben werden.

float getValue () {Rückgabe sensorValue;}

Die Android-App sucht nach BLE-Gerätenamen, die mit „ESP“beginnen. Sobald sie gefunden wurde, teilt sie den Namen auf und zeigt nur die Daten vom Ende an.

Die Kommunikation ist nur ein Weg, die App sendet nichts zurück.

Schritt 3: Fazit

Letztendlich ist diese Methode kein Ersatz für eine ordnungsgemäß implementierte BLE-Bibliothek, aber es könnte ausreichen, einige Projekte zu überbrücken, bis Arduino vollständige BLE-Unterstützung bietet. Hoffentlich war dieses Instructables von einiger Hilfe für Sie.

Ein großes Dankeschön an DFRobot.com für die Zusendung dieser Produkte:

  • ESP32 FireBeetle-Board
  • FireBeetle Expansionsschild
  • DS18B20 Temperatursensor

Ich habe vor kurzem diese Bibliothek gefunden. Die ReadME behauptet, dass Sie sich mit anderen BLE-Geräten verbinden können, um Daten zu empfangen (kann sich nicht selbst bewerben). Ich habe es noch nicht ausprobiert, aber bei Interesse kannst du es dir anschauen.

Sie können das Projektvideo auf YouTube ansehen

Empfohlen: