Countdown-Wecker mit dem STM32 für Schlafzeit-Experimente

Ich bin kein Mensch, der immer zur selben Zeit ins Bett geht und bei dem ein Wecker, der immer zur selben Zeit in der Früh klingelt Sinn machen würden.

Außerdem ist es bei mir so, dass ich unausgeschlafen kaum zu gebrauchen bin. Habe ich zu wenig Schlaf abbekommen, dann bin ich den ganzen folgenden Tag müde und mein Gehirn scheint auf Sparflamme zu laufen. Komplizierte Algorithmen auszutüfteln oder kreativ zu sein fällt dann sehr schwer.

Momentan steht bei mir der Wecker auf 10:00 Uhr morgens, was in den meisten Fälle passt.

Aber nach einem sportlicheren Tag bin ich auch schon mal um 22:00 Uhr müde und geh ins Bett und schlafe dann zu lange. Denn oft meint der innere Schweinehund, dass ein zusätzliches Mützchen Schlaf nicht schlecht wäre und ich drehe mich nochmal um. Oft braucht der Körper die zusätzliche Erholung, aber oft kommt dabei auch raus, dass ich dabei zu lange schlafe und dann kaputter bin, als wäre ich 2 Stunden vorher aufgestanden.

Auf der anderen Seite hocke ich manchmal bis tief in die Nacht vor einem Problem am Computer, dass ich unbedingt noch lösen will. Und da kann es auch schon mal 2:00 oder 3:00 Uhr in der Früh werden. Dann um 10:00 Uhr geweckt zu werden, kann dann zu wenig Schlaf bedeuten.

Und mich dann todmüde mit dem Wecker auseinanderzusetzen und ihn jedesmal auf eine andere Zeit am Morgen einzustellen, dazu habe ich keine Lust.

Ich habe mich darum gefragt, was denn meine persönliche optimale Schlafzeit sei und wie ich es einrichte, möglichst ausgeruht aufzuwachen und nicht zu überschlafen. So könnte man doch sicher Gevatter Tod ein Schnippchen und die eine oder Stunde Lebenszeit extra herausschlagen...

In der Wikipedia findet man unter Schlafforschung das folgende Diagramm über einen typischen Schlafverlauf:



Daraus ergibt sich, dass die Phasen, die nah am Wachsein sind, nach 4 und nach 7 bis 8 Stunden nach dem Einschlafen sind. Dass 4 Stunden Schlaf im Notfall auch mal ausreichen und besser sind als 5 oder 6, dass deckt sich mit meinen eigenen Erfahrungen - obwohl, da war ich noch ein wenig jünger. Heute sehe ich zu, dass ich auch meinen Schlaf bekomme.


Nach 7 bis 8 Stunden Schlaf hat man die wichtige REM-Phase um Stunde 6 mitbekommen und sollte eigentlich fit genug sein, um aufzustehen. Allerdings kann man sich auch in dieser Zeitperiode noch in einem tieferen Schlafstadium befinen, aus dem man nicht brutal durch einen laut schrillenden Wecker herausgerissen werden sollte. Besser ist wohl eine sanftere Art Wecken, die einen langsam an die Oberfläche des Wachseins führt, also ein langsames Auftauchen, metaphorisch gesprochen.

Sonst noch irgendwelche Wünsche?

... könnte man jetzt fragen. Und das würde wahrscheinlich auch der Verkäufer im Uhrengeschäft fragen, denn so einen Wecker gibt es wohl nicht.

Aber ich beantworten die Frage für mich trotzdem mit ja, denn ich nehme mir einen Mikrocontroller und programmiere den ganz nach meinen Wünschen:

STM32 als Plattform

Als sehr gut geeignete Plattform stellt sich mal wieder das Blue Pill Board mit STM32 heraus: Der Sketch verwendet 64568 Bytes (49%) des Programmspeicherplatzes. Das Maximum sind 131072 Bytes. Globale Variablen verwenden 5008 Bytes (24%) des dynamischen Speichers, 15472 Bytes für lokale Variablen verbleiben. Das Maximum sind 20480 Bytes. Ein größerer Teil des STM32-Flash von 128 KB meiner Bluepills (offiziell sind es ja nur 64 KB) sind ja bereits durch den STMduino-Bootloader verbraucht. Mit der 64 KB wäre der Speicher bereits zu knapp.

Der STM32 hat praktischerweise schon eine Echtzeituhr an Board, die auch noch kalibriert werden kann, um ganz genau zu gehen. Und die batteriegepufferten Backup-Register des STM32 sorgen dafür, dass die Einstellungen auch bei einem Stromausfall erhalten bleiben.

Ein Arduino hätte hier schon lange erschöpft alle Viere von sich gestreckt. Denn der hat nur 32 KB Programmspeicher und lächerliche 2 KB Variablenspeicher (mit ATmega 328P).

Die Bluepill bietet hier das beste Preis-/Leistungsverhältnis. Natürlich können ESP 8266 / ESP 32 oder ein Raspberry Pi Zero noch mehr, aber die sind auch wesentlich teurer.

sonstige Hardware

Außer der Bluepill kommen in meinem Countdown-Wecker noch zum Einsatz:

Funktionen des Countdown-Weckers

Anzeigemodi, wählbar durch den Mode-Knopf: Einstellungen, wählbar durch den Set-Knopf, einstellbar durch Set+ und Set-:

Ablauf einer Weckvorganges

Zur Demonstration gibt es wieder ein kleines Video:



Fehlt nur noch, dass ich die Komponenten fest verlöte und ein Gehäuse designe, es mit dem 3D-Drucker ausdrucke und die Komponenten dann da drin unterbringe.

Nachtrag 2019-06-13

Auch das Gehäuse ist inzwischen fertig designed und ausgedruckt. So sieht der feritge Wecker jetzt aus:



Die komplette Anleitung dazu ist hier zu finden.