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.
https://www.roboternetz.de/phpBB2/dl...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
Lesezeichen