|
Sprachausgabe von Analogwerten
|
| Verfasser |
Nachricht |
gpsklaus
Moderator
    
Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status:
Offline
Bewertung: 0
|
Sprachausgabe von Analogwerten
Hallo,
wie schon in meinem Beitrag "Auswertung serieller Protokolle am Beispiel von Wetterdaten" zu lesen ist, verwende ich gern den Sprachausgabebaustein "VMUSIC2" von FTDI. Im Rahmen einer anderen Anwendung habe ich ihn jetzt auch zur Ausgabe von analogen Spannungswerten benutzt. Hierdurch eröffnet sich ein weites Feld von möglichen Anwendungen z.B. auch zur Unterstützung von Sehbehinderten. Anbei das zugehörige Schaltbild.

Das angedeutete LCD-Display ist nur optional.
Evtl. Interessenten am zugehörigen BASCOM-Code sollten mir eine PM schicken.
Klaus
Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2009 16:44 von gpsklaus.
|
|
| 25.11.2009 11:30 |
|
 |
gpsklaus
Moderator
    
Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Wollte in dem Zusammenhang einfach noch Lösungen einbringen.
Es soll nicht deine Projekte miss gemscht werden. Ich bin nur Erstaunt was man alles machen kann  - wenn ich bedenke wie das vor 25 Jahren war und mit dem ZX81 mit 16K die ersten Programme geschrieben habe und dann was heute alles möglich ist.
Also weiter so 
Ne, ist schon OK und auch interessant zu sehen, wie es woanders gemacht wird. Ich hatte das auch nicht negativ verstanden. Jeder sollte sich für die Lösung entscheiden, die ihm selbst am besten gefällt und ich habe natürlich auch nix davon, wenn einer das auch von mir benutzte Verfahren wählt.
Übrigens: Eine Uhr mit Sprachausgabe gab es schon einmal für wenig Geld im Handel. In großen Stückzahlen lässt sich so etwas sehr preiswert produzieren ( siehe auch sprechende Grußkarten, Kinderspielzeug usw. ) Für so etwas wie eine Uhr lohnt sich ein Selbstbau m.E. nicht. Wenn man mit 3 Sprachdateien und insgesamt 24 Sekunden Speicherzeit auskommen kann, dann ist auch das folgende ELV-Modul sehr gut verwendbar: http://www.elv.de/output/controller.aspx...ch=&marke=
KLaus
Dieser Beitrag wurde zuletzt bearbeitet: 28.11.2009 13:34 von gpsklaus.
|
|
| 27.11.2009 00:07 |
|
 |
Veryoldman
Member
  
Beiträge: 52
Gruppe: Registered
Registriert seit: May 2010
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo GPSKlaus,
mein Name ist ebenfalls Klaus und ich beschäftige mich seit Kurzem mit dem VMUSIC2 Modul! Ich möchte mir gerne fürs Auto einen USB Eingang Bauen über den ich dann per USB Stick MP3's hören kann! Dazu habe ich einen Tiny2313 genommen über den ich dann per Tasten die Steuerung machen möchte! Ferner möchte ich aber auch den Status der MP3 Files auf einem 20 x 4 Display sichtbar machen ich weis nur nicht wie ich das in Bascom Programmieren muss! Zur Programmierung muss ich Sagen, dass ich mich noch nicht sehr lange mit AVR's und Bascom beschäftige! Kannst Du mir eventuell dabei helfen?
Gruß
Klaus
DB8QW
|
|
| 24.05.2010 18:57 |
|
 |
gpsklaus
Moderator
    
Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Namensvetter,
entschuldige bitte meine späte Antwort, aber ich war einige Tage im Ausland und nicht Online.
mein Name ist ebenfalls Klaus und ich beschäftige mich seit Kurzem mit dem VMUSIC2 Modul! Ich möchte mir gerne fürs Auto einen USB Eingang Bauen über den ich dann per USB Stick MP3's hören kann! Dazu habe ich einen Tiny2313 genommen über den ich dann per Tasten die Steuerung machen möchte! Ferner möchte ich aber auch den Status der MP3 Files auf einem 20 x 4 Display sichtbar machen ich weis nur nicht wie ich das in Bascom Programmieren muss! Zur Programmierung muss ich Sagen, dass ich mich noch nicht sehr lange mit AVR's und Bascom beschäftige! Kannst Du mir eventuell dabei helfen?
Vielleicht kannst Du einmal ein Blockschaltbild anfertigen, aus dem die geplante hardwaremäßige Zusammenschaltung mit dem Radio grob hervorgeht. Ausserdem solltest Du auch einmal die gewünschten MP3-Steuerfunktionen erläutern. Danach werden wir sehen, was sich machen lässt.
Klaus
|
|
| 01.06.2010 20:00 |
|
 |
Veryoldman
Member
  
Beiträge: 52
Gruppe: Registered
Registriert seit: May 2010
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Klaus,
ein Blockschaltbild hab ich bisher nur auf dem Papier(Handzeichnung). Wenn ich mal meinen Code Poste, kann man ziemlich klar Erkennen, wie das Ganze zusammen Hängt. Was das Radio anbelangt, so kann es auch ein ganz normales Radio mit Line In Eingang sein(Küchenradio z.B). Wichtig ist eigentlich nur, dass man den MP3/Wav Player über einen Mega8 Steuern kann und die Musik Files des USB Stick abgespielt werden. Mein Programm funktioniert soweit schon ganz gut. Ich hatte mir vor einiger Zeit, Dein Demo Programm heruntergeladen und Angeschaut um die Funktionsweise zu Verstehen. Bin noch nicht so lange beim AVR dabei und Lerne noch. Anbei mein Code:
$regfile = "m8def.dat" 'ATMEga8
$crystal = 16000000 '16Mhz extern, FuseBits= High = 0xD1, Low = 0xDF
' 8MHz extern, FuseBits= High = , Low =
$baud = 9600 ' Baudrate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40
'---- Taster Eingänge --------------------------------------
Config Pinc.0 = Input ' PortC.0 = Play
T1 Alias Pinc.0
Config Pinc.1 = Input ' PortC.1 = Stop
T2 Alias Pinc.1
Config Pinc.2 = Input ' PortC.2 = Pause
T3 Alias Pinc.2
Config Pinc.3 = Input ' PortC.3 = Next
T4 Alias Pinc.3
Config Pinc.4 = Input ' PortC.4 = Random
T5 Alias Pinc.4
Config Pinc.5 = Input ' PortC.5 = Dir
T6 Alias Pinc.5
'---- Handshake Signale RTS/CTS ----------------------------
config pind.3 = input
RTS Alias Portd.3
config pind.2 = output
CTS Alias portd.2
'---- RS232 Com-Port ---------------------------------------
'Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'---- Variable ---------------------------------------------
'---- Test -------------------------------------------------
Dim S As String * 9 At &H70
Dim B(11) As Byte At &H70 Overlay
Dim N As Byte 'Byte
Dim RTS as Byte
Dim CTS as Byte
'---- Eingang Serieller Daten ------------------------------
'Sreg.7 = 1
Set Sreg.7
On Urxc Onrxd
Enable Urxc
'---- LCD Definition ---------------------------------------
Config Lcd = 20 * 4 'LCD 4 Zeilen, 20 Zeichen
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portb.1 , Rs = Portb.2 'LCD Pin-Config
Config Lcdbus = 4
Initlcd
Cursor Off
'---- Festtext ---------------------------------------------
Cls 'Lösche Display
Locate 2 , 3
Lcd " Klaus - VMUSIC2 "
Locate 3 , 3
Lcd " USB MP3 Player "
Wait 2
Cls
'---- Lautstärken-Voreinstellung ---------------------------
Print "vsv0" ; Chr(13); ' Lautstärke Voreinstellung 0 = Laut, 256 = Leise
'---- Test Voreinstellungen --------------------------------
RTS = 1
CTS = 0
'---- Hauptprogramm ----------------------------------------
Do
'Main:
If N > 9 Then
Locate 1 , 1
Lcd S 'Ausgabe auf Lcd
Print Chr(13)
N = 0
End If
If T1 = 0 Then ' Play all
Print "v3a " ; Chr(13)
Waitms 100
Cls
Locate 4 , 1
Lcd "Play all"
End If
' Stop
If T2 = 0 Then
Print "vst " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Stop"
End If
If T3 = 0 Then ' Pause
Print "vp " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Pause"
End If
If T4 = 0 Then ' Next Track
Print "vsf " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Next"
End If
If T5 = 0 Then ' Zufällige Wiedergabe
Print "vrr " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play Random"
End If
If T6 = 0 Then ' Anzeige aller Tracks
Print "dir " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Dir"
End If
'End If
'Goto Main
Loop
End
'---- Unterprogramme ----------------------------------------
Onrxd:
Incr N
B(n) = Udr
Return
Das Problem hierbei ist, dass die Funktion der Tasten, sobald ich die Daten des VMUSIC2 auf dem Display sichtbar machen möchte, nicht mehr richtig funktionieren. Nehme ich die UART Abfrage wieder aus dem Programm, geht alles wieder ohne Probleme. Da ich Dich aber gerade an der Strippe habe, hab ich noch eine Frage: Wo bekomme ich die gesamte Befehlsliste für das VMUSIC2 her? Habe bei FTDI Geschaut aber sehr viel gibt es da nicht.
Gruß
Klaus
|
|
| 15.06.2010 21:34 |
|
 |
gpsklaus
Moderator
    
Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Klaus,
da ich es zur Zeit nicht praktisch testen kann, vermag ich auch nicht mit Sicherheit sagen, dass es so funktioniert ( und sicher geht es auch noch eleganter ), aber dennoch würde ich einmal die unten gezeigte Variante probieren.
Wichtig ist in jedem Fall, dass Du allen 6 Tasteringängen ( PC.0-PC.5 ) z.B. via Programmn einen Pull-Up-Widerstand verpasst ( Portc = &B00111111 ), damit der Pegel hier bei nicht gedrückter Taste eindeutig "H" ist.
PS: einige Variablen-Namen musste ich leicht ändern, da sie bereits von BASCOM benutzt wurden
Gruß
Klaus
'------------------------------------------------------------------------------
$regfile = "m8def.dat" 'ATMEga8
$crystal = 16000000 '16Mhz extern, FuseBits= High = 0xD1, Low = 0xDF
' 8MHz extern, FuseBits= High = , Low =
$baud = 9600 ' Baudrate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40
'$sim
'---- fuer Taster kompletter Port C als Eingänge -----------
Config Portc = Input
'---- Alle Taster-Eingänge auf "H" -------------------------
Portc = &B00111111
'---- Handshake Signale RTS/CTS ----------------------------
Config Pind.3 = Input
Config Pind.2 = Output
Rts Alias Portd.3
Cts Alias Portd.2
'---- RS232 Com-Port ---------------------------------------
'Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'---- Variable ---------------------------------------------
'---- Test -------------------------------------------------
Dim S As String * 9 At &H70
Dim B(11) As Byte At &H70 Overlay
Dim N As Byte 'Byte
Dim RTS as Byte
Dim CTS as Byte
'---- Eingang Serieller Daten ------------------------------
'Sreg.7 = 1
Set Sreg.7
On Urxc Onrxd
Enable Urxc
'---- LCD Definition ---------------------------------------
Config Lcd = 20 * 4 'LCD 4 Zeilen, 20 Zeichen
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portb.1 , Rs = Portb.2 'LCD Pin-Config
Config Lcdbus = 4
Initlcd
Cursor Off
'Deklariere Unterprogramme
Declare Sub Play
Declare Sub Stopp
Declare Sub Pause
Declare Sub Track
Declare Sub Random
Declare Sub All
'---- Festtext ---------------------------------------------
Cls 'Lösche Display
Locate 2 , 3
Lcd " Klaus - VMUSIC2 "
Locate 3 , 3
Lcd " USB MP3 Player "
Wait 2
Cls
'---- Lautstärken-Voreinstellung ---------------------------
Print "vsv0" ; Chr(13); ' Lautstärke Voreinstellung 0 = Laut, 256 = Leise
'---- Test Voreinstellungen --------------------------------
RTS = 1
CTS = 0
'---- Hauptprogramm ----------------------------------------
Do
If Pinc.0 = 0 Then Gosub Play
If Pinc.1 = 0 Then Gosub Stopp
If Pinc.2 = 0 Then Gosub Pause
If Pinc.3 = 0 Then Gosub Track
If Pinc.4 = 0 Then Gosub Random
If Pinc.5 = 0 Then Gosub All
Loop
Sub Play
Print "v3a " ; Chr(13)
Waitms 100
Cls
Locate 4 , 1
Lcd "Play all"
End Sub
Sub Stopp
Print "vst " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Stop"
End Sub
Sub Pause
Print "vp " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Pause"
End Sub
Sub Track
Print "vsf " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Next"
End Sub
Sub Random
Print "vrr " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play Random"
End Sub
Sub All
Print "dir " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Dir"
End Sub
End
'---- Unterprogramme ----------------------------------------
Onrxd:
Incr N
B(n) = Udr
Return
'end program
|
|
| 15.06.2010 23:08 |
|
 |
Veryoldman
Member
  
Beiträge: 52
Gruppe: Registered
Registriert seit: May 2010
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Klaus,
danke für Deine Unterstützung! Hab mir den Code in dem Mega8 Geschoben. Zumindest beim Compilieren taucht kein Fehler auf aber und das ist mir ein absolutes Rätsel, wird auch keine Tastenfunktion Übernommen. Das VMUSIC2 bleibt stumm! Der Befehl Erscheint auf dem Display aber die LED's am Modul und am Stick bleiben aus. Es ist doch im Grunde nichts anders, außer dass Du mit Declare Sub arbeitest. Warum also wird der Printbefehl nicht angenommen? Oh man!
Ich hab übrigens bei Deinem Wetterdaten-Projekt gesehen, dass Du RXD vom VMUSIC2 Modul auf PD7 vom Mega8 gelegt hast. Hat das einen bestimmten Grund?
Gruß
Klaus
|
|
| 16.06.2010 22:30 |
|
 |
gpsklaus
Moderator
    
Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Klaus,
ich muss gestehen, dass ich die von Dir benutzten Befehle selbst NIE benutzt und immer nur bestimmte Soundfiles namentlich aufgerufen habe. Dazu habe ich dann immer Befehle wie z.B.: "Print "vpf <filename>.mp3" ; Chr(13)" oder: Print "vpf <filename>.wav" benutzt ( mir Leerstelle zwischen "vpf" und Filenamen ) und hatte damit auch nie Probleme. Warum schon die Basis-Steuerbefehle bei Dir nicht ausgeführt werden, kann ich derzeit auch nicht sagen.
Ich würde die VMUSIC-Steuerung zuerst einmal vom PC aus durch Eingabe einzelner Befehle mithilfe eines Terminalprogrammes testen. Das ist zwar bei modernen PC's ohne RS232-Port etwas umständlich und erfordert zusätzlich auch noch eine Anpassung des VMUSIC-Bausteins von TTL- auf RS232-Pegelwerte, gibt aber Aufschluss über seine Steuerbarkeit. Ein weiteres Problem besteht darin, dass an dieser Stelle nicht jedes Terminalprogramm geeignet ist, sondern nur solche infrage kommen, bei denen man auszugebende Befehlssequenzen in einen Speicher vorschreiben und dann auf Tastendruck "in einem Rutsch" zum VMUSIC-Baustein senden kann ( wenn Du mir eine PN mit Deiner E-Mailadresse sendest, dann schicke ich Dir ein hierfür geeignetes Terminalprogramm ).
Ansonsten werde ich aber auch noch einmal hier vorhandene und von anderen Leuten stammende Steuerprogramme für diesen Baustein durchforsten um dort vielleicht Hinweise auf mögliche Ursachen für Dein Problem zu finden.
Klaus
|
|
| 17.06.2010 09:09 |
|
 |
gpsklaus
Moderator
    
Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Ich hab übrigens bei Deinem Wetterdaten-Projekt gesehen, dass Du RXD vom VMUSIC2 Modul auf PD7 vom Mega8 gelegt hast. Hat das einen bestimmten Grund?
Ach so, darauf hatte ich vergessen einzugehen:
Bei dem besagten Programm werden zu verarbeitende serielle Eingangsdaten über PD0 zugeführt und Ausgang PD1 wird zur Steuerung des VMUSIC2-Bausteins benutzt, womit der komplette Hardware-UART des ATMEGA8 belegt ist. Nachdem der Aufruf kurzer Sprachfilesegmente ( z.B. der Messwerte ) aber in schnellstmöglicher Folge erfolgen sollte, brauchte ich am Prozessor noch einen zusätzlichen seriellen Eingang, um hierüber die vom VMUSIC2 kommenden, das Ende der jeweiligen Sprachsegmentausgaben signalisierenden Rückmeldungen verarbeiten zu können. Hierzu habe ich eine über PD7 laufende Soft-UART-Routine benutzt.
Alles klar?
Gruß
Klaus
|
|
| 17.06.2010 09:25 |
|
 |
gpsklaus
Moderator
    
Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Klaus,
nach Durchsicht anderer Steuerprogramme würde ich an deiner Stelle einmal zwei Sachen testen:
1. Die Leerstellen hinter dem Steuerwort probeweise einmal weglassen ( also nicht: Print "v3a " ; Chr(13) sondern: Print "v3a" ; Chr(13)
2. Im Stick ein Soundprogramm mit z.B. dem Namen "test.mp3" oder "test.wav" ablegen und dieses versuchsweise per Befehl: "vpf test.mp3" ; chr(13) bzw.: "vpf test.wav" ; chr(13) aufrufen. Danach würde es interessant sein zu wissen, ob zumindest diese Aufrufe klappen.
Klaus
Dieser Beitrag wurde zuletzt bearbeitet: 17.06.2010 09:48 von gpsklaus.
|
|
| 17.06.2010 09:47 |
|
 |
|
|