Menü
Microbots
0
  • Robots & Kits
    • ProtoBot
    • CubeBot
    • Robot Parts
  • Modules & Parts
    • CodeCell ESP32 Modules
    • Motors & Actuators
    • LiPo Batteries
  • Gear
    • Tools
    • Merch
  • Machen
    • Erste Schritte
    • Maker-Builds
    • Ausbildung
  • Um
    • Unsere Geschichte
    • Kontakt
    • FAQs
  • Einloggen
  • Ihr Warenkorb ist leer
Microbots
  • Robots & Kits
    • ProtoBot
    • CubeBot
    • Robot Parts
  • Modules & Parts
    • CodeCell ESP32 Modules
    • Motors & Actuators
    • LiPo Batteries
  • Gear
    • Tools
    • Merch
  • Machen
    • Erste Schritte
    • Maker-Builds
    • Ausbildung
  • Um
    • Unsere Geschichte
    • Kontakt
    • FAQs
  • 0 0

CodeCell: Verbindung mit BLE

Bluetooth Low Energy (BLE) ist eine leistungsstarke Möglichkeit zur drahtlosen Kommunikation zwischen Ihrer CodeCell und anderen Geräten wie Smartphones, Tablets und sogar anderen Mikrocontrollern. In dieser Anleitung richten wir BLE auf CodeCell ein, ermöglichen den Empfang von Befehlen von einem BLE-Client und steuern die RGB-LED basierend auf den empfangenen Daten.

Was ist BLE?

BLE ist eine energieeffiziente Version von Bluetooth, die es Geräten ermöglicht, kleine Datenmengen bei geringem Stromverbrauch auszutauschen. Hier sind die wichtigsten Konzepte:

  • BLE-Server → CodeCell fungiert als Server und macht sich bei anderen Geräten bekannt.
  • BLE-Client → Ein Telefon, Tablet oder ein anderer Mikrocontroller, der eine Verbindung zu CodeCell herstellt.
  • BLE-Dienst → Eine Sammlung von Merkmalen , die die gesendeten Daten definieren.
  • BLE-Eigenschaft → Ein bestimmter Datenpunkt (z. B. Tastendrücke, Sensorwerte).

Anzeigen von BLE-Daten auf einem Smartphone

Bevor wir mit dem Testen beginnen, müssen Sie eine App herunterladen, um BLE-Daten auf Ihr Smartphone zu senden. Beginnen Sie mit dem Herunterladen eine BLE-Scanner-App:

  • Android → nRF Connect oder „BLE Scanner“
  • iOS → nRF Connect

Einrichten von BLE auf CodeCell

Damit CodeCell sich selbst als BLE-Gerät ankündigt , müssen wir BLE initialisieren, einen Dienst und eine Eigenschaft erstellen und mit der Werbung beginnen .

Dieser Code erstellt einen BLE-Server , kündigt einen Dienst an und richtet eine Eigenschaft ein , die von einem angeschlossenen Gerät gelesen und geschrieben werden kann. Die CodeCell empfängt die Tasteneigenschaft und steuert ihre integrierte RGB-LED:

  • Wenn der Tastenwert 1 ist , leuchtet die LED rot .
  • Wenn der Tastenwert 0 ist , leuchtet die LED grün .
 #include <BLEDevice.h>
 #include <BLEUtils.h>
 #include <BLEServer.h>
 #include <BLE2902.h>

 #include <CodeCell.h>
 CodeCell myCodeCell;

 BLECharacteristic *pButtonCharacteristic = NULL;
 #define BUTTON_UUID "abcd1234-abcd-1234-abcd-123456789012"

 class MyServerCallbacks : public BLEServerCallbacks {
 void onConnect(BLEServer *pServer) override {
 Serial.println("BLE Connected");
 delay(1000);
 }

 void onDisconnect(BLEServer *pServer) override {
 Serial.println("BLE Disconnected");
 delay(500);
 BLEDevice::startAdvertising(); // Restart advertising
 }
 };

 // Callback class for handling button writes
 class ButtonCallback : public BLECharacteristicCallbacks {
 void onWrite(BLECharacteristic *pCharacteristic) override {
 String value = pCharacteristic->getValue();

 if (value.length() > 0) {
 int buttonState = value[0];

 Serial.print("Button State: "); 
Serial.println(buttonState);

 wenn (ButtonState == 1) {
 myCodeCell.LED(255, 0, 0); // Rote LED, wenn die Taste 1 ist
 } anders {
 myCodeCell.LED(0, 255, 0); // Grüne LED, wenn die Schaltfläche nicht 1 ist
 }
 }
 }
 };

 void setup() {
 Serial.begin(115200);
 myCodeCell.Init(LIGHT); // Initialisiert den Lichtsensor

 BLEDevice::init("CodeCell_BLE"); // BLE-Gerätenamen festlegen
 BLEServer *bleServer = BLEDevice::createServer();
 bleServer->setCallbacks(neu MyServerCallbacks());

 BLEService *bleService = bleServer->createService(BLEUUID("12345678-1234-5678-1234-56789abcdef0"));

 // BLE-Merkmal für den Schaltflächenzustand erstellen
 pButtonCharacteristic = bleService->createCharacteristic(
 BUTTON_UUID,
 BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE
 );
 pButtonCharacteristic->addDescriptor(neues BLE2902());
 pButtonCharacteristic->setCallbacks(neuer ButtonCallback());

 bleService->start();
 
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
 pAdvertising->addServiceUUID("12345678-1234-5678-1234-56789abcdef0");
 BLEDevice::startAdvertising();
 }

 void-Schleife() {
 // Keine ständige Überprüfung erforderlich, LED-Updates nur beim BLE-Schreiben
 }

Wie dieser Code funktioniert

  • BLE-Initialisierung → CodeCell bewirbt sich selbst als BLE-Gerät mit dem Namen "CodeCell_BLE" .
  • BLE-Dienst und -Eigenschaft → Es wird ein Dienst mit einer Schaltflächeneigenschaft erstellt.
  • BLE-Rückrufe → Der Server druckt „BLE Connected“ , wenn ein Client eine Verbindung herstellt, und „BLE Disconnected“, wenn die Verbindung getrennt wird.
  • Neustart der Werbung → Wenn die Verbindung getrennt wird, startet BLE automatisch erneut mit der Werbung, damit neue Geräte eine Verbindung herstellen können.

Testen der LED-Steuerung

  • Stellen Sie in der BLE Scanner-App eine Verbindung zu "CodeCell_BLE" her.
  • Wählen Sie den von Ihnen erstellten Dienst aus (normalerweise wird er als „Unbekannter Dienst“ angezeigt).
  • Suchen Sie die Schaltflächeneigenschaft ( BUTTON_UUID ) und senden Sie den Wert:
    • Schreibe 1 → LED leuchtet rot 🔴
    • Schreibe 0 → LED leuchtet grün 🟢

Senden von Sensordaten

Als Nächstes definieren wir eine neue BLE-Eigenschaft , die es CodeCell ermöglicht, Sensorwerte an ein verbundenes Gerät zu senden .

 #include <BLEDevice.h>
 #include <BLEUtils.h>
 #include <BLEServer.h>
 #include <BLE2902.h>

 #include <CodeCell.h>
 CodeCell myCodeCell;

 BLECharacteristic *pSensorCharacteristic = NULL;
 #define SENSOR_UUID "abcd5678-abcd-5678-abcd-56789abcdef0"

 class MyServerCallbacks : public BLEServerCallbacks {
 void onConnect(BLEServer *pServer) override {
 Serial.println("BLE Connected");
 delay(1000);
 }

 void onDisconnect(BLEServer *pServer) override { 
Serial.println("BLE getrennt");
 Verzögerung (500);
 BLEDevice::startAdvertising(); // Werbung neu starten
 }
 };

 void setup() {
 Serial.begin(115200);
 myCodeCell.Init(LIGHT); // Licht- und Näherungssensor initialisieren

 BLEDevice::init("CodeCell_BLE"); // Benennen Sie das BLE-Gerät
 BLEServer *bleServer = BLEDevice::createServer();
 bleServer->setCallbacks(neu MyServerCallbacks());

 BLEService *bleService = bleServer->createService(BLEUUID("12345678-1234-5678-1234-56789abcdef0"));

 // BLE-Kennlinie für Sensordaten erstellen
 pSensorCharacteristic = bleService->createCharacteristic(
 SENSOR_UUID,
 BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_NOTIFY
 );
 pSensorCharacteristic->addDescriptor(neues BLE2902());

 bleService->start();

 BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
 pAdvertising->addServiceUUID("12345678-1234-5678-1234-56789abcdef0");
 BLEDevice::startAdvertising();
 }

 void-Schleife() { 
if (myCodeCell.Run(10)) { // Alle 100 ms (10 Hz) lesen
 uint16_t Nähe = myCodeCell.Light_ProximityRead();
 Serial.print("Nähe: ");
 Serial.println(Nähe);

 // Näherungswert in Zeichenfolge umwandeln und über BLE senden
 String proximityStr = String(Nähe);
 pSensorCharacteristic->setValue(proximityStr.c_str());
 pSensorCharacteristic->notify(); // Verbundenes Gerät benachrichtigen
 }
 }

Wie funktioniert es?

  • Dieser Code richtet eine neue Eigenschaft ( SENSOR_UUID ) ein , die Clients lesen und von der sie Echtzeit-Updates erhalten können:
    • PROPERTY_READ → Ermöglicht dem Client, den Wert manuell zu lesen.
    • PROPERTY_NOTIFY → Sendet automatisch Updates, wenn neue Daten verfügbar sind.
  • Die Funktion Light_ProximityRead() ruft einen Wert vom integrierten Lichtsensor ab , der nahe gelegene Objekte erkennt. Wir konvertieren die Zahl in eine Zeichenfolge und senden sie an den BLE-Client.

Probieren Sie es aus

Da CodeCell jetzt Näherungssensordaten über BLE sendet , können Sie diese auf einem Telefon anzeigen .

  • Öffnen Sie eine BLE-App wie nRF Connect (Android/iOS)
  • Nach "CodeCell_BLE" suchen und verbinden
  • Suchen Sie die Sensorcharakteristik ( SENSOR_UUID )
  • Aktivieren Sie Benachrichtigungen und beobachten Sie, wie sich die Näherungsdaten in Echtzeit aktualisieren!
  • Ihre Serial Monitor-Daten sollten mit den an Ihr Telefon gesendeten Daten übereinstimmen

Bewegen Sie ein Objekt in die Nähe des Sensors und sehen Sie, wie sich die Werte ändern!

Wie geht es weiter?

Nachdem Sie CodeCell nun über BLE steuern können, versuchen Sie:

  • Hinzufügen weiterer Befehle (z. B. blaue LED, Blinken, Sensorauslöser)
  • Empfangen mehrerer Werte (z. B. Senden von Beschleunigungs- oder Näherungssensordaten)
  • Erstellen Sie ein vollständig BLE-gesteuertes IoT-Gerät oder verbinden Sie es sogar mit einer anderen App


  • Teilen:

Sozial

Github

  • Um
  • Software
  • Ausbildung
  • Kontakt
  • FAQs
  • Bedingungen
  • Rückerstattung-Politik
  • Datenschutzrichtlinie

Erfahren Sie als Erster von neuen Projekten und sichern Sie sich spannende Angebote!

© 2026 Microbots.

★ Reviews

Let customers speak for us

86 reviews
Write a review
87%
(75)
5%
(4)
2%
(2)
2%
(2)
3%
(3)
80
21
A
ProtoBot
Anonymous

This is a great product for beginners who want hands-on experience with Arduino and 3D printing. The Protobot has a sleek, solid design, and the software is just as polished. I’ve bought several educational robotics kits, and this is the best one so far. Looking forward to more awesome products!

Thank you so much for your kind review! 😊

F
ProtoBot
Francis van Uyten

Really love this robot. I like that is simple to assemble and I like that you guys prepares it easy to start programming with examples and libraries. My opinion on what to improve is more like a add-on, can you guys develop a localisation sensor or function so it will know where the bot is. Expecting only great things coming from you guys. Succes

Thank you so much for your thoughtful review! Glad you’re enjoying ProtoBot 😊 A localisation sensor is a great suggestion! The I²C connection lets you add compatible sensors, so there’s room to explore this. Thanks for your support!

G
Experiment in Progress Mug
Gerald Kendrick

I am enjoying my Experiment in Progress coffee mug. It fits in well in the lab.

Hi Gerald, we’re so glad you’re enjoying it! Thanks for sharing your kind review.

K
12-in-1 Screwdriver (Pen-Size)
Klaas

Very useful fun little screwdriver for the all tiny stuff

Hi Klaas, thanks for the great review! We’re glad you’re enjoying your screwdriver!

f
ProtoBot
frederic marty

I don't have much time right now to test the micro bot, but it looks good.