Initial commit

This commit is contained in:
2026-05-08 10:55:59 -06:00
parent bfb60d1e0c
commit b43782cf9f
9 changed files with 677 additions and 0 deletions
+79
View File
@@ -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
}
}