Differences

This shows you the differences between two versions of the page.

Link to this comparison view

iothings:laboratoare:2022:lab7 [2025/09/28 17:43]
dan.tudose [Sparrow BLE Service]
iothings:laboratoare:2022:lab7 [2025/09/28 17:46] (current)
dan.tudose [UUID]
Line 72: Line 72:
 In essence, the UUID serves the purpose of uniquely identifying information. For example, it can distinguish a specific service provided by a Bluetooth device. In essence, the UUID serves the purpose of uniquely identifying information. For example, it can distinguish a specific service provided by a Bluetooth device.
  
 +===== Advertise on BLE  =====
 +
 +Build the example below, which advertises the board on BLE. Install on your phone an app that scans nearby Bluetooth devices, such as [[https://​play.google.com/​store/​apps/​details?​id=no.nordicsemi.android.mcp&​hl=en&​pli=1| nRF Connect]]. Check if your device is in the list.
 +
 +<code C main.cpp>​
 +#include <​Arduino.h>​
 +#include <​NimBLEDevice.h>​
 +
 +static const char* DEVICE_NAME = "​ESP32-C6 Demo";
 +static NimBLEUUID SERVICE_UUID("​6E400001-B5A3-F393-E0A9-E50E24DCCA9E"​);​
 +static NimBLEUUID CHAR_UUID ​  ​("​6E400002-B5A3-F393-E0A9-E50E24DCCA9E"​);​
 +
 +NimBLEServer* ​        ​gServer = nullptr;
 +NimBLEService* ​       gService = nullptr;
 +NimBLECharacteristic* gChar = nullptr;
 +
 +void startBLE() {
 +  NimBLEDevice::​init(DEVICE_NAME);​
 +
 +  gServer ​ = NimBLEDevice::​createServer();​
 +  gService = gServer->​createService(SERVICE_UUID);​
 +
 +  gChar = gService->​createCharacteristic(
 +    CHAR_UUID,
 +    NIMBLE_PROPERTY::​READ
 +  );
 +  gChar->​setValue("​Hello from ESP32-C6!"​);​
 +  gService->​start();​
 +
 +  NimBLEAdvertising* adv = NimBLEDevice::​getAdvertising();​
 +
 +  // Advertise our service UUID
 +  adv->​addServiceUUID(SERVICE_UUID);​
 +
 +  // (v2.x) Build advertising + scan-response payloads explicitly
 +  NimBLEAdvertisementData advData;
 +  advData.setFlags(0x06);​ // LE General Discoverable + BR/EDR Not Supported
 +
 +  NimBLEAdvertisementData scanData;
 +  scanData.setName(DEVICE_NAME);​ // put the name in scan response
 +  // you can also add manufacturer data here if you want:
 +  // std::string mfg = "​\x34\x12C6";​ scanData.setManufacturerData(mfg);​
 +
 +  adv->​setAdvertisementData(advData);​
 +  adv->​setScanResponseData(scanData);​
 +
 +  // Appearance is still supported
 +  adv->​setAppearance(0x0200);​ // Generic Tag
 +
 +  NimBLEDevice::​startAdvertising();​
 +}
 +
 +void setup() {
 +  Serial.begin(115200);​
 +  while (!Serial) { delay(10); }
 +  startBLE();
 +  Serial.println("​Advertising as ESP32-C6 Demo. Open nRF Connect -> Scan."​);​
 +}
 +
 +void loop() {
 +  delay(1000);​
 +}
 +
 +</​code>​
 +
 +{{:​iothings:​laboratoare:​lab1-ble-scanner.jpg?​300|}}
  
 ===== Project Overview ===== ===== Project Overview =====
iothings/laboratoare/2022/lab7.txt · Last modified: 2025/09/28 17:46 by dan.tudose
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0