Introduction: Lichtsteuerung Und Beleuchtung Für Modellhäuser
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
Attachments
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.
Attachments
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.
Attachments
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.
3 Comments
Question 4 months ago on Step 8
Hi Andre, würde gerne ein Relais auch mit einbinden (für einen Rauchgenerator) - irgendwelche Vorschläge wie man das am besten hinbekommt?
Answer 4 months ago
Hi Sponan hätte ich ein Relais Board empfohlen. Die gibt es mit 4, 8 oder 16 Relais. Die gibt es mit Einzel-Signal-Ansteuerungen oder eleganter I2C-Ansteuerung.
oder
https://www.youtube.com/watch?v=FWvEEtrTGRQ
Die Lichtsteuerung ist inzwischen ziemlich gewachsen. Falls dich die Interessiert, lass es mich wissen. Dann aktualsiere ich das hier mal.
Reply 4 months ago
Auf jeden Fall ist die neue Version interessant - warum eigentlich nicht GitHub ?
Das Problem mit dem Relais hab ich jetzt mal ziemlich "einfach" (oder "holzhammermässig") gelöst.
Ich habe die erste LED "geopfert", und einfach wenn die "an" ist, schaltet das Relay ein, und wenn sie "aus" ist, dann ist auch das Relay aus.
Damit bleiben mir alle Möglichkeiten bzgl. der Phasen, ohne dass ich extra was im HTML oder in den Handlern tun muss.
Und insgesamt sind vielleicht 10-15 Codezeilen neu dazugekommen ....