Ich freue mich sehr, euch eine universelle Ansteuerung für verschiedene Echtzeituhren mit MicroBlocks zeigen zu können. Bei vielen Experimenten und Langzeitmessungen mit dem Calliope mini sollen Datum und Uhrzeit als Größen verfügbar sein und zusammen mit anderen Messwerten auf einem Display angezeigt oder aufgezeichnet werden. Die Uhrzeit kann als Parameter einen Wecker auslösen oder eine Messung starten. Eine Echtzeituhr (Real Time Clock) ist ein digitales Modul, bei dem die Zeit einmal eingestellt wird und anschließend batteriegepuffert weiterläuft. Mit einer Echtzeituhr ist die physikalische Zeit deswegen auch nach einem Neustart des Systems verfügbar.
In zwei Beiträgen Calliope, RTC DS1307 und MicroBlocks und Calliope, RTC PCF85063 und MicroBlocks hatte ich euch bereits zwei unterschiedliche Echtzeituhren vorgestellt und dafür auch zwei unterschiedliche Ansteuerungen programmiert. Gerade für Einsteiger und Nicht-Profis ist es aber schwierig, bei den vielen ganz unterschiedlichen Modulen und verschiedenen Herstellern den Überblick zu behalten. Ich habe deswegen eine universelle Ansteuerung entwickelt, die mit mehreren dieser Chips zurechtkommt.
Viele der Echtzeituhren werden über den i2c-Anschluss mit dem Microcontroller verbunden, und genau solche sind mit dem Calliope mini über den linken Grove-Anschluss A0 einfach zu verwenden. Die neue Ansteuerung funktioniert für die gängigen RTC-Chips DS1307, DS3231, PCF8523, PCF8563, PCF85063, RV1805 … und weitere könnten folgen. Die Ansteuerung erkennt selbstständig, welchen RTC-Chip ein Echtzeitmodul verwendet, und stellt die notwendigen Parameter in der Software automatisch ein.
Für den Informatik-Unterricht ist es übrigens eine besonders herausfordernde Aufgabe, verschiedene Echtzeituhren selber zu programmieren, die Unterschiede zwischen den Chips herauszufinden und programmtechnisch umzusetzen. Die entsprechenden Programmblöcke zum Schreiben und Lesen von i2c-Bausteinen sind in MicroBlocks verfügbar und sollen interaktiv für Experimente eingesetzt werden. Mit MicroBlocks können alle Baustein-Register direkt beschrieben und ausgelesen werden. Ein Compilieren und Übertragen eines Programms wie mit MakeCode, Python oder Arduino IDE ist bei MicoBlocks nicht notwendig. Befehlsblöcke werden direkt auf dem Microcontroller ausprobiert und zeigen unmittelbar dessen Reaktion oder die eines Zusatzchips.
Ganz im Sinne von Open Source kann bei MicroBlocks übrigens der Source-Code vieler Bibliotheken angezeigt und verändert werden. So ist auch die Bibliothek für die Echtzeituhren völlig offen. Alle inneren Programmstrukturen der Blöcke können analysiert, diskutiert, kritisiert und verbessert werden. Probiert es aus und schreibt von euren Erfahrungen.