In diesem Beitrag zeige ich dir, wie du am ESP32C3 Bluetooth BLE verwenden kannst, um Aktoren zu steuern.
Den Mikrocontroller ESP32C3 von Seeed Studio habe ich dir bereits im gleichnamigen Beitrag Mikrocontroller ESP32C3 von Seeed Studio vorgestellt.
Der ESP32C3 kommt mit einer WiFi-Schnittstelle sowie Bluetooth daher. In diesem Beitrag soll es nun darum gehen, wie die Bluetooth-Schnittstelle in dein Projekt einbinden kannst.
Programmieren der Bluetooth-Schnittstelle am ESP32C3 in der Arduino IDE 2.0
Bevor wir mit der Programmierung beginnen können, müssen wir diesen Mikrocontroller zunächst in der Arduino IDE einrichten. Wie du dieses machst, habe ich ebenso im oben verlinkten Beitrag gezeigt. Ich gehe hier nun davon aus, dass dein Mikrocontroller am Computer eingerichtet und lauffähig ist.
Bibliothek ArduinoBLE installieren
Zusätzlich benötigen wir die Bibliothek Arduino BLE, welche wir über den internen Bibliotheksverwalter der Arduino IDE installieren können.
Im Bibliotheksmanager (1) suchen wir zunächst nach “ArduinoBLE” (2), am gefundenen Eintrag “ArduinoBLE by Arduino” (3) wählen wir die Schaltfläche “INSTALL” (4). Wenn die Installation erfolgreich war, dann siehst du dieses an dem Lable “<Versionsnummer> installed” (5).
Programmieren in des Services
Für den BLE Service benötigt du eine UUID diese muss einem bestimmten Schema folgen, auf der Seite https://www.uuidgenerator.net/version1 kannst du mit nur einem Klick dir diese erzeugen und in deinen Code kopieren.
//Bibliothek zum verarbeiten von BLE Schnittstellen am Arduino #include <ArduinoBLE.h> //Pins der LEDs #define ledBlau 10 #define ledGruen 9 #define ledGelb 8 //UUID Generator: https://www.uuidgenerator.net/version1 BLEService bleLEDService("6c20d8ea-e292-11ed-b5ea-0242ac120002"); // BLE Characteristic mit UUID und den Rechten zum Lesen & Schreiben BLEByteCharacteristic bleLEDcharacteristic("613d60f6-e292-11ed-b5ea-0242ac120002", BLERead | BLEWrite); //Felder zum speichern der Status der LEDs bool ledBlauStatus = false; bool ledGruenStatus = false; bool ledGelbStatus = false; void setup() { //Solang der Bluetooth Service nicht initialisiert wurde, dann //eine kleine Pause von 5ms. einlegen. while (!BLE.begin()) { delay(5); } //Name des Services, diesen findet man später in der App wieder BLE.setLocalName("LED-Control"); //koppeln der Services BLE.setAdvertisedService(bleLEDService); bleLEDService.addCharacteristic(bleLEDcharacteristic); BLE.addService(bleLEDService); //schreiben des Wertes 0 bleLEDcharacteristic.writeValue(0); BLE.advertise(); //die Pins der LEDs als Ausgang definieren pinMode(ledBlau, OUTPUT); pinMode(ledGruen, OUTPUT); pinMode(ledGelb, OUTPUT); } void loop() { BLEDevice central = BLE.central(); if (central) { //Wenn eine Verbindung aufgebaut wurde, dann... while (central.connected()) { if (bleLEDcharacteristic.written()) { //lesen des Wertes von der Schnittstelle int value = bleLEDcharacteristic.value(); //Wenn der Wert gleich 0 ist, dann... if (value == 0) { //blaue LED aktivieren ledBlauStatus = !ledBlauStatus; digitalWrite(ledBlau, ledBlauStatus); } else if (value == 1) { //gruene LED aktivieren ledGruenStatus = !ledGruenStatus; digitalWrite(ledGruen, ledGruenStatus); } else if (value == 2) { //gelbe LED aktivieren ledGelbStatus = !ledGelbStatus; digitalWrite(ledGelb, ledGelbStatus); } } } } }
Wenn der obige Code auf den Mikrocontroller gespielt wurde, dann benötigst du noch eine App. Der ESP32C3 hat eine Bluetooth BLE 5.0 Schnittstelle, diese arbeitet deutlich anders als die Vorgängerversionen, daher kannst du das Gerät nicht einfach Koppeln und Daten hin und her senden, sondern benötigst eine spezielle App welche diesen Standard unterstützt.
In meinem Fall nutze ich die App LightBlue, diese gibt für Android und auch Apple Geräte in den jeweiligen Stores.
Im nachfolgenden YouTube-Video zeige ich dir, wie du unter Android eine Verbindung mit dem ESP32C3 via Bluetooth aufbaust und die LEDs steuern kannst.
Wenn du den Code nicht abtippen oder kopieren möchtest, dann kannst du dir diesen auch einfach als ZIP-Datei herunterladen.
[wpdm_package id=’41308′]