Eine Mini-Binäruhr

Ein kleines Nerd Geschenk zum verwichteln, verschenken, oder auch zum selber behalten.

Generell

Die Inspiration für dieses Projekt war, dass in unserer Jahrgangsstufe gewichtelt wurde. Ungefähr eine Woche davor, ich hatte immer noch nichts zum verwichteln, ist mir dann spät abends dieses Ding in den Kopf gekommen und hat sich festgesetzt.
Es ist eine kleine Binäruhr, nicht zu schwer zusammenzubauen, günstig, und doch interessanter als das meiste Wichtelzeug. Um dabei komplett Anonym zu bleiben kann man den Sourcecode auch als 4 QR-Codes (v40) Drucken, jeder ca. 2800 Zeichen lang, welche dann wieder zusammengesetzt werden müssen.

Bedienung

Das Datum wird in farblich kodierten Teilen gezeigt:

Der Taster, der auf 0V verbindet ist der SET-Taster, der, der auf 5V zieht ist der MODE-Taster. SET ändert die aktuelle Einstellung, MODE wechselt zwischen verschiedenen Einstellungen.
Auf der Standartseite mit den wechselnden Datumsteilen ändert SET die Helligkeit. Drückt man nun Mode wird man durch alle Datumsteile geführt, jedes zuerst im Additions- dann im Subtraktions-Modus. Während der Einstellung wechselt die Farbe zwischen Weiß und des Datumsteils Farbe.
Der Add./Sub. Modus wird mit einem Grünen(Add) oder Roten(Sub) leuchten der LED in der Mitte für eine Sekunde gezeigt bevor man bearbeiten kann. Abschließend leuchtet die mittlere LED blau auf um das Ende aller Einstellungen zu zeigen.

Hardware

Bauteile

Schaltplan und Aufbau

Der Entkopplungskondensator sollte nahe der NeoPixel plaziert werden,
die NeoPixel Datenleitungen sollten so verbunden werden das die erste LED (da wo DataIn and den ATTiny geht) rechts ist.
Der Quarz sollte so nahe wie möglich, mit so kurzen Leitungen wie möglich an die Echtzeituhr angeschlossen werden.

Da der ATTiny zwar nicht genug Pins für jeden Taster einzeln hatte, jedoch analoge Eingänge besitzt habe ich beide Taster auf nur einen I/O legn können. Die Spannung hängt normalerweise um die 2.5V, geht jedoch nahe 5V oder 0V, wenn einer der Taster gedrückt ist.

Gehäuse

Das Gehäuse besteht aus 3 3d-gedruckten Teilen: Dem Körper, Deckel, und "Scheuklappen". Die "Scheuklappen" verhindern das Licht in das Kästchen anderer bits gelangt.

Das ganze Dingens
PCB Vorderseite
PCB Rückseite

Software

Code kompilieren

Zum Kompilieren habe ich den ATTinyCore in der ArduinoIDE v2 benutzt.
Alle Abhängigkeiten sind sowohl mit GitHub Links im Quellcode vermerkt. Alle Bibliotheken sind entweder mit ATTinyCore mitgeliefert oder im Bibliotheksmanager erhältlich.
Die Bordeinstellungen sind:

ATTiny85 Flashen

Wie lade ich überhaupt Code auf einen ATTiny, ganz ohne Bootloader? Dazu gibt es zwei Möglichkeiten: Ein richtiger ICSP Programmer wie ein USBasp oder sogar ein STK500, oder doch einfach ein beliebiger Arduino mit dem ArduinoISP Sketch (in der ArduinoIDE enthalten).
Wer einen Programmer hat, sollte wissen wie man ihn anschließt.
Wer einen Arduino als ISP verwenden möchte vebindet die leitungen so:
Nicht vergessen das ArduinoISP Sketch von den Beispielsketchen auf den Arduino hochzuladen.

In der ArduinoIDE wählt man nun "Arduino as ISP" unter Tools -> Programmer, den Seriellen Port des Arduinos unter Tools -> Port und clickt danach Tools -> Burn Bootloader.
Dies setzt die Taktfrequenz usw. auch wenn wir ohne Bootloader arbeiten und muss nach jeder Änderung an einer mit only on bootload markierten Einstellung wiederholt werden.
Nun kann man das Sketch mit Sketch -> Mit Programmer Hochladen hochladen.

Sourcecode


Aller Sourcecode und 3D-Modelle hier: github.com/HACKER-3000/NerdGeschenk/

QR-Code Skript