
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.
Kommentare