Vielfältige Methoden zur Auswertung serieller Protokolle am Beispiel von Wetterdaten

4. November 2009    Seite ist noch im Aufbau

In diesem Beitrag soll die Auswertung serieller Daten mithilfe standardmäßiger LCD-Displays, eines Sprachausgabebausteines und einer Video-Einblendeeinheit beschrieben werden. In den vorgestellten Beispielen werden die von einem preiswerten ELV-Wetterempfängerbaustein gelieferten Daten verarbeitet. Die in BASCOM geschriebene Software kann aber leicht auch für eigene Anwendungen modifiziert werden. So hat der Verfasser z.B. auch Versionen zur Auswertung der von GPS-Empfängern gelieferten NMEA-Protokolle realisiert.
1. Der ELV-Wetterdatenempfänger "USB-WDE1" und das von ihm benutzte Protokoll


Abb.1  ELV-Wetterdatenempfänger USB-WDE1

Mit dem ELV-Wetterdatenempfänger können die auf der Frequenz 868.35 MHz übertragenen Daten der folgenden ELV-Sensoren empfangen werden:

Mehr zum Empfängerbaustein findet man hier: [14],[15]. Das benutzte Übertragungsprotokoll ist kompatibel zur Datenlogger-Software „LogView“, mit deren Hilfe diese Daten an PC's auch visualisier- und speicherbar sind. Der USB-WDE1 verfügt über eine defaultmäßig mit 9600bps arbeitende serielle und USB-Schnittstelle. Hierüber ist auch die Auswertung von Wetterdaten mithilfe individueller Hard- und Softwarelösungen möglich.

Eine genauere Beschreibung der LogView-Software und des von ihr benutzen Protokolls findet man unter: [16],[17]. Bei Verwendung des Kombisensors KS200 sieht das Ausgabeformat z.B. wie folgt aus:

$1;1;;;;;;;;;;;;;;;;;;<Temp>;<Feuchte>;<Windgeschwindigkeit>;;0<CR><LF>

Hinter dem Header "S1;" und dem Festwert "1;" folgen die einzelnen Wertausgaben, wobei diese jeweils durch das Zeichen ";" als Delimeter voneinander getrennt sind.
Im vorliegenden Fall sind das aber erst einmal 17 hier nicht genutze Teilstringplätze. Daran schliessen sich die Stellen an, in denen sich die vom Kombisensor bereitgestellten 3 Meßwerte finden lassen. Weiteres zum Protokoll, so wie es speziell zur Ausgabe der Wetterdaten benutzt wird, findet man auch in den Begleitunterlagen zum Empfängerbaustein.

2. Datenauswertung mithilfe von LCD-Displays

Das erste hier vorgestellte Projekt verarbeitet die vom Wetterdatenempfänger kommenden seriellen Daten und zeigt die Ergebnisse auf einem handelsüblichen 2x16 Zeichen LCD-Display an.  Die Schaltung weist keine Besonderheiten auf. Bei Bedarf ist eine In-Circuit-Programmierung  möglich.


Abb.2   Datendecoder mit Standard-LCD-Display

Abb.3 zeigt ein Beispiel für die Meßwertausgabe.  Dabei stehen "T" für Temperatur, "F" für Luftfeuchte und "W" für Windgeschwindigkeit. Über einen Upcounter von 000-999 wird die Anzahl der eingelesenen Datenprotokolle angezeigt.  Nachdem die Aussendungen des von mir verwendeten Kombisensors ( nach dem Ende der Startphase ) im Abstand von ca. 150 Sekunden erfolgen, werden die Anzeigeergebnisse auch in diesem Zeitabstand erneuert.


Abb.3  Beispiel für LCD-Anzeige

3. Datenauswertung mithilfe des Sprachausgabebausteins "VMUSIC2"


Bild 4: Ansicht des FTDI-Moduls VMUSIC2

Interessante Anwendung ergeben sich auch durch Ausgabe der Wetterdaten im Sprachformat. Auf der Suche nach einem über Mikrocontroller steuerbaren Sprachausgabesystem, war ich auf den "VMUSIC2" von Fa. FTDI/VINCULUM [1]  gestossen ( Bild 4 ). Nach ersten praktischen Versuchen begeisterte mich vor allem seine einfache Handhabung. Auf einem ansteckbaren USB-Stick abgelegte beliebige MP3- oder auch WAV-Files liessen sich mithilfe eines einzigen, an den Baustein "VMUSIC2" zu sendenden Befehls wiedergeben. Wie Tabelle 1 zu entnehmen ist, gibt es für sonstige Steuerungsvorgänge darüberhinaus auch noch weitere Kommandos. Eine ausführliche Befehlsliste findet man auch in [5] und [6].
Der Baustein besitzt ein bei Bedarf auch sehr leicht entfernbares Plastikgehäuse. Auf der Frontseite erkennen wir den USB-Anschluss für den Stick, sowie eine 3.5mm-Stereo-Klinkenbuchse zur Adaption eines Ohrhörers bzw. einer Aktivbox. Die gleichen Tonausgänge ( Line-Out ) sind auch noch einmal auf der Gehäuserückseite zu finden. Der Baustein erlaubt eine Steuerung im UART- oder im SPI-Modus, wozu eine entsprechende Drahtbrücke gesetzt werden muss. Wir benutzen den UART-Modus und verwenden die in Bild 5 sichtbare Anschlussleiste, für die auch das gezeigte Adapterkabel mitgeliefert wird.


Tabelle 1:   Wiedergabe-Steuerbefehle für den Baustein VMUSIC2


Für den praktischen Einsatz ist es wichtig zu wissen, daß der Baustein nach dem Einschalten zuerst einmal nach einem eingesteckten USB-Stick sucht. Nach seiner Erkennung wird er weiterhin versuchen, von dort eine ( ggf. neue ) Firmwareversion zu laden. Zumindest bei der Erst-Inbetriebnahme eines "VMUSIC2" ist ein Laden der jeweils aktuellsten Version auch unbedingt zu empfehlen. So führte das bei mir z.B. zu einer drastischen Verkürzung der zur Initialisierung des Bausteins benötigten Zeitspanne.
Die Vorgangsweise zur Abspeicherung einer neuen Firmwareversion ist äusserst einfach: Von der FTDI-Downloadseite [2] kopiert man die entsprechende FTD-Datei auf den USB-Stick. Danach erzeugt man von ihr eine Kopie unter dem Namen "FTRFB.FTD". Bei der nächsten Inbetriebnahme des Bausteins wird diese dann automatisch erkannt und als aktuelle Firmware in seinem Flash-Speicher abgelegt. Zur Verhinderung ihrer erneuten Einlesung auch bei jeder folgenden Inbetriebnahme, ist sie danach wieder vom USB-Stick zu löschen oder zumindest umzubenennen. Der Ladevorgang kann einige Sekunden dauern und ist beendet, sobald die grüne LED kontinuierlich leuchtet. Mit der gleichen Leuchtdiode wird die Betriebsbereitschaft der Baugruppe auch bei allen folgenden Inbetriebnahmen angezeigt. Über ihren seriellen Datenausgang wird dabei ( u.a. ) die Zeichenfolge: "D:\>" ausgegeben. Die Ausssendung erfolgt mit einer Datenrate von 9600bps und signalisiert einer ggf. angschlossenen Peripherie die Bereitschaft zur Entgegennahme weiterer Steuerbefehle.
Die Wiedergabe eines bestimmten Audiofiles wird im einfachsten Fall durch Eingabe eines Befehls nach folgenden Syntaxen gestartet:


Beispiele: "vpf  test.mp3" <cr> bzw. "vpf test.wav"

Dabei ist allerdings zu beachten, dass die verwendeten Filenamen nur maximal achtstellig sein dürfen ( also z.B.: "12345678.MP3" ). Für erste Eingabeversuche wollte ich das unter WINDOWS-Zubehör zu findende Terminalprogramm "HyperTerminal" benutzen. Dabei stellte sich allerdings heraus, dass "VMUSIC2" die komplette Befehlszeile offenbar nur "in einem  Rutsch" erwartete und die bei manueller Eingabe einzelner Zeichen zwangsläufig entstehenden Pausenzeiten hierfür zu lang waren. Mit einem anderen Terminalprogramm, welches die komplette Ausgabe vorher eingegebener Zeichenketten auf Tastendruck erlaubte, gab es dagegen keinerlei Schwierigkeiten und bei Steuerung über einen Mikrocontroller stellt sich diese Problematik ohnehin nicht.


Bild 5: Anschaltung des Bausteins VMUSIC2


Tabelle2: Pinbelegung der Anschlussleiste des Bausteins VMUSIC2

Abb.6 zeigt das zugehörige Schaltbild. Das abgehende Stereo-Tonsignal ist über die an der Frontseite des Moduls befindliche Klinkenbuchse abnehmbar und kann von hier aus mit z.B. einem Kopfhörer abgenommen werden. Parallel dazu liegt es aber auch an der rückseitigen Anschlußleiste auf und ermöglicht somit den Anschluß z.B. eines Lautsprecher-Verstärkers.  Eine Besonderheit ergibt sich durch die zusätzliche Bereitstellung eines Tastsignals ( PTT ), mit dessen Hilfe sich im Bedarfsfall während der Tonsignalausgabezeiten auch der Sender eines angeschlossenen z.B. LPD- oder PMR-Funkgerätes steuern lässt ( Bei Nichtbenutzung sollte Widerstand R5 nicht bestückt sein ).  
Bei der derzeitigen Auswertsoftwareversion erfolgen die Sprachausgaben jeweils nach dem Eintreffen neuer Sensordaten, also ( nach der Startphase ) im Abstand von etwa 150 Sekunden. Hier ist noch eine Erweiterung mit Wahlmöglichkeit verschiedenster Pausenzeiten vorgesehen.


Abb.6  Datendecoder mit Sprachausgabe via VMUSIC2-Modul von FTDI
  Im Schaltbild ( noch ) nicht eingezeichnet ist der Eingang zur Anwahl des verwendeten Soundfile-Typs.
Die Auswahl erfolgt via Port "PC.2" ( Proc.-Pin25 ) : "H" bzw. "offen" = "MP3" ; "L" bzw. "Masse" = "WAV".
Nachdem auf dem USB-Stick aber so gut wie immer ausreichend Speicherkapazität vorhanden sein dürfte, kann man aber auch
sowohl alle benötigten MP3-, als auch WAV-Sprachsegmente gemeinsam speichern und ist dann unabhängig von
der Schalterstellung. Wichtig ist allerdings, dass die Ablage im Hauptverzeichnis des Sticks erfolgt.    

        Beispiel für eine Sprachausgabe

Zwei mögliche Bezugsquellen für den Sprachausgabebaustein findet man in [3] und [4]. 
Ein den gleichen Sprachausgabebaustein benutzendes ähnliches Projekt erreicht man über [13]


4. Datenauswertung durch OSD-Video-Einblendung mithilfe eines Sparkfun-Bausteins

Eine weitere Auswertmöglichkeit für unsere Wetterdaten besteht darin, sie in ein ( analoges ) Video-Signal einzublenden. Derartige Einrichtungen werden häufig auch als OSD ( On Screen Display ) bezeichnet. Hochintegrierte Schaltkreise vereinfachen entsprechende Applikationen. Besonders einfach wird es durch Nutzung eines fertig erhältlichen OSD-Bausteins, wobei dieser im Wesentlichen nur einem Chip MAX7456 besteht.  Zwei Links für weitere Informationen zum Baustein und zum verwendeten Chip findet man hier: [18],[19]


Abb.7  OSD-Video-Einblendbaustein mit IC MAX7456

Zur Steuerung des OSD-Bausteins sind nur 4 Querverbindungen zum Mikrokontroller erforderlich. Ansonsten weist die Schaltung wiederum keine Besonderheiten auf.


Abb.8  Decoderbaustein zur Videoeinblendung


Abb.9   Beispiel für die OSD-Bildschirmanzeige


Für alle drei Projekte wurde ein Mikrokontroller des Typs ATMEGA8 benutzt. Die unter Verwendung von BASCOM-AVR-Software realisierten Programme sind im Flash-Speicher des jeweils benutzten Prozessors abzulegen.  Zur Vereinfachung ihrer Modifikation für eigene Anwendungen stehen Soucecodes und Muster-Soundfiles zur Verfügung. 

Download  BASCOM-Sourcecodes und Hex-Files [~80Kb)
Download  Muster-Soundfiles im MP3-Format [~320Kb]
Download  Muster-Soundfiles im WAV-Format [~1.5Mb]

 5. Linkliste

[1]    http://vinculum.com/documents/datasheets/DS_VMUSIC2.pdf
[2]    http://www.vinculum.com/downloads.html
[3]    http://apple.clickandbuild.com/cnb/shop/ftdichip?op=catalogue-products-null&prodCategoryID=55&title=VMUSIC2
[4]    http://www.jaeger-edv.de/Shop/index.php?option=com_virtuemart&page=shop.browse&category_id=9&Itemid=53
[5]    http://graychalet.com/VMusic2Notes.doc
[6]    http://www.graychalet.com/VMusic2Notes.doc
[7]    http://www.scary-terry.com/vm2/vm2.htm
[8]    http://www.scary-terry.com/vm2/vm2_commands.pdf
[9]    http://surplusgizmos.3dcartstores.com/Vmusic2-Demo-with-Source-Code_ep_30.html
[10]  http://www.surplusgizmos.com/Vmusic2-Demo-with-Source-Code_ep_30.html
[11]  http://www.instructables.com/id/Getting-started-with-VMUSIC2/?download=pdf
[12]  http://www.electronic-data.com/een/hro/52_158.asp
[13]  http://www.kh-gps.de/bodo.htm
[14]  http://www.elv.de/USB-Wetterdaten-Empfauml;nger-USB-WDE1,-Komplettbausatz/x.aspx/cid_74/detail_10/detail2_24916/flv_/bereich_/marke
[15]  http://www.elv-downloads.de/downloads/Leseproben/Journal/03-2009/USB_WDE1_Teil2_Software.pdf

[16]  http://www.logview.info/cms/index.php?d_logview_info
[17]  http://www.logview.info/cms/d_formatbeschreibung.phtml
[18]  http://www.sparkfun.com/commerce/product_info.php?products_id=9168
[19]  http://www.watterott.com/de/Breakout-MAX7456-OSD-Controller