Project: Make a Talking LCD using an ARDUNIO

Hi guys, i have a project to make a device like a google translate by using an arduino…


when we click the listen button it will pronounce the word.

and i want to make the device look like this:

and i want to using a keyboard to enter the text like this project:
http://makeprojects.com/Project/PS-2-You-LED-Sign/1069/1#s5677

My question is what device or IC that i should hv to make this project happen??, or is there any simpler board that more easier to do it??
i have already bought a:

do i need, Text to Speech chip for SpeakJet - TTS256 ( http://www.sparkfun.com/products/9811) this stuff or this The Emic Text-to-Speech Module (http://www.grandideastudio.com/portfolio/emic-text-to-speech-module/)to make it easier??

Capital letters and proper punctuation would be better than coloring the text.

The shield you have already has a text to speech chip on it. Why do you think you need another one?

and i want to make the device look like this:

With the bazillion wires all over the place? Why?

The shield link has a number of other links on it. Looks like making the shield talk is already done. All you need to do is get the text to speak, show it on the LCD and send it to the chip.

It sounds as if you're starting with English text but your voicebox will be expecting a sequence of phonemes, so you'll need something clever to work out how to pronounce each word. the Sparkfun tutorial just has a few words hard-coded in a local dictionary but that is a very limited solution. To do the conversion in a way that can cope with arbitrary words is going to be tricky, and the TTS256 you linked to seems like the sort of thing you need to do it. You mention Google Translate at the beginning. Is this box intended to do language translation too?

Have you found any examples showing how to connect a PS/2 keyboard to an Arduino? I guess that's using some sort of serial interface but I don't know any details about it. It might be easy to interface to, but if not then I remember seeing a USB hosting shield so I guess plugging a USB keyboard in would be straight forward. I don't know how the keyboard output is encoded over the USB, you will probably need a scancode-to-character conversion, but that is quite feasible.

Alternatively, you may find some kind person has already designed a keyboard that can interface to an Arduino directly.

PaulS: Capital letters and proper punctuation would be better than coloring the text.

The shield you have already has a text to speech chip on it. Why do you think you need another one?

and i want to make the device look like this:

With the bazillion wires all over the place? Why?

The shield link has a number of other links on it. Looks like making the shield talk is already done. All you need to do is get the text to speak, show it on the LCD and send it to the chip.

what i mean is not look like that actually.. what i mean is i want the device to function like that.. but i want to use a PS2 usb keyboard so that the user can enter the text and when user pressing "ENTER", the device will pronounce the text.

PeterH: It sounds as if you're starting with English text but your voicebox will be expecting a sequence of phonemes, so you'll need something clever to work out how to pronounce each word. the Sparkfun tutorial just has a few words hard-coded in a local dictionary but that is a very limited solution. To do the conversion in a way that can cope with arbitrary words is going to be tricky, and the TTS256 you linked to seems like the sort of thing you need to do it. You mention Google Translate at the beginning. Is this box intended to do language translation too?

Have you found any examples showing how to connect a PS/2 keyboard to an Arduino? I guess that's using some sort of serial interface but I don't know any details about it. It might be easy to interface to, but if not then I remember seeing a USB hosting shield so I guess plugging a USB keyboard in would be straight forward. I don't know how the keyboard output is encoded over the USB, you will probably need a scancode-to-character conversion, but that is quite feasible.

Alternatively, you may find some kind person has already designed a keyboard that can interface to an Arduino directly.

I think mayb i will try make this device to stick for English word only..

http://www.youtube.com/watch?v=JlrChxIr1uI

but in this video had show TTS256 need to interface with using a X-CTU to write the text.. is it possible if this TTS256 can run directly that means if we write it directly using keyboard and it will appear at the LCD and when press "ENTER" it will pronounce the word?.

this show how to use a PS2 keyboard by using the PS2 keyboard library http://www.youtube.com/watch?v=7Vg4dLGt40g

i forgot to mention that;

i try to make a device that we can enter the text by using a keyboard and the text will display at the LCD display. and we press an "ENTER" the device will pronounce the text that we had wrote in the LCD display.

and i want the device can be stand alone not by using a X-CTU to make it talk simultaneously.

P/S; Please correct me if i'm wrong

The page you linked to includes this link to an article explaining how to add the TTS256 chip to the VoiceBox shield. The TTS256 converts English text into a sequence of phonemes, and the VoiceBox shield has a SpeakJet chip that converts the phonemes to sound. It looks as if this covers everything you need to do.

Interfacing to a keyboard and display are separate problems, and the PS/2/You LED Sign article you linked to at makeprojects describes how to do those.

PeterH:
The page you linked to includes this link to an article explaining how to add the TTS256 chip to the VoiceBox shield. The TTS256 converts English text into a sequence of phonemes, and the VoiceBox shield has a SpeakJet chip that converts the phonemes to sound. It looks as if this covers everything you need to do.

Interfacing to a keyboard and display are separate problems, and the PS/2/You LED Sign article you linked to at makeprojects describes how to do those.

maybe the programing is the hardest part… T_T…
which one should i test first??

If you don't mind using multi-tap, you can save yourself from using a full keyboard. I have code and lcd keypad panel that can do multi-tap on a matrix keypad if you are interested.

jepang: maybe the programing is the hardest part.. T_T.. which one should i test first??

I suggest you pick a small part of the overall solution that you can get working without the rest of it. For example, you could probably ignore the keyboard for now and use the Arduino IDo to enter your text via the normal serial interface. There are examples showing how to do that. Then you could add your display hardware and update your sketch to display your message on it. Then add the speech hardware and update the sketch to output the string via the speech hardware. Then wire up the keyboard and figure out how to get characters from it, and update your sketch to use that as the inpuit source instead of the Arduino IDE. There are plenty of other sensible ways to approach it - it's up to you to divide the overall problem into a set of small problems that you can solve individually. You want avoid getting yourself in a situation where you can't show anything working until you have everything working, because it's extremely discouraging to have nothing to show for your efforts, and when it goes wrong (which it certainly will, at first) it will be very difficult to figure out where the problem is. So divide the overall system up into little bits that you can implement and test separately, and put them together once you know all the parts are working.

PeterH:

jepang: maybe the programing is the hardest part.. T_T.. which one should i test first??

I suggest you pick a small part of the overall solution that you can get working without the rest of it. For example, you could probably ignore the keyboard for now and use the Arduino IDo to enter your text via the normal serial interface. There are examples showing how to do that. Then you could add your display hardware and update your sketch to display your message on it. Then add the speech hardware and update the sketch to output the string via the speech hardware. Then wire up the keyboard and figure out how to get characters from it, and update your sketch to use that as the inpuit source instead of the Arduino IDE. There are plenty of other sensible ways to approach it - it's up to you to divide the overall problem into a set of small problems that you can solve individually. You want avoid getting yourself in a situation where you can't show anything working until you have everything working, because it's extremely discouraging to have nothing to show for your efforts, and when it goes wrong (which it certainly will, at first) it will be very difficult to figure out where the problem is. So divide the overall system up into little bits that you can implement and test separately, and put them together once you know all the parts are working.

is this what you mean???.. try by using a serial monitor first and then try to a real device..

:)

liudr: If you don't mind using multi-tap, you can save yourself from using a full keyboard. I have code and lcd keypad panel that can do multi-tap on a matrix keypad if you are interested.

Thanx for your help,i had visit your blog and i will try it.. but is there any basic step to write on the LCD by using a Serial Monitor as a keypad??

This following code, when loaded to your arduino, connect the phi-panel to arduino serial port, you will be able to get user input in multi-tap. The arduino actually doesn’t know the input is multi-tap. The phi-panel handles all that and arduino just sits there and receives the input. Just wire arduino pin 0 to phi-panel pin TX and arduino pin 1 to phi-panel pin RX. You don’t need the serial monitor. The panel will display your input.

Here is a video of the code running:

/*
Phi-panel serial sample program

Text entry with multi-tap keypad
----------------------------------------
Programmed by Dr. John Liu
Revision: 10/22/2011
All rights reserved.
----------------------------------------
*/

char in_char[16]; // Buffer to store incoming characters
void setup()
{
  Serial.begin(19200);
  delay(100); // Make sure the panel is up and running.
}

void loop()
{
  Serial.print('\f'); // Clear the screen.
  Serial.println("File name:"); // Print the question
  
  get_text(in_char); // Get text from panel

  Serial.println("You entered:");
  Serial.print(in_char); // Print out the user input.
  delay(3000);
} 

void get_text(char in_char[]) // Understands backspace and enter
{
  int i=0; // Input buffer pointer
  Serial.write(14); // Turn on multi-tap.
  while(1) {
    if (Serial.available()) {
      in_char[i]=Serial.read(); // Read in one character
      Serial.write(in_char[i]); // Echo key press back to the panel.
      if ((in_char[i]=='\b')&&(i>0)) i-=2; // Handles back space.
      if (in_char[i]=='\n') { // The \n represents enter key.
        in_char[i]=0; // Terminate the string with 0.
        Serial.write(15); // Turn off multi-tap.
        break; // This breaks out of the while(1) loop.
      }
      i++;
      if (i<0) i=0;
    }
  }
}