Need help with new SpeakJet
I have attached a pdf of the circuit I am working with at the bottom.
I recently bought the SpeakJet and I am able to get it to work in demo· mode setting the jumpers M0 to V+ and M1 to V+ but when I set M0 to V- and M1 to V+ (Normal mode) the speak jets ready LED is on but when I try to run the example code, it does not do anything. I'm trying to figure out if my custom board design is at fault, or if I am doing something wrong with the serial interface. I have Pin 15 of the stamp going to the SPeakJet's RCX pin and Pin 14 of the stamp going to D2 of the SPeakJet.
Do I need to set the baud rate? Are my serial connections wrong? I am not using the DB9 connector, I want to use the stamp pins of the Homework Board.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Mike
Post Edited (SN96) : 6/4/2006 1:32:03 PM GMT
I recently bought the SpeakJet and I am able to get it to work in demo· mode setting the jumpers M0 to V+ and M1 to V+ but when I set M0 to V- and M1 to V+ (Normal mode) the speak jets ready LED is on but when I try to run the example code, it does not do anything. I'm trying to figure out if my custom board design is at fault, or if I am doing something wrong with the serial interface. I have Pin 15 of the stamp going to the SPeakJet's RCX pin and Pin 14 of the stamp going to D2 of the SPeakJet.
Do I need to set the baud rate? Are my serial connections wrong? I am not using the DB9 connector, I want to use the stamp pins of the Homework Board.
' =========================================================================
'
' File...... SpeakJet_Demo.BS2
' Purpose... Serial Control of TIGERBOTICS SpeakJet Board
' Author.... (c) 2004 Parallax, Inc. -- All Rights Reserved
' E-mail.... [url=mailto:support@parallax.com]support@parallax.com[/url]
' Started...
' Updated... 30 JUL 2004
'
' {$STAMP BS2}
' {$PBASIC 2.5}
'
' =========================================================================
' -----[noparse][[/noparse] Program Description ]---------------------------------------------
'
' Connections:
'
' P15 ----> DB9.2
' P14 <---- DB9.8
' Vss ----- DB9.5
' -----[noparse][[/noparse] Revision History ]------------------------------------------------
' -----[noparse][[/noparse] I/O Definitions ]-------------------------------------------------
Tx PIN 15 ' serial out to SpeakJet
Rdy PIN 14 ' Ready in from SpeakJet
' -----[noparse][[/noparse] Constants ]-------------------------------------------------------
#SELECT $stamp
#CASE BS2, BS2E, BS2PE
T2400 CON 396
T4800 CON 188
T9600 CON 84
T19K2 CON 32
#CASE BS2SX, BS2P
T2400 CON 1021
T4800 CON 500
T9600 CON 240
T19K2 CON 110
#ENDSELECT
Inverted CON $4000
Baud CON T9600 + Inverted
Sync CON $55
' -----[noparse][[/noparse] SpeakJet Control Codes ]------------------------------------------
PA0 CON 0 ' pauses
PA1 CON 1
PA2 CON 2
PA3 CON 3
PA4 CON 4
PA5 CON 5
PA6 CON 6
Fast CON 7
Slow CON 8
Stress CON 14
Relax CON 15
_Wait CON 16 ' note underscore
Soft CON 18
Volume CON 20
Speed CON 21
Pitch CON 22
Bend CON 23
PortCtr CON 24
Port CON 25
Repeat CON 26
CallPhr CON 28
GotoPhr CON 29
Delay CON 30
Reset CON 31
IY CON 128
IH CON 129
EY CON 130
EH CON 131
AY CON 132
AX CON 133
UX CON 134
OH CON 135
AW CON 136
OW CON 137
UH CON 138
UW CON 139
MM CON 140
NE CON 141
NO CON 142
NGE CON 143
NGO CON 144
LE CON 145
LO CON 146
WW CON 147
RR CON 148
IYRR CON 149
EYRR CON 150
AXRR CON 151
AWRR CON 152
OWRR CON 153
EYIY CON 154
OHIY CON 155
OWIY CON 156
OHIH CON 157
IYEH CON 158
EHLL CON 159
IYUW CON 160
AXUW CON 161
IHWW CON 162
AYWW CON 163
OWWW CON 164
JH CON 165
VV CON 166
ZZ CON 167
ZH CON 168
DH CON 169
BE CON 170
BO CON 171
EB CON 172
OB CON 173
DE CON 174
_DO CON 175 ' note underscore
ED CON 176
OD CON 177
GE CON 178
GO CON 179
EG CON 180
OG CON 181
CH CON 182
HE CON 183
HO CON 184
WH CON 185
FF CON 186
SE CON 187
SO CON 188
SH CON 189
TH CON 190
TT CON 191
TU CON 192
TS CON 193
KE CON 194
KO CON 195
EK CON 196
OK CON 197
PE CON 198
PO CON 199
RO CON 200
R1 CON 201
R2 CON 202
R3 CON 203
R4 CON 204
R5 CON 205
R6 CON 206
R7 CON 207
R8 CON 208
R9 CON 209
A0 CON 210
A1 CON 211
A2 CON 212
A3 CON 213
A4 CON 214
A5 CON 215
A6 CON 216
A7 CON 217
A8 CON 218
A9 CON 219
_B0 CON 220 ' note underscore
_B1 CON 221
_B2 CON 222
_B3 CON 223
_B4 CON 224
_B5 CON 225
_B6 CON 226
_B7 CON 227
_B8 CON 228
_B9 CON 229
C0 CON 230
C1 CON 231
C2 CON 232
C3 CON 233
C4 CON 234
C5 CON 235
C6 CON 236
C7 CON 237
C8 CON 238
C9 CON 239
D0 CON 240 ' DTMF tones
D1 CON 241
D2 CON 242
D3 CON 243
D4 CON 244
D5 CON 245
D6 CON 246
D7 CON 247
D8 CON 248
D9 CON 249
D10 CON 250
D11 CON 251
M0 CON 252 ' sonar pin
M1 CON 253 ' pistol shot
M2 CON 254 ' WOW
EOS CON 255 ' end of string
' -----[noparse][[/noparse] Variables ]-------------------------------------------------------
eeAddr VAR Word ' address of speech element
element VAR Byte ' speech element / code
idx VAR Word
' -----[noparse][[/noparse] EEPROM Data ]-----------------------------------------------------
' SCP strings
NoPuMsg DATA "\0237J32H80NX", EOS
ClearBuf DATA "\0RX", EOS
ClearAll DATA "\08J0N1J0N11J0N2J0N12J0N3J0N13J0NX", EOS
AllOff DATA "\08J0N11J0N12J0N13J0NX", EOS
DialTone DATA "\08J0N1J350N2J440N11J18N12J18NX", EOS
' allophone strings
Defaults DATA Reset, Volume, 127, EOS
Welcome DATA WW, EH, LE, PA4, KO, AW, MM, PA5, EOS
SpeakJet DATA SE, PE, IY, PA4, KE, PA5, JH, EY, TT, PA5, EOS
Demo DATA DE, EH, MM, OWWW, PA5, EOS
Parallax DATA PE, Fast, EYRR, UX, LE, AY, AY, KE, SE, PA5, EOS
Basic DATA BE, EYIY, SE, IH, Fast, PA4, OK, PA5, EOS
Stamp DATA SE, TU, AY, EH, MM, PE, PA5, EOS
RobotSad DATA Reset, Bend, 0, Speed, 61, _B8, PA1, C9, PA1,
Reset, EOS
ParaPhone DATA Slow, D9, PA5, Slow, D1, PA5, Slow, D6, PA5,
Slow, D6, PA5, Slow, D2, PA5, Slow, D4, PA5,
Slow, D8, PA5, Slow, D3, PA5, Slow, D3, PA5,
Slow, D3, EOS
' -----[noparse][[/noparse] Initialization ]--------------------------------------------------
Setup:
GOSUB No_PwrUp_Msg ' no "Ready" prompt
' -----[noparse][[/noparse] Program Code ]----------------------------------------------------
Main:
FOR idx = 0 TO 1
LOOKUP idx, [noparse][[/noparse]Defaults, Welcome], eeAddr
GOSUB Play_String
NEXT
PAUSE 1500
FOR idx = 0 TO 1
LOOKUP idx, [noparse][[/noparse]SpeakJet, Demo], eeAddr
GOSUB Play_String
NEXT
PAUSE 750
eeAddr = RobotSad
GOSUB Play_String
PAUSE 3000
FOR idx = 0 TO 2
LOOKUP idx, [noparse][[/noparse]Parallax, Basic, Stamp], eeAddr
GOSUB Play_String
NEXT
PAUSE 3000
FOR idx = 15 TO 127 STEP 16
SEROUT Tx\Rdy, Baud, [noparse][[/noparse]Volume, idx] ' set volume level
eeAddr = Parallax ' say "Parallax"
GOSUB Play_String
PAUSE 500
NEXT
PAUSE 3000
eeAddr = DialTone ' simulate dial tone
GOSUB Play_String
PAUSE 4000
eeAddr = ParaPhone ' dial Parallax number
GOSUB Play_String
PAUSE 4000
GOTO Main
END
' -----[noparse][[/noparse] Subroutines ]-----------------------------------------------------
' Play a string of SpeakJet sound elements from EE. This subroutine
' uses flow-control to prevent sending elements when the SpeakJet
' buffer is full.
'
' -- put start of string in 'eeAddr'
Play_String:
DO
READ eeAddr, element ' get element from EE
eeAddr = eeAddr + 1 ' point to next
IF (element = EOS) THEN EXIT ' end? if yes we're done
SEROUT Tx\Rdy, Baud, [noparse][[/noparse]element] ' send element to SpeakJet
LOOP
RETURN
No_PwrUp_Msg: ' clears PU Msg assignment
eeAddr = NoPuMsg
GOSUB Play_String
RETURN
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Mike
Post Edited (SN96) : 6/4/2006 1:32:03 PM GMT


Comments
Play_String: DO READ eeAddr, element ' get element from EE eeAddr = eeAddr + 1 ' point to next IF (element = EOS) THEN EXIT ' end? if yes we're done SEROUT Tx\Rdy, $0054, [noparse][[/noparse]element] ' send element to SpeakJet LOOP RETURNI had to use $0054 inplace of the Baud variable and I used a different pin (#9). I also used just the RCX line and removed the Rdy wire. Not sure why this worked but it did.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Mike
·
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
OS-X: because making Unix user-friendly was easier than debugging Windows
Post Edited (SSteve) : 6/4/2006 3:01:45 PM GMT
straight 9600 TTL by default. RS-232 has inverted logic levels but this isn't RS-232.
Using RS-232 on the SJ without some sort of level conversion chip (DS275 comes to mind)
will probaby kill your SJ RCX pin!!! If that happens you'll really be in bad shape.
Please note that the spec sheet for the SJ declares a NEED for a resistor attached to
the RST (Reset) pin for proper operation. The same thing applies to M0 & M1. I know
the diagrams for minimal connections in the spec sheet for demo'ing the SJ do not show
any resistors but that's intended for testing. PLEASE HEED THE DIRECTIONS IN THE TEXT.
SpeakJet schematics I've seen use resistors with a value of about 4.7K-ohms (YELLOW-VIOLET-RED).
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-Rusty-
--
Rusty Haddock = KD4WLZ = rusty@fe2o3.lonestar.org
**Out yonder in the Van Alstyne (TX) Metropolitan Area**
Microsoft is to software what McDonalds is to gourmet cooking
I did not know that you needed a resistor for the reset pin as well as M0 & M1. I am going to revise my schematic to add resistors to these nets. Even though the SJ seems to work fine without them, I figure it's cheap insurance to add the resistors.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Mike
·
You betchya!!! Besides the spec' calls for 'em. Alas, they never say what value... :-|
If you've dealt with PIC processors before then keep in mind that the SpeakJet is really
just a preprogrammed PIC -- not some hotshot new piece of silicon. Pullups on the
event inputs would be considered a good thing too -- it keeps 'em from "floating".
Oh, it's been recommended that for Pin 4, place a small (~100-Ohms) resistor in series
with the pin to any input. Not necessary for operation but, since Pin 4 is the MCLR pin
(read "Master Clear") which is used when reprogramming PIC you probably don't want
some negative going spike to clear yer SpeakJet.
Have phun!
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-Rusty-
--
Rusty Haddock = KD4WLZ = rusty@fe2o3.lonestar.org
**Out yonder in the Van Alstyne (TX) Metropolitan Area**
Microsoft is to software what McDonalds is to gourmet cooking
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Mike
·
EEPROM of the SpeakJet. After that's been done use the MSA command to say GOTO PHRASE 'n'.
This boils down to sending two characters, a ASCII-29 followed by ASCII-n, where 0<= 'n' < 16.
So two characters to the SJ will get a phrase played. This phrase can 'call' or 'gosub' to another
phrase in EEPROM and come back to the previous phrase; upto 3-levels deep so you can chain
these critters.
It's easiest to use the 'PhraseALator' program to get your phrases setup. Otherwise, see
page 11 of the 7/2004 version** of the manual about writing phrases to EEPROM on the SJ.
Alas, I don't have any code but you might check the Files section of the SpeakJet group on
Yahoo -- there may be some code there.
Any questions, just gimme a holler.
** Sorry, I'm at work right now but I thought there was a newer manual around but I can't
find it. I could be wrong.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-Rusty-
--
Rusty Haddock = KD4WLZ = rusty@fe2o3.lonestar.org
**Out yonder in the Van Alstyne (TX) Metropolitan Area**
Microsoft is to software what McDonalds is to gourmet cooking
I will re-read the manual and see if I can get this going. I'll get with you if I can't get it to work.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Mike
·