After extended review and tinkering I was able to cobble together a small circuit that I could use to send data to the Speakjet. Once again the datasheet was an absolute must have at this stage. Following the schematic closely is what lead to my ultimate success.
Simple Serial Interface
For the initial test I did not use any flow control so I was limited in the amount of data I could send to the Speakjet at one time. To facilitate the serial data coming into the device, I used an FTDI USB to serial TTL level device. This is basically a serial port to the computer and would be configured as such at 9600 bps 8,N,1. This modest setup can be viewed below.
My Version
I also added an O-Scope to monitor serial data coming out of the FTDI device.
On the software side I used the Phrase-A-Lator software available at the Sparkfun website to test things out. This is a good piece of software to get you up and running. It also provides an excellent work environment to figure out what codes to send to make what words.
Below is a small video I put together that demonstrates a successful test of the serial interface.
Now that I was certain that I could successfully get data into and spoken by the Speakjet, it was time to tackle the flow control issue, so that large phrases could be spoken without any pause. This was as simple as hooking the Clear to Send (CTS) pin of the FTDI device up to the Buffer Half Full pin on the Speakjet.
Looks like Pin 15 to me
Once that was complete, long phrases and even singing was achieved.
Next on the list is to get a Text to Speech chip so that real words instead of codes can be submitted to the circuit. Also hooking things up to another type of computer.
About a month ago a friend had emailed me the following, “I have a box of junk with a Roomba in it, if you don’t want it, then it’s going to the dump.” Not wanting to see a piece of technology much less a piece of robotic technology be carelessly thrown to the scrap heap I agreed to take it off his hands. His warnings included that the battery was dead and that he wasn’t even sure it worked or not. I requested that he include all the parts he could find, and I would pick it up when we met for lunch the following Friday.
Friday rolled around and I was anxious to have lunch with a few friends as well as get my hands on the discarded Roomba. After a fine lunch consisting of a Dandan Noodle Bowl at PeiWei, we walked over to my friend’s car to get the goods. The Roomba was indeed old and had appeared to have had something spilled on it at one time or another. The box he gave me contained a Roomba, a charging station with cable, an artificial wall, and a remote control. SCORE, it looked like a complete set. I took everything home and did some research.
Serial number in battery compartment
I thumbed through some pictures to get a rough idea of what model I had. It would appear that I had either a RoombaDiscovery or Sage. I managed to find a model number in the battery compartment and it looks like it is a model 4110 which is a Roomba Sage. I cleaned everything up and attempted to charge the battery with poor results. However the unit held enough charge to let me know that it indeed booted up and was at least semi functional. This provided me enough faith to invest in getting a new battery. A quick trip to eBay and twenty dollars later had me waiting around for the new battery to arrive.
OSMO II Upgrade Unit
Until then, I just had to wait. In the meantime I tried to clean things up as best as I could, and do some additional research on what it could actually do, minus vacuuming the floor. As it turns out the newer Roombas, post 2005, are equipped with an SCI (Serial Control Interface) called ROI (Roomba Open Interface) which allows a person to query and send commands to the Roomba via a small port. Models manufactured before 2005 had all the necessary hardware but lacked the proper firmware that included the ROI. A little sleuthing on the web and a check of the serial number showed that I had a model manufactured in September of 2004. The Roomba I have, has the hardware but lacks the firmware. So once the battery comes in and everything checks out I will have to either purchase or rent an upgrade unit. Unfortunately the upgrade units are in severely depleted supplies and are nowhere to be found but luckily I managed to get a hold of someone online who is willing to rent me his. I find it a bit ridiculous that an upgrade unit is needed seeing as how the serial port on the Roomba is just serial TTL data and with the right programming I bet a regular computer could load the necessary firmware, but then I guess iRobot would not be able to make money that way.
Battery day finally arrives, and I follow all the directions very carefully. Put in Roomba, charge Roomba for a day, then use. Once all that happens, I fire it up for a test, keeping my fingers crossed. The video pretty much tells it all. Yup, this one is crippled. Time to do some diagnostics. Luckily the same fella that offered to rent me his upgrade unit sent me a Roomba Service manual that detailed how to test and disassemble a Roomba. In the video above you can see when it finally gives up, it audibly alerts me with an "Uh Oh" code of four beeps. The manual says that there is a drive motor problem, but not much else. I can tell the right wheel has the issue just by watching it.
To narrow things down further I invoked the built in set of twenty-one test procedures by executing the following:
Put Roomba into built-in-test mode: 1. Power Roomba OFF by pressing the POWER button. 2. Hold down the SPOT and CLEAN buttons. 3. Power Roomba ON by pressing the POWER button. 4. Keep holding down the SPOT and CLEAN buttons for about 0.5 SECONDS until you hear a series of ASCENDING BEEPS and the user panel LEDs start flashing.
For AUTO-ADVANCE mode: 5. Release the SPOT and CLEAN buttons.
For MANUAL-ADVANCE mode: 6. Continue holding down the SPOT and CLEAN buttons for a total of 3 SECONDS until you hear a second series of DESCENDING BEEPS. 7. Release the SPOT and CLEAN.
I opt for the manual-advance mode so I can go at my own pace and stop the tests when I encounter an issue. As suspected the tests for the right wheel drop sensor failed. I am at the point now where I will need to open things up to take a look under the hood.