Für alle Freunde des gepflegten Schaffens, habe ich hier ein weiteres Uhrenprojekt im Steampunk-Design online gestellt. Der Zeitpunkt der Entstehung liegt zwar schon ein paar Jahre zurück, was aber der Sache keineswegs ihren Reiz nimmt. Im Gegensatz zur GenuhR sind die Zutaten dieses Projektes auf dem heutigen Standard und dementsprechend einfacher zu besorgen. Die Rede ist vom ...

Weckomat
GehäuseKonsoleKonsole

Im Aussehen unterscheidetet sich der Weckomat erheblich von der GenuhR, in Sachen Funktionalität sind sie sich jedoch sehr ähnlich: Er bezieht Zeit und Datum automatisch per DCF (Funkzeit, s. bei GenuhR sowie meinen Artikel in der Zeitschrift c't Hacks 2/2014 (Heise Verlag), S.84-91) und stellt damit seine innere Uhr. Diese Uhr läuft auch bei Ausbleiben des Funksignals oder einer Unterbrechnung der Stromversogung über einen längeren Zeitraum hinweg zuverlässig weiter, so dass bei Wiederkehr der Stromversogung die Uhrzeit unmittelbar wieder zur Verfügung steht (Gangreserve). Ebenso verhält es sich mit der Umstellung Sommer/Normalzeit. Die Zeitpunkte im Frühjahr und im Herbst werden von der Software der Uhr selbst ermittelt und die Umstellungen finden unabhängig von einer Funkverbindung statt. Damit erübrigt sich dann auch die obligatorische Frage nach dem Aufwachen an einem Morgen nach der Umstellung: Zeigt die Uhr noch die alte, oder schon die neue Zeit an?
Auch die Sorge, ob der Wecker nach Ausbleiben der Stromversorgung die eingestellte Weckzeit etwa vergisst, ist unbegründet. Alle Einstellungen merkt sich der Weckomat im internen, nichtflüchtigen Speicher, d.h. auch ohne Strom bleiben alle Parameter erhalten und das gilt natürlich auch für einen eventuell gestellten Wecker.
Wie auch schon zu Zeiten der GenuhR, die Software des Weckomaten verfügt über das Wissen, wann welche Feiertage sind (staatliche wie auch christliche). Auf Wunsch kann an solchen Feiertagen der Wecker stumm bleiben. Man spart sich das Ausschalten und - vielleicht noch wichtiger - erspart sich das Verschlafen, wenn man vergisst, den vortags ausgeschalteten Wecker wieder zu aktivieren. Dabei wird berücksichtigt, dass in den verschiedenen Bundesländern unterschiedliche Regelungen bezüglich der Feiertage existieren. Der Nutzer kann selbst festlegen, in welchem Bundesland er wohnt - sprich welche Regelung für ihn in Frage kommt. Intern richtet sich der Weckomat dabei nach dieser Tabelle.

Als Service zeigt der Weckomat die Umgebungstemperatur an. Der zuständige Sensor ist dieses Mal ein DS1621, von dem ich mir eine höhere Genauigkeit erhoffe. Der in der GenuhR eingesetzte eingesetzte LM92 lag schon mal ±3°C daneben. 
Wie der Name schon vermuten läßt, ist der Weckomat in erster Linie als Wecker konzipiert. Das bedeutet, er steht irgendwo im Sichtbereich des Schlafenden. Mich persönlich hat es immer gestört, ständig die Anzeige eines Weckers sehen zu müssen, wenn ich nachts mal ein Auge auftue. Dabei ist die Helligkeit nicht das Problem, das wird per LDR der Umgebungshelligkeit angepasst. Es ist mehr der "ich will dann gar nicht wissen wie spät es schon ist" - Effekt. Aus diesem Grund habe ich den Weckomat mit einem Infrarotsensor ausgestattet, der Bewegungen im Umfeld (Vorfeld) des Gerätes registriert. Der Controller schaltet die Anzeige einfach ab, wenn sich eine Zeitlang nichts regt. Möchte man dann doch wissen, wie spät es ist, genügt eine einfache Bewegung im Erfassungsbereich des Bewegungsmelders. Angenehmer Nebeneffekt dieser Abschaltung, ist eine nachhaltige Lebensverlängerung der Anzeige. Ein weiterer Einsatzort findet sich in der Funktion der Weckwiederholung. Wer sich nach Eintreten des Weckalarms gerne noch ein paarmal umdreht, kann die Schlummerfunktion mittels Bewegungsmelder aktivieren - Handzeichen genügt.
Als externe Beschaltung gibt es wie bei der GenuR neben dem Netzteil eine geschaltete Steckdose, mittels der sich der Weckomat zu einem Radiowecker machen läßt. Wer jedoch vorhat seine Kaffemaschine zu schalten, sollte über ein stärkeres Solid-State-Relais nachdenken, denn: Das aktuell Eingesetzte hat eine Schaltleistung von ca. 400 Watt.
Aus naheliegenden Gründen habe ich, wie bei der GenuhR, Netzteil und Schaltrelais zusammen in ein Gehäuse verbaut.

Eine externe Bedienungsanleitung als PDF gibt es hier nicht. Der Umgang ist so einfach, dass die folgende Erklärung reichen wird: Bedienelemente des Gerätes sind Drehinkrementalgeber, LED und eine Taste. Mittels des Drehinkrementalgebers wird die Weckzeit eingestellt. Drehen verändert die Weckzeit, Drücken schaltet den Wecker ein bzw. aus. Einen gestellten Wecker erkennt man am Glockensymbol oben rechts in der Anzeige und an der leuchtenden LED. Die Taste hat nur die alleinige Aufgabe einen angeschlossenen Verbraucher direkt zu schalten. Ausgehend von einem Radio erscheint dazu in der Anzeige ein animiertes Notensymbol. Das Menü der Einstellungen erreicht man, indem man den Drehinkrementalgeber länger als 4 Sekunden gedrückt hält. Die Bedeutung der verschiedenen Einstellungen ist in dieser Tabelle zusammengefasst.

Hardware
Anders als bei der GenuhR zeigt der Weckomat seine Informationen auf einem 2,7" Punktmatrix-OLED an. Es verfügt über eine in der Microcontrollerwelt schon recht ansehnliche Auflösung von 128×64 Pixels. Dank der OLEDs ist die Darstellung sehr scharf und hat einen eindrucksvollen Kontrast. Bei dem hier eingesetzten Typ handelt es sich um das VGY12864L-S005. Ich habe die gelbe Variante für 5V im Einsatz. Man bekommt es bei einem in Deutschland wohlbekannten Eletronikanbieter (Nr. 180849, Stand: 2013). Ebenfalls dort erhältlich ist der passive IR-Bewegungssensor AMN3 von Panasonic™ (Nr. 504927, Stand: 2013). Er ist zwar nicht ganz billig, jedoch angenehm klein (Fingerhut) und zuverlässig. Gerade Letzteres ist keine Selbstverständlichkeit. Der eingesetzte Drehinkrementalgeber ist von DDM Hopt & Schuler und hat eine eine 2er  Rasterung. Man kann natürlich auch andere einsetzen, insofern sie die passende Rasterung haben. Dazu, und zum Thema Drehinkrementalgeber allgemein, hier ein kurzer Artikel.
Das Herzstück des Weckomaten bildet dieses mal ein ATmega32 von Atmel. Der Controller ist leicht zu bekommen und das Aufspielen der Firmware kann mit einem der handelsüblichen Programmiergeräte vonstatten gehen. In der Schaltung ist dafür die ISP- (H1) bzw. die JTAG-Schnittstelle (H2) vorgesehen. Als ISP-Programmiergerät kann ich den AVRISP mkII von Atmel empfehlen. Er ist für ca. 40€ zu haben (andere gehen natürlich auch). Wer den Programmablauf nachvollziehen will, sollte JTAG wählen, es erlaubt In-Circuit-Debugging. JTAG-Programmierer mit Debugging-Schnittstelle, wie z.B. der JTAGICE mkII, sind jedoch erheblich teurer (ca. 300€). 
Auf eine PCB-Vorlage habe ich diesmal verzichtet. Die Schaltung ist so einfach, dass jeder sie nach individuellem Können und Budget selbst aufbauen kann. Meine Platine habe ich so gestaltet, dass alle relevanten Bauteile auf der Oberseite Platz finden und das OLED auf der Rückseite direkt mit der Platine verbaut wird. Auf diese Weise konnte ich das Ganze als Sandwich in das dafür vorgesehene Gehäuse setzen. Alle relevanten Anschlüsse sind mit Pfostenfeldsteckern (JP) herausgeführt. Externe Komponenten des Weckomaten sind neben dem Netzeil an SP1 noch der Helligkeitssensor (LDR) an JP1, das Solid-State-Relais an JP2 (bitte passenden Vorwiderstand R12 wählen), der PIR-Sensor an JP3 und das DCF-Empfangsmodul an JP4. Das hier eingesetzte Modul ist, wie das OLED und der IR-Bewegungssensor, vom wohlbekannten Eletronikanbieter Nr 641138 (Stand: 2013). Bislang habe ich damit gute Erfahrungen gemacht, aber auch Module anderer Herkunft sind denkbar. Gegebenenfalls ist dazu der Pullup R15 anzupassen oder ganz wegzulassen. Wie beispielsweise bei dem von Reichelt vertriebenen Modul (Nr. DCF77 MODUL). Es gibt das PWM-Signal über einen recht schwachen Push-Pull-Ausgang aus. Jedoch stellte sich heraus, dass das Modul extremst empfindlich auf Rippeln der Versorgungsspannung reagiert, was im Datenblatt aber auch nicht unerwähnt bleibt. Schon bei 40mV stellte es den Dienst komplett ein. Leider sind Rippeln bei Schaltreglern aber nicht gänzlich zu vermeiden. Erst mit einem 3K3 Längswiderstand plus 100nF Glättungskondensator konnte ich das Modul letztlich doch zur Zusammenarbeit bewegen.
An JP5 ist der I²C-Bus herausgeführt. Der Controller erwartet dort einen Temperaturchip vom Typ  DS1621. Bleibt noch JP7 zu erwähnen, an den die Bedienkonsole angeschlossen wird. Die Konsole besteht aus einem Drehinkrementalgeber mit Taste, einer zusätzlichen einzelnen Taste und einer LED (bitte passenden Vorwiderstand R11 wählen). 

Software

Kommen wir zur Software. Sie ist komplett in C geschrieben und nutzt den vom Controller zur Verfügung gestellten Platz von 32K weitestgehend aus. Wer mehr braucht, dem sei ein ATmega644 ans Herz gelegt. Er ist Pinkompatibel, verfügt aber über doppelt so viel Programmspeicher. Als Entwicklungsumgebung kam das von Atmel kostenlos zur Verfügung gestellte AVR-Studio (V4.19) zum Einsatz. In Kombination mit dem GNU Compiler für AVR-Controller (WinAVR) ist das Ganze eine leistungsfähige IDE mit Debugging-Möglichkeit. Wie auch bei der GenuhR, stelle ich allen Interessierten die Quelltexte auf Anfrage zur Verfügung. (Atmel-Studio-4.19 Projekt). Die fertig übersetzte Firmware (V1.5) liegt im Intel-Hex-Format vor und kann unmittelbar auf den Controller "geflasht" werden. Als Einstellungen für die Fusebits empfehle ich 0x89BD, Lockbits müssen nicht gesetzt werden (0xFF).


Aufbau
Im Gegensatz zur GenuhR habe ich bei diesem Projekt kein spezielles Gehäuse gewählt oder Frontplatten fräsen lassen. Jeder ist also bei der Umsetzung seiner individuellen Designvorstellung selbst gefragt. Meine war Folgende:

Als Grundlage dient im wahrsten Sinne des Wortes ein ca. 1cm dickes, unbehandeltes 30 Jahre altes Brett aus Traubenkirschholz. Darin eingelassen ist die Konsole. Sie besteht aus einem geschliffenen und lackierten Aluminiumblech, das den Drehinkrementalgeber, eine weiße LED und ein Edelstahl-Taster aufnimmt. Die Kabel dazu verlaufen in einem Schacht auf der Unterseite des Brettchens zu zwei Edelstahl-Rohren, die senkrecht  auf dem Brettchen stehen und mit einer 90°-Krümmung das Gehäuse mit der Weckomat-Zentraleinheit halten. In die Enden der Rohre sind jeweils Außengewinden geschnitten, so dass sie neben der Funktion als Kabelkanal auch als stabile Halterungen dienen.
Das Gehäuse ist ein ca. 25×102×75 mm (H×B×T) großes Aluminiumgehäuse, das die Controller-Platine mitsamt Display beherbergt. Auf einer Seite ist eine 63×32 mm große Aussparung durch das das Display zu sehen ist. Mit auf der Vorderseite ist der LDR und der IR-Bewegungsmelder integriert.
Im hinteren Teil des Brettchens ist der Temperatursensor unter einer rechteckigen Aliminiumplatte untergebracht. Dieser Platz stellt sicher, dass die Umgebungstemperatur nicht duch thermische Einflüsse der Zentraleinheit oder des Netzteils verfälscht wird. 

Vielleicht motiviert das Projekt hier ja den Einen oder Anderen dazu, mal (wieder) was zu basteln und zu werken. Die Plattform eignet sich auch gut als Ausgangsbasis für Modifikationen und eigene Kreationen. Man muss nur mal anfangen ...

Für Fragen, Angegungen und Hinweise bin ich immer offen:



Jeder der möchte, kann das Gerät nachbauen, allerdings nicht zu kommerziellen Zwecken. Es gilt formal diese Lizenzvereinbarung.