Morse-Cache

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

von Wolf01705

Beim Geocaching geht es kurzgesagt darum, mithilfe von Koordinaten einen oder mehrere Behälter (den Geocache) zu finden. Mit dem Morse-Cache wird die Suche dabei um einiges interessanter.

Features

Der Morse-Cache:

  • Gibt wenn ausgelöst eine Morsesequenz aus
    • Nur Nummern (0 bis 9) werden untestützt
    • Maximal 61 Nummern
    • Daten können beliebig geändert werden ohne die Firmware neu zu flashen
  • Kann mit einem Reedkontakt (oder einem anderem passenden Schalter) ausgelöst werden
  • Besitzt einen einstellbaren Batteriewarner
  • Führt beim Start automatisch einem Speichertest durch
  • Verbraucht nur wenig Energie und Platz

Software

Die Firmware des Mikrocontrollers (ATiny13A) ist in C geschrieben und wurde mit avr-gcc kompiliert. Dabei wird nach jedem Start geprüft, ob ein Reset erfolgt ist, um so den internen EEPROM zu überprüfen und die Resetbits zurückzusetzen, damit der Speichertest nur einmal nach einem Reset ausgeführt wird. In diesem ist nähmlich die Zahlenfolge und der Wert für den Batteriewarner gespeichert. Nach Ende des Speichertests wird das Ergebnis über die LEDs signalisiert. Dass der Morse-Cache zwei LEDs (rot/grün) besitzt liegt daran, dass die grüne LED nur genutzt wird, wenn der Batteriewarner nicht aufgelöst hat (ADC-Wert > Wert im EEPROM), da sonst nur die rote LED genutzt wird. Wenn der Speichertest nun durchgelaufen ist, wird geprüft, ob der Kalibrierungsschalter betätigt wurde. Sollte dies der Fall sein, so wird der zuvor ermittelte Messwert des ADCs in den EEPROM geschrieben, was eine Betriebsspannung von min. 1,9V benötigt. Wenn der Kalibrierungsschalter nicht betätigt wurde, werden die die Nummern nacheinander aus dem EEPROM geholt, in Ihren entsprechenden Morsecode umgewandelt und mithilfe des Watchdogtimers als Zeitgeber ausgegeben. Schluss ist dabei erst, wenn das Ende des Datenbereiches (0x3D) erreicht oder das Stopzeichen 0x00 gelesen wurde. Danach geht der Controller bis zur nächsten Schalterbetätigung in den Schlafmodus, welche dann alles von vorn ablaufen lässt.

Benutzung

Morsesequenz anzeigen lassen

Einfach kurz den Reedkontakt betätigen. Eine der beiden LEDs wird daraufhin die gespeicherten Zahlen als Morsecode blinkend ausgeben. Sollte die rote LED statt der grünen LED aufleuchten, so wurde der Batteriewarner ausgelöst (Batterie wechseln?).

Batteriewarner einstellen

Die Versorgungsspannung sollte stabil und größer als 1,9V sein!

  1. Sicherstellen das der Morse-Cache sich im Ruhezustand befindet (keine Morsecodeausgabe).
  2. Den Kalibrierungsschalter und den Reedkontakt kurz betätigen. Eine der beiden LEDs sollte einmal kurz aufleuchten.
  3. Der Batteriewarner schlägt nun an wenn die Versorgungsspannung kleiner ist als die Versorgungsspannung zum Zeitpunkt der Reedkontaktbetätigung.

Zahlenfolge generieren

Die Zahlenfolge besteht aus BIS ZU 61 Bytes, wovon jedes eine Nummer darstellt (0 bis 9 in ASCII). Dabei muss jedoch die Zahlenkette am Ende mit einem Extrabyte mit dem Wert 0x00 abgeschlossen werden. Das ganze sollte in eine Binärdatei geschrieben werden, welche dann in den EEPROM des ATtiny13A übertragen wird. Dabei wird der Batteriewarner zurückgesetzt. Um das Erstellen einer passenden Binärdatei zu vereinfachen, gibt es im unten verlinkten Repository ein Programm namens "eeptool".

Speichertest auslösen

Der Speichertest des EEPROMs wird automatische nach jedem Reset des Controllers durchgeführt. Wenn nach Betätigen des Resetschalters eine der LEDs kurz aufleuchtet, war der Speichertest erfolgreich.

Downloads

Siehe auch