[Mikrocontroller]

Feuchtigkeitssensor mit Arduino & Bluetooth Low Energy (BLE)

/arduino-sensordaten-via-bluetooth-le-uebertragen
Feuchtigkeitssensor mit Arduino & Bluetooth Low Energy (BLE)

Heute zeige ich dir, wie du einen **Feuchtigkeitssensor** mit einem **Arduino-Board** einrichtest und die Messdaten über **Bluetooth Low Energy (BLE)** an ein Smartphone oder einen anderen Empfänger sendest. Dieses Beispiel demonstriert, wie grundlegende Bluetooth-Services erstellt und einfache Sensordaten übertragen werden. In meinem Beispiel wird die Bodenfeuchtigkeit eines kapazitiven Soil-Sensors gemessen (siehe Produkte in der Sidebar).

## Hardware-Anforderungen

- Arduino-Board mit BLE-Unterstützung  
  *(z. B. Arduino Nano 33 BLE, MKR WiFi 1010 usw.)*
- Kapazitiver Feuchtigkeitssensor (Soil Sensor)
- USB-Kabel
- Arduino IDE

---

## Das Skript

```cpp
#include <ArduinoBLE.h>

const int sensorPin = A0;   // Sensor-Pin
int minWert = 1023;         // Mindestwert für Feuchtigkeit
int maxWert = 0;            // Maximalwert für Feuchtigkeit
bool isAdvertising = false; // Zustand der Werbung

// UUIDs für den Service und die Charakteristik
const char* serviceUuid = "12345678-1234-1234-1234-123456789012";
const char* charUuid    = "12345678-1234-1234-1234-123456789013";

BLEService customService(serviceUuid); 
BLEIntCharacteristic humidityCharacteristic(charUuid, BLERead | BLENotify);

void setup() {
  Serial.begin(9600);
  while (!Serial);

  // BLE initialisieren
  if (!BLE.begin()) {
    Serial.println("Starting BLE failed!");
    while (1);
  }

  BLE.setLocalName("Sensor01");
  customService.addCharacteristic(humidityCharacteristic);
  BLE.addService(customService);

  BLE.advertise();
  isAdvertising = true;

  Serial.println("Bluetooth device is ready to send humidity");
}

void loop() {
  int sensorValue = analogRead(sensorPin);

  // Maximal- und Minimalwert aktualisieren
  if (sensorValue > maxWert) maxWert = sensorValue;
  if (sensorValue < minWert) minWert = sensorValue;

  // Feuchtigkeit berechnen
  float humidity = map(sensorValue, minWert, maxWert, 100, 0);
  humidity = constrain(humidity, 0, 100);

  humidityCharacteristic.writeValue((int)humidity);

  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.println("%");

  // Verbindung prüfen
  if (BLE.connected()) {
    if (isAdvertising) {
      Serial.println("Device connected, stopping advertising.");
      isAdvertising = false;
    }
  } else {
    if (!isAdvertising) {
      BLE.advertise();
      Serial.println("Advertising restarted");
      isAdvertising = true;
    }
  }

  delay(2000);
}

Aufbau des Skripts

Das Skript besteht aus zwei Hauptbereichen:

  • setup()
    Initialisierung von BLE, Service und Charakteristik sowie Start der Werbung

  • loop()
    Auslesen des Sensors, Berechnung der Feuchtigkeit, Übertragung der Daten und Statuskontrolle


Daten auslesen

Es gibt verschiedene Möglichkeiten, die Daten per Bluetooth zu empfangen.

Am einfachsten ist die Nutzung von Bluetooth-LE-Scanner-Apps, z. B.:

  • BLE Scanner (iOS)
  • BLE Scanner (Android)

Dort findest du dein Arduino-Gerät unter dem Namen „Sensor01“ und kannst die Feuchtigkeitswerte live auslesen.


Anwendungsmöglichkeiten

Dieses Skript eignet sich als Grundlage für viele Projekte:

  • Haus- und Gartenautomatisierung
  • Smart-Home-Systeme
  • Umweltüberwachung
  • Benachrichtigungen bei Grenzwerten
    (z. B. zu trockener Boden)

Fazit

Mit diesem Skript hast du einen soliden Ausgangspunkt, um Sensordaten zuverlässig via Bluetooth Low Energy zu übertragen.

Der Schritt von einem einfachen Feuchtigkeitssensor hin zu einer umfassenden Smart-Home-Lösung ist damit deutlich kleiner, als man zunächst denkt.

Anzeige

/comments0 Einträge

Kommentare

> NO_COMMENTS_FOUND

> INITIATE_COMMENT_PROTOCOL

MARKDOWN_SUPPORT: ENABLED
CHARS: 0