SPEEDTALK
Sprachausgabe GPS-gestützter Geschwindigkeitsdaten
Version vom 12. Juni 2007
SPEEDTALK is a simple application for converting GPS speed
data into sound. It is using a standard ATMEL processor and a
sound modul like being available from http://www.conrad.com.
( search for Part-No. 234219
). Input is 4800bps NMEA ( RMC
sentences ) from GPS receivers. Voice output is in KMPH or
KNOTS. Different
pauses in range from 0 to 60 seconds are selectable by using switches
S1-S6.
Please listen to sound sample.
Unlängst
habe ich im neuen Conrad-Modellbaukatalog 2007/2008 einen Baustein (
Abb.1 ) entdeckt, der mein Interesse erweckte. Dabei handelt es sich um
ein digitales Soundmodul, das die Speicherung von bis zu 64
WAV-Soundfiles und deren einzeln adressierbare
Wiedergabe gestattet. Das Modul schien mir eine nahezu
ideale Möglichkeit zu eröffnen, um dort diverse kurze
Sprachsegmente für den späteren freien Zugriff ablegen zu
können.
Dabei dachte ich z.B. an die Speicherung von Ziffernwerte und
Kurztexte beinhaltenden WAV-Files, wobei die spätere Wiedergabe
durch Aufruf von einer
Mikrocontrolleranordnung gesteuert werden sollte. Auf vorgesehene Weise
würden sich mit relativ
wenig Aufwand Messgrössen
aller Art als Sprachmessages ausgeben lassen.
Abb.1
Soundmodul
Um mehrere Sprachsegmente ggf. in
schnellstmöglicher Folge ausgeben zu können, benötigte
ich für den Mikrokontroller noch ein Kriterium, das ihm die
jeweiligen Endzeitpunkte aktueller Segmentausgaben signalisieren
konnte. Obwohl in der
Ursprungsversion des Soundmoduls nicht vorgesehen, führte der
österreichische Modulhersteller in kürzester Zeit eine
Firmwaremodifikation durch, so dass seither auch die benötigten
Busy-Flags
zur Verfügung stehen.
Eine erste Versuchsapplikation sollte die von
GPS-Empfängern zur Verfügung gestellten Geschwindigkeitswerte
in Sprache umsetzen. Dabei wurde erst einmal auf bereits im
WAV-Format vorhandene englische Sprachsegmente zurückgegriffen,
obwohl sie ursprünglich für ein andere Aufgabe erstellt
worden waren. Das
zugehörige Prozessor-Programm
wurde in BASCOM-AVR realisiert.
Ein
erstes Ergebnis kann hier als Soundprobe
gehört werden.
Für den Einsatz wurde ein ATMEGA-Prozessortyp gesucht, der mindestens einen in seiner gesamten Breite
komplett nutzbaren 8
Bit-Port zur Steuerung des Soundmoduls zur Verfügung stellen
konnte. Obwohl von der Programmgröße
gesehen nicht erforderlich, habe ich mich daraufhin für den Typ
ATMEGA32 ( auch Nutzung des ATMEGA16 ist möglich ) entschieden.
Aus Gründen der Einfachheit kam für den ersten Musteraufbau
ein im Mai 2006 in der Zeitschrift ELEKTOR beschriebenes
ATMEGA-Universalboard zum Einsatz ( Abb.2 ). Bereits ohne jegliche
Modifikation ist es für unser Projekt gut nutzbar. Mehr zu diesem
Board findet man hier: http://www.elektor.de/jahrgang/2006/mai/mini-mega-board.64106.lynkx
Abb.2 Musteraufbau der
Prozessoranordnung mit dem
Board aus
ELEKTOR, Heft Mai 2006, Seite 38-42 ; Platinenbezeichnung: EPS
050176-1
Verarbeitet werden die von GPS-Empfängern mit 4800bps ausgegebene
NMEA-Daten, wobei hier der RMC-Datensatz zur Auswertung kommt. Abb.3
zeigt die benutzte Schaltanordnung in ihrer Minimalkonfiguration. Sie
weist keine Besonderheiten auf.
Abb.3
Schaltbild SPEEDTALK ( Basisversion )
Anm: Der serielle Datenausgang ist derzeit ohne Funktion
Bei Verwendung des ELEKTOR-Boards
ergeben sich über die in Abb.3 gezeigte Minimalkonfiguration
hinaus noch einige Vorteile. So ist damit eine
"In-Circuit-Programmierung (ICP)" durchführbar und weiterhin
besteht die Möglichkeit zur Bestückung einer LED-Zeile. Sie
kann der Überwachung von Vorgängen an den
Steuerausgängen in Richtung Soundmodul dienen und damit u.U. sehr
hilfreich sein.
Mithilfe der Schalter S1-S8 sind verschiedene Betriebseinstellungen
vornehmbar. So dienen S1 - S6 der Wahl des zeitlichen
Verzögerungswertes zwischen zwei Sprachausgaben. Neben der
systenbedingten und durch die Ausgabefolge des angschlossenen
GPS-Empfänges bestimmten Verzögerung, entstehen bei
geöffneten Schaltern zusätzlich keine nennenswerten
zeitlichen
Beeinflussungen. Wenn einzeln geschlossen, verzögern die Schalter
S1
- S6 die Pausen zwischen den ausgegebenen einzelnen Sprachblöcken
um 2, 4, 8. 15, 30 oder 60 Sekunden.
Mit S7 kann eine
Auswahl zwischen der Ausgabe von Werten in "Km/h" ( S7 offen ) oder
"Knoten" ( S7 geschlossen ) getroffen werden. Durch Schliessen von S8
kann zudem die Sprachausgabe der Maßeinheitsbezeichnungen
unterdrückt
werden.
Abb.4
Das Sprachmodul und seine Anschaltung
Wie auch aus dem Schaltbild Abb.3 ersichtlich, kann die
Zusammenschaltung zwischen Modul und Controllerboard auf einfache Weise
erfolgen. Nachdem das Soundmodul eine eigene interne
Spannungsregulierung besitzt, wurden seine Versorgungsanschlüsse
nur
einfach parallel zu denen des Mikrokontrollerbausteins geschaltet.
Die Steuerung der einzelnen Sprachsegmente erfolgt über acht
Eingänge ( control inputs ). Abhängig vom gewünschtem
Soundsegment müssen bestimmte Eingänge nach einer etwas
gewöhnungsbedürftigen Logik gegen Masse geschaltet werden.
Wen es interessiert, der kann dazu Näheres dem zugehörigen
Handbuch entnehmen. Soll dagegen nur die für diese Anwendung
erstellte Prozessor-Software samt zugehöriger Sounddatei benutzt
werden, so muss man sich um diese Einzelheiten nicht selbst
kümmern.
Ein Pin des Sprachmoduls ( siehe Abb.4 ) liefert das schon oben
erwähnte Busy-Signal. Während aktiver Sprachsegmenteausgaben
geht hier die Spannung auf "H"-Pegel. Die folgende negative Pulsflanke
bewirkt eine Interruptauslösung über Prozessor-Port D2
, worauf eine ggf. laufende Warteschleife beendet und der sofortige
Aufruf eines nächsten Sprachsegments initiiert werden kann.
Der integrierte Audioverstärker ist mit einer Sprechleistung von
1.4 W spezifiziert. Hierbei warnt der Hersteller vor dem Einsatz von
Lautsprechen kleinerer Impedanz als 8 Ohm. Sie sollen zur
Zerstörung der Leistungsendstufe führen können.
Ersatzweise können auch zwei in Serie geschaltete 4
Ohm-Lautsprecher angeschaltet werden. Eine weitere Möglichkeit
besteht darin, einem 4 Ohm-Lautsprecher noch einen z.B. 3.9
Ohm-Festwiderstand ( 1W-Version ) in Reihe zu schalten.
Darüberhinaus besitzt das Modul noch einen
Line-Ausgang, über den bedarfsweise auch ein externer
Verstärker angeschlossen werden kann.
Weitere Infos zum Sprachmodul findet man im
CONRAD-Modellbau-Katalog 2007/2008, Seite 272 oder auch über die
Firmenhomepage http://www.conrad.de
. Dort sollte man eine Suche
unter Eingabe seiner Best.-Nummer: 234219 starten. Das ansonsten bei
Modulbestellung mitgelieferte Handbuch ( auf CD ) kann man dort schon
einmal vorab herunterladen und studieren.
Zum Up- und Download der einzelnen Sprachsegmente ist das Soundmodul
mit einer
USB-Schnittstelle ausgestattet. Hierüber ist zeitweilig der PC
anzuschliessen, auf dem die mitgelieferte Installationssoftware
installiert ist. Mithilfe dieses Programmes kann eine Liste der
einzelen WAV-Sprachsegmente erstellt und als Block zum Soundbaustein
übertragen werden. Alle für unserer Projekt benötigten
Segmente wurden dazu bereits in einer gemeinsamen Datei
zusammengefasst. Sie trägt den Namen: "speed1.img" und kann HIER heruntergeladen
werden.
Die einzelnen Sprachsegmente liegen dort auch in der erforderlichen
Reihenfolge vor. Somit muss die Datei ( ca. 300kB ) nur noch mithilfe
der Installationssoftware aufgerufen und
zum Soundmodul übertragen werden.
Verwendbare
GPS-Empfänger
Zum Anschluss
geeignet sind alle GPS-Empfänger, die einen
seriellen Datenport besitzen und darüber auch NMEA-Datensätze
des Typs "RMC" ausgeben. Dabei muss mit einer Baudrate von 4800bps
gearbeitet werden, was aber dem Standardwert entspricht. Zur
Verarbeitung der Signale sind die Mikrokontroller-Boards mit einem
Baustein MAX232 o.ä. ausgestattet, der hier üblicherweise
RS232-Pegelwerte erwartet. Sollten Empfänger eingesetzt werden,
die ihre Daten nur mit TTL-Pegel abgeben, so lassen sich diese Signale
direkt an den seriellen Prozessoreingang PD1 ( Pin 15 ) legen. In
diesen Fällen ist der Baustein MAX232 zu entfernen.
Nachbau
Es ist
beabsichtigt, das zur Selbstprogrammierung benötigte Codefiles
hier zur privaten Nutzung bereitzustellen. Anfragen bezüglich
bereits programmierter ATMEGA-Bausteine
können an den Verfasser gerichtet werden.