Inhaltsverzeichnis:

NeoClock - Gunook
NeoClock - Gunook

Video: NeoClock - Gunook

Video: NeoClock - Gunook
Video: NeoClock 2024, Kann
Anonim
Image
Image

Hier geht es darum, eine Uhr mit den fantastischen Neopixel-Ringen von Adafruit zu bauen. Das Lustige an dieser Uhr ist, dass sie tatsächlich zwei Ringe aus Neopixeln hat, einen für die Stunden und einen für die Minuten, Sekunden und Millisekunden. Die Uhr hält die perfekte Zeit mit dem DS3234 DeadOn Real Time Clock Chip von Sparkfun. Einfach zu bauen und macht Spaß zu modifizieren. Meine Hoffnung ist, dass es andere dazu inspiriert, Uhren oder andere Kunstwerke mit den Neopixel-Ringen zu bauen.

Für diejenigen unter Ihnen, die alle meine Dateien in einem einfach zu verwaltenden Format erhalten möchten, können Sie sie gerne aus meinem Github-Repository für dieses Projekt unter https://github.com/chrisgilmerproj/neoclock herunterladen.

Schritt 1: Entwerfen der Uhr

Design der Uhr
Design der Uhr
Design der Uhr
Design der Uhr
Design der Uhr
Design der Uhr
Design der Uhr
Design der Uhr

Ich wusste von Anfang an, dass ich mindestens zwei Ringe von Neopixeln verwenden wollte. Nach einiger Arbeit entschied ich, dass das beste Design darin besteht, einen Ring in den anderen zu legen, wodurch die ursprüngliche Form einer Uhr erhalten bleibt. Der kleinere Ring würde die Stunden sein und die verbleibende Zeit würde auf dem größeren Ring gehalten. Einige Designüberlegungen beinhalteten die Kosten der Neopixel, den Leistungsbedarf, die Größe der lasergeschnittenen Teile und welche Art von Kunst ich darauf setzen wollte.

Nachdem dieser Schritt abgeschlossen war, entschied ich, dass ich die Elektronik verstehen musste, bevor ich die Pläne für das Laserschneiden des Uhrenkörpers erstellte.

Schritt 2: Entwerfen der Elektronik

Entwerfen der Elektronik
Entwerfen der Elektronik
Entwerfen der Elektronik
Entwerfen der Elektronik
Entwerfen der Elektronik
Entwerfen der Elektronik
Entwerfen der Elektronik
Entwerfen der Elektronik

Beim Entwerfen der Elektronik musste ich im Voraus wissen, welche Elemente ich in der Uhr haben wollte:

  • Neopixel-Ringe (60er und 24er Zähler)
  • Arduino (das Gehirn)
  • Uhrregulierung (Arduinos halten keine Zeit)
  • Energieverwaltung

Die Größe und der Leistungsbedarf der Neopixel sind gut dokumentiert. Da sie mit 5V DC laufen, habe ich mich für einen 5V Arduino entschieden und die Dinge für mich einfacher gemacht. Da der Platz eine Überlegung war, entschied ich mich für einen Prototyp auf einem normalen Arduino Uno, aber für die endgültige Elektronik wählte ich einen Arduino Mini.

Die erste Iteration dieses Projekts kam direkt von der NeoPixel Basic Connections-Seite von Adafruit. Ich habe das Diagramm von der Website eingefügt, um die Dinge zu vereinfachen. Dabei sind zwei Dinge wichtig:

  1. Ein 1000uF-Kondensator wird benötigt, um zu verhindern, dass der anfängliche Stromstoß die Pixel beschädigt.
  2. Am ersten Pixel des 60-Zählrings wird ein 470-Ohm-Widerstand benötigt (dieser Widerstand ist in den 24-Zählring eingebaut)

Adafruit hat auch eine Reihe von NeoPixel Best Practices, die Sie lesen sollten, bevor Sie mit dem Design fortfahren.

Die Zeit auf der Uhr zu halten ist ein weiteres Problem. Die eingebaute Uhr des Arduino reicht nicht aus, um über lange Zeiträume eine gute Zeit zu halten. Ein schlimmeres Problem ist, dass die Zeit auf dem Arduino möglicherweise jedes Mal zurückgesetzt werden muss. Computer lösen dieses Problem, indem sie eine kleine Batterie auf dem Uhrenchip verwenden, um die Zeit zwischen den Stromausfällen zu halten. Früher habe ich so etwas wie den ChronoDot von Adafruit verwendet. Aber in diesem Fall wollte ich eine Ausrede, um den DS3234 (DeadOn RTC) von SparkFun zu verwenden. Sie können auch Datumsinformationen auf der DeadOn RTC speichern, wenn Sie diese in die Uhr integrieren möchten.

Schließlich brauchte die Energieverwaltung einige Überlegungen. Ich wusste bereits, dass alles 5V betragen musste, aber die benötigte Strommenge schien ein Rätsel zu sein. Ein üblicher Spannungsregler in den meisten Projekten ist der L7805. Dies nimmt Spannungen bis zu 24 V und einen maximalen Strom von bis zu 1,5 A auf. Ich wusste, dass ich eine 12V 1,5A Wandwürze herumliegen hatte, also entschied ich, dass dies der perfekte (und billige!) Spannungsregler für das Projekt wäre.

Die restlichen Teile würden aus meiner Teilekiste oder aus Radio Shack kommen. Dazu gehörten die Drähte, Schalter und die Gleichstrombuchse.

Schritt 3: Aufbau der Elektronik

Aufbau der Elektronik
Aufbau der Elektronik
Aufbau der Elektronik
Aufbau der Elektronik
Aufbau der Elektronik
Aufbau der Elektronik

Eine vollständige Liste der Elektronik, die ich gekauft habe, um dieses Projekt zu bauen, finden Sie in meinem Github-Repository hier: Electronics Parts List. Es enthält Links zur Produktseite für jedes Stück und enthält einige zusätzliche Informationen, einschließlich der Produkt-SKU. Ich habe dies schnell auf einem Steckbrett prototypiert und bin zum Laserschneiden und Bauen übergegangen, bevor ich irgendwelche Bilder gemacht habe. Ich habe es jedoch so gebaut, dass es leicht auseinandergenommen werden kann, also habe ich die Teile auf den Fotos oben für Sie zerlegt.

Schauen Sie sich die Bilder genau an, da die Drähte absichtlich so gebogen wurden, dass sie leicht zu verfolgen sind und das gesamte Profil der Elektronik dünn bleibt. Durch dieses erste Prototyping vor dem Laserschnittdesign konnte ich die Dicke der Teile überprüfen, damit ich die endgültigen Abmessungen für den Uhrenkörper herausfinden konnte.

Sie werden feststellen, dass ich ein paar benutzerdefinierte Steckbretter gemacht habe. Ich habe versucht, die Rückseiten dieser Bretter zu fotografieren, damit Sie sie wiederholen können. Sie können eine Auswahl an Steckbrettern wie diese für ein paar Dollar kaufen und sie an Ihr Projekt anpassen.

Die Verkabelung ist einfach, aber die wichtigsten Dinge, die man sich aus den Bildern merken sollte, sind diese:

  • Die Mode- und Set-Schalter benötigen Pull-Down-Widerstände. Ich habe 2,21 Ohm Widerstände verwendet, die ich herumliegen hatte, aber jeder kleine Widerstand funktioniert (vorzugsweise nicht weniger als 1 kOhm). Dies stabilisiert die angeschlossenen Arduino-Eingangspins, so dass sie, wenn sie hoch gehen, vom Rauschen unterscheidbar sind.
  • Die Rechteckwelle (SQW) des DS3234 wurde geerdet, da sie nicht verwendet wird.
  • Der Strom vom L7805 wird in RAW-Pin in den Arduino Mini gelegt. Setzen Sie die Leistung, die in den Arduino kommt, immer in RAW ein.
  • Das erste Pixel des 60 Neopixel-Rings verfügt über einen 470Ohm-Widerstand, um Schäden am ersten Pixel durch Datenspitzen zu reduzieren. Dies sollte kein Problem sein, da das Neopixel mit 24 Counts bereits einen eingebauten Widerstand dafür hat, aber sicher ist es besser.
  • Die Mode- und Set-Schalter sind SPST-Tastendruckschalter

Drahtfarben sind:

  • Rot: +5 V DC
  • Schwarz: Masse
  • Grün: Daten
  • Gelb, Blau, Weiß: Spezialkabel für DS3234

Wenn Sie zum ersten Mal Neopixel verwenden, sollten Sie daran denken, dass sie als lange Kette betrachtet werden können. Daher mag es seltsam erscheinen, von einem "ersten Pixel" in einem Ring zu sprechen, aber tatsächlich gibt es für jede Kette in den Ringen einen Anfang und ein Ende. In diesem Projekt kommen zuerst die 24 Pixel des kleinen Rings und danach die 60 Pixel des größeren Rings. Das bedeutet wirklich, dass ich eine Kette von 84 Neopixeln habe.

Für die Verkabelung am Arduino Mini:

  • DS3234 verbindet sich mit den Pins 10 - 13
  • Die Mode- und Set-Schalter befinden sich auf den Pins 2 und 3
  • Die Neopixel-Daten kommen von Pin 6.

Ich empfehle auch, die 6 Header auf die Unterseite des Arduino Mini zu legen, damit Sie ihn über ein FTDI-Kabel programmieren können.

Ein wichtiger Hinweis zum Strom: Diese Uhr erfordert einiges. Ich bin mir sicher, dass ich es herausfinden könnte, aber meine praktische Erfahrung ist, dass alles, was gleich oder weniger als 500 mA ist, schließlich zu Brownouts führt. Dies manifestiert sich darin, dass die Uhr verrückte Farben blinkt und die Zeit nicht hält. Meine letzte Wandwürze ist 12V und 1,5A und ich hatte noch nie eine Braunfärbung damit. 1,5 A ist jedoch die Grenze, die der Spannungsregler (und andere Teile) aushält. Überschreiten Sie diesen Betrag also nicht.

Schritt 4: Codieren der Uhr

Codieren der Uhr
Codieren der Uhr

Den vollständigen Code für die Uhr finden Sie im NeoClock-Code auf GitHub. Ich habe die Datei hier eingefügt, aber alle Änderungen werden im Repository vorgenommen.

Ich finde, das Schreiben von Code kann entmutigend sein, wenn Sie versuchen, alles auf einmal zu tun. Anstatt dies zu tun, versuche ich, mit einem funktionierenden Beispiel zu beginnen und Funktionen so zu entwickeln, wie ich sie brauche. Bevor ich darauf eingehe, möchte ich darauf hinweisen, dass mein Code aus der Kombination vieler Beispiele aus den folgenden Repositories und dem Arduino CC-Forum stammt. Geben Sie Kredite immer dort, wo sie fällig sind!

  • https://github.com/adafruit/Adafruit_NeoPixel
  • https://github.com/zeroeth/time_loop
  • https://github.com/sparkfun/DeadOn_RTC

Einige Beispielcodes aus diesen Repositorys finden Sie in meinem Codebeispielverzeichnis

Die Reihenfolge der Operationen, die ich zum Erstellen des Codes verwendet habe, war ungefähr so:

  • Bestätigen Sie, dass Neopixel mit dem Strandtest-Beispiel funktionieren
  • Versuch eine Uhr mit dem Time Loop Code laufen zu lassen
  • Ändern Sie die Uhr so, dass sie mit zwei Ringen statt nur einem funktioniert
  • Fügen Sie den DS3234 hinzu, um die Zeit über das DeadOn RTC-Beispiel zu halten
  • Fügen Sie den Modus hinzu und stellen Sie die Schalter ein
  • Debounce-Code mit Hilfe des Arduion Debounce-Tutorials hinzufügen
  • Fügen Sie einige Farbthemen für die Uhr-LEDs hinzu
  • Fügen Sie einige Animationen für die 0-, 15-, 30- und 45-Minuten-Marken hinzu
  • Fügen Sie der Uhr Kompasspunkte hinzu, um die 0-, 15-, 30- und 45-Minuten-Markierungen auszurichten

Wenn Sie sehen möchten, wie ich diesen Code aufgebaut habe, können Sie GitHub verwenden, um sich jeden Code-Commit anzusehen. Die Historie für die Uhr befindet sich in der Commit-Historie.

Es hat Spaß gemacht, Farbschemata hinzuzufügen, aber am Ende habe ich nur vier davon in das Menü aufgenommen. Jedes Thema legt eine bestimmte Farbe für die Stunden-, Minuten-, Sekunden- und Millisekunden-"Zeiger" fest. Die Optionen sind hier wirklich endlos, aber ich habe die Themen eingefügt (Methodennamen aufgeführt):

  • setColorBlue
  • setColorRed
  • setColorCyan
  • setColorOrange

Sie können jedoch diese zusätzlichen Methoden im Code finden:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

Animationen wurden hinzugefügt, weil mir die Idee gefiel, dass alte Uhren an den vier 15-Minuten-Punkten der Uhr läuten. Für diese Uhr habe ich folgende Animationen gemacht:

  • 15 Minuten: Ringe rot färben
  • 30 Minuten: Ringe grün färben
  • 45 Minuten: Färbe die Ringe Blau
  • Top of the Hour: Machen Sie einen Regenbogen über die beiden Ringe

Die Usability stellte sich als Problem der Uhr heraus, da niemand die Uhr orientieren konnte. Es sind immerhin nur zwei Ringe von LEDs. Um das Problem zu lösen, habe ich der Uhr die Kompasspunkte hinzugefügt. Dies verbesserte die Fähigkeit, die Zeit zu bestimmen, stark. Hätte ich dies gewusst, bevor ich die lasergeschnittenen Stücke verschickt habe, hätte ich vielleicht stattdessen etwas zur Kunst hinzugefügt. Aber es stellt sich heraus, dass man die Kunst im Dunkeln nicht so gut sehen kann, also hilft es wirklich, die Himmelsrichtungen zu haben. Eine Überlegung dabei ist, dass Sie beim Einfärben eines Pixels zuerst die aktuelle Farbe erfassen und eine neue Mischfarbe erstellen sollten. Dies verleiht ihm ein natürlicheres Gefühl.

Ein letzter Leckerbissen betrifft die Millisekunden. Millisekunden auf dem Arduino kommen vom internen Arduino-Kristall und nicht vom DS3234. Es liegt an Ihnen, ob Sie Millisekunden anzeigen möchten oder nicht, aber ich habe es so gemacht, dass die Uhr immer etwas zu tun schien. Es mag Sie ärgern, dass die Millisekunden und Sekunden nicht immer übereinstimmen, aber in der Praxis hat es mir noch nie jemand beim Blick auf die Uhr gesagt und ich finde es sieht gut aus.

Schritt 5: Entwerfen der lasergeschnittenen Dateien

Entwerfen der lasergeschnittenen Dateien
Entwerfen der lasergeschnittenen Dateien
Entwerfen der lasergeschnittenen Dateien
Entwerfen der lasergeschnittenen Dateien
Entwerfen der lasergeschnittenen Dateien
Entwerfen der lasergeschnittenen Dateien
Entwerfen der lasergeschnittenen Dateien
Entwerfen der lasergeschnittenen Dateien

Beim Entwerfen der lasergeschnittenen Dateien musste ich zwei Überlegungen anstellen. Das erste war das Material, aus dem ich es bauen wollte, und das zweite war, wie es gebaut werden würde. Ich wusste, dass ich eine Holzoberfläche mit Acryl wollte, um die Neopixel zu diffundieren. Um das Material herauszufinden, habe ich zuerst einige Muster bei Ponoko bestellt:

  • 1x Furnier MDF - Walnuss
  • 1x Furnier MDF - Kirsche
  • 1x Acryl - Hellgrau
  • 1x Acryl - Opal

Die Holzauswahl lässt mich sehen, wie die Rasterung aussehen würde und wie die Verbrennung auf der Seite der Uhr aussehen würde. Mit dem Acryl würde ich die Diffusion der Neopixel testen und vergleichen, wie es mit dem Holz aussehen würde. Letztendlich habe ich mich für Kirschholz mit Opalacryl entschieden.

Die Abmessungen der Uhr wurden hauptsächlich durch die Größe der Neopixelringe bestimmt. Was ich nicht wusste, war, wie dick es sein musste, um die Elektronik zu passen. Nachdem ich die Elektronik gebaut hatte und wusste, dass das Holz etwa 5,5 mm dick war, stellte ich fest, dass ich etwa 15 mm Platz in der Uhr benötigte. Das bedeutete drei Schichten Holz. Aber da die Vorder- und Rückseite bereits den Großteil des Platzes in meinem Design einnehmen, musste ich diese Ringe in "Rippen" aufbrechen, die ich später zusammenkleben konnte.

Ich habe InkScape verwendet, um auf der von Ponoko bereitgestellten Vorlage zu zeichnen. Nachdem ich den Uhrenkörper herausgezogen hatte, begann ich dann, den Baum von Hand zu zeichnen. Ich konnte das Originalbild, das mich inspirierte, nicht importieren, aber es war nicht schrecklich, selbst herauszufinden, wie man etwas Ähnliches macht.

Die Materialkosten betrugen nur etwa 20 US-Dollar, aber die Kosten für das Schneiden betrugen etwa 100 US-Dollar mehr. Dazu haben zwei Dinge beigetragen:

  • Kurven und Kreise kosten mehr, weil sich die Maschine in zwei Achsen bewegt und dieses Design viele Kurven hat
  • Die Rasterung erfordert viele Durchgänge hin und her über das Stück. Das Weglassen hätte das meiste Geld gespart, aber es hat mir gefallen.

Nachdem ich das Design fertiggestellt hatte, schickte ich die EPS-Dateien an Ponoko und meine Stücke waren ungefähr eine Woche später fertig.

Beachten Sie, dass ich die Modus- und Set-Schalter oder die DC-Strombuchse nicht in das Design aufgenommen habe. Als ich das abgeschickt habe, hatte ich mich noch nicht für diese Teile entschieden. Um mir mehr Flexibilität zu geben, habe ich sie weggelassen und beschlossen, sie später von Hand zu bohren.

Schritt 6: Konstruieren der Uhr

Bau der Uhr
Bau der Uhr
Bau der Uhr
Bau der Uhr
Bau der Uhr
Bau der Uhr
Bau der Uhr
Bau der Uhr

Als alle Teile ankamen, baute ich die Uhr. Der erste Schritt war der Uhrenkörper, bei dem ich die Rippen ausstanzen und hinten und vorne kleben musste. Ich habe zwei Lagen Rippen auf der Rückseite und eine Lage auf der Vorderseite gelegt und mit Holzleim fixiert. Für die Vorderseite habe ich Holzleim verwendet, um die Acrylringe und die Holzkreise zusammenzufügen. Ich hatte ein Ersatzmittelstück, das ich als Rohling geschnitten hatte, das sich während des Baus als nützlich erwies. Ich klebte es auf die Rückseite des Baumstücks und das gab mir einen Platz, wo ich später die Neopixel kleben konnte.

Mit dem konstruierten Körper beschloss ich, Löcher für die Schalter und die Strombuchse zu bohren. Ein wenig Geometrie (wie im Bild zu sehen) hat mir geholfen, alles auszurichten. Mit einem separaten Stück Holz an der Außenseite habe ich beim Bohren (sehr sorgfältig!) die Löcher gemacht und die Schalter und die Buchse eingeklebt.

Die Elektronik ging als nächstes rein. Ich klebte zuerst die Neopixel, gefolgt vom Kondensator. Diese habe ich in das Neopixel-Power-Breakout-Board verdrahtet. Dann für die Rückseite habe ich die Drähte auf die Schalter und die Strombuchse gelegt. Ich habe auch den Spannungsregler L7805 mitgeliefert.

Eine kurze Anmerkung zum Ausrichten der Ringe. Für den großen Ring von 60 Pixeln müssen Sie die Uhr so ausrichten, dass eines der Pixel genau oben ist, um die Nullminuten zu markieren. Welches Pixel spielt keine Rolle und ich werde gleich darauf eingehen, warum. Für den kleinen Ring von 24 Pixeln müssen Sie die Uhr so ausrichten, dass die Spitze tatsächlich zwischen zwei Pixeln liegt. Der Grund dafür ist, dass Sie, wenn Sie 12 Stunden markieren möchten, am Ende zwei Pixel anstelle von einem aufleuchten. Durch den Versatz und die Streuung des Kunststoffs sieht es so aus, als hätten Sie wirklich 12 breite Pixel.

Welche Pixel der Code als "top" für jeden Ring bezeichnet, müssen Sie den Code ein wenig bearbeiten. Ich habe zwei Werte in meinem Code namens "inner_top_led" und "outer_top_led". In meinen Uhren war die "inner_top_led" 11 Pixel vom Anfang des kleinen Rings entfernt und die "outer_top_led" war 36 Pixel vom Anfang des großen Rings entfernt. Wenn Sie die Ringe anders ausrichten, ändern Sie diese Werte entsprechend Ihrer Ausrichtung. Ein bisschen experimentieren und Sie werden ziemlich schnell den richtigen Wert finden.

An dieser Stelle habe ich getestet, dass alles wie erwartet funktioniert.

Aber wie bei allen Projekten stieß ich auf ein Problem, als mir klar wurde, dass ich nicht herausgefunden hatte, wie es zusammenhalten würde. Ich bemerkte, dass ich ungefähr 3/8 Zoll Platz zwischen den Neopixeln und den Rippen hatte, also ging ich zu Home Depot und bekam einen 3/8 Zoll Dübel und eine Reihe von Neodym-Magneten. Ich habe an drei Stellen kleine Holzständer gebaut und sie abgeschliffen, damit ich auf jeden Ständer zwei Magnete setzen konnte (mit Sekundenkleber). Ich landete mit 3 Paaren von je 2 Ständern. Dann klebte ich diese in den Rahmen und hielt alles mit einer Klemme fest. Ich tat dies, während der Kleber auf den Ständern nass war, damit sich alles ausrichtete und dann an der richtigen Stelle trocknete. Das hat perfekt funktioniert und ich finde es toll, dass die Veröffentlichung alles versteckt ist.

Schließlich fand ich heraus, dass ich es an die Wand hängen musste, also bohrte ich in einen kleinen Hangar auf der Rückseite, damit ich es an der Wand aufhängen konnte.

Schritt 7: Letzte Gedanken

Dieses Projekt hat viel Spaß gemacht und ich habe es genossen, etwas über Neopixel und den DS3234 zu lernen. Ich habe es besonders genossen, endlich ein Projekt zu bauen, das von Anfang bis Ende gut aussah. Es gibt ein paar Dinge, die ich aktualisieren würde, wenn ich dies noch einmal tun würde, aber sie sind geringfügig:

  • Ich habe der Einfachheit halber zwei Knöpfe anstelle von drei gewählt. Aber einen Knopf zu haben, mit dem ich sowohl nach unten als auch nach oben gehen kann, wäre schön gewesen, um die Uhr einzustellen
  • Die Mode-Taste und die Set-Taste sind nicht zu unterscheiden. Ich verwechsle sie oft. Vielleicht würde ich sie in Zukunft auf gegenüberliegende Seiten stellen.
  • Ich habe die Holzfront nie fertiggestellt. Ich mochte den Look zuerst roh und machte mir später Sorgen, dass es viel kosten würde, das Finish zu vermasseln.
  • Das Rastern des Baums war in Ordnung, aber ich hätte in Zukunft möglicherweise mehr Details für den Baum gezeichnet.
  • Das Dimmen der Uhr wäre auch eine nette Funktion, da sie im Dunkeln ziemlich hell ist. Das Dimmen ist jedoch an die Farbe gebunden und das Herausfinden, dass dieses Bit zu lange dauerte, habe ich es fallen lassen. Ich würde wahrscheinlich in Zukunft wieder in diese Funktion investieren.

Vielen Dank für das Lesen dieses instructable. Ich hoffe, Sie erstellen Ihr eigenes Uhr- oder Neopixel-Projekt und teilen es mit mir. Viel Spaß beim Bauen!