esp32:ble_serial_v1
ESP32 bluetooth BLE serial/UART example - forward: serial ⇔ BLE
#include <BLEDevice.h> #include <BLEServer.h> #include <BLEUtils.h> #include <BLE2902.h> BLECharacteristic *pCharacteristic; bool deviceConnected = false; #define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" // UART service UUID #define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E" #define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E" class MyServerCallbacks: public BLEServerCallbacks { void onConnect(BLEServer* pServer) { deviceConnected = true; Serial.println("connected"); }; void onDisconnect(BLEServer* pServer) { deviceConnected = false; Serial.println("disconnected"); } }; class MyCallbacks: public BLECharacteristicCallbacks { void onWrite(BLECharacteristic *pCharacteristic) { std::string rxValue = pCharacteristic->getValue(); for (int i = 0; i < rxValue.length(); i++) Serial.print(rxValue[i]); } }; void setup() { Serial.begin(115200); BLEDevice::init("ESP32 UART Test"); // // Create the BLE Device Give it a name BLEServer *pServer = BLEDevice::createServer(); // Create the BLE Server pServer->setCallbacks(new MyServerCallbacks()); BLEService *pService = pServer->createService(SERVICE_UUID); pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_TX, BLECharacteristic::PROPERTY_NOTIFY); // Create a BLE Characteristic pCharacteristic->addDescriptor(new BLE2902()); BLECharacteristic *pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_RX, BLECharacteristic::PROPERTY_WRITE); pCharacteristic->setCallbacks(new MyCallbacks()); pService->start(); // Start the service pServer->getAdvertising()->start(); // Start advertising Serial.println("Waiting a client connection to notify..."); } void loop() { if (deviceConnected) { if (Serial.available()) { std::string s = ""; while (Serial.available()) s += Serial.read(); pCharacteristic->setValue(s.c_str()); pCharacteristic->notify(); } } }
esp32/ble_serial_v1.txt · Last modified: by aistis

