Die Beleuchtung
Die LED sitzt dann entweder auf einer Trägerplatine am Boden oder montiert an einem kleinen passenden Plastikrohr aus dem Baumarkt oder ebenfalls aus dem Drucker. LEDs mit Kabelanschluss bekommen Sie auch vorkonfektioniert, allerdings oft mit einem integrierten Widerstand für 12 Volt Spannung. In der Abbildung 4 sehen Sie die Kabelkanäle für die Verbindungen zwischen den Bäumchen. Nach der Montage verschwinden die Kabel hinter einer Abdeckung.
Noch pfiffiger als LEDs sind allerdings Neopixel, denn die erlauben die freie Farbwahl und somit subtile Effekte, die ein klassischer Adventskranz nicht bieten kann. Neopixel gibt es in verschiedenen Bauformen, meist in Ringen, Leisten und Bändern. Für das Adventsprojekt eignen sich allerdings die Neopixel im klassischen Format besser.
Im Gegensatz zu normalen LEDs haben sie vier Anschlüsse, neben Masse und Strom noch Data-in und Data-out (Abbildung 5). Über diese beiden Beinchen verketten Sie alle vier LEDs, die Ansteuerung benötigt dann nur noch einen einzelnen GPIO. Bei dieser Bauform braucht jede LED einen Pufferkondensator (100 nF) sowie einen kleinen Widerstand (etwa 300 Ohm) in Reihe mit dem ersten Data-in-Pin.
Das Steuerprogramm drucken wir hier nicht ab, es steht aber im Github-Repository [7] des Autors bereit. Das Programm wechselt die Farben automatisch langsam über den gesamten Farbbereich hinweg, wobei allerdings alle Pixel in derselben Farbe leuchten – aber das lässt sich je nach Vorliebe auch anders lösen.
Wenn Sie selbst Einfluss auf die Farbe haben wollen, dann nutzen Sie einen zusätzlichen Button, einen Encoder oder ein paar DIP-Schalter für die Farbauswahl. Die 3D-Modelle für den Kranz und das angepasste Ornament erhalten Sie ebenfalls über das verlinkte Git-Repository.
Magische Steuerung
Wer noch einen Geek-Faktor draufsetzen will, ersetzt den Taster für das Einschalten der LEDs durch einen Distanzsensor (Abbildung 6). Im Adventskranz versteckt, erlaubt der Sensor das Einschalten der Kerzen einfach dadurch, dass Sie die Hand über den Kranz halten. Der Sensor ist nicht für so kleine Objekte wie eine Hand optimiert. Deshalb messen wir nur sehr grob und interpretieren jede Messung (gemittelt über fünf Werte) kleiner 100 Zentimeter als einen Tastendruck (Listing 2). Details zur Verkabelung des Sensors finden Sie online [8].
Listing 2
Abstandssensor
import time
import board
import digitalio
import adafruit_hcsr04
LED = [board.GP16,board.GP17,board.GP18,board.GP19]
PIN_TRIG = board.GP27
PIN_ECHO = board.GP26
[...]
sonar = adafruit_hcsr04.HCSR04(trigger_pin=PIN_TRIG,echo_pin=PIN_ECHO)
def abstand():
sum = 0
for i in range(5):
a = 0
while not a:
try:
a = sonar.distance
except RuntimeError:
a = 0
sum += a
time.sleep(0.1)
sum = sum/5
return sum
leds = [make_led(nr) for nr in LED]
counter = 0
while True:
# Warten bis Abstand < 1 Meter
while abstand() > 100:
continue
# Zähler erhöhen, LEDs setzen
counter = (counter+1) % 5
for i in range(4):
leds[i].value = i < counter
# Warten bis Abstand > 1 Meter
while abstand() < 100:
continue
Eine Alternative zum Distanzsensor bieten normale Touch-Sensoren oder ein Bewegungssensor. Letzterer stellte sich aber in der Praxis als nicht tauglich heraus, weil er einerseits träge reagiert (nach dem Einschalten braucht er etwas Zeit, bis er aktiv wird) und andererseits einen sehr großen Überwachungswinkel hat.
Fazit
Ein paar Bauteile und – dank CircuitPython – sehr einfache Steuerprogramme sorgen für einen nerdigen Advent. Der Raspberry Pi Pico mit seiner guten Doku und vielen Beispielprogrammen eignet sich dabei ideal für solche Projekte. Aus dem Fundus im Internet können Sie sich viele Anregungen holen und die einfachen Beispiele dieses Artikels passend aufpeppen. Dort finden Sie auch Varianten, die sich für MCUs aus der Arduino-Welt eignen. (jlu)
Der Autor
Bernhard Bablok arbeitet bei der Allianz Technology SE als SAP-HR-Entwickler. Wenn er nicht Musik hört oder mit dem Rad respektive zu Fuß unterwegs ist, beschäftigt er sich mit Themen rund um Linux, Programmierung und Kleincomputer. Sie erreichen ihn unter mailto:[email protected].
Infos
- Einfache Platine: https://github.com/bablokb/pcb-adventskranz
- Adventskranz aus dem 3D-Drucker: https://www.tinkercad.com/things/dioOVePNGom-adventskranz-wreath-terrific-hango-lappi
- Adventskranz passend zur Platine: https://www.tinkercad.com/things/6teYZAPliXV
- Kerzenflammen: https://www.prusaprinters.org/prints/21546-candle-flame-for-vase-mode
- Christbaumspitze: https://www.thingiverse.com/thing:3290598
- Baumschmuck: https://www.thingiverse.com/thing:3194986
- Adventskranz mit Baum: https://github.com/bablokb/adventskranz-mit-baum
- Distanzsensor mit CircuitPython: https://learn.adafruit.com/ultrasonic-sonar-distance-sensors/python-circuitpython






