Ein Kollege hat bei OBI eine einfache, batteriebetriebene Weihnachtsdeko gekauft – hübsch anzusehen, aber mit einem bekannten Problem: Sie leuchtet dauerhaft, bis die Batterien leer sind. In diesem Projekt zeige ich, wie sich genau diese Weihnachtsdeko mit einem Arduino und einem Bewegungssensor sinnvoll pimpen lässt.
Statt permanent aktiv zu sein, schaltet sich die Beleuchtung nur dann ein, wenn sich jemand nähert. Das spart nicht nur Energie, sondern sorgt auch für einen überraschenden Effekt, weil die Deko direkt auf Bewegung reagiert. Umgesetzt wird das Ganze mit einem Arduino Nano V3, einem Abstandssensor und einem Relais – ganz ohne WLAN, Bluetooth oder zusätzliche Bibliotheken.
Das Ergebnis ist ein einfaches Arduino-Weihnachtsprojekt, das sich schnell nachbauen lässt, zuverlässig funktioniert und zeigt, wie man mit wenig Aufwand aus günstiger Weihnachtsdeko ein cleveres DIY-Projekt macht.
Das Projekt zeigt:
- wie der Arduino die vorhandene Elektronik steuert
- wie der Abstandssensor eingebunden wird
- und wie man die Steuerung so programmiert, dass die Deko automatisch ein- und wieder ausschaltet
Ein ideales Mini-Upgrade für günstige Weihnachtsdeko – ohne Funk, ohne App, aber trotzdem eine deutliche Aufwertung.
Teileliste für das Upgrade
Damit die Weihnachtsdeko auf Annäherung reagiert, brauchst du nur ein paar günstige Komponenten und etwas Werkzeug.
Elektronische Komponenten
- Weihnachtsdeko (batteriebetrieben, z. B. von OBI)
- Arduino Nano V3* – kompakt, günstig und ideal für kleine Projekte
- Ultraschall-Abstandssensor (HC-SR04)* – erkennt zuverlässig, wenn sich jemand nähert
- Relaismodul (1-Kanal)* – um die bestehende Beleuchtung sicher zu schalten
- Powerbank* mit ausreichend Kapazität – versorgt Arduino & Sensor stabil
- Lochrasterplatine* für die Verdrahtung
- AWG-Kabel* (dünn und flexibel, ideal für enge Gehäuse)
- Hohlbuchsen/Hohlstecker* – für die Verbindung der Deko mit der Elektronikbox
- 1m 2adriges Kabel – für die Verbindung von Deko und Elektronikbox
- eine Frischedose – für die Elektronik
Werkzeug & Verbrauchsmaterial
- Stufenbohrer – perfekt, um saubere Öffnungen für den Sensor in die Deko zu bohren
- Heißklebepistole – zur fixen Befestigung von Sensor, Kabeln & Relais
- Silikon – zum Abdichten oder Stabilisieren der Bohrungen, je nach Material
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Hinweis aus der Praxis: Elektronik auslagern lohnt sich
Ursprünglich war geplant, die komplette Elektronik direkt in der Gehäuseunterseite der Weihnachtsdeko unterzubringen. In der Praxis hat sich jedoch schnell gezeigt, dass der verfügbare Platz dafür schlicht zu knapp ist. Sensor, Arduino, Relais und Verkabelung ließen sich zwar irgendwie unterbringen, wirklich zuverlässig und sauber funktionierte das Ganze am Ende aber nicht.

Die deutlich bessere Lösung war daher, die Elektronik auszulagern:
Alle Komponenten kommen in eine kleine Frischebox, die über eine Hohlbuchse mit der eigentlichen Deko verbunden wird. Das hat gleich mehrere Vorteile:
- deutlich mehr Platz für saubere Verdrahtung
- bessere Zugänglichkeit für Anpassungen oder Reparaturen
- kein Stress mit zu engen Gehäusen oder beschädigter Deko


Die Box lässt sich anschließend ganz einfach in Geschenkpapier einwickeln und unauffällig neben die Weihnachtsdeko stellen – optisch fällt sie damit kaum auf.


Für die Frischebox müssen lediglich ein paar Aussparungen eingeplant werden:
- für den Ultraschall-Abstandssensor
- für den Drehpoti (zur Einstellung der Auslöse-Distanz)
- für den Anschluss der Hohlbuchse zur Deko
- sowie für das USB-Kabel der Powerbank
Gerade bei batteriebetriebener Deko ist diese externe Lösung oft der deutlich entspanntere und robustere Weg.
Die Schaltung – unspektakulär, aber effektiv
Fangen wir mit der kleinen Schaltung an. Große Überraschungen gibt es hier nicht:
Am Arduino Nano V3 werden ein Ultraschall-Abstandssensor, ein Drehpotentiometer sowie ein Relais angeschlossen.
Der Ultraschallsensor übernimmt die eigentliche Arbeit und misst kontinuierlich den Abstand vor der Weihnachtsdeko. Über das Drehpotentiometer lässt sich komfortabel einstellen, ab welcher Distanz die Deko aktiviert werden soll – ganz ohne Code neu flashen zu müssen. Das Relais wiederum schaltet die eigentliche Beleuchtung der Deko ein und aus, unabhängig davon, ob diese ursprünglich batteriebetrieben war.

Die Schaltung ist bewusst einfach gehalten, robust aufgebaut und eignet sich auch für Einsteiger. Ziel ist keine komplexe Elektronik, sondern eine zuverlässige Steuerung, die im Alltag problemlos funktioniert und sich leicht anpassen lässt.
Quellcode
Der folgende Arduino-Sketch ist bewusst einfach und schlank gehalten. Er kommt komplett ohne zusätzliche Bibliotheken aus und nutzt ausschließlich die Bordmittel der Arduino-IDE. Dadurch lässt sich der Code problemlos auf jedem Arduino Nano V3 kompilieren und eignet sich auch sehr gut für Einsteiger oder schnelle Anpassungen.
Die Logik ist übersichtlich aufgebaut:
Der Ultraschall-Abstandssensor misst kontinuierlich die Distanz vor der Weihnachtsdeko, während ein Drehpotentiometer die gewünschte Auslöse-Entfernung vorgibt. Sobald der gemessene Abstand kleiner ist als der eingestellte Schwellwert, wird über ein Relais die Beleuchtung der Deko aktiviert. Nach einer definierten Zeit schaltet sich diese automatisch wieder ab.
Durch den Verzicht auf externe Bibliotheken bleibt der Sketch nicht nur leicht verständlich, sondern auch robust und unabhängig von Versionsänderungen oder Bibliotheks-Updates. Ideal also für ein kleines, zuverlässiges DIY-Projekt zur Adventszeit.
/*******************************************************
* Projekt: Weihnachtsdeko mit Bewegungssensor pimpen
*
* Beschreibung:
* In diesem Projekt wird eine einfache, batteriebetriebene
* Weihnachtsdeko mit einem Arduino Nano V3 erweitert.
* Ein Ultraschall-Abstandssensor erkennt, wenn sich eine
* Person der Deko nähert. Wird eine zuvor definierte Distanz
* unterschritten, schaltet ein Relais die Beleuchtung ein.
*
* Die Auslöse-Distanz lässt sich komfortabel über ein
* Drehpotentiometer einstellen – ganz ohne den Code
* neu flashen zu müssen.
*
* Vorteile dieser Lösung:
* - deutlich geringerer Batterieverbrauch
* - cooler Effekt durch bewegungsabhängige Aktivierung
* - keine Funktechnik (kein WLAN / Bluetooth nötig)
* - einfache, robuste Schaltung
*
* Passender Blogbeitrag:
* https://draeger-it.blog/weihnachtsdeko-mit-bewegungssensor-pimpen/
*
*******************************************************/
// ------------------------------
// Pin-Definitionen
// ------------------------------
// Digitaler Pin für das Relais
// Achtung: Viele Relaismodule sind LOW-aktiv!
// LOW = Relais EIN (Deko leuchtet)
// HIGH = Relais AUS (Deko aus)
#define RelaisPin 9
// Pins für den Ultraschall-Abstandssensor (z. B. HC-SR04)
#define TrigPin 3 // Sendet das Ultraschallsignal
#define EchoPin 4 // Empfängt das Echo-Signal
// ------------------------------
// Initialisierung
// ------------------------------
void setup() {
// Serielle Schnittstelle zur Ausgabe von Messwerten
Serial.begin(9600);
// Pin-Modi festlegen
pinMode(RelaisPin, OUTPUT);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
// Relais beim Start ausschalten
digitalWrite(RelaisPin, HIGH);
}
// ------------------------------
// Hauptschleife
// ------------------------------
void loop() {
// Abstand per Ultraschallsensor messen
// round() rundet den Wert auf eine ganze Zahl
float abstandGemessen = round(getUltrasonicValue());
// Aktuellen Ist-Abstand im seriellen Monitor ausgeben
Serial.println("Abstand (Ist): " + String(abstandGemessen, DEC) + " cm");
// Potentiometer-Wert einlesen (0–1023)
int potiValue = analogRead(A0);
// Potentiometer-Wert auf eine Distanz in cm abbilden
// (hier: 0–123 cm als sinnvoller Bereich)
int abstandAktion = map(potiValue, 0, 1023, 0, 123);
// Eingestellte Auslöse-Distanz ausgeben
Serial.println("Abstand (Aktion): " + String(abstandAktion, DEC) + " cm");
// Vergleich: Ist der gemessene Abstand kleiner
// als der eingestellte Aktionsabstand?
if (abstandGemessen < abstandAktion) {
// Relais einschalten → Weihnachtsdeko aktiv
digitalWrite(RelaisPin, LOW);
// Deko bleibt für 15 Sekunden eingeschaltet
// verhindert ständiges Ein-/Ausschalten
delay(15000);
} else {
// Relais ausschalten → Deko aus
digitalWrite(RelaisPin, HIGH);
}
// Kurze Pause zur Stabilisierung der Messung
delay(150);
}
// ------------------------------
// Funktion zur Abstandsmessung
// ------------------------------
float getUltrasonicValue() {
// Sicherstellen, dass der Trigger LOW ist
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
// Ultraschall-Impuls senden
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
// Dauer des Echo-Signals messen (in Mikrosekunden)
float cm = pulseIn(EchoPin, HIGH) / 58.0;
// Messwert auf zwei Nachkommastellen begrenzen
// (Genauigkeit des Sensors ca. 0,3 cm)
return (int(cm * 100.0)) / 100.0;
}
Alternative Lösung: PIR-Sensor & Deep-Sleep für maximale Laufzeit
Statt eines Ultraschall-Abstandssensors kann in diesem Projekt auch ein PIR-Bewegungssensor eingesetzt werden. Gerade für diesen Anwendungsfall bringt das einige Vorteile mit sich.




Ein PIR-Sensor besitzt einen digitalen Ausgang, der bei erkannter Bewegung direkt ein Signal liefert. Dieses Signal kann auf einen Interrupt-Pin des Mikrocontrollers gelegt werden. Dadurch entfällt die permanente Abstandsmessung – der Mikrocontroller muss also nicht dauerhaft aktiv sein, sondern reagiert nur dann, wenn tatsächlich eine Bewegung erkannt wird.
Der nächste logische Schritt wäre, den Arduino Nano V3 durch einen kleinen ESP-Controller (z. B. ESP8266 oder ESP32-C3) zu ersetzen. Diese Mikrocontroller unterstützen einen echten Deep-Sleep-Modus, bei dem der Stromverbrauch auf wenige Mikroampere sinkt. Der PIR-Sensor weckt den Controller über einen Interrupt wieder auf, sobald sich jemand nähert.
Das Ergebnis:
- keine kontinuierlichen Messungen mehr
- extrem geringer Stromverbrauch im Ruhezustand
- deutlich längere Batterielaufzeit der gesamten Schaltung
Für eine einfache Weihnachtsdeko ist der Arduino-Ansatz vollkommen ausreichend. Wer jedoch gezielt auf maximale Energieeffizienz optimieren möchte, findet mit PIR-Sensor und Deep-Sleep-fähigem ESP eine sehr elegante Erweiterung des Projekts.
Fazit: Kleine Änderung, großer Effekt
Mit wenigen Bauteilen und überschaubarem Aufwand lässt sich einfache, batteriebetriebene Weihnachtsdeko deutlich aufwerten. Statt dauerhaft zu leuchten, reagiert die Deko nun gezielt auf Annäherung – das spart Energie, verlängert die Batterielaufzeit und sorgt gleichzeitig für einen überraschenden Effekt.
Besonders angenehm ist die einfache Umsetzung:
Keine zusätzlichen Bibliotheken, keine Funktechnik, keine App. Der Arduino übernimmt die komplette Logik, während der Abstandssensor und das Drehpotentiometer eine flexible Anpassung ermöglichen. Durch die ausgelagerte Elektronik in einer separaten Box bleibt die Deko selbst unversehrt und das Projekt jederzeit wartbar.
Gerade für Einsteiger ist dieses Projekt ideal, um den Umgang mit Sensoren, Relais und einfacher Logik zu lernen – und am Ende ein Ergebnis zu haben, das nicht nur technisch funktioniert, sondern auch im Alltag Spaß macht.
Letzte Aktualisierung am: 15. Dezember 2025
