Inhaltsverzeichnis:

Eine Zurück in die Zukunft Uhr - Gunook
Eine Zurück in die Zukunft Uhr - Gunook

Video: Eine Zurück in die Zukunft Uhr - Gunook

Video: Eine Zurück in die Zukunft Uhr - Gunook
Video: Baby in Fruchtblase geboren - Hammer Video 2024, November
Anonim
Eine Uhr zurück in die Zukunft
Eine Uhr zurück in die Zukunft

Dieses Projekt begann als Wecker für meinen Sohn. Ich habe es so gestaltet, dass es wie die Zeitschaltung von Zurück in die Zukunft aussieht. Das Display kann die Uhrzeit in verschiedenen Formaten anzeigen, natürlich auch das aus den Filmen. Es ist über die Tasten oben auf dem Gehäuse konfigurierbar, aber auch über eine Webseite, die vom Raspberry Pi Zero im Inneren bedient wird. In einem der Anzeigemodi zeigt es das lokale Wetter (von meiner Arduino-betriebenen Wetterstation) sowie die Vorhersage und alle täglichen Erinnerungen, die über das Webinterface konfiguriert werden. Dank eines DAC verfügt es auch über Audio und streamt Musik über das AirPlay-Protokoll. Der Alarmton kann jede beliebige Audiodatei sein. Es wird das Display zu bestimmten Tageszeiten (z. B. Morgen- und Abenddämmerung) automatisch dimmen und aufhellen.

Schritt 1: Hintergrund

Letztes Jahr war ich auf der Suche nach einem neuen Arduino-Projekt, nachdem ich gerade mein allererstes fertiggestellt hatte, eine Heimwetterstation. Mein 11-jähriger Sohn hatte gerade zum ersten Mal die Back to the Future-Filme gesehen, also dachte ich, es würde Spaß machen, ihm zu seinem Geburtstag einen Wecker zu bauen, der wie die Zeitschaltuhr im Delorean aussieht. Dies ist keine neue Idee, es gibt einige ähnliche Projekte da draußen (dieses zum Beispiel), also dachte ich, es wäre ein schönes Projekt, von anderen zu lernen und neue Fähigkeiten zu erwerben.

Die erste Version funktionierte recht gut (sie war noch nicht fertig für seinen Geburtstag: Ich habe es bis Weihnachten geschafft), aber ich wurde ziemlich ehrgeizig in dem, was ich wollte, und stellte fest, dass meine Skizze immer wieder in die Speichergrenze des Arduino lief. Ich hatte auch mehrere kleine externe Hardwaremodule (WiFi, MP3-Player, Audioverstärker, RTC usw.), sodass alles etwas unhandlich wurde. Am Ende entschied ich mich für den Umstieg auf eine Raspberry Pi-Plattform, die die Hardware vereinfachte und es mir ermöglichte, viel mehr Funktionalität und Funktionen zu integrieren.

Schritt 2: Haupthardwarekomponenten

In der Kiste

Hier sind die elektronischen Komponenten, die ich verwendet habe. Die meisten davon waren Quellen von Core Electronics in Australien, aber natürlich sind sie auch anderswo leicht erhältlich:

  • 4 x alphanumerisches Quad-Display -Gelb-Grün
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC für Raspberry Pi Zero
  • Audioverstärker (PAM8403 IC)
  • Raspberry Pi 3+ Netzteil
  • 4 x Überbrückungskabel - 0,1", 5-polig, 12"
  • 40-poliges (2 x 20) Flachbandkabel
  • Raspberry Pi GPIO-Steckerleiste
  • Raspberry Pi Modell B - GPIO ummantelter Header (2X20)
  • GPIO Stacking Header für Pi A+/B+/PI 2/PI 3 - extra lang 2X20
  • 4 x 5-poliger Stiftleiste
  • 2 kleine 3W-Lautsprecher
  • 2 x Koaxialkabel für analoge Audioverbindung DAC an Amp
  • Veraboard oder benutzerdefinierte Platine zur Übertragung von Rpi an einen Verstärker, eine LED, Tasten
  • 5 x Tastschalter
  • 4 x 2-polige leiterplattenmontierbare Schraubklemmenblöcke

Die Kiste

  • Bits und Stücke aus MDF, Schrauben und Bolzen, um das "Chassis" zu machen
  • Grün getöntes Plexiglas, lokaler Lieferant
  • Styrol, Modellierkleber, Sprühfarbe (Aluminiumfarbe) aus einem örtlichen Bastelladen
  • Aufkleber (Datei auf Anfrage erhältlich - gedruckt von Redbubble)

Schritt 3: Alles zusammenfügen

Alles zusammenfügen
Alles zusammenfügen

Die LED-Anzeige für die Uhr besteht aus 16x14-Segment-alphanumerischen Anzeigen, zum Glück die gleiche Anzahl von Zeichen wie die Zeitschaltung Zurück in die Zukunft. Während nur die ersten drei Zeichen alphanumerisch sein müssen und der Rest numerische 7-Segment-Anzeigen sein könnten, um die Filmrequisite zu emulieren, habe ich beschlossen, sie alle alphanumerisch zu machen, um eine gewisse Flexibilität bei der Anzeige zu ermöglichen und sie alle so aussehen zu lassen gleich. Die Adafruit Quad-Rucksäcke sind hier eine großartige Lösung und können auf dem I2C-Bus des Raspberry Pi betrieben werden. Weitere Informationen zu diesen Geräten und deren Verkabelung finden Sie hier auf der Adafruit-Website. Das einzige, was ich etwas ungewöhnlich machen musste, war, die Adressen von drei von ihnen zu ändern, damit jeder Rucksack einzigartig war.

Um Audio (in Stereo) abzuspielen, habe ich den Pimoroni pHAT DAC und einen 2 x 3W Stereo-Audioverstärker basierend auf dem PAM8403-Chip eingebaut. Der pHAT DAC lässt sich ganz einfach an den Pi anschließen. Ich habe einen 2 x 20-Pin-Stecker auf den Pi und einen GPIO-Stacking-Header auf den DAC gelegt, damit sie übereinander gesteckt werden können. Die männlichen Header-Pins gehen durch die Oberseite des DAC, sodass ich ein Flachbandkabel mit Buchsensteckern führen kann, zunächst zu einem Raspberry Pi-Breakout zum Testen von Steckbrettern, aber schließlich zu einem ummantelten Header auf einer speziell angefertigten Platine.

Für den Audioverstärker gibt es viele Optionen (einschließlich des Besorgens des Chips und des Zusammenbauens eines eigenen). Dieser hat die Möglichkeit, den Ausgang stummzuschalten, indem man einfach den Zustand eines der Pins ändert (High ist an, Low ist aus) und ich habe ihn so verdrahtet, dass dies vom Pi gesteuert werden kann. Bei meinen ersten Versuchen, dies zu verkabeln, habe ich ziemlich viele Hintergrundgeräusche entdeckt, wenn das Audio eingeschaltet war. Nachdem ich viel mit der Erdung herumgespielt hatte, versuchte ich schließlich, die Eingangsversorgungsspannung von den 5 V des Pi auf 3,3 V zu verschieben, und das reparierte sie. Ich denke, es gibt ziemlich viel Rauschen, das durch die verschiedenen herumfliegenden digitalen Signale erzeugt wird, aber es scheint, dass die 3,3-V-Versorgung irgendwie isoliert ist.

Andere Verbindungen umfassen das analoge Audio vom DAC zum Verstärker (ich habe hier ein Koaxialkabel verwendet, um die Geräuschaufnahme zu bewältigen) und die Audioausgabe an ein Paar kleiner 3W-Lautsprecher, die in das Gehäuse passen. Es gibt auch GPIO-Anschlüsse für die vier Taster oben auf der Box, und ich habe einen Taster mit den "RUN" -Pins für den Hard-Reset verdrahtet (siehe den Abschnitt "Zusätzliche Verbindungen" auf dieser Seite). Der Reset-Knopf ist unsichtbar an der Rückseite des Gehäuses angebracht. Hier ist ein Diagramm, das die Verbindungen zeigt:

Schritt 4: Eine benutzerdefinierte Leiterplatte

Eine benutzerdefinierte Leiterplatte
Eine benutzerdefinierte Leiterplatte

Die Schaltung ist zwar nicht zu kompliziert, aber es gibt einiges an Verkabelung und ein Steckbrett kann ziemlich schnell wie Spaghetti aussehen. Also habe ich eine Platine entworfen, um alles unter Kontrolle zu halten. Es ist ein selbstgebrautes einseitiges Brett und ich habe einen Freund, der dabei hilft. Nachdem es hergestellt und verkabelt war, stellte ich fest, dass ich vergessen hatte, Anschlüsse für die Klemmenblöcke für das Audio hinzuzufügen, und ich später die Audioverstärkerversorgung von 5 V auf 3,3 V umstellte, also ist es nicht ideal und ich musste weitermachen einige Veroboard, um die Audioverbindungen zu ermöglichen. Außerdem sind die Pinbelegungen der Audioverstärkerplatine nicht standardmäßig getrennt (sie variieren sogar zwischen den Pins), sodass die Verbindung dafür mit der Hauptplatine mit 11 kurzen ~ 1 cm Verbindungsdrähten etwas schrecklich ist.

Wenn ich ein weiteres Board machen würde, würde ich all diese Modifikationen einbeziehen und auch den Anschluss für die vier Tasten etwas schöner ändern. Der DAC und der Pi würden direkt oben gestapelt, sodass kein Flachbandkabel benötigt wird. Das obige Diagramm zeigt, wie es aussehen könnte.

Schritt 5: Das Gehäuse

Das Gehäuse
Das Gehäuse
Das Gehäuse
Das Gehäuse
Das Gehäuse
Das Gehäuse

Ich wollte ein Gehäuse machen, das wie eine Reihe der Filmzeitschaltung aussah. Drei Reihen LED-Anzeigen wären für einen Wecker zu viel gewesen und hätten die Kosten deutlich erhöht. Ich dachte darüber nach, das Gehäuse aus Aluminium zu machen, aber ich habe keine Fähigkeiten in diesem Bereich. Ich habe in meinem Leben jedoch einige Plastikmodelle hergestellt und habe einige Erfahrung in der Holzbearbeitung Box mit Frontrahmen, lackiert in Aluminium-Metallic-Sprühfarbe. Der Kunststoff und die Farbe wurden von einem lokalen Modellbaugeschäft bezogen. Ich habe mir die Beschriftungen der Filmrequisite genau angeschaut und mein Bestes getan, um die Farben, Schriftart und -größe zu kopieren. Ich habe Photoshop verwendet, um die Etiketten zu erstellen und sie als Aufkleber von Redbubble drucken zu lassen.

Die obigen Bilder zeigen:

  1. Die Vorderseite des MDF-Chassis. Die 4 LED Rucksäcke sind vorne mit grün getöntem Plexiglas befestigt
  2. In der Kiste. Rucksäcke alle montiert und ausgerichtet, Raspberry Pi und kundenspezifische Leiterplatten, Lautsprecher auf beiden Seiten.
  3. Verkabelung installiert und Außenhülle betriebsbereit. Es war ein bisschen eng!

Schritt 6: Einrichten des Raspberry Pi

Ich hatte einige Kompatibilitätsprobleme mit Raspbian Stretch (die vielleicht lösbar gewesen wären, wenn ich darauf bestanden hätte), aber Jessie funktioniert gut damit, also habe ich mich dafür entschieden.

Ich habe den Pi als Headless-Unit mit VNC- und SSH-Zugang eingerichtet. Dies hätte getan werden können, ohne jemals eine Tastatur oder einen Monitor anzuschließen, aber ich habe mir einfach den Fernseher ausgeliehen und eine Tastatur durchsucht, und es wurde ziemlich schnell kopflos. Von da an habe ich von da an ziemlich viel VNC verwendet.

Mein Uhrcode verwendet Python 2.7.9 und stützt sich auf einige Bibliotheken, die unten aufgeführt sind. Außerdem betreibe ich einen Flask-Webserver und MQTT für die Fernsteuerung und Shairplay für das Musikstreaming. Ich habe gerade die Online-Installationshinweise für all diese befolgt und hatte überhaupt keine Probleme. Hier sind die Python-Bibliotheken und andere Pakete usw., die ich installieren musste, mit Links zu Installationshinweisen oder nur dem Befehl, den Sie ausführen müssen, um sie zu erhalten:

Python-Bibliotheken

  • Adafruit_LED_Rucksack
  • Rpi. GPIO (apt-get install python-rpi.gpio)
  • alsaudio
  • paho.mqtt.client (pip install paho-mqtt)
  • Kolben (apt-get install python-flask)

Andere Pakete usw

  • Mücke (apt-get install Mücke)
  • Hafen
  • Die Pimoroni-Website enthält einige gute Dokumentationen zum Einrichten des DAC, also habe ich es einfach ausprobiert.

Schritt 7: Software

Image
Image
Software
Software

Der Uhrcode wurde in Python geschrieben und verwendet Threading, um den Alarm und gelegentliche Pieptöne im Hintergrund abzuspielen, ohne die Display-Updates zu blockieren. Ich habe die ConfigParser-Bibliothek verwendet und die von ihr verwaltete Konfigurationsdatei wird vom Uhrencode sowie der Flask-Web-App gelesen und geschrieben, so dass jedes Mal, wenn die Konfiguration über das Webinterface oder die Uhr geändert wird, synchronisiert wird. Die Clock-Software enthält auch einen MQTT-Broker, um die Steuerung des Anzeigemodus und die Stummschaltung aus der Ferne zu ermöglichen. Mein Hintergedanke ist schließlich, eine iOS-App für die Fernbedienung zu schreiben, aber das Webinterface funktioniert vorerst gut.

Das erste Bild oben zeigt, wie die Uhr in ihren verschiedenen Anzeigemodi aussieht, und es gibt ein kurzes Video, das sie im Scrollmodus zeigt.

Obwohl der Code nicht schön anzusehen ist, ist er schön und stabil. Ich schicke es gerne an jeden, der es anfordert und werde es online stellen, wenn es besser organisiert und kommentiert ist.

Die Web-App

Das nächste Bild zeigt, wie das Webinterface zur Uhr aussieht. Es gibt auch eine Konfigurations- und eine Kontrollseite und diese machen es viel einfacher, mit der Uhr zu spielen, ohne viel Knopfdruck:-).

Schritt 8: Was als nächstes?

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

Es ist ein Python-Shareport-Metadaten-Decoder verfügbar, daher denke ich, dass ich etwas Code hinzufügen werde, um Informationen wie Titel und Künstler anzuzeigen, wenn Musik abgespielt wird. Es wäre auch recht einfach, Sonnenauf- und -untergangszeiten zu berechnen, damit das Display automatisch aufgehellt und gedimmt werden kann, anstatt es manuell einzustellen. Vielleicht würde es auch Spaß machen, eine Internetradio-Funktion hinzuzufügen. Das Scroll-Display könnte auch konfigurierbarer sein.

Empfohlen: