Ein
DCF77-Zeitzeichen-Funkempfänger mit USB-Anschluss.
Früher war deren Anschluss an COM-Ports oder Parallelports üblich.
Diese für Bastler so bequemen Schnittstellen sind an heutigen Notebooks praktisch ausgestorben.
Ein kleiner, billiger, weitverbreiteter 8-poliger Mikrocontroller genügt für diese Aufgabe.
Für Bastler so praktisch:
Es gibt ihn im DIL-Gehäuse.
Passend für Steckboards.
Aber auch im SMD-Gehäuse, der locker in einen USB-Stecker passt.
FunkUsb, COM-Port emulierend
Emuliert eine serielle Schnittstelle (COMx) per
CDC
und funktioniert unter Windows 2000 bis 7, 32 oder (schwierig) 64 bit, sowie unter Linux.
Sollte auch unter Windows 98, Me sowie auf dem Mac zum Laufen zu bringen sein.
Mittlerweile gibt es auch eine
überarbeitete Firmware-Version, die einen Joystick emuliert.
Ansonsten sieht alles genauso aus.
Antrieb
Übliche Funkuhr-Module
benötigen eine serielle Schnittstelle.
Bei den heute üblichen schnittstellen-verarmten PCs und Laptops
behilft man sich üblicherweise mit einem USB-Seriell-Konverter,
die preiswert zu haben sind und zumeist sogar funktionieren.
Nun fallen aus defekten Funkuhren und Funkweckern gelegentlich
funktionierende Funkuhr-Module an; ich musste also keins bei
Conrad kaufen.
Doch warum dann eine übliche Anpassschaltung fürs serielle Port
anschalten, wenn's auch gleich mit USB geht?
Dafür reicht ein 8poliger ATtiny45, gefüllt mit schlauer Software namens
V-USB und
AVR-CDC.
Damit erscheint der Funkempfänger wie gehabt an einem (neuen)
seriellen Anschluss, und man benötigt keinerlei Software-Anpassung.
Funktion
Das Empfangssignal wird an alle Pins der (emulierten) seriellen
Schnittstelle angelegt, somit ist es für Empfangssoftware egal,
welche Leitung abgefragt wird.
Mit „Funkuhr.exe“ funktionieren
DCD,
DSRRI und
RxD;
das Signal
CTS funktioniert nicht.
Mit RxD erfolgt die Pulslängenmessung im Mikrocontroller,
sodass deren Auswertung nicht von der Rechnerlast abhängt,
also sicherer ist. Dabei ist die richtige Signalpolarität wichtig;
bei allen anderen Anschlüssen kann „Funkuhr.exe“ die Polarität
automatisch feststellen und ggf. automatisch negieren.
Mit der Auswahlmöglichkeit in Funkuhr.exe „Stromversorgung“
wird das Funkuhr-Modul aktiviert.
Dabei funktionieren
TxD und
DTR;
RTS funktioniert nicht.
Die Beschreibung der Software-Installation unten bezieht sich
auf Windows (2k, XP, Vista+).
Ich gehe davon aus, dass Linux- und Mac-Anwender wissen,
was sie tun müssen.
(Bei Linux ist m.W. als erstes ein Patch einzuspielen, um
eigentlich verbotene Bulk-Transfers bei Low-Speed zu erlauben.)
Schaltung
Die Schaltung versorgt den Mikrocontroller und den Funkempfänger
mit stabilisierten 3,3 V.
Die Taktversorgung erfolgt intern mit 16,5 MHz, synchronisiert
mithilfe der
SOF-Impulse des PCs.
SIG liefert das Empfangssignal, LOW bei DCF77-Trägerabsenkung.
ENA steuert den Funkempfänger, LOW = aktiv.
ENA wird (nur) für den USB-konformen Schlafmodus benötigt.
Die ungewohnte Stromversorgung mit dem Energie sparenden
Längsregler TPS71533 (kostenloses Muster von Texas Instruments)
ist notwendig, um für den Funkempfänger eine saubere 3,3 V
bereitzustellen.
Der Querstrom des Reglers beträgt lt. Datenblatt nur 3,2 µA
und ist deshalb kein Hindernis für den USB-konformen Schlafmodus.
Im Muster war die 5-V-Speisespannung nicht stabil genug,
um mit den üblichen zwei in Reihe geschalteten Siliziumdioden
eine hinreichend saubere 3,3-V-Betriebsspannung bereitzustellen,
damit der Funkempfänger ordentlich arbeitet.
Diskrete Längsregler mit Z-Dioden sind schwierig auszulegen,
weil für die geforderten geringen Querströme (max. 200 µA)
die handelsüblichen Z-Dioden nicht steil genug sind.
Querregler allein (TL431) beißen sich mit dem USB-Schlafmodus.
Aufbau
Der Aufbau erfolge naheliegenderweise auf einer Lochrasterplatte.
Diese ist in ihren Abmessungen passend für das preiswerte und trittfeste
Reichelt-Gehäuse
„GEH KS 21“
(etwa 0,72 €).
Das Funkempfängermodul wurde mit kleinen Schrauben des toten
Funkweckers locker (wichtig: ohne Verzug der Platine!)
befestigt.
Für die raumsparende Befestigung der Antenne wurde ein Loch
in die Platine gesägt und der Ferritstab mit Draht gesichert.
Fotos vom Versuchsmuster
Extrem Strom sparende Längsregler scheint es nur im SMD-Gehäuse zu geben;
dieser wurde auf die Leiterseite gelötet.
NC-Pins wurden kurzerhand mit auf Masse gelegt, der Lötkolben
war zu groß.
So wurde der winzige TPS71533 verlötet
Das Einschreiben der Firmware erfolgte im Muster mit einem
extra Steckboard, welches als
STK200-kompatibles Programmiergerät
hergerichtet wurde.
Das Programmieren im eingelöteten Zustand (in-system)
ist hier nicht vorgesehen. Deshalb die IC-Fassung.
Die Firmware kann frei verwendet werden
(FunkUsb.c: Public Domain; der V-USB-Teil: GNU LGPL).
Sie enthält einige Neuerungen, die einerseits die Synchronisation
des Oszillators betrifft, als auch erhebliche Änderungen an AVR-CDC
zur Unterstützung virtueller Statusleitungen.
Installation
Wie für alle AVR-CDC-Projekte wird kein Treiber benötigt,
Windows bringt den Treiber „usbser.sys“ mit.
Allerdings wird eine .INF-Datei benötigt, die beim ersten
Anstecken des Gerätes FunkUsb dem Hardware-Assistenten
mitgegeben wird.
Damit wird eine serielle Schnittstelle eingebunden, die von
gängigen Funkuhrempfangsprogrammen verwendet werden kann.
Hinweis: Mit dem Anstecken und Installieren wird noch keine
Zeit empfangen oder die PC-Uhr gestellt!
Das macht beispielsweise das nächste Programm.
Verwendung (Windows)
Zum komfortablen Empfang und dem Stellen der Computer-Uhr
habe ich das Programm „Funkuhr.exe“ geschrieben.
Es kann auch jedes andere gängige Funkuhr-Empfangsprogramm verwendet werden,
beispielsweise:
Die LED leuchtet normalerweise halbhell.
[Nicht implementiert: Bei USB-Datenpaketen der Busaufzählung
wird sie dunkel getastet.]
Bei Funksignal (Trägerabsenkung) leuchtet sie hell.
Dazu muss eine Empfangssoftware laufen, die mindestens eine der
Leitungen TxD oder DTR aktiviert.
Im USB-Schlafmodus ist die LED aus.
Nachbau durch andere Bastler
von Hans-Peter Bock
… Ich habe mir letztes Wochenende ein SMD-Layout dafür erstellt.
Es funktioniert wunderbar!
Wenn Sie Interesse an dem Layout haben, schicke ich es Ihnen gerne zu.
Eine unbestückte Platine habe ich auch noch übrig.
Grüße, Hans-Peter Bock
[Webseite,
Blog]
Den Empfänger scheint Herr Bock unter Linux einzusetzen
und mit nur wenigen Kode-Zeilen zu einem NTP-Server zu machen.
von Hannes Jochriem
… Ich habe dein DCF77-Projekt aufgegriffen und einen kleinen Bausatz
daraus gemacht den ich in meinem Shop anbiete.
Die Installation eines COM-Port-Treibers für das obige Modell ist mittlerweile
ziemlich kompliziert geworden. Einfach ist es nur unter Windows 2000 und Windows XP.
Die Probleme im einzelnen:
Kein Treiber auffindbar für Windows 98 / Me;
jedenfalls habe ich noch nichts brauchbares gefunden,
angeblich soll es aber etwas von Microchip geben
Windows Vista / 7 / 8 / 10 / Linux gleichermaßen verbieten das Starten
jenes USB-Gerätes, da es die USB-Spezifikation verletzt.
Demnach sind BULK-Pipes für Low-Speed-USB-Geräte verboten.
Dafür ist ein Zwischentreiber namens
lowcdc erforderlich.
Bei Linux sind andere bestimmte Maßnahmen erforderlich,
je nach Distribution.
→ Eine gesonderte INF-Datei (in der ZIP-Datei enthalten) erledigt das Problem für Windows.
Windows Vista / 7 / 8 / 10 in ihrer 64-Bit-Edition verweigern das Laden
unzertifizierter Treiber.
Dabei genügt nicht irgendein vertrauenswürdiges Zertifikat,
sondern es muss unbedingt ein bestimmtes von Microsoft ausgestelltes,
über 100 € (im Sonderangebot!) teures Zertifikat sein.
→ Da ich mir derartigen Spaß nicht leiste, bleibt nur, beim Booten F8
zu drücken und „Treiberzertifizierungszwang deaktivieren“ auszuwählen.
Es gibt auch entsprechende „Driver Signature Enforcement Disabler“-Programme,
aber diese sind keine sonderlich schöne Lösung.
Unter anderem deshalb, weil zumindest eins davon Windows in den
„Testmodus“ versetzt, was stets am Desktop ersichtlich ist
(der Schriftzug steht in den 4 Ecken).
Lösung
Die neue Firmware
emuliert einen Joystick mit 1 Knopf und – seit April 2013 – 1 Hebel.
Das bietet folgende Vorteile:
Kein Treiber-Problem; jedes USB-fähige System unterstützt Joysticks
ohne extra Treiber, möglicherweise sogar Windows 95c
Prüfmöglichkeit der Funktion im der Systemsteuerung unter
Gamecontroller; keine weitere Software erforderlich.
Siehe animierter Screenshot rechts.
(So sieht's im Windows 8 aus.)
Anmerkung: Unter Windows 98 funktioniert die entsprechende
Systemsteuerungsanwendung nicht, weil diese – so auch die Funktion
joySetCapture()
– zwingend einen Joystick mit 2 Hebeln erwartet.
FunkUsb.exe funktioniert trotzdem, via
joyGetPosEx().
Die Zeitmessung erfolgt im Mikrocontroller — damit in einem echtzeitfähigen System —
die PC-seitige Telegramm-Dekodierung funktioniert auch bei hoher Rechenlast.
Die Hebel-Stellung ist ein 16-Bit-Wert, der den Zeitpunkt der letzten Flanke,
in ms seit USB-Reset, wiedergibt.
Voraussetzung ist natürlich, dass die PC-Software die Hebelstellung zur Zeitmessung heranzieht.
Der Zähler läuft in einer reichlichen Minute über,
aber Anwendungssoftware berechnet ohnehin nur Differenzen im Sekundenbereich.
Mikrocontroller darf kleiner ausfallen (ATtiny25 statt ATtiny45)
und ist in der Beschaffung auch billiger
Nachteil:
Verlust der Kompatibilität zu Software, die ein COM-Port erwartet;
für diesen Fall kann man ja auch noch die obige Firmware nutzen
Im übrigen muss man nichts an der Hardware ändern.
Einfach den Mikrocontroller tauschen oder neu flashen, das ist alles.
Klar, dass zumindest mein Programm
„Funkuhr.exe“
um dieses Interface erweitert wurde. Wie sollte ich's sonst testen …
Hinweis: Die Kombination beider USB-Interfaces in einer Firmware
ist zwar technisch möglich, bereitet aber noch mehr Komplikationen
in der Anwendung des Gerätes als nur ein Interface.
Außerdem: Der Firmware-Quelltext ist seit April 2013
mit einstellbaren Portpins
sowie für gcc4 geeignet umgestrickt.
Somit ist dieser besser auf eigene Bastelprojekte anpassbar.
Ein ATtiny25 ist nun fast voll.
Hinweis zum Zeitschriftenartikel
In der Zeitschrift CQ-DL Oktober 2013 Seite 709 ff.
ist in etwa dieses Ding vorgestellt.
Der mechanische Aufbau … kein Kommentar.
Zum Nachbau habe ich die folgende Bemerkung:
Die Nachbausicherheit ist durch die Verwendung des (in der Tat exotischen) TPS71533
arg erschwert.
Schon dessen Beschaffung ist für den Normalverbraucher hinderlich.
(Ich hatte diesen gerade in der Bastelkiste herumliegen.)
Ganz zu schweigen von der Löterei.
Ich würde hier die Verwendung des
LP2950ACZ-3.3
im bequemen TO-92-Gehäuse empfehlen.
Dessen Querstrom ist zwar höher, aber:
Immer noch zulässig für USB, nämlich ≤ 200 µA bei 300 µA.
Hinfällig wenn man ENA oder ENA nicht beschaltet!
Auch das etwas höhere minimale Spannungsgefälle (Drop) stört hier nicht.
Ich habe die Schaltung auf Steckbrett getestet, und es funktioniert auch mit diesem Regler.
Das angegebene käufliche Funkuhr-Modul hat einen HIGH-aktiven ENA-Eingang.
Für USB-konformen Schlafmodus muss die Firmware für High-aktives ENA kompiliert werden.
Dazu ist in Zeile 36 der Datei FunkUsb.c
das Symbol ENA_INV auf 0 zu setzen.
Für den Bastler mag es OK sein, auf ENA oder ENA zu verzichten.
Dann zieht der Funkempfänger permanent 1..2 mA aus dem USB-Anschluss.
Muss man halt wissen, bevor man sich beschwert, wenn der Laptop-Akku unerwartet leer sein sollte.
Beim akkulosen Vorlaufempfänger unten ist das prinzipbedingt.
Eigentlich habe ich gerade für Funkamateure im Windows-Programm
die Empfangsmöglichkeit per Soundkarte eingebaut.
Fertige Empfangsmodule, noch dazu gekaufte, sind für Bastler geradezu unsportlich.
Die angegebene Ausrichtung der Antenne quer nach Frankfurt
am Main ist zwar theoretisch richtig,
praktisch sollte man die Antenne längs zum nächsten Störer
(Fernsehempfänger, Röhrenmonitor) ausrichten.
Nutzung unter Linux
Der Zeitserver ntpd unterstützt mit seiner DCF77-Synchronisation
ausschließlich das serielle Port am RxD-Eingang.
Dieser lässt die einfache Messung der Pulslänge in 20-ms-Stückelung zu.
Den (ziemlich unübersichtlichen und antiquierten) Quelltext
auf einen Joystick zu ändern übersteigt meine Möglichkeiten.
Pardon!
Zumindest zum Stellen der Systemuhr habe ich ein Programm geschrieben
namens dcf77-js.c.
Der Quelltext benötigt keine zusätzlichen Bibliotheken
und kann somit recht zweckmäßig die Uhr eines autonomen
Raspberry Pi
stellen.
Dieser hat bekanntlich keine
Echtzeituhr.
Auf Grund der Knappheit der USB-Anschlüsse sowie der Verfügbarkeit
eines RS232-Anschlusses mit TTL-Pegeln ist jedoch dieser FunkUsb
für diesen Anwendungsfall Overkill,
es geht auch einfacher.
Standardmäßig benutzt es /dev/input/js0.
Der einzig mögliche Kommandozeilenschalter gibt einen
alternativen Joystick an.
Das Programm hat zwei Betriebsmodi:
Als Normalbenutzer empfängt es permanent und zeigt
die empfangenen Bits und die Uhrzeit mit farbig hervorgehobenen
Zeichen an. Sonst nichts. Siehe Bild rechts.
Als root läuft das Programm so lange, bis 2x hintereinander
eine korrekte Zeit empfangen wurde und die beiden Telegramme
um 1 Minute differieren.
Dann setzt es die Systemzeit und beendet sich.
Beim Beenden (mittels Strg+C) wird ein Histogramm
der empfangenen Bitlängen angezeigt.
Die Eimerbreite beträgt 20 ms.
Im Archiv befindet sich
zz. ein Kompilat für x86-64.
Firmware Januar 2015
Das neueste Update fügt dem Joystick einen Slider (Schiebesteller) hinzu.
Dieser kodiert, in Millisekunden, die Zeit zwischen der Flanke (= Ereignis)
und dem Abholen des Reports.
Damit kann die begrenzte Auflösung bedingt durch den Zeitverzug von
GetReport (lt. USB-Standard bei Low-Speed: 10 ms, Windows: 8 ms)
auf 1 ms minimiert werden.
Es mag etwas Spielerei sein, die Auflösung der Vorderflanke eines
100-ms-Impulses so genau detektieren zu wollen,
der ntpd macht aber um diesen Umstand ziemlich viel
Federnlesen.
Mein Windows-Programm macht davon keinen Gebrauch.
FunkUsb als Vorlaufempfänger
Alle üblichen Funkuhr-Module haben den Nachteil,
dass die Dekodierung durch den PC vorgenommen werden muss und die Uhrzeit
nicht bereits beim Booten des Rechners bereitsteht.
Da die oben genannten Dinger einen Mikrocontroller enthalten,
kann er diese Aufgabe ohnehin übernehmen.
Nur ein geeignetes Protokoll ist noch auszudenken.
Natürlich fällt da die Wahl auf HID!
Nun muss ein derartiger Empfänger möglichst ein paar Minuten vor
dem Einschalten des Rechners laufen.
Da dieser Zeitpunkt sehr schwer vorherbestimmbar ist,
läuft die Funkuhr einfach akkubetrieben durch.
Die Alternative wäre die Speisung durch das PC-Netzteil im Standby-Modus.
Nur wenige USB-Buchsen eignen sich hierfür (typischerweise in der Nähe
oder an Stelle der PS/2-Buchsen
für Tastatur und Maus).
Und man muss auf dem Board passende Jumper umstecken oder
BIOS-Einstellungen
vornehmen.
Nicht sonderlich universell. Deshalb die Entscheidung für Akkus.
Primärbatterien
würden nur wenige Tage durchhalten, sofern an den Wetterdaten Interesse besteht.
Schaltpläne
Natürlich sollte der Controller auch das Nachladen des Akkus überwachen!
Dazu wird der Strom aus der USB-Buchse benutzt.
Auch ein USB-Ladegerät wird unterstützt und dazu die
Brücke zwischen DATA+ und DATA– von der Firmware detektiert.
Das Laden erfolgt mit Konstantstrom oder mit gelücktem Konstantstrom,
und die Spannung wird überwacht.
In der Firmware einstellbar ist der angeschlossene Akkutyp
(siehe Tabelle im Schaltplan).
Schaltung 1
Diese erste Schaltung kommt mit einigermaßen
konventionellen Bauelementen aus.
Mikrocontroller und Uhrenchip hängen fest an dem Akku.
Dieser muss durch seinen geringen Innenwiderstand etwaige Brummstörungen
aus dem PC unterdrücken.
Einfacher Schaltplan
Von T2 wird der Ladevorgang gesteuert.
Dessen Basiswiderstand R1 mal Stromverstärkung bestimmt den Ladestrom.
Er arbeitet so als Vorwiderstand und Konstantstromquelle für den Akku.
Die LED D1 zeigt den Ladevorgang an.
Aufgrund der Halbleiterstrukturen eines Bipolartransistors kann es hierbei
nicht zur „Rückspeisung“ eines angeschlossenen PCs kommen.
Die LED D2 dient zur Anzeige des Funkempfangs,
sinnfälligerweise nur dann,
wenn USB-Speisung (etwa ein Laptop, auch im Standby) vorliegt.
Mit dem Spannungsteiler aus R4 und R5 wird die
Betriebsspannung des Mikrocontrollers und damit die Akkuspannung überwacht.
Schade, dass es nicht ohne das Umprogrammieren des
RESET-Anschlusses geht.
Der Spannungsteiler wird bei Erreichen der Entladeschlussspannung
mitsamt dem Funkempfänger IC2 vom Portpin B4 abgeschaltet.
Der verbleibende Power-Down-Entladestrom von 0,5 µA liegt in der Größenordnung
jeder Akku-Selbstentladung.
Mit Primärbatterien kann diese Schaltung so nicht gespeist werden,
da der USB nicht die Speisung übernehmen kann, ohne die Batterien zu gefährden.
Dann müsste eine Schottky-Entkopplungsdiode in die Batterieleitung
eingefügt werden.
Die zweckfreie Ladeschaltung kann dabei durch 2 in Serie geschaltete
Dioden ersetzt werden, und 1 Mikrocontroller-Ausgang wird frei.
Wie oben beschrieben ist Batteriebetrieb trotz alledem nicht sinnvoll!
Am besten funktioniert diese Schaltung mit 2-3 NiMH-Akkus
wegen ihres geringen Innenwiderstandes.
Die Stützzeit bei 2000-mAh-Akkus
dürfte bei 1-2 Wochen (150 .. 300 h) liegen.
Diese NiMH-Variante lässt sich gut in einen
Funkwecker einbauen!
Man sollte aber darauf achten, dass dieser ein Batteriefach mit zwei
Rundzellen hat.
Das Enable-Signal vom eingebauten Funkwecker-Dekoder wird einfach ignoriert.
Der Funkwecker bekommt äußerlich einfach eine USB-Buchse eingebaut, und fertig.
Schaltung 2
Hier werden Controller und Funkuhr-Chip mit sauberen
(maximal) 3,3 V betrieben.
Dafür fehlt die direkte Anbindung des Akkus an den Controller.
Weiterhin kann — bei angeschlossenem Ladegerät — nicht die Leerlauf-Akkuspannung
gemessen werden, sondern nur die beim Laden.
Etwas komplexerer Schaltplan
Von T2 wird der Ladevorgang gesteuert.
Es muss ein spezieller Typ mit einem extrem geringen Einschalt-Bahnwiderstand
bei ziemlich kleiner Gatespannung sein.
Das TI-Muster CSD17313Q2
geht ganz gut, ist nur schwierig zu verlöten.
Dessen Drain-Source-Diode sorgt dafür,
dass die Schaltung auch ohne USB anläuft, bspw. im Batteriebetrieb.
Der Ladestrom wird durch den Leistungswiderstand R9 festgelegt.
D3 verhindert die „Rückspeisung“ des angeschlossenen PCs vom Akku.
Auch wird T2 leistungslos durchgesteuert, wenn Akkuspeisung vorliegt,
um dann die Drain-Source-Diode zu überbrücken.
Daher ist es bei dieser Schaltung nicht sinnvoll, den Ladevorgang
mit einer roten LED anzuzeigen; stattdessen kann man den Ladeschluss
mit einer gelben LED D1 anzeigen.
Die LED D2 dient zur Anzeige des Funkempfangs, aber nur dann,
wenn USB-Speisung vorliegt.
Mit dem Spannungsteiler aus R4 und R5 wird die
Akkuspannung überwacht.
Dieser muss so hochohmig wie möglich sein, da dieser nicht vom Akku
abgetrennt werden kann.
Bei Erreichen der Entladeschlussspannung wird der Controller in PowerDown
versetzt und der Funkempfänger IC2 vom Portpin B4 abgeschaltet.
Der verbleibende Entladestrom wird vor allem durch den Querstrom von IC3
von 3,2 µA bestimmt. R4 und R5 machen hier 0,3 µA aus.
Am besten funktioniert diese Schaltung mit einem Li-Ionen-Akku.
Aber auch NiMH und Primärbatterien funktionieren; man muss es dann nur
richtig einstellen.
Der Innenwiderstand der Speisung ist wegen der nachfolgenden Stabilisierung
weniger kritisch.
Schaltung 3
Die 3. Schaltung ist mit der Schaltung ganz oben
identisch und funktioniert logischerweise nur mit USB-Standby-Strom!
Hier sieht man mal, wie nützlich ein
ATX-Netzteil
sein kann und eine Menge Aufwand spart.
Aber: Diejenigen, die Rechner nur sporadisch einschalten,
verwenden meistens eine schaltbare Steckdosenleiste …
Hinweis: Bei allen drei o.a. Schaltungen gilt als „Funkempfänger“
eine Schaltung mit typischerweise
3,3 V Betriebsspannung, HIGH-aktivem Ausgang (d.h. HIGH bei Trägerabsenkung)
und HIGH-aktivem Enable (d.h. LOW = ausgeschaltet und Stromaufnahme < 1 µA).
Typischerweise aus Funkuhren oder Funkweckern ausgeschlachtet.
Nicht geeignet ist das
Conrad-Funkuhrmodul,
weil die Zener-Diode (als Überspannungsbegrenzung und Verpolschutz)
einen nicht abschaltbaren Querstrom schluckt, ggf. nachmessen, ggf. ausbauen!
Zusätzlich zum vorher gehenden 1-Tasten-Joystick (zum Funkempfang wie bisher)
gibt es ein HID-Gerät, welches das Abfragen der momentanen Uhrzeit
erlaubt. Es sind also 2 HID-Geräte drin.
Der Brown-Out-Detektor und der Watchdog wird hier nicht verwendet,
da diese zu viel Strom fressen, wenn der Akku einmal leer geworden ist.
Was ist mit den Wetterdaten?
Mit einem größeren Chip (mehr Beine) kann ein originaler HKW581
angesteuert werden, um die Wetterdaten zu dechiffrieren.
Diese werden in einem 24-h-Cache vorgehalten.
Dafür genügen 2 KByte vom Flash-Speicher; externer RAM ist nicht erforderlich.