- Erste Schritte mit ESP32 Bluetooth
- Grundlegendes zu Bluetooth Low Energy (BLE) und ESP32 Classic Bluetooth
- Arduino IDE für ESP32 vorbereiten
- Serielles Bluetooth-Programm für ESP32
- Testen von seriellem Bluetooth mit ESP32
Bluetooth-Module wie HC-05 und HC-06 sind mit Arduino IDE einfach einzurichten und schnell zu verwenden, haben jedoch ihre eigenen Einschränkungen wie einen hohen Stromverbrauch und arbeiten mit dem alten Bluetooth V2.0. Außerdem habe ich mir kürzlich ein neues ESP32-DEV-Kit besorgt. Diese Module bieten eine Reihe von Funktionen wie integriertes Wi-Fi und Bluetooth, zahlreiche ADC- und DAC-Pins, Audio-Unterstützung, SD-Karten-Unterstützung, Tiefschlaf-Modus usw., die es fast hat alles, um IoT-Projekte zu erstellen.
Und genau wie jeder Hobbyist es lieben würde, wird das ESP32 jetzt offiziell von der Arduino IDE unterstützt. Früher mussten wir eine große Problemumgehung mit der Neil Kolbans Library durchführen, aber jetzt ist ESP32 mit Arduino IDE dank der harten Arbeit dieses Typen zu einem Kinderspiel geworden. Daher startete ich meine Arduino IDE und ging einige Beispiele für BLE-Programme durch, durch die ich nichts verstand. Nach einer langen Zeit des Surfens und Youtubings wurde mir klar, dass es noch viel mehr zu verstehen gibt, wenn Sie mit Bluetooth Low Energy (BLE) unter Verwendung von ESP32 arbeiten müssen. Ich habe beschlossen, die BLE in separaten Artikeln zu behandeln. Daher werden wir hier das klassische serielle Bluetooth von ESP32 verwenden, um eine LED mithilfe eines Smartphones umzuschalten. Wenn Sie sich über die Verwendung der BLE-Funktionen informieren möchten, lesen Sie diesen Artikel über ESP32 BLE Server und ESP32 BLE Client
Erste Schritte mit ESP32 Bluetooth
Das erste Programm, das ich ausprobieren wollte, war ein einfaches Programm, mit dem ich eine LED über eine Bluetooth-Terminal-Anwendung eines Mobiltelefons ein- oder ausschalten kann, genau wie in den guten alten HC-05-Tagen. Es stellt sich jedoch heraus, dass Bluetooth Low Energy (BLE) dafür nicht eingerückt ist. Ich habe auch festgestellt, dass das ESP32-Modul zwei Arten von Bluetooth enthält: das klassische Bluetooth und das andere BLE Bluetooth Low Energy. Okay, aber warum?…. warum haben wir zwei Arten von Bluetooth und was soll ich für mein Projekt verwenden?
Grundlegendes zu Bluetooth Low Energy (BLE) und ESP32 Classic Bluetooth
Wie der Name schon sagt, verbraucht Bluetooth Low Energy weniger Strom als klassisches Bluetooth. Dies wird erreicht, indem Daten nach Bedarf mit vordefinierten regelmäßigen Aktualisierungen gesendet werden. Im Gegensatz zu klassischem Bluetooth wird es jedoch nicht zum Übertragen von Dateien oder Musik verwendet. Haben Sie sich jemals gefragt, wie Ihr Telefon automatisch erkennt, dass das gerade gekoppelte Bluetooth-Gerät ein Audiogerät oder ein Laptop oder Telefon ist, haben Sie möglicherweise auch festgestellt, dass der Akkuladestand im drahtlosen Audioplayer oder Fitnessband automatisch in der Statusleiste von angezeigt wird dein Handy; All dies ist mit den Eigenschaften von BLE-Geräten möglich. Ein BLE-Gerät arbeitet mit Bluetooth V4.0 und kann mit geringem Stromverbrauch als Server oder als Client betrieben werdenBLE eine ideale Wahl für Baken, intelligente Uhren, Fitness Bands etc.
Klassisches Bluetooth hingegen ist nur das einfache alte Bluetooth, mit dem wir Dateien und andere Daten übertragen. Fast allen BLE-Geräten ist die klassische Bluetooth-Funktionalität zugeordnet. Das in Modulen wie HC-05 verwendete Bluetooth ist eine Version des klassischen Bluetooth namens Bluetooth SSP (Serial Port Protocol), dh das Bluetooth folgt dem seriellen Standardprotokoll, das das Senden und Empfangen von Daten ohne großen Aufwand erleichtert. Am Ende dieses Tutorials erfahren Sie, wie Sie die serielle Bluetooth-Funktionalität in ESP32 verwenden.
Hier in diesem Artikel verwenden wir die serielle Bluetooth-Funktion des ESP32, um sie mit einem Smartphone zu koppeln, und verwenden eine vorhandene Bluetooth-Terminal-App aus dem Play Store, um Befehle an den ESP32 zu senden und die integrierte LED entsprechend umzuschalten.
In späteren Artikeln werden wir ESP32 BLE sowohl als Server als auch als Client behandeln. Der BLE-Server wird im Allgemeinen zum Senden von BLE-Daten an andere Bluetooth-Geräte verwendet, und der BLE-Client wird zum Scannen anderer BLE-Geräte verwendet, um als Beacon zu fungieren.
Arduino IDE für ESP32 vorbereiten
Beachten Sie, dass Arduino IDE standardmäßig keine ESP32-Karte unterstützt. Sie müssen sie mit dem Board Manager herunterladen und installieren. Wenn dies Ihr erstes Programm mit ESP32 ist, befolgen Sie dieses Tutorial, um die ESP32-Karte zu Ihrem Arduino hinzuzufügen und eine Testskizze hochzuladen.
Darüber hinaus können Sie mit ESP32 mehr Projekte ausführen, ohne einen Mikrocontroller zu verwenden.
Serielles Bluetooth-Programm für ESP32
Das vollständige Programm zum Umschalten einer LED mit ESP32 Bluetooth finden Sie am Ende dieser Seite. Lassen Sie uns unter dieser Überschrift den Code in kleine Schnipsel aufteilen und versuchen, diese zu verstehen. Wenn Sie bereits andere Bluetooth-Module wie HC-05 verwendet haben, ist dieses ESP32 Bluetooth Classic-Beispielprogramm sehr ähnlich.
Die Idee des Programms besteht darin, eine serielle Bluetooth-Verbindung mit ESP32 zu initialisieren und auf Daten von gekoppelten Geräten zu warten. Wenn die eingehenden Daten '1' sind, schalten wir die LED ein und wenn sie '0' ist, sollten wir die LED ausschalten. Wir beginnen unser Programm mit dem Hinzufügen der Header-Datei BluetoothSerial, mit der das ESP32 Bluetooth als Bluetoth SSP funktioniert.
#include "BluetoothSerial.h" // Header-Datei für serielles Bluetooth wird standardmäßig zu Arduino hinzugefügt
Hinter dieser Bibliothek ist eine Menge los, aber wir haben uns entschieden, nicht tief in sie einzudringen, um die Dinge einfach zu halten. Das nächste, was wir brauchen, ist ein Objekt für unsere Bluetooth-bezogenen Operationen. Hier habe ich meine als ESP_BT benannt , aber Sie können einen beliebigen Namen wählen.
BluetoothSerial ESP_BT; // Objekt für Bluetooth
Als nächstes in der void setup () Funktion. Wir beginnen die serielle Kommunikation mit der Baudrate 9600 und initialisieren das Bluetooth-Signal mit einem Namen. Hier habe ich es als "ESP32_LED_Control " bezeichnet. Dies ist der Name, den unser Telefon beim Pairing findet. Schließlich habe ich den eingebauten LED-Pin als Ausgangs-Pin deklariert, da wir ihn basierend auf dem Bluetooth-Signal umschalten werden.
void setup () { Serial.begin (9600); // Seriellen Monitor in 9600 ESP_BT.begin starten ("ESP32_LED_Control"); // Name Ihres Bluetooth-Signals Serial.println ("Bluetooth-Gerät ist bereit zum Koppeln"); pinMode (LED_BUILTIN, OUTPUT); // Geben Sie an, dass der LED-Pin ausgegeben wird }
Innerhalb der unendlichen Leere Schleife Funktion, wir überprüfen, ob es irgendwelche Daten in dem Bluetooth - Modul kommen, wenn ja, dann werden die Daten in den Variablen gelesen und gespeichert eingehenden . Wir drucken diesen Wert auch auf den seriellen Monitor, um zu überprüfen, was vom Arduino empfangen wird.
if (ESP_BT.available ()) // Überprüfen Sie, ob wir etwas von Bluetooth erhalten { eingehend = ESP_BT.read (); // Lesen Sie, was wir erhalten Serial.print ("Received:"); Serial.println (eingehend);
Jetzt werden alle empfangenen Daten in der eingehenden Variablen gespeichert, sodass wir diese Variable direkt mit dem erwarteten Wert vergleichen und die erforderliche Aktion ausführen können. Aber der Wert von Bluetooth gesendet wird in seine char Form und Arduino den Dezimal - Wert der Zeichen lesen, die vom Telefon gesendet wird. In unserem Fall ist für char '0' der Dezimalwert 48 und für char '1' der Dezimalwert 49. Sie können anhand des ASCII-Diagramms verstehen, welcher Dezimalwert für jedes Zeichen gilt.
Hier haben wir die eingehende Variable mit 48 und 49 verglichen, um nach 0 bzw. 1 zu suchen. Wenn es eine 1 ist, schalten wir die LED aus und drucken auch eine Bestätigungsnachricht an Bluetooth zurück, die besagt, dass die LED ausgeschaltet wurde und umgekehrt für 0.
if (eingehend == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED leuchtet"); } if (eingehend == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED ausgeschaltet"); }}
Testen von seriellem Bluetooth mit ESP32
Verbinden Sie Ihr ESP mit Ihrer Arduino IDE und wählen Sie die richtige Karte und den richtigen Port aus, wie im Tutorial Erste Schritte beschrieben. Da es sich um einen Board-Manager einer dritten Partei handelt, kann es etwas länger dauern, bis der Code kompiliert und hochgeladen ist. Starten Sie nach dem Hochladen die seriellen Monitore (nur zum Debuggen) und öffnen Sie die Bluetooth-Einstellung auf Ihrem Telefon. Sie sollten ein Bluetooth-Gerät mit dem Namen ESP32_LED_Control- Paar mit finden.
Jetzt können Sie jede Bluetooth-Terminal-App auf Ihrem Smartphone öffnen. Ich verwende die App „Bluetooth-Terminal“, die aus dem Google App Store heruntergeladen wurde. Verbinden Sie die Bluetooth-Anwendung mit dem gerade gekoppelten Gerät, geben Sie 1 ein und drücken Sie Senden.
Das ESP32-Modul sollte es empfangen und die LED gemäß unserem Programm einschalten. Außerdem erhalten Sie eine Bestätigungsmeldung, dass die LED wie im obigen Screenshot eingeschaltet ist. Sie können auch den seriellen Monitor überprüfen, auf dem die vom ESP32 Bluetooth empfangenen Daten im Dezimalformat angezeigt werden. Ihr Arduino liest 48 für 0 und 49 für 1, wie zuvor erläutert. Der Schnappschuss meines Terminalfensters ist unten dargestellt.
Ebenso sollten Sie in der Lage sein, die LED auszuschalten, indem Sie 0 von der mobilen Anwendung senden. Die komplette Arbeit ist im Video unten gezeigt. Ich hoffe, Sie haben das Tutorial verstanden und etwas Nützliches gelernt. Wenn Sie irgendwelche Zweifel haben, können Sie diese gerne im Kommentarbereich unten hinterlassen oder unsere Foren für andere technische Hilfe nutzen.