Elektronisches Fahrtenbuch


Gepostet April 2017, Kategorie: MSP430


Elektronisches Fahrtenbuch

Für den Ruderclub haben wir ein elektronisches Fahrtenbuch installiert. Auf einem Raspberry Pi läuft die Software efaLive. Da der Raspberry Pi keine Real-Time-Clock besitzt, wurde ein MSP430 mit einem Quarz benutzt, um die Uhrzeit beizubehalten, auch wenn die Stromversorgung unterbrochen wird.


Inhaltsverzeichnis


    RTC

    Da das elektronische Fahrtenbuch nicht mit dem Internet verbunden ist, benötigt der Raspberry Pi eine Real-Time-Clock, um die Uhrzeit auch im ausgeschalteten oder stromlosen Zustand halten zu können.

    Auf Grund der extrem stromsparenden Eigenschaften habe ich mich für einen MSP430 entschieden. Da an dem Mikrocontroller ein 32,768-kHz-Quarz angeschlossen ist, werden im Ruhezustand circa 1 µA verbraucht.

    Wird der Raspberry Pi angeschlossen, so fragt dieser die Uhrzeit vom MSP430 ab. Diese Kommunikation erfolgt über die UART-Schnittstelle an den GPIO-Pins der Raspberry Pis. Es wird hierbei die UNIX-Zeit im ASCII-Hexadezimal-Format übertragen. Aus diesem Grund wird das Programm des MSP430 sehr schlank gehalten, da nur die UNIX-Zeit jede Sekunde weitergezählt werden muss.

    Programm auf dem MSP430

    Download

    Im Programm ist zu erkennen, dass von allen nicht benötigten Pins der Pullup-Widerstand eingeschaltet wird. Das senkt den Stromverbrauch, indem sicher gegangen wird, das alle Pins ihren Zustand beibehalten.

    Der WatchDog-Timer ist so konfiguriert, dass es jede Sekunde zu einen Interrupt kommt. In diesem Interrupt wird die Variable time, welche die UNIX-Zeit enthält, um eins hochgezählt wird. Diese Variable ist vom Datentyp uint32_t, das bedeutet, dass es erst im Jahr 2106 zu einen Überlauf kommt.
    Berechnung mit Wolfram Alpha

    Wird ein Datenpaket, welches mit einen Semikolon endet, über die serielle Schnittstelle vom MSP430 empfangen, so wird die Funktion on_rxd() ausgeführt.

    Wenn die in der Nachricht enthaltene UNIX-Zeit nicht 0xffffffff ist, wird die Zeit übernommen. Auf jeden Fall wird anschließend die aktuelle Zeit an den Raspberry Pi gesendet. Auch hier wird das folgende Format eingehalten: 12345678;

    Programm auf dem Raspberry Pi

    Auf dem Raspberry Pi wird beim Systemstart das Python-Skript rtc.py ausgeführt. Wird das Skript ohne Argumente gestartet, so wird die Zeit vom MSP430 übernommen.

    Zum Einstellen der Zeit wird das Skript mit dem Argument im folgenden Format ausgeführt:
    ./rtc.py MMTThhmmJJJJ (Monat, Tag, Stunde, Minute, Jahr)

    Damit die serielle Schnittstelle auf dem Raspberry Pi 3 funktioniert, muss die folgende Anleitung befolgt werden:
    https://pi-buch.info/die-serielle-schnittstelle-auf-dem-raspberry-pi-3/

    Platine

    Schaltplan Platine Vorderseite Platine Rückseite

    Am MSP430 ist der 32,768 kHz-Quarz angeschlossen. Der Raspberry Pi ist mit dem MSP430 über die UART-Schnittstelle an den GPIO-Pins verbunden. Dabei ist der RXD-Pin des Pis mit dem TXD-Pin des MSP430 verbunden, und andersherum.

    Die Stromversorgung der Schaltung erfolgt entweder über den 3,3 V-Pin des Raspberry Pis oder einer CR2032-Batterie. Um die Spannungsquellen voneinander zu trennen, werden zwei Schottky-Dioden im BAT54a-Paket verwendet.

    Nicht zu vergessen ist ein Pullup-Widerstand am Reset-Pin des MSP430.

    Elektronisches Fahrtenbuch

    Raspberry Pi Reset-Button Rückseite

    Auf einem Raspberry Pi läuft die Software efaLive. http://efa.nmichael.de/

    Die RTC-Clock wird auf den Raspberry Pi gesteckt. Außerdem ist an die Reset-Pins des Raspberry Pis ein Knopf angeschlossen. Damit lässt sich der Pi starten, wenn er ausgeschaltet wurde, aber der Strom nicht getrennt wurde.

    Der Raspberry Pi wurde mit Klettband auf der Rückseite des Monitors befestigt. Das Bild wird über ein HDMI-VGA-Adapter an den Monitor übertragen.

    Wetterdaten Eilenburg
    Temperatur: 7.8 °C
    Luftdruck: 1010.4 hPa
    Luftfeuchte: 50 %
    [mehr]