Introduction: Lichtsteuerung Und Beleuchtung Für Modellhäuser

About: I find interesting projects sometimes and interesting projects find me sometimes.

Dies ist eine vielseitig parametrierbare Lichtsteuerung für Modellhäuser etc. mit Neopixel LEDs.
Möglich sind: - Verschiedene Farben - Fernsehsimulationen - Defekte Leuchtstoffröhren-Effekte - Feuer-Effekte - Wackelkontakt-Effekte - Verschiedene Helligkeiten - Sequenzen mit verschiedenen Zeiten und Effekten.

Step 1: Intro

Die Kosten belaufen sich auf ein paar Euros um bis zu 39 LEDs ansteuern zu können pro Controller.
Programmierkenntnisse werden keine quasi benötigt.
Die Bedienung erfolgt via Wifi über ein Smartphone, Tablett oder einen Laptop.

Für sämtliche Details lesen Sie bitte das Handbuch (Shritt 7).
Das Anletungs-Videos ist unterstützend zur Ergänzung oder als ersten Eindruck gedacht.

Arbeiten Sie mit Visual Code Studio und Platformio, so sind die Schritte 2 und 7 relevant für Sie.

Arbeiten Sie mit dem Arduino Editor, so sind die Schritte 3, 4, 5, 6 und 7 relevant für Sie.

Step 2: Projekt Für Visual Code Studio Und Platformio

Dieses Paket sollte alles beinhalten inklusive Board Definition und Bibliotheken.
Bei der Erstellung dieser Anleitung verwendete Versionen:
Visual Studio Code Version: 1.51.1
Platformio: 5.0.3

Step 3: Arduino: Der Sketch

Bei der Erstellung dieser Anleitung verwendete Versionen:
Arduino: 1.8.13
Board Definiton esp8266: 2.5.2
Library Adafruit NeoPixel: 1.7.0

Bitte beachten Sie die nächsten drei Schritte zur Einrichtung von Arduino.

Diese Schritte entfallen, wenn sie mit Visual Code Studio und Plattformio arbeiten.

Step 4: Arduino: Board Definition Installieren

Step 5: Arduino: Board Auswählen

Step 6: Arduino: Library Adafruit NeoPixel Installieren

Step 7: Anleitung

Im Handbuch (beiliegendes PDF) finden Sie alle benötigten Angaben bezüglich
- Hardware,
- Aufbau
- Bedienung
- Tipps & Tricks


Ich empfehle zunächst einen Prototypen aufzubauen und damit zu spielen, bevor sie eine Steuerung in ein Objekt hinein verkabeln.

Das Anleitungsvideo gibt einen Überblick über die Bedienung.

Das Video ist noch mit einer älteren Version erstellt, welche eine etwas andere Bedienoberfläche hat, konzeptionell ein wenig anders ist und weniger Möglichkeiten hat.
Aber das Bedienkonzept ist grundsätzlich erhalten geblieben. Für die Details halten Sie sich bitte an das Handbuch.

Step 8: Allgemeines Und Hintergrund-Informationen

Für jegliche Schäden, die durch die Anwendung dieser Informationen entstehen, wird jegliche Haftung abgelehnt.

________________________________________________________________________

Keine Software ist perfekt, aber die Steuerung ist bereits mehrmals im Einsatz und grober Fehler sind nicht zu erwarten.

________________________________________________________________________

Haben Sie zusätzliche Ideen zu dieser Steuerung, können Sie diese gerne als Kommentar platzieren.
Ob diese jedoch von mir umgesetzt werden ist ungewiss. Das Projekt betrachte ich zur Zeit als abgeschlossen.

Falls Sie die Steuerung erweitern in irgendeiner Form, wäre ich sehr dankbar für ein Feedback im Sinne eines Know-How Austausches.

Zum Beispiel die Weboberfläche ist sehr spartanisch. Da wäre eventuell mehr möglich. Aber ich hatte keine Motivation mich in HTML mehr als unbedingt nötig einzuarbeiten.

Ferner wäre ein Download und Upload der Parametrierungen entweder über Wifi oder über eine SD Karte denkbar. So könnten diese irgendwo gesichert werden. Es wäre dann auch ein offline Editor denkbar.

________________________________________________________________________

Es folgen noch ein paar Hinweise zur Software.

Die LEDs werden in einem 50 ms Zyklus verarbeitet. D. h. für jede LED wird alle 50 ms berechnet, was sie als nächstes tun soll. Messungen haben gezeigt dass bei einem Vollausbau ca. 35 ms benötigt werden. Da wären also noch Reserven vorhanden.

Schlechter sieht es beim EPROM aus. Die 4096 Bytes sind für 39 LEDs und die 6 Speicherbänke voll ausgereizt.
Da wurden teilweise sogar Informationen in 3 Bit mit anderen Informationen in 5 Bit zu 1 Byte kombiniert um den Speicher voll auszunutzen.
Bei mehr Speicherbedarf müsste man z.B. auf eine SD Kartenerweiterung ausweichen.

Wegen dem Echtzeit Charakter der Software dürfen keine Funktionen verwendet werden die den Code "anhalten".
Zum Beispiel verharrt der Code beim Befehl delay() dort bist die Zeit abgelaufen ist.
Stattdessen müssen zum Beispiel Zähler verwendet werden die alle 50 ms erhöht werden bis die entsprechende Zeit abgelaufen ist.

Entsprechend ähnlich sind die Effekte aufgebaut. Wartezeiten etc. sind ebenfalls mit Zählern realisiert.

Die drei Fernsehprogramme werden unabhängig von den LEDs laufend berechnet.
Die LEDs haben dann keine eigene Logik in diesem Fall sondern verwenden einfach die bereits berechneten Farben der Fernsehprogramme.

Für die Fernsehprogramme wurden zunächst Teilphasen definiert:
- konstante Farbe während einer zufälligen Zeit
- über eine zufällige Zeit zu einer anderen Farbe gleiten
- über eine Dunkelphase über eine zufällige Zeit zu einer anderen Farbe gleiten
- zu einer anderen Farbe springen und während einer zufälligen Zeit warten

Hinzu kommen noch Gewichtungen für
- überhaupt einen Farbwechsel
- wie matt oder satt eine Farbe sein darf

Die drei Fernsehprogrammen wurden basierend darauf unterschiedlich bezüglich dem Verhalten definiert.
Es wurden einfach Wahrscheinlichkeiten für das Auftreten der Teilphasen und der Gewichtungen unterschiedlich definiert.

Last Bad not least: Die Software ist konzeptionell sicher nicht perfekt. Man kann immer irgendwas anders machen. Man möge die teilweise lückenhafte Kommentierung und das Kauderwelsch zwischen Englisch und Deutsch entschuldigen.