basically i created code to send data from android mobile to esp32 but it sends to only one ID which is "CHARACTERISTIC_UUID_RX" and i want multiple data to send from my android device to esp32 anyone please help me how to create multiple CHARACTERISTIC_UUID_RX
here is code which i am using it work only single CHARACTERISTIC_UUID_RX i want to add more please tell me how can i do that
/* Video: https://www.youtube.com/watch?v=oCMOYS71NIU Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleNotify.cpp Ported to Arduin
esp32_ble_arduino_code.ino (5.0 KB)
o ESP32 by Evandro Copercini
Create a BLE server that, once we receive a connection, will send periodic notifications.
The service advertises itself as: 6E400001-B5A3-F393-E0A9-E50E24DCCA9E
Has a characteristic of: 6E400002-B5A3-F393-E0A9-E50E24DCCA9E - used for receiving data with "WRITE"
Has a characteristic of: 6E400003-B5A3-F393-E0A9-E50E24DCCA9E - used to send data with "NOTIFY"The design of creating the BLE server is:
- Create a BLE Server
- Create a BLE Service
- Create a BLE Characteristic on the Service
- Create a BLE Descriptor on the characteristic
- Start the service.
- Start advertising.
In this example rxValue is the data received (only accessible inside that function).
And txValue is the data to be sent, in this example just a byte incremented every second.
*/
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>BLECharacteristic *pCharacteristic;
bool deviceConnected = false;
int txValue = 0;//defining the service & characteristica
// https://www.uuidgenerator.net/
#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;
};void onDisconnect(BLEServer* pServer) { deviceConnected = false; }
};
class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
std::string rxValue = pCharacteristic->getValue();if(rxValue.length()>0){ Serial.println("====START=RECEIVE===="); Serial.print("Received Value:"); for(int i = 0; i<rxValue.length(); i++){ Serial.print(rxValue[i]); } Serial.println(); Serial.println("===END=RECEIVE==="); } }
};
void setup() {
Serial.begin(115200);// Create the BLE Device
BLEDevice::init("ESP32 UART Test"); // Give it a name// Create the BLE Server
BLEServer *pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());// Create the BLE Service
BLEService *pService = pServer->createService(SERVICE_UUID);// Create a BLE Characteristic
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID_TX,
BLECharacteristic::PROPERTY_NOTIFY
);pCharacteristic->addDescriptor(new BLE2902());
//CHAR. FOR RECEIVING END
BLECharacteristic *pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID_RX,
BLECharacteristic::PROPERTY_WRITE
);pCharacteristic->setCallbacks(new MyCallbacks());
// Start the service
pService->start();// Start advertising
pServer->getAdvertising()->start();
Serial.println("Waiting a client connection to notify...");
}void loop() {
delay(1000);
}