Praxis

 

Praxis 13: Erstellen eines BLE-Scanners

 

Benötigtes Material:

  • ESP32 Dev Modul mit USB-Kabel

Dieser BLE Scanner liest alle BLE Signaturen in der Umgebung aus und gibt diese nach jeweils 10 Sekunden Wartezeit über die serielle Schnittstelle (USB) an den PC aus. Dort können die Informationen über den seriellen Monitor angezeigt werden.

#include <Arduino.h>
/* -------------------------------------
    Praxis 13
    BLE-Scanner mit dem ESP32
  -----------------------------------*/

#include <BLEDevice.h>
#include <BLEScan.h>

int scanTime = 5; //Dauer eines Scanvorgangs
BLEScan* pBLEScan;

class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
    void onResult(BLEAdvertisedDevice advertisedDevice) {
      Serial.printf("Gefundenes Gerät: %s \n", advertisedDevice.toString().c_str());
  }
};

void setup() {
  Serial.begin(115200);
  Serial.println("Suche...");

  BLEDevice::init("");
  pBLEScan = BLEDevice::getScan();
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
  pBLEScan->setActiveScan(true);
  pBLEScan->setInterval(100);
  pBLEScan->setWindow(99);
}

void loop() {
  // Für der Arduino IDE mit Boardtreiber 3.0.x nächste Zeile nutzen
  BLEScanResults foundDevices = *pBLEScan->start(scanTime, false);
  // Für VSCode mit PlatformIO stattdessen die nächste Zeile nutzen
  // BLEScanResults foundDevices = pBLEScan->start(scanTime, false);
  Serial.print("Gefundene Geräte: ");
  Serial.println(foundDevices.getCount());
  Serial.println("Suche abgeschlossen!");
  pBLEScan->clearResults();
  delay(10000);
}

Aufgaben

  1. Geben Sie den Sketch in die IDE ein.
    Beachten Sie die Alternative im loop-Teil (Zeile 33) des Quellcodes, wenn VS Code verwendet wird.
  2. Kompilieren und Übertragen Sie das Programm auf den ESP32.
  3. Sollte es zu Problemen beim Kompilieren geben, müssen ggf. noch fehlende Bibliotheken zur IDE hinzugefügt werden.
  4. 4. Prüfen Sie im seriellen Monitor die ausgegebene Liste.
    Achten Sie auf die richtige Baudrate!