-
        
Thema geschlossen
Ergebnis 1 bis 2 von 2

Thema: Fertiges RN-Projekt: Sprachausgabeboard RN-SPEAK

  1. #1
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1

    Fertiges RN-Projekt: Sprachausgabeboard RN-SPEAK

    Der Roboter lernt sprechen!

    Sprachausgabeboard RN-SPEAK ist fertig

    Hallo,

    ich hatte es ja vor einer Weile schon angekündigt, im Zuge unserer Diskussion um den Sprachausgabe-Artikel von Manfred. Ein kleines Board das sich ideal für Roboter eignet!
    Endlich ist es fertig geworden, die Hardware ging eigentlich recht flott, aber mit der Software hat es etwas gedauert. Das Board verfügt nämlich über eigenes Betriebsystem damit es wirklich einfach angesteuert und mit Messages besprochen werden kann.

    Das Board speichert bis zu 252 Messages (insgesamt maximal 270 Sekunden). Die Messages können aus Wörtern, Wortbruchteilen oder ganzen Sätzen bestehen. Durch gezielte Ausgabe dieser Messages können neue Wörter oder Sätze gebildet und somit auch Messdaten, Spannungen oder einfach nur eine herzliche Begrüßung ausgegeben werden.
    Die Ansteuerung dieses Boards ist besonders einfach und wahlweise über einen I2C-Bus oder RS232 realisierbar. Ein einfacher Befehl gibt eine beliebige Message aus. Der eingebaute NF-verstärker sorgt auch in größeren Räumen für genügend Lautstärke. Alternativ kann das Board auch ohne Controller Standalone betrieben und mittels Taster bedient werden.
    Die Möglichkeiten sind einfach unbegrenzt.
    Und das beste: Das Board wird per I2C-Bus angesteuert, also 2 Leitungen reichen aus! Auch die Stromversorgung kann über den I2C-Bus erfolgen (wenn Stecker nach Roboternetz-Norm vorhanden ist).

    Als hier die Leistungsmerkmale auf einen Blick:

    • Sprachboard kann mit ein, zwei oder drei Sprachchips vom Typ ISD 2590 bestückt werden (somit ergibt sich eine Aufzeichnungskapazität von bis zu 4 ½ Minuten, je nach Anzahl der eingesteckten Sprachchips)
    • Bis zu 252 unterschiedliche Messages können aufgezeichnet werden. Wahlweise ganze Sätze, Wörter oder Wortbruchteile
    • Das bespielen des Sprachboards ist kinderleicht. Eine mitgelieferte PC-Software überträgt WAV-Dateien in Sekunden auf das Board. Keine umständliche Sound-Bearbeitung etc, sondern einfach WAV-Dateien im Dialog auswählen, Board mit RS232 verbinden und Board neben PC legen. Das war es! Eine Statistik mit Messagecode und Messagelänge kann dann ausgedruckt werden.
    • Alternativ kann das Board auch durch einfachen Tastendruck besprochen.
    • Einfache Verbindung zu einem Controller über RS232 oder I2C Schnittstelle
    • Controller (wie z.B. das RNBFRA-Board, RN-Control aber auch C-Control etc) können über einfachen I2C-Befehl bestimmte Messages oder Wörter kombiniert ausgeben lassen.
    • Kann Huckepack mir anderen Roboternetzboards verschraubt werden
    • Keine Stromversorgung notwendig, das Board wird über den I2C-Bus mit Energie versorgt. Wird der I2C-Port nicht genutzt, so benötigt man 5V!
    • Das Board verfügt über einen zusätzlichen NF-Verstärker damit auch in einem lautem Umfeld genügend Power für einen größeren Lautsprecher vorhanden ist. Die Lautstärke ist einstellbar
    • Das Board verfügt über eigenes Betriebsystem und kann somit auch bei Bedarf umprogrammiert werden
    • Mehrere Boards kombinierbar durch andere I2C Slave Adresse
    • Nur halbe -Europakartengröße entsprechend Roboternetz-Norm
    • Unterstützt alle Controller mit I2C Schnittstelle


    Hier ein paar Bilder:






    Die Software zum überspielen von Messages:





    Eine ausführliche Anleitung, Bauteileliste, Schaltplan ist im Download-Bereich zu finden. Siehe http://www.roboternetz.de/phpBB2/dlo...gory&cat_id=16
    Platine,Software und/oder Bauteile können bei Bedarf auch wieder über http://www.robotikhardware.de bezogen werden

    Gruß Frank

  2. #2
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1

    Neue RN-Speak Firmware 2.0

    Aktuelle RN-Speak Firmware 2.0 ist da:

    Aufgrund vieler Anregungen gibt es nun RN-Speak mit einer erweiterten Firmware (Betriebsystem). Dadurch ist die Ansteuerung per I2C und RS232 als auch die Bedienung des Boards noch einfacher. Zudem gibt es einige wichtige Erweiterungen, siehe unten.

    Achtung: Wenn RN-Speak (IC RNSPK1 oder Bausatz) in den letzten Monaten (nach dem 1.11.04) erworben wurde, bekommt man sogar Firmware gratis, ansonsten für ein paar Euro die die Weiterentwicklung sicherstellen sollen. Siehe unter Software bei http://www.robotikhardware.de



    Hier die Leistungsmerkmale von RN-Speak-Board mit der neuen Firmware 2.0
    Rot markiert sind die Änderungen gegenüber der Vorgänger-Firmware RNSPK1


    • Sprachboard kann mit ein, zwei oder drei Sprachchips vom Typ ISD 2590 bestückt werden (somit ergibt sich eine Aufzeichnungskapazität von bis zu 4 ½ Minuten)
    • Bis zu 255 unterschiedliche Messages können aufgezeichnet werden. Wahlweise ganze Sätze oder Wörter
    • Das bespielen des Sprachboards ist kinderleicht. Eine mitgelieferte PC-Software überträgt WAV-Dateien in Sekunden auf das Board. Keine umständliche Sound-Bearbeitung etc. sondern einfach WAV-Dateien im Dialog auswählen, Board mit RS232 verbinden und Board neben PC legen. Das war es! Eine Statistik mit Messagecode und Messagelänge kann ausgedruckt werden.
    • Die I2C und RS232 Schnittstelle wurde angeglichen, nun sind nahezu die gleichen Befehle per I2C oder RS232 verwendbar
    • Auch die Aufnahmesteuerung ist nun per I2C oder RS232 machbar
    • Pause-Befehl in Schritten von 20ms bis 5 Sek genau definierbar
    • Jetzt auch Rückmeldung wenn Nachichten ausgesprochen wurden. Damit kann die Sprache besser mit dem Hauptprogramm synchronisiert werden.
    • Per I2C kann abgerufen werden wieviel Spachbefehlsbytes von RN-Speak noch abgearbeitet werden müssen.
    • Verschiedene Baudraten einstellbar frei 300,2400,9600,19200 und 38400 Baud
    • I2C-Slave ID per I2C oder RS232 beliebig änderbar. Somit können auch mehrere Boards kombiniert werden
    • Die eingestellte Baudrate und Slave ID werden fest im EEprom gespeichert
    • Ringbuffer für I2C-Befehle, somit schneller Bustakt (Standard 100 khz I2C Hardwareunterstützung)
    • Alternativ kann das Board auch durch einfachen Tastendruck besprochen werden
    • Kein Umschalten zwischen RS232/I2C oder Tasten mehr notwendig. Alle Schnittstellen werden gleichzeitig überwacht, dies erleichtet die Bedienung und den Test erheblich
    • Übersichtlichere Rückmeldungen per RS232. Mit einem Terminalprogramm läßt sich per RS232 sogar die I2C-Bus Kommandos und Rückmeldungen überprüfen
    • Einstellbare Aufnahmeverzögerung um den Chip optimal besprechen zu lassen
    • Einfache Verbindung zu einem Controller oder PC über RS232 oder I2C Schnittstelle
    • Controller (wie z.B. das RNBFRA-Board, RN-Control, RN-Mega8 aber auch C-Control etc) können über einfachen I2C-Befehl bestimmte Messages oder Wörter kombiniert ausgeben lassen.
    • Ansteuer-Beispiele für RN-Control in der Doku und auf Robotikhardware-CD
    • Kann Huckepack mir anderen Roboternetzboards verschraubt werden
    • Keine Stromversorgung notwendig, das Board wird über den I2C-Bus mit Energie versorgt. Wird der I2C-Port nicht genutzt, so benötigt man 5V!
    • Das Board verfügt über einen zusätzlichen NF-Verstärker damit auch in einem lautem Umfeld genügend Power für einen größeren Lautsprecher vorhanden ist. Die Lautstärke ist einstellbar
    • Das Board verfügt über eigenes Betriebsystem und kann somit auch bei Bedarf umprogrammiert werden
    • Nur halbe – Europakartengröße



    Ansteuerbeispiele für RN-Control-Board:

    Code:
    '###################################################
    'rnspeakbeispiel1.bas
    'Beispiel: zu RN-Speak
    'Das Minimalbeispiel demonstriert wie einfach das
    'Sprachboard RN-Speak mit RN-Control per I2C angesprochen wird
    'Es werden einige Messages direkt nacheinander ausgesprochen
    'und zwischen zwei Messages eine Pause eingelegt
    'Das Hauptprogramm wird während der Aussprache weiter ausgeführt
    'es wird somit nicht gewartet bis alles ausgesprochen wurde.
    '
    'Dieses Beispiel benötigt RN-Speak mit Firmware 2.0 oder höher
    '
    'Autor: Frank
    'Anleitung findet man unter http://www.Roboternetz.de im Download Bereich
    'oder www.robotikhardware.de
    'Weitere Beispiele sind im Roboternetz gerne willkommen!
    '##############################################################
    
    
    ' ------------- Hier die üblichen RN-Control Anweisungen --------------
    
    $regfile = "m32def.dat"
    $hwstack = 32
    $framesize = 32
    $swstack = 32
    $crystal = 16000000                    'Quarzfrequenz
    $baud = 9600
    
    
    Config Scl = Portc.0                     'Ports fuer IIC-Bus
    Config Sda = Portc.1
    
    Sound Portd.7 , 400 , 450             'BEEP
    Sound Portd.7 , 400 , 250             'BEEP
    Sound Portd.7 , 400 , 450             'BEEP
    ' ------------- Ende der üblichen RN-Control Anweisungen --------------
    
    
    'Das Hauptprogramm zum Ansteuern von RN-Speak Beispiel
    
    Declare Sub Rnspeak_playmsg(byval Message As Byte)
    Declare Sub Rnspeak_pause(byval Milli As Word)
    
    Const Rnspeakslaveid = &H52         'Beliebig änderbar
    
       Wait 2         'Warte bis RN-Speak bereit (falls Board gerade erst mit Spannung versorgt wurde)
    
       Print "Testprogramm"
    
       I2cinit
    
       Rnspeak_playmsg 1
       Rnspeak_pause 1000       '1000 Milisekunden (1 Sek) Pause
       Rnspeak_playmsg 2
       Rnspeak_playmsg 3
       Rnspeak_playmsg 4
       Rnspeak_playmsg 3
       Rnspeak_playmsg 2
       Rnspeak_playmsg 1
       Print "Fertig"
    End
    
    
    'Hilfreiche Unterfunktionen für RN-Speak (weitere können leicht definiert werden)
    
    'Funktion die eine bestimmte Message ausspricht
    Sub Rnspeak_playmsg(byval Message As Byte)
    Local Befehle As String * 4
      Befehle = "rnm" + Chr(message)
      I2csend Rnspeakslaveid , Befehle , 4
    End Sub
    
    
    'Funktion die eine Pause zwischen zwei Messages legt
    Sub Rnspeak_pause(byval Milli As Word)
    Local Befehle As String * 4
    Local Wert As Word
    Local Bwert As Byte
    
      Wert = Milli / 20
      Bwert = Wert
      Befehle = "rno" + Chr(bwert)
      I2csend Rnspeakslaveid , Befehle , 4
    End Sub
    Und ein weiteres Beispiel bei dem gewartet wird bis RN-Speak alle Messages ausgegeben hat:

    Code:
    '###################################################
    'rnspeakbeispiel2.bas
    'Beispiel: zu RN-Speak
    'Das Minimalbeispiel demonstriert wie einfach das
    'Sprachboard RN-Speak mit RN-Control per I2C angesprochen wird
    'Es werden einige Messages direkt nacheinander ausgesprochen
    'und zwischen zwei Messages eine Pause eingelegt
    'Demonstriert wird auch, wie mit einer Funktion gewartet werden
    'kann bis RN-Speak Messages ausgesprochen hat. Man kann so das
    'Hauptprogramm besser mit den Messages synchronisieren
    '
    'Dieses Beispiel benötigt RN-Speak mit Firmware 2.0 oder höher
    '
    'Autor: Frank
    'Anleitung findet man unter http://www.Roboternetz.de im Download Bereich
    'oder www.robotikhardware.de
    'Weitere Beispiele sind im Roboternetz gerne willkommen!
    '##############################################################
    
    
    ' ------------- Hier die üblichen RN-Control Anweisungen --------------
    
    $regfile = "m32def.dat"
    $hwstack = 32
    $framesize = 32
    $swstack = 32
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 9600
    
    
    Config Scl = Portc.0                                        'Ports fuer IIC-Bus
    Config Sda = Portc.1
    
    Sound Portd.7 , 400 , 450                                   'BEEP
    Sound Portd.7 , 400 , 250                                   'BEEP
    Sound Portd.7 , 400 , 450                                   'BEEP
    ' ------------- Ende der üblichen RN-Control Anweisungen --------------
    
    
    'Das Hauptprogramm zum Ansteuern von RN-Speak Beispiel
    
    Declare Sub Rnspeak_playmsg(byval Message As Byte)
    Declare Sub Rnspeak_pause(byval Milli As Word)
    Declare Function Rnspeak_bufferbytes() As Byte
    Declare Sub Rnspeak_fertig()
    
    
    Const Rnspeakslaveid = &H52          'Beliebig änderbar
    Dim B As Byte
    
       Wait 2                            'Warte bis RN-Speak bereit (falls Board gerade erst mit Spannung versorgt wurde)
       Print "Testprogramm"
    
       I2cinit
    
       Rnspeak_playmsg 1
       Rnspeak_pause 1000       '1000 Milisekunden (1 Sek) Pause
       Rnspeak_playmsg 2
       Rnspeak_playmsg 3
       Rnspeak_playmsg 4
       Rnspeak_playmsg 3
       Rnspeak_playmsg 2
       Rnspeak_playmsg 1
       Rnspeak_fertig                'Warte bis alles ausgesprochen unf führe dann Hauptprogramm weiter
    
       Sound Portd.7 , 400 , 450           'BEEP
       Print "Fertig"
    End
    
    
    'Hilfreiche Unterfunktionen für RN-Speak (weitere können leicht definiert werden)
    
    'Funktion die eine bestimmte Message ausspricht
    Sub Rnspeak_playmsg(byval Message As Byte)
    Local Befehle As String * 4
      Befehle = "rnm" + Chr(message)
      I2csend Rnspeakslaveid , Befehle , 4
    End Sub
    
    
    'Funktion die eine Pause zwischen zwei Messages legt
    Sub Rnspeak_pause(byval Milli As Word)
    Local Befehle As String * 4
    Local Wert As Word
    Local Bwert As Byte
    
      Wert = Milli / 20
      Bwert = Wert
      Befehle = "rno" + Chr(bwert)
      I2csend Rnspeakslaveid , Befehle , 4
    End Sub
    
    
    'Function ermittelt wieviele I2C-Bytes von RN-Speak noch beachbeitet/ausgesprochen
    'werden müssen
    Function Rnspeak_bufferbytes() As Byte
    Local Bwert As Byte
      I2cstart
      Bwert = Rnspeakslaveid + 1      'Lese Adresse für rn-speak ist um 1 Byte höher
      I2cwbyte Bwert
      I2crbyte Bwert , Nack
      I2cstop
      Rnspeak_bufferbytes = Bwert
    End Function
    
    
    ' Diese Funktion wartet bis alle Befehle und Messages von RN-Speak ausgesprochen wurden
    Sub Rnspeak_fertig()
    Local Bwert As Byte
      Do
        Bwert = Rnspeak_bufferbytes()
        waitms 500
      Loop Until Bwert = 0
    End Sub

    Die aktuelle überarbeitete Anleitung / Bauanleitung ist bereits im Download-Bereich.
    http://www.roboternetz.de/phpBB2/dlo...gory&cat_id=16
    Hardware-Änderungen sind praktisch nicht notwendig, also auch Board Version 1.0 kann die neue Firmware nutzen! Beachten muss man nur den Hinweis mit den Widerstandsbrücken falls nicht alle 3 Sprachchips eingesteckt werden (siehe Doku).

    Mfg
    Frank

Thema geschlossen

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •