Intelligente AC-Beleuchtung mit Arduino UNO & Relais – Automatische Steuerung
Komponenten und Zubehör
| Komponente | Menge |
|---|---|
| Arduino UNO | 1 |
| Relais-Modul (1 Kanal, 5 V, Active-Low) | 1 |
| Ultraschallsensor HC-SR04 | 1 |
| Energiesparlampe (E27) + Fassung + Netzstecker | 1 |
| 5 V Netzteil (für Arduino) | 1 |
| Steckplatine + Jumper-Kabel | 1 Set |
| Schraubendreher (Kreuz, für Relais-Klemmen) | 1 |
Software & Tools
- Arduino IDE (oder Visual Studio mit Arduino-Extension)
- NewPing-Bibliothek (für HC-SR04, Median-Filter)
Projektbeschreibung
Eine energiesparende Lampe schaltet sich automatisch ein, wenn jemand den Raum betritt, und aus, wenn er ihn verlässt. Erkennung per Ultraschallsensor an der Tür. Das Relais schaltet die 230 V-Leitung der Lampe potencialgetrennt.
⚠ WARNUNG: Das Projekt arbeitet mit 230 V Netzspannung. Nur mit entsprechender Qualifikation oder unter Aufsicht einer Fachkraft durchführen! Alternativ kann das Konzept mit 12 V/24 V LED-Streifen (Low Voltage) gefahrlos nachgebaut werden.
Hardware-Aufbau
Ultraschallsensor HC-SR04
- VCC → 5 V
- GND → GND
- Trig → Pin 12
- Echo → Pin 11
Relais-Modul (Active-Low)
- VCC → 5 V
- GND → GND
- IN1 → Pin 8
Test: IN an 5 V → Relais aus; IN an GND → Relais ein.
Lampe an 230 V
Eine Leitung der Lampe direkt an Netzstecker. Die zweite Leitung unterbrechen: Ein Ende an Relais COM (Common), anderes Ende an NO (Normally Open). Relais zieht an → Stromkreis geschlossen → Lampe an.
Software-Logik
- Distanz per Ultraschall messen (Median-Filter über 7 Messwerte gegen Ausreißer).
- Wenn Objekt näher als
critical_distance_cms(z. B. 50 cm, halbe Türbreite): - Warten, bis Objekt den Bereich verlässt (Distanz > Schwelle).
- Relais-Zustand toggeln (Licht an/aus).
Entprellung & Rauschunterdrückung
Der HC-SR04 liefert gelegentlich 0 (kein Echo) oder Ausreißer. Lösung:
sonar.ping_median(7)→ Median von 7 Messungen.sonar.convert_cm()→ Umrechnung in cm.- Wert 0 → auf
MAX_DISTANCEsetzen (kein Fehlalarm).
unsigned int readDistance() {
unsigned int distance = sonar.convert_cm(sonar.ping_median(7));
if (distance == 0) distance = MAX_DISTANCE;
return distance;
}
Hauptprogramm (Smart_House_Light.ino)
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
#define RELAY_LINE1_PIN 8
#include "NewPing.h"
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
unsigned int critical_distance_cms = 50;
bool state = 0;
void setup() {
Serial.begin(9600);
pinMode(RELAY_LINE1_PIN, OUTPUT);
digitalWrite(RELAY_LINE1_PIN, HIGH); // Relais aus (Active-Low)
}
void loop() {
delay(50);
unsigned int distance = readDistance();
Serial.print("Ultrasonic: "); Serial.print(distance); Serial.println("cm");
if (distance < critical_distance_cms) {
while (distance < critical_distance_cms) {
distance = readDistance();
delay(5);
}
state = !state;
if (state) {
Serial.println("Door Open!");
digitalWrite(RELAY_LINE1_PIN, LOW); // Licht an
} else {
Serial.println("Door Closed!");
digitalWrite(RELAY_LINE1_PIN, HIGH); // Licht aus
}
}
}
Test-Sketch (nur Ultraschall)
#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() { Serial.begin(115200); }
void loop() {
delay(50);
Serial.print("Ping: "); Serial.print(sonar.ping_cm()); Serial.println("cm");
}
Quellcode & Repository
Visual Studio Projekt mit angepasster NewPing-Lib (dynamische Arrays):
GitHub: Arduino_SmartHouseLights
Schaltplan
Herstellungsprozess
- TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
- Echtzeit-Gyroskop-Spiel mit Arduino Nano & MPU-6050
- Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
- Arduino Temperatur- & Feuchtelogger mit DHT11 & Ethernet Shield
- Automatische Pflanzenbewässerung mit Arduino – Sorgenfrei in den Urlaub
- Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
- Intelligente selbstschnürende Schuhe mit integrierter Energiegewinnung
- Echtzeit-Entfernungsmessung mit Arduino Sonar & Processing-Visualisierung
- Licht & Sound zum Geburtstag: DIY Arduino-Projekt
- Stufenlose LED-Helligkeitssteuerung mit Bolt IoT und Arduino UNO