Inhaltsverzeichnis:

Rainbow Word Clock mit vollem Regenbogeneffekt und mehr - Gunook
Rainbow Word Clock mit vollem Regenbogeneffekt und mehr - Gunook

Video: Rainbow Word Clock mit vollem Regenbogeneffekt und mehr - Gunook

Video: Rainbow Word Clock mit vollem Regenbogeneffekt und mehr - Gunook
Video: ICH SAMMLE ALLE REGENBOGEN SACHEN in TOCA BOCA! Toca Life World Rainbow 2024, November
Anonim
Rainbow Word Clock mit vollem Regenbogeneffekt und mehr
Rainbow Word Clock mit vollem Regenbogeneffekt und mehr

Ziele

1) Einfach

2) Nicht teuer

3) So energieeffizient wie möglich

Rainbow Word Clock mit vollem Regenbogeneffekt.

Ein Smiley auf der Wordclock.

Einfache IR-Fernbedienung

Update 03-nov-18 LDR für die Helligkeitssteuerung der Neopixel

Update 01-jan-19 Reduzierung des Stromverbrauchs des WS2812B.

Update 15.01.19 Smiley.

Update 23. Januar 19 Code 1.6

Aktualisieren Sie die Links zu Bibliotheken vom 10. März-19

Update 14. April-19 Version 1.7 Auswahl Smiley an/aus Farbe Regenbogen/Fix enz.

Letztes Update 01-jun-19 Version 2.0 IR-Fernbedienung und Code-Redesign

Schritt 1: Das Gehäuse für die Uhr

Das Gehäuse für die Uhr
Das Gehäuse für die Uhr
Das Gehäuse für die Uhr
Das Gehäuse für die Uhr
Das Gehäuse für die Uhr
Das Gehäuse für die Uhr

Mit ein paar einfachen Werkzeugen und etwas Geschick ist es nicht schwer, eine Buchstabenuhr zu bauen. Ich habe die mir zur Verfügung stehenden Materialien verwendet.

Für den Fall habe ich eine grobe Kiefernstange verwendet, in die ich ein paar Rahmen gesägt habe. Diese würden die vier Seiten des Gehäuses bilden, die zusammengeklebt und in den Ecken mit einem kleinen Stück Holz verstärkt wurden. Dann muss das Holz geschliffen und lackiert werden.

Die Buchstaben werden von einem Drucker in Spiegelschrift aus Folie ausgeschnitten. Die Folie befindet sich auf der Rückseite der Glasplatte und ist zur besseren Lichtverteilung mit einem doppellagigen Musterpapier überzogen. Das Glas wird durch Silikondichtmittel fixiert.

Schritt 2: Neopixel

Neopixel
Neopixel
Neopixel
Neopixel
Neopixel
Neopixel
Neopixel
Neopixel

Die Neopixels LEDs sind auf einer Holzplatte angeordnet. In diese bohrt ihr zuerst 3 mm Löcher. Vorne sind sie auf Buchstabengröße auf 3/4 Tiefe vergrößert. Danach werden die 3 mm auf der Rückseite auf 10 mm erhöht, das entspricht der Größe eines Neopixels. Bei einigen Charakteren unter anderem das W, das Loch sollte leicht angepasst werden.

Ich habe Sperrholz verwendet, das schnell splitterte, MDF kann besser sein.

Bei einzelnen LEDs sind Sie nicht an einen festen Abstand gebunden, wie dies bei LED-Streifen der Fall ist. Die LEDs müssen miteinander verbunden werden. Sie können dies mit allen kurzen Drahtstücken tun. Aber die beiden Min (-) Anschlüsse sind genauso wie die beiden Plus (+) Anschlüsse intern verbunden, also der gleiche Anschluss.

Sie können sich viel Arbeit sparen, indem Sie ein Stück Draht an die linke LED und dann an die rechte LED anlöten. Löten Sie dann die Zwischenstücke.

Die Datenverbindung muss natürlich mit kurzen Stücken erfolgen, da der Datenausgang zum Dateneingang geht.

Schritt 3: Fronttext anpassen

Fronttext anpassen
Fronttext anpassen
Fronttext anpassen
Fronttext anpassen
Fronttext anpassen
Fronttext anpassen

Die Frontplatte ist jetzt auf Niederländisch, aber einfach in jede Sprache umzuwandeln.

Die NeoPixels LEDs werden hier nacheinander von 0-167 geschaltet. Die Nummerierung geht von der ersten Reihe oben links nach rechts und dann bis zur zweiten Reihe von rechts nach links usw. Die Anpassung kann nach eigenen Wünschen vorgenommen werden. Die Anzahl der NeoPixel wird durch die Anzahl der Zeichen bestimmt. In der folgenden Zeile können weniger oder mehr Neopixel angepasst werden

#define NUMPIXELS 168 // Wie viele NeoPixel sind am Arduino angeschlossen?

168 ist als eine andere Zahl. Die Nummerierung beginnt bei 0. Sie können einen beliebigen Text erstellen. Wenn Sie den Text ändern, müssen Sie auch die entsprechenden Wörter anpassen. Die Nummerierung bleibt gleich.

Als Beispiel wird DRIE der Minuten im Code bestimmt

void zetmDrie () {

Led_Aan[56]=1, Led_Aan[57]=1, Led_Aan[58]=1, Led_Aan[59]=1; // min-trocken

}

Wenn Sie das Wort Arduino machen wollen, dann geht es so:

void zetArduino () {

Led_Aan [38] = 1, Led_Aan [50] = 1, Led_Aan [56] = 1, Led_Aan [93] = 1;

Led_Aan [120] = 1, Led_Aan [135] = 1, Led_Aan [147] = 1; //Wort-Arduino

}

So können Sie Wörter dazwischen bilden.

Bei Taktwörtern ist es sinnvoll, wenn sie ein zusammenhängendes Wort bilden, aber es ist nicht unbedingt notwendig. Die ungenutzten Buchstaben benötigen keine Neonpixel. Ich habe sie alle gefüllt, um zukünftige Möglichkeiten zu nutzen, außer der Zeit, die angezeigt wird.

Wenn Sie den Startpunkt ändern oder die Reihenfolge ändern, sollte sich die Nummerierung entsprechend ändern.

Schritt 4: Voller Regenbogeneffekt

Voller Regenbogeneffekt
Voller Regenbogeneffekt

Die Uhr ist nun so programmiert, dass dort wie oft pro Sekunde gezählt wird, wie viele Neopixsel eingeschaltet sind.

Das Gesamtspektrum wird etwa durch die Anzahl geteilt und dann leicht verschoben. Dadurch hat jedes Neopixel eine andere Farbe, die sich ständig ändert. Neopixel nr 1 und nr 167 folgen aufeinander auf einige Farbe bezogen.

Wenn Sie weniger unterschiedliche Farben gleichzeitig bevorzugen, ist dies einfach anzupassen. Die Farbe verschiebt sich immer noch über das gesamte Spektrum, aber mit einem kleineren Teil davon. Neopixel nr 1 und nr 167 folgen nicht mehr aufeinander, etwas Farbe beinhaltet.

Die Helligkeit kann in der folgenden Zeile eingestellt werden, Pixel.setHelligkeit(150);

Eine kleinere Zahl bedeutet weniger und eine größere Zahl mehr Helligkeit.

Schritt 5: Die verschiedenen Komponenten

Die verschiedenen Komponenten
Die verschiedenen Komponenten
Die verschiedenen Komponenten
Die verschiedenen Komponenten
Die verschiedenen Komponenten
Die verschiedenen Komponenten

Folgende Komponenten habe ich verwendet

Arduino Pro Mini ATMEGA328 5V/16MHz

Taktmodul DS3231

168 Stück Neopixels LED WS2812 LED Chip & Kühlkörper 5V 5050 RGB WS2811 IC Built-in

Briefschablone aus Folie

DCF77-Empfänger

Schritt 6: Code für die Uhr

Hier ist der Code. Helligkeitsregelung und Ausschalten bei Abwesenheit und nachts hinzugefügt.

RCWL-0516 Radar-Mikrowellen-Bewegungssensor hinzugefügt (Suche nach RADAR)

Nach 10 Minuten ohne Bewegung gehen die NeoPixels aus.

Über Version 2.0

Die Speicherauslastung war zu hoch, mit Warnungen wegen Speichermangels im Compiler. Deshalb habe ich den Code komplett geändert, aber die Bedienung ist gleich geblieben und ein IR-Empfänger wurde hinzugefügt.

Es gibt einen Code, der das EEPROM mit Daten versorgt. Führen Sie dies einmal aus, indem Sie / * und * / vorübergehend entfernen. Suche nach => führe dies einmal aus, um das EEPROM mit Daten zu versorgen

Am Anfang der void-Schleife befindet sich Code, um den Code von Ihrer eigenen Fernbedienung zu lesen. Sie können dies ausführen, indem Sie die / * und * / vorübergehend entfernen, vergessen Sie nicht, sie danach wieder einzufügen. Sie können auch eigene Schaltflächen definieren. Der gelesene Code muss eingetragen werden in => Hier eigene Buttons definieren

Die Samsung Fernbedienung funktioniert besser als die (sehr billige) einfache.

Schritt 7: Die Hardwarebeschreibung

Die Hardwarebeschreibung
Die Hardwarebeschreibung
Die Hardwarebeschreibung
Die Hardwarebeschreibung
Die Hardwarebeschreibung
Die Hardwarebeschreibung

Es gibt verschiedene Versionen des Arduino Pro Mini. Bitte beachten Sie, dass die Anschlüsse abweichen können.

Ein Mikrowellen-Bewegungssensor RCWL-0516 wurde hinzugefügt.

Solange Bewegung in der Nähe der Uhr stattfindet, bleibt der NeoPixel an

und sobald keine Bewegung mehr erfolgt, gehen die NeoPixel nach ein paar Minuten aus.

In der Version 2.0 wird der DCF77-Empfänger über Pin 13 mit Spannung versorgt. Dieser Pin ist als Ausgang definiert und wird bei Adressierung der DCF77-Routine auf High gesetzt. Der DCF77-Empfänger verbraucht 0,28 mA und wird nur wenige Minuten pro Tag benötigt.

Ausschalten speichert

5 Volt * 0,28 mA / 1000 * 24 Stunden * 365 Tage * 1 / 0,85 Effizienz Netzteil = 14,4 Watt pro Jahr.

Das scheint nicht viel zu sein, aber jedes bisschen hilft.

Schritt 8: LDR für die Helligkeitssteuerung der Neopixel

LDR für die Helligkeitssteuerung der Neopixel
LDR für die Helligkeitssteuerung der Neopixel
LDR für die Helligkeitssteuerung der Neopixel
LDR für die Helligkeitssteuerung der Neopixel

LDR für die Helligkeitssteuerung der Neopixel hinzugefügt.

Den LDR habe ich in den Raum von Neopixel 103 geklebt. Dieser wird nicht in der Zeitanzeige verwendet und beeinflusst daher die Regelung nicht. Das Papier dämpft das einfallende Licht, aber das ist kein Problem.

Der Spannungsteiler von LDR und 20 kOhm Widerstand geht an A0 des Arduino Pro Mini. Die Spannung ist ein Indikator für die Lichtintensität und damit auch ein Indikator für die Lichtmenge, die die Neopixel abgeben müssen.

Die Formel, die ich verwende, gibt mir eine gute Lichtsteuerung, sie kann den Umständen entsprechend angepasst werden. Abhängig von der Lichtmenge kann die Spannung zwischen 0 und 5 Volt variieren, was in 0 bis 1024 Zählungen umgewandelt wird, die in "LDRValue" stehen.

Ist der neue Messwert größer als der zuletzt berechnete Wert, wird die Intensität um 1 erhöht, ist er kleiner als um 1 dekrementiert und bei Gleichheit wird nichts unternommen. Damit der Wert langsam voranschreitet, damit kein Blinkeffekt auftritt, wird nur 1 erhöht oder verringert und da die Berechnung in der Schleife liegt, wird sie erst nach 25-maligem Durchlaufen der Schleife neu berechnet.

Die Intensität beträgt theoretisch minimal 20 und maximal 1024/7 + 45 = 191. Der von mir gemessene Maximalwert war 902, was einer Intensität von 173 entspricht. Das passt gut zu den 150, die ich als Standardwert eingestellt habe. (siehe Pixel.setBrightness(150))

In der Version 2.0 können Sie die Steuerung über die Fernbedienung einstellen. Folgende Parameter wurden hinzugefügt: Helligkeit_min als Minimum und Helligkeit_max als maximale Einstellung und Helligkeit_Offset als Einstellparameter. Helligkeit_min und _max sind die Werte, die von Ihrer eigenen Situation abhängen können. Brightness_Offset ist ein mit der Fernbedienung einstellbarer Wert, mit dem mehr oder weniger Helligkeit eingestellt werden kann.

Es gibt auch eine Totzone von 3 zwischen dem gemessenen LDRValue und den berechneten BerLDRValue-Werten.

Verwenden Sie die print-Anweisungen in void BrightnessControl, um die Helligkeitseinstellung zu überprüfen.

Schritt 9: Reduzieren des Stromverbrauchs des WS2812B

Reduzierung des Stromverbrauchs des WS2812B
Reduzierung des Stromverbrauchs des WS2812B

Die Treiber der adressierbaren Neopixel WS2812B ziehen Strom, auch wenn die Neopixel ausgeschaltet sind und auf Farbe 0 eingestellt sind (keine Neopixel-Elemente leuchten).

Wenn alle 169 Neopixel aus sind, messe ich 69 mA zu den Neopixeln. Unter der Annahme, dass die Uhr 12 Stunden am Tag ausgeschaltet ist, spart die vollständige Abschaltung dann: 5 (Volt Stromversorgung) * 69/1000 (Milliampere / 1000 = Ampere) * 12 (Anzahl Stunden pro Tag) * 365 (Anzahl Tage in a Jahr) = 1511 Wattstunden. Also auf Jahresbasis 1,5 Kwh. Ich stimme zu, es ist nicht viel an sich, aber viele kleine machen ein großes aus.

Die Schaltung ist einfach. Das Plus des Netzteils wird von einem P-Kanal MosFet geschaltet. Der Radarsensor bestimmt, ob die Neopixel ein- oder ausgeschaltet sind. Ich habe zwei MosFet Parrelel gelegt, um den ON-Widerstand durch Verlust der MosFets so gering wie möglich zu halten. Im normalen Gebrauch messe ich 4,5 Millivolt über die MosFets. Das Gate wird vom Ausgang 4 des Arduino über einen 470-Kohm-Widerstand gesteuert. Wenn der Ausgang digital auf Low (0) geht, sind die Neopixel an und bei High (1) sind sie ausgeschaltet.

Schritt 10: Smiley auf der Wordclock

Smiley auf der Wordclock
Smiley auf der Wordclock
Smiley auf der Wordclock
Smiley auf der Wordclock

Ein Smiley auf der Wordclock.

Ab und zu erscheint ein Smiley auf der Uhr. Das macht aber glücklich.

Der Smiley wird vom Radarsensor ausgelöst. Die Anzahl der Bewegungen (einstellbar) ist ein Maß für das Aussehen des Smileys. Die %-Zeichen zeigen an, dass eine Bewegung erkannt wurde. Bei jeder zehnten (einstellbaren) Bewegung kommt der Smiley mit einem Winky Face und nach dreimal einem Winky Face kommt beim vierten Mal ein Smiley Face mit herausgestreckter Zunge.

Der Smiley ist eine kleine Änderung im Code.

Schritt 11: Welche Bibliotheken werden verwendet

Welche Bibliotheken werden verwendet.

Ich verwende sie in Windows 7 mit Arduino IDE 1.6 und sie wurden auch in Windows 10 mit Adruino IDE 1.8.8 getestet

RTClib-Master

Arduino-DS3231-Master

Adafruit_NeoPixel-master

Arduino-DCF77-Master

Ken Shirriffs IRremote Library

Da es immer Verwirrung über die verwendete Bibliothek gibt, füge ich die von mir verwendete hinzu.

Die IRremote-Bibliothek verwendet viel Speicher. In der IRremote.h wird angegeben, dass Sie jedes nicht verwendete Protokoll deaktivieren können

// Jedes Protokoll, das Sie einbinden, kostet Speicher und beim Decodieren Zeit // Deaktivieren (auf 0) aller Protokolle, die Sie nicht benötigen/wollen!

Ich habe alles außer dem NEC- und Samsung-Protokoll deaktiviert. Dies ergibt eine Speicherersparnis von 10 %. Im Moment gibt es kein Problem mehr mit der Speichergröße, daher ist die Deaktivierung vorerst nicht erforderlich.

Schritt 12: Einfache IR-Fernbedienung

Einfache IR-Fernbedienung
Einfache IR-Fernbedienung
Einfache IR-Fernbedienung
Einfache IR-Fernbedienung
Einfache IR-Fernbedienung
Einfache IR-Fernbedienung

Die Versammlung

Wie Sie auf den Fotos sehen können, ist das Loch für die LED 132 etwas zu groß geraten. Ich habe dies gut genutzt und den IR-Empfänger hinzugefügt. Verbinden Sie den Datenpin des IR-Empfängers VS1838 mit Pin 7 des Arduino. Schließen Sie außerdem die Plus- und Minus-Stromversorgung an. Der IR-Empfänger verbraucht 0,21 mA und könnte auch nach dem FET-Schalter an das Plus-Netzteil angeschlossen werden. Dies führt zu einer Einsparung von 5 Volt * 0,21 mA / 1000 * 12 Stunden * 365 Tage * 1 / 0,85 Effizienz Netzteil = 5,4 Watt pro Jahr, wenn die Uhr 50% der Zeit eingeschaltet ist. Das scheint nicht viel zu sein, aber jedes bisschen hilft.

Die Bedienung ist wie folgt

Drücken Sie eine beliebige Taste auf der IR-Fernbedienung und dann die OK-Taste. Beim ersten Drücken landen Sie in der IR-Bearbeitung und beim zweiten Mal erkennen Sie, ob es sich um eine berechtigte Anfrage handelt. Beim zweiten Mal muss OK schnell dem ersten Tastendruck folgen, da es sonst wieder zurück geht. Diese Konstruktion habe ich so gemacht, dass ich kaum den ersten Code richtig dekodiert bekommen habe und deshalb nicht im IR-Handling gelandet bin.

Einmal in der IR-Bedienung gehen dann eine Reihe von LEDs an, um Informationen zu erhalten, zur Erklärung weiterzulesen und das erste Bild anzuzeigen.

Die Beschreibung bezieht sich auf die einfache Fernbedienung, Sie können jedoch jede beliebige Fernbedienung verwenden und Ihre eigenen Tasten definieren. Ich habe auch eine Samsung-Fernbedienung verwendet.

Die ersten vier Tasten entsprechen den oberen vier LED-Reihen. Je nach Einstellung leuchten vier LEDs nach links oder rechts. Beim Drücken der Tasten 1 bis 4 wird der Zustand umgekehrt und im Speicher abgelegt.

1 fester Farb- oder Regenbogeneffekt

2 Sekunden Blitz aus oder zweiter Blitz ein

3 Smiley aus Smiley an

4 DCF77 aus oder DCF77 ein

Die Nummer des Schlüssels wird auf den folgenden Tasten angezeigt

5 Smiley-Zähler

6 Regenbogenspektrumbreite

7 feste rote Einstellung

8 feste grüne Einstellung

9 feste blaue Einstellung

Zeile 6, 7 und 8 der LEDs entsprechen nun dem eingestellten Wert, Zeile 6 zeigt die Einer, Zeile 7 die Zehner und Zeile 8 die Hunderter an. Jede Zeile beginnt mit dem Wert Null. Die erste LED in der Reihe ist also 0, die zweite ist 1 usw.

0 Zeiteinstellung

/\ Helligkeitseinstellung

Beim Drücken der 0-Taste leuchten die „zehn“-LEDs auf, um anzuzeigen, dass Sie die Uhrzeit einstellen möchten und beim zweiten Drücken der 0 erscheint die eingestellte Uhrzeit im Display.

Die Uhrzeit kann nun eingestellt werden und wird im Display angezeigt.

Stellen Sie die richtige Uhrzeit ein und drücken Sie die OK-Taste, wenn die Minute auf einer Referenzuhr gleich ist.

Die Uhrzeit wird angepasst.

Wenn Sie die Minuten- oder Stundentaste nicht betätigen, wird keine Zeitumstellung vorgenommen. Wenn Sie sie drücken, wird die Uhrzeit sofort eingestellt.

Der Wert für die Tasten 5 bis 9 kann mit den Tasten. geändert werden

rechts ist plus 1

links ist minus 1

vorwärts ist plus 10

Rückwärts ist minus 10.

und für die Zeiteinstellung

rechts ist plus 1 Minute

übrig ist minus 1 Minute

vorwärts ist plus 1 Stunde

Rückwärts ist minus 1 Stunde

Es kommt manchmal vor, dass der Tastendruck nicht erkannt oder zweimal ausgeführt wird. Passen Sie also auf, wenn die Einstellung gut geht, ansonsten versuchen Sie es oder korrigieren Sie es erneut. Die von mir ebenfalls getestete Samsung-Fernbedienung funktionierte um ein Vielfaches besser als die (sehr billige) einfache Fernbedienung.

Beim Einstellen der Farbe sehen Sie die Änderung direkt auf dem gesamten Display. Eine Seite mit einer Farbübersicht finden Sie unter https://www.helderester.nl/kleurentabel.html. Sie können natürlich jeden Wert einstellen.

Wenn die Regenbogenspektrumbreite den Wert 0 hat, ist das Spektrum sehr schmal und die Anzeige hat eine Farbe, die sich ständig ändert.

Der Nachteil bei dieser Einstellung der Uhrzeit ist, dass Sie keinen Sommer- / Winterübergang berechnen können, da wir das Datum falsch haben. Für die Uhr selbst spielt es keine Rolle, da wir sie jetzt nicht verwenden.

Schritt 13: Was kommt als nächstes?

Was kommt als nächstes?
Was kommt als nächstes?

Was folgt, ertönt, wenn der freie Speicher noch ausreicht.

Die Lautsprecherboxen habe ich schon. Sie stammen von einem alten Laptop.

Empfohlen: