Die neue Word Clock

Hallo liebe Leute,

endlich habe ich mal etwas für ein „neues“ Projekt gefunden: Die Word Clock v2. Nachdem die neue Version des Smart Mirrors schon sehr erfolgreich war, gibt es jetzt auch noch eine neue und bessere Word Clock!

Das größte Problem der alten Version war vorallem die ganze Löterei. Nachdem ich für einige Freunde und Bekannte eine Word Clock bauen soll, habe ich mir ein neues einfacheres und schnelleres System ausgedacht. Sämtliche Elektronik-Bauteile werden im Prinzip durch 3 Bauteile ersetzt. Das erste Bauteil ist ein kleiner Arduino Nano (Klon), welcher das Denken übernimmt. Das zweite Bauteil sind einzeln adressierbare WS2812b LEDs. Diese sind als Streifen erhältlich und können in sämtlichen RGB Farben leuchten. Das dritte und letzte Bauteil ist wie schon in der letzten Version eine Real Time Clock.

Aber die neue Word Clock ist nicht nur einfacher zu bauen, sondern sie kann auch noch ein paar neue Sachen 🙂 Da die WS2812 LEDs RGB LEDs sind, kann die Wordclock nicht nur in Weiß sondern auch in allen anderen Farben leuchten! Theoretisch wären auch Farbverläufe, Übergange usw. möglich. Außerdem gibt es jetzt auch noch 4 Punkte am unteren Rand, welche die Minuten zwischen den 5-Minuten-Schritten anzeigen. Optional gibt es noch eine automatische Dimm Funktion. Diese dimmt die LEDs bei schwacher Umgebungshelligkeit. Das schont die LEDs, die Umwelt und den Geldbeutel 😉

Der Rest ist gleich geblieben: Die Uhr besteht aus einem MDF Gehäuse, einer Plexiglas Platte und einem gelaserten Karton. Dazu noch ein paar Kabel und ein paar Stunden Zeit… Sie arbeitet auf 2 Minuten im Jahr genau und hat eine automatische Winter & Sommerzeit Umstellung im Code integriert. Gekostet hat alles in allem wieder ~100€. Viel Geld, aber es lohnt sich! 🙂

Wie auch schon beim Smart Mirror habe ich das Tutorial in mehrere Teile aufgeteilt und alles so detailliert wie möglich beschrieben. Aber „nobody is perfect“. Wer Fehler findet darf mir gern eine Mail oder in die Kommentare schreiben.

Wie immer freue ich mich über Kommentare und Verbesserungsvorschläge 😉 Jetzt aber genug geschrieben: Hier gehts los!

Cheers!

11 Kommentare zu „Die neue Word Clock“

  1. Hallo Dracarys, tolle Beschreibung der einzelnen Abschnitte. Ich habe heute mit dem bestellen begonnen und klebe jetzt das Gehäuse. Wie genau hast du die Plexiglasscheibe angebracht? Waren die Löcher vorgebohrt oder reicht eine einfach Schraube?
    ps: Die Weiterleitungen zum nächsten Abschnitt ist nur auf dieser Seite angebracht. Um von Teil 1 auf Teil 2 etc zu kommen muss man wieder hoch scrollen und kann nicht am Ende auf weiter klicken. Nur eine Kleinigkeit 😉

    Gefällt mir

    1. Hallo Twizzler
      Plexiglas lässt sich relativ einfach mit einem scharfen Bohrer bearbeiten. Dabei kannst du die Buchstabenpappe als Vorlage verwenden.
      Danke für dein Hinweis. Werde das demnächst noch verbessern 😉
      Grüße!

      Gefällt mir

      1. Hallo Dracarys.
        Super Tolle Anleitung. Ich hätte da nur ein Problem.
        Wenn ich dein Prgramm an meine anzahl LED s anpasse und auf den Nano lade läuft es eine weile und dann wird nur noch eine komplett falsche Zeit angezeigt, am serielen Monitor als auch wenn die LED s angeschlossen sind. Die RTC hat aber nach wie vor die korrekte Zeit. Hättest Du eine Idee an was es liegen könnte.

        Gruss Jürgen

        Gefällt mir

  2. Hallo Dracarys,
    sehr geile und ausführliche Anleitung. War direkt begeistert und hab mir schonmal alle Teile rausgesucht. Eine Frage habe ich aber. Du schreibst, dass du den Arduino ebenfalls an die externe Stromversorgung geklemmt hast. Laut Datenblatt verträgt der Arduino nur 1A, das von dir genannte Netzteil liefert aber 4A. Mir ist bewusst, dass die Stromstärke abnimmt, sobald die LEDs an sind, aber bis dahin bekommt der Arduino ja die vollen 4A ab. Oder sehe ich das falsch? :-/ Kannst du von deiner Lösung evtl noch einen Schaltplan der Stromversorgung „für Laien“ ergänzen? Wäre echt genial!

    Viele Grüße 🙂

    Gefällt mir

    1. Hi,
      ich glaube du verwechselst da etwas. Nur weil das Netzteil z.B. 4Ampere liefern KANN heißt dass nicht das auch 4 Ampere fließen.
      Vielmehr kann das Netzteil bis zu 4 Ampere zu Verfügung stellen und die jeweiligen Bauteile „nehmen“ sich was sie brauchen.
      Vielleicht solltest du dich vorher nochmals ein bisschen mit den Elektrotechnischen Grundlagen beschäftigen, bevor du Hand anlegst 😉
      Stromplan mache ich evtl. wenn ich Zeit habe.
      Grüße

      Gefällt mir

  3. Heyo, noch zwei Sachen zum Stromanschluß. Braucht der Arduino auch einen GND-Anschluß? Wenn ja welcher sollte es den am Arduino Uno sein? (er hat unter Power zwei GND-pins)
    Und zum Netzteil. Hat das Netzteil bei dir hinter die Uhr gepasst oder ist das irgendwo anders versteckt? bei mir passt es gerade nicht rein.. und wie kommt der Strom von der Steckdose zum Netzteil? ^^ Dumme Frage aber ich finde nichts dazu in der Anleitung. Hast du ein ausrangiertes Netzteil 220V aufgeschnitten? zb vom Laptop etc.
    Grüße
    ps: Bin schon in der Finalen Phase!

    Gefällt mir

    1. Hallo,
      Beim Arduino ist es egal welcher GND Anschluss. Die sind intern sowieso alle zusammen geschaltet. Ich habe ein anderes Netzteil, das ich hier noch herum liegen hatte benutzt. Bei dem von mir verlinkten Netzteil muss an 230V und Masse (und Schutzleiter!) noch ein Schuko Stecker angeschlossen werden. Also sowas.
      Natürlich geht auch der Stecker von einer alten Steckerleiste oder sowas 😉
      Grüße

      Gefällt mir

      1. Hi, beim compilen des worldclock programms kamen bei mir diverse Fehler. Die 3 Librarys sind alle installiert. Was könnte das Problem sein?

        In file included from C:\Users\Pit\Documents\Clocktwo project\Wordclock_WS2812\Wordclock_WS2812.ino:1:0:
        C:\Users\Pit\Documents\Arduino\libraries\DS3232RTC-master/DS3232RTC.h:136:26: error: ‚tmElements_t‘ has not been declared

        static byte read(tmElements_t &tm);
        ^
        In file included from C:\Users\Pit\Documents\Clocktwo project\Wordclock_WS2812\Wordclock_WS2812.ino:4:0:
        C:\Users\Pit\Documents\Arduino\libraries\FastLED-master/FastLED.h:17:21: note: #pragma message: FastLED version 3.001.001
        # pragma message „FastLED version 3.001.001“

        Gefällt 1 Person

  4. Hallo wo kann mir jemand weiterhelfen habe folgenden fehler
    Arduino: 1.6.9 (Windows 7), Board: „Generic ESP8266 Module, 80 MHz, nodemcu, 26 MHz, 40MHz, QIO, 512K (64K SPIFFS), v2 Prebuilt (MSS=536), Disabled, None, 115200“

    In file included from C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:22:0:

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:66:2: error: ‚uint8_t‘ does not name a type

    uint8_t hour;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:67:2: error: ‚uint8_t‘ does not name a type

    uint8_t min;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:68:2: error: ‚uint8_t‘ does not name a type

    uint8_t sec;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:69:2: error: ‚uint8_t‘ does not name a type

    uint8_t date;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:70:2: error: ‚uint8_t‘ does not name a type

    uint8_t mon;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:71:2: error: ‚uint16_t‘ does not name a type

    uint16_t year;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:72:2: error: ‚uint8_t‘ does not name a type

    uint8_t dow;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:80:18: error: expected ‚)‘ before ‚data_pin‘

    DS3231(uint8_t data_pin, uint8_t sclk_pin);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:83:16: error: ‚uint8_t‘ has not been declared

    void setTime(uint8_t hour, uint8_t min, uint8_t sec);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:83:30: error: ‚uint8_t‘ has not been declared

    void setTime(uint8_t hour, uint8_t min, uint8_t sec);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:83:43: error: ‚uint8_t‘ has not been declared

    void setTime(uint8_t hour, uint8_t min, uint8_t sec);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:84:16: error: ‚uint8_t‘ has not been declared

    void setDate(uint8_t date, uint8_t mon, uint16_t year);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:84:30: error: ‚uint8_t‘ has not been declared

    void setDate(uint8_t date, uint8_t mon, uint16_t year);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:84:43: error: ‚uint16_t‘ has not been declared

    void setDate(uint8_t date, uint8_t mon, uint16_t year);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:86:15: error: ‚uint8_t‘ has not been declared

    void setDOW(uint8_t dow);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:88:9: error: expected ‚;‘ at end of member declaration

    char *getTimeStr(uint8_t format=FORMAT_LONG);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:88:28: error: expected ‚)‘ before ‚format‘

    char *getTimeStr(uint8_t format=FORMAT_LONG);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:89:9: error: expected ‚;‘ at end of member declaration

    char *getDateStr(uint8_t slformat=FORMAT_LONG, uint8_t eformat=FORMAT_LITTLEENDIAN, char divider=‘.‘);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:89:28: error: expected ‚)‘ before ’slformat‘

    char *getDateStr(uint8_t slformat=FORMAT_LONG, uint8_t eformat=FORMAT_LITTLEENDIAN, char divider=‘.‘);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:90:9: error: expected ‚;‘ at end of member declaration

    char *getDOWStr(uint8_t format=FORMAT_LONG);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:90:27: error: expected ‚)‘ before ‚format‘

    char *getDOWStr(uint8_t format=FORMAT_LONG);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:91:9: error: expected ‚;‘ at end of member declaration

    char *getMonthStr(uint8_t format=FORMAT_LONG);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:91:29: error: expected ‚)‘ before ‚format‘

    char *getMonthStr(uint8_t format=FORMAT_LONG);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:95:18: error: ‚byte‘ has not been declared

    void setOutput(byte enable);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:100:3: error: ‚uint8_t‘ does not name a type

    uint8_t _scl_pin;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:101:3: error: ‚uint8_t‘ does not name a type

    uint8_t _sda_pin;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:102:3: error: ‚uint8_t‘ does not name a type

    uint8_t _burstArray[7];

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:103:3: error: ‚boolean‘ does not name a type

    boolean _use_hw;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:105:19: error: ‚byte‘ has not been declared

    void _sendStart(byte addr);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:110:3: error: ‚uint8_t‘ does not name a type

    uint8_t _readByte();

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:111:19: error: ‚uint8_t‘ has not been declared

    void _writeByte(uint8_t value);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:113:3: error: ‚uint8_t‘ does not name a type

    uint8_t _readRegister(uint8_t reg);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:114:24: error: ‚uint8_t‘ has not been declared

    void _writeRegister(uint8_t reg, uint8_t value);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:114:37: error: ‚uint8_t‘ has not been declared

    void _writeRegister(uint8_t reg, uint8_t value);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:115:3: error: ‚uint8_t‘ does not name a type

    uint8_t _decode(uint8_t value);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:116:3: error: ‚uint8_t‘ does not name a type

    uint8_t _decodeH(uint8_t value);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:117:3: error: ‚uint8_t‘ does not name a type

    uint8_t _decodeY(uint8_t value);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.h:118:3: error: ‚uint8_t‘ does not name a type

    uint8_t _encode(uint8_t vaule);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:48:14: error: ‚uint8_t‘ does not name a type

    static const uint8_t dim[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp: In constructor ‚Time::Time()‘:

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:54:8: error: ‚class Time‘ has no member named ‚year‘

    this->year = 2014;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:55:8: error: ‚class Time‘ has no member named ‚mon‘

    this->mon = 1;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:56:8: error: ‚class Time‘ has no member named ‚date‘

    this->date = 1;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:57:8: error: ‚class Time‘ has no member named ‚hour‘

    this->hour = 0;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:58:8: error: ‚class Time‘ has no member named ‚min‘

    this->min = 0;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:59:8: error: ‚class Time‘ has no member named ’sec‘

    this->sec = 0;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:60:8: error: ‚class Time‘ has no member named ‚dow‘

    this->dow = 3;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp: At global scope:

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:63:15: error: expected constructor, destructor, or type conversion before ‚(‚ token

    DS3231::DS3231(uint8_t data_pin, uint8_t sclk_pin)

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp: In member function ‚Time DS3231::getTime()‘:

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:73:4: error: ‚class Time‘ has no member named ’sec‘

    t.sec = _decode(_burstArray[0]);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:73:18: error: ‚_burstArray‘ was not declared in this scope

    t.sec = _decode(_burstArray[0]);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:73:32: error: ‚_decode‘ was not declared in this scope

    t.sec = _decode(_burstArray[0]);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:74:4: error: ‚class Time‘ has no member named ‚min‘

    t.min = _decode(_burstArray[1]);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:75:4: error: ‚class Time‘ has no member named ‚hour‘

    t.hour = _decodeH(_burstArray[2]);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:75:34: error: ‚_decodeH‘ was not declared in this scope

    t.hour = _decodeH(_burstArray[2]);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:76:4: error: ‚class Time‘ has no member named ‚dow‘

    t.dow = _burstArray[3];

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:77:4: error: ‚class Time‘ has no member named ‚date‘

    t.date = _decode(_burstArray[4]);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:78:4: error: ‚class Time‘ has no member named ‚mon‘

    t.mon = _decode(_burstArray[5]);

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:79:4: error: ‚class Time‘ has no member named ‚year‘

    t.year = _decodeY(_burstArray[6])+2000;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:79:34: error: ‚_decodeY‘ was not declared in this scope

    t.year = _decodeY(_burstArray[6])+2000;

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp: At global scope:

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:83:22: error: variable or field ’setTime‘ declared void

    void DS3231::setTime(uint8_t hour, uint8_t min, uint8_t sec)

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:83:22: error: ‚uint8_t‘ was not declared in this scope

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:83:36: error: ‚uint8_t‘ was not declared in this scope

    void DS3231::setTime(uint8_t hour, uint8_t min, uint8_t sec)

    ^

    C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:83:49: error: ‚uint8_t‘ was not declared in this scope

    void DS3231::setTime(uint8_t hour, uint8_t min, uint8_t sec)

    ^

    exit status 1
    Fehler beim Kompilieren für das Board Generic ESP8266 Module.

    Dieser Bericht wäre detaillierter, wenn die Option
    „Ausführliche Ausgabe während der Kompilierung“
    in Datei -> Voreinstellungen aktiviert wäre.

    Gefällt mir

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s