Initial commit
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
#include <Arduino.h>
|
||||
|
||||
#include <BLEDevice.h>
|
||||
#include <BLEUtils.h>
|
||||
#include <BLEServer.h>
|
||||
#include <BLE2902.h>
|
||||
|
||||
BLEServer* pServer = NULL;
|
||||
BLECharacteristic* pCharacteristic = NULL;
|
||||
bool deviceConnected = false;
|
||||
int contador = 0;
|
||||
|
||||
// UUIDs únicos (puedes generar los tuyos en uuidgenerator.net)
|
||||
#define SERVICE_UUID "794ff2e6-d4ac-4b80-b97e-dad2d577f17b"
|
||||
#define CHARACTERISTIC_UUID "26dc4777-a57b-4caa-8a55-2be55a5663c6"
|
||||
|
||||
class MyServerCallbacks: public BLEServerCallbacks {
|
||||
void onConnect(BLEServer* pServer) {
|
||||
deviceConnected = true;
|
||||
};
|
||||
void onDisconnect(BLEServer* pServer) {
|
||||
deviceConnected = false;
|
||||
// Reiniciar publicidad para permitir reconexión
|
||||
pServer->getAdvertising()->start();
|
||||
}
|
||||
};
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
|
||||
// Inicializar dispositivo
|
||||
BLEDevice::init("Debian BLE Server");
|
||||
|
||||
// Crear Servidor BLE
|
||||
pServer = BLEDevice::createServer();
|
||||
pServer->setCallbacks(new MyServerCallbacks());
|
||||
|
||||
// Crear Servicio
|
||||
BLEService *pService = pServer->createService(SERVICE_UUID);
|
||||
|
||||
// Crear Característica con Notificación
|
||||
pCharacteristic = pService->createCharacteristic(
|
||||
CHARACTERISTIC_UUID,
|
||||
BLECharacteristic::PROPERTY_READ |
|
||||
BLECharacteristic::PROPERTY_NOTIFY
|
||||
);
|
||||
|
||||
// Descriptor necesario para notificaciones (Client Characteristic Configuration)
|
||||
pCharacteristic->addDescriptor(new BLE2902());
|
||||
|
||||
pService->start();
|
||||
|
||||
// Iniciar Publicidad (Advertising)
|
||||
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
|
||||
pAdvertising->addServiceUUID(SERVICE_UUID);
|
||||
pAdvertising->setScanResponse(true);
|
||||
pAdvertising->start();
|
||||
Serial.print("Dirección del dispositivo: ");
|
||||
Serial.println(BLEDevice::getAddress().toString().c_str());
|
||||
Serial.println("Esperando conexión BLE...");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (deviceConnected) {
|
||||
if (contador <= 100) {
|
||||
char str[10];
|
||||
itoa(contador, str, 10); // Convertir int a string
|
||||
|
||||
pCharacteristic->setValue(str);
|
||||
pCharacteristic->notify(); // Enviar valor a la PC
|
||||
|
||||
Serial.printf("Enviando: %d\n", contador);
|
||||
contador++;
|
||||
} else {
|
||||
contador = 0; // Reiniciar si llega a 100
|
||||
}
|
||||
delay(1000); // Enviar cada segundo
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user