Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Seeed Studio ESP32C3 & Bluetooth

Posted on 3. Mai 202324. April 2023 by Stefan Draeger

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.

ESP32-C3 von Seeed Studio
ESP32-C3 von Seeed Studio
ESP32-C3 von Seeed Studio (Rückseite)
ESP32-C3 von Seeed Studio (Rückseite)

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.

ESP32C3 steuern von LEDs per Bluetooth BLE via Android App
Dieses Video auf YouTube ansehen.

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′]

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}