Heute zeige ich dir, wie du einen Feuchtigkeitssensor mit deinem Arduino Board einrichtest und die Daten über Bluetooth Low Energy (BLE) an ein Smartphone oder einen anderen Empfänger sendest. Dieses Skript zeigt wie man grundlegende Bluetooth Services erstellt und simple Daten übermittelt. In meinem Fall übermitteln wir die Bodenfeuchtigkeit eines kapazitiven soil Sensors wie diesem hier: https://amzn.to/47y0uDv (Achtung Werbung)
Einleitung:
Das hier vorgestellte Skript ist ein einfaches, aber mächtiges Beispiel dafür, wie du die Bodenfeuchtigkeit über BLE übertragen kannst. Es verwendet die ArduinoBLE-Bibliothek, die eine Vielzahl von Werkzeugen zur Kommunikation mit BLE-Geräten bietet.
Hardware-Anforderungen:
- Ein kompatibles Arduino-Board (z.B. Arduino MKR WiFi 1010, Nano 33 IoT, usw.).
- Ein Feuchtigkeitssensor, der an den Analogeingang A0 angeschlossen wird.
- Ein Computer zum Hochladen des Skripts und zum Anzeigen der seriellen Ausgabe.
Das Skript
#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); // Erstellen eines benutzerdefinierten Services
BLEIntCharacteristic humidityCharacteristic(charUuid, BLERead | BLENotify); // Erstellen einer Charakteristik
void setup() {
Serial.begin(9600);
while (!Serial); // Warten, bis die serielle Verbindung hergestellt ist, nützlich für Debugging
// BLE initialisieren
if (!BLE.begin()) {
Serial.println("Starting BLE failed!");
while (1);
}
BLE.setLocalName("Sensor01");
customService.addCharacteristic(humidityCharacteristic); // Charakteristik zum Service hinzufügen
BLE.addService(customService); // Service zum BLE hinzufügen
BLE.advertise(); // Werbung beginnen
isAdvertising = true;
Serial.println("Bluetooth device is ready to send humidity");
}
void loop() {
// Sensorwert lesen
int sensorValue = analogRead(sensorPin);
// Maximal- und Minimalwert aktualisieren
if (sensorValue > maxWert) {
maxWert = sensorValue;
}
if (sensorValue < minWert) {
minWert = sensorValue;
}
// Feuchtigkeit berechnen und begrenzen
float humidity = map(sensorValue, minWert, maxWert, 100, 0);
humidity = constrain(humidity, 0, 100);
// Charakteristikwert aktualisieren
humidityCharacteristic.writeValue((int)humidity);
// Feuchtigkeit auf der seriellen Konsole ausgeben
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println("%");
// Überprüfen der Verbindung und Wiederaufnahme der Werbung bei Bedarf
if (BLE.connected()) {
if(isAdvertising) {
Serial.println("Device connected, stopping advertising.");
isAdvertising = false; // Update the advertising status
}
} else {
if(!isAdvertising) {
BLE.advertise(); // Werbung neu starten
Serial.println("Advertising restarted");
isAdvertising = true; // Update the advertising 3
}
}
delay(2000); // Warte etwas vor dem nächsten Durchlauf
}
Das Skript teilt sich in zwei Hauptteile: setup()
und loop()
.
- Im
setup()
-Teil:
- Die serielle Kommunikation wird initialisiert, was für das Debugging unerlässlich ist.
- Die BLE-Komponente wird konfiguriert, einschließlich des Setzens eines lokalen Namens und des Hinzufügens von Service- und Charakteristiken-UUIDs.
- Die Werbung beginnt, damit das Gerät von anderen BLE-fähigen Geräten entdeckt werden kann.
- Im
loop()
-Teil:
- Der Sensorwert wird gelesen und in eine relative Feuchtigkeit umgerechnet.
- Die Feuchtigkeitsdaten werden über eine BLE-Charakteristik übertragen.
- Das Gerät überwacht seine Verbindung und passt die Werbung entsprechend an.
How To
- Hardware einrichten: Schließe deinen Feuchtigkeitssensor an den A0-Pin deines Arduino-Boards an.
- Software vorbereiten: Lade das ArduinoBLE-Bibliothek über den Bibliotheksmanager in der Arduino-IDE herunter und installiere sie.
- Skript hochladen: Öffne dieses Skript in der Arduino-IDE, wähle dein Board und den Port aus und lade es hoch.
- Überwachen und Interagieren: Öffne den seriellen Monitor in der Arduino-IDE, um die Feuchtigkeitsdaten in Echtzeit zu sehen. Du kannst auch eine BLE-Scanner-App auf deinem Smartphone verwenden, um die übertragenen Daten zu sehen.
Wie können die Daten gelesen werden?
Es gibt viele Möglichkeiten die Daten via Bluetooth zu empfangen. Die einfachste Möglichkeit sind Bluetooth LE Scanner wie beispielsweise die App BLE Scanner fürs iPhone. Mit dieser solltest Du deinen Arduino unter dem Namen „Sensor1“ finden und die Feuchtigkeitsdaten sehen können.
Anwendungsmöglichkeiten:
Dieses Skript ist ein Grundbaustein für zahlreiche Projekte, von der Hausautomatisierung bis hin zur Umweltüberwachung. Du kannst es erweitern, indem du zusätzliche Sensoren hinzufügst, die Daten in einer App visualisierst oder sogar Benachrichtigungen einrichtest, wenn bestimmte Bedingungen erfüllt sind.
Mit diesem Skript hast du einen robusten Ausgangspunkt, um Arduino Sensor Daten via Bluetooth zu übertragen. Der Weg von einem einfachen Feuchtigkeitssensor zur umfassenden Smart-Home Automatisierung ist weniger kompliziert, als du denkst 🙂
Schreibe einen Kommentar