Jump to content
Mr.RC-Cam

9X R/C Tx Voice Hacks / Speak-9X Interface Project Blog

Recommended Posts

The DiY R/C community has been doing some fabulous things with the low cost Turnigy/FlySky 9X R/C transmitter. They continue to make improvements and add useful features. It did not take long for a talented 9X developer to add a sophisticated voice (speech) feature. So of course I had to jump in and make mine talk too.

Here's a video example of the 9X voice feature that I found on YouTube:

The voice feature is based on a very low cost MP3 sound module from China. The speech segments are stored on a SD memory card. All the details to the 9X voice mod are published here:

http://9xforums.com/...c.php?f=5&t=948

EDIT/UPDATE: I have some new MP3 Sound modules (with SD memory card) that can be used in the 9x voice project explained at the 9xforums. The special offer is posted here:

If you are not familiar with the various efforts on modifying the 9x transmitter then I suggest you review my earlier 9X hack blog. This will allow you to see the sort of things you should do before adding the voice feature:

http://www.rc-cam.co...827-er9x-hacks/

Now that all the background details are out of the way we can talk about the custom voice board (which is named Speak-9x) that was created for my 9X transmitter. First, here are some things I wanted it to do.

  • Voice interface (based on MikeB's published information)
  • LM386 Audio Amp (for higher audio volume)
  • Haptic Motor Driver (alert vibrator)
  • LED Backlight Driver (with constant current source)
  • Piezo emulation to support a variety of alert tones for playback on the voice speaker (and eliminate the stock buzzer)

After the schematic's details were finalized a custom PCB was designed. The final chosen layout was a three board set (main board plus two optional feature boards). The main board is designed to mount on top of the 9X's CPU board in the lower left corner of the case.

Here's the simulated 3D view of the board set:

After the CAD files were finished (early August) a small batch of PCB's were ordered. Yesterday FedEx delivered them and in short time my R/C Tx was talking to me. And it sounds awesome.

Now for some photos. This is the Speak-9X board installed in the 9X transmitter. You can see that the memory card can be removed/installed through a slot that was added to the 9X's plastic case.

post-2-0-45195900-1346196868_thumb.jpg

.

Edited by Mr.RC-Cam
Added note about MP3 Module offer.

Share this post


Link to post
Share on other sites

The Speak-9X board can be built as a basic design without the LM386 audio amp. This version works well and the audio quality is excellent. It supports the LED backlight and Haptic motor features, but will require a separate piezo beeper for the alert tones. I think this version would satisfy 95% of all 9X users.

Here's the "bottom" view of the basic board. The components are SMD (surface mount):

post-2-0-11939700-1346197141_thumb.jpg

Here's the "top" view with all the connectors for the new interconnect cables and the MP3 audio module:

post-2-0-04579000-1346197232_thumb.jpg

When the PCB is installed in the 9X a 2mm thick soft foam pad is placed in between it and the 9X's CPU board to act as an insulator. I could have used hardware spacers but this method works fine. It requires no screws because when the 9X's back cover is installed the Speak-9X board's tight fit keeps everything from moving:

post-2-0-67992600-1346197471_thumb.jpg

.

Share this post


Link to post
Share on other sites

The Advanced Version of the Speak-9X board has a LM386 audio amp. This provides louder voices and allows for the piezo tones to be played through the voice speaker.

Of course it requires a few more parts for the amplifier. Here's a bottom view:

post-2-0-47994800-1346198030_thumb.jpg

Here's the top view that shows the various connectors:

post-2-0-22397000-1346198112_thumb.jpg

The top view shows the transformer board that is needed when the LM386 is used. Also seen are the two POTs for setting the master piezo volume and voice volume levels. After these are set the voice volume can be controlled by software in a 9X menu.

Here's a view of how the MP3 audio module and audio transformer are mounted on the Speak-9X board (header connectors plug into mating sockets to allow for easy disassembly):

post-2-0-28930700-1346198298_thumb.jpg

In the photo you can see a capacitor was added to the audio transformer board. This last minute change required a simple copper trace cut and then the cap was soldered in place. Little fixes like this are common on new PCB designs to solve unexpected issues.

Share this post


Link to post
Share on other sites

The optional Haptic motor mounts on a small PCB. There's a suppression diode for EMF protection. Here's where I mounted the vibrating motor using two screws:

post-2-0-58690300-1346198936_thumb.jpg

I found a nice speaker at Mouser.com that fits like it was designed for the job. Sounds good too:

post-2-0-61175700-1346199013_thumb.jpg

That's all there is to it. If you see any useful ideas in the photos for your customized 9X hacks then feel free to use them!

Share this post


Link to post
Share on other sites

Here's the schematics. There are two versions, basic (no amp) and advanced (with amp).


Basic Version (no amplifier / no Piezo emulation):

Voice9x_basic_A1.pdf

Voice9x_Basic_BOM.pdf

The ER9x or Open9X software you install should be configured for Beeper (or PiSpeaker if you've installed a Piezo) and Voice.


Advanced Version (with amplifier and Piezo interface):

Voice9x_adv_A1.pdf

Voice9x_Adv_BOM.pdf

Here is a photo that shows where to find the 9X's Piezo signal (green wire goes to J1-6 on the schematic):

post-2-0-67675500-1346267969_thumb.jpg

The audio transformer (T1) is not mandatory. It is used to remove a soft click noise that occurs before and after each voice transmission. But if you don't mind the click (it is hardly noticeable) then you can omit the transformer and R7. In their place you will need to install some additional resistors, as follows:

R3: 10K ohms

R5: 22 ohms

R6: 2.2K ohms

With the Speak-9x's Piezo emulation you will now hear the alert tones in the voice speaker. So the 9X's stock buzzer must be removed. The ER9x or Open9X software you install should be configured for Piezo Speaker and Voice.

.

Edited by Mr.RC-Cam
Updated schematics, Rev-A1. Added BOMs.

Share this post


Link to post
Share on other sites

Keep in mind that you don't have to get fancy like I did. The Perfboard version discussed in the 9Xforums should do just fine. Your 9X wants to talk too, so heat up the soldering iron and get to it!

Share this post


Link to post
Share on other sites

Thanks for the nice comment!

More tips:

1. The 9X's vent slots for the speaker are minimal and I think more would be better. So before installing the speaker I drilled some extra holes at the speaker vent.

post-2-0-37468200-1346425549_thumb.jpg

My other 9X Tx has the FrSky telemetry mod. So there's a extra PCB at the speaker area for the binding switch and status LED. This was in the way of the speaker, but fortunately everything fits. Unfortunately I used a different speaker and it sounds horrible. So I plan on ordering another Mouser speaker like I used on the previously Mod'd 9X because it sounds much better.

post-2-0-81064300-1346426377_thumb.jpg

I'm using a 1GB microSD memory card in a SD card holder. I find that inserting the little microSD is less fussy than inserting a full size SD card. This prevents losing the memory card inside the case during card insertion.

post-2-0-80172000-1346431331_thumb.jpg

Regarding SD Cards, I suggest a 1GB card (nothing larger). Card speed is not critical since this is a low speed (audio) read-only application. If you don't have one of these in your junk drawer then they are on eBay for about $4 shipped. If you try a >2GB card then keep in mind that it MUST be formatted to the required FAT16; Unfortunately WIN7 will fight you and use FAT32. So be prepared to deal with that. I prefer to use a $4 1GB memory card since it will cheerfully accept FAT16 formatting.

.

Share this post


Link to post
Share on other sites

Hi Thomas,

Lovely job as usual. Do you have any spare sets of boards for sale.

Have built on perf board but would like to use the neat job you have done.

Thanks

Les

Share this post


Link to post
Share on other sites

I don't have many spares, but don't mind helping out. The blank PCB set would be $12 USD (plus shipping costs). Of course there's no formal documentation, just the schematic and the photos you see here. I can post a bill-of-materials next week to help you purchase the parts (I recommend Mouser).

But before we proceed, I ran into a problem today. So it would be best to hold off until I find out what is going on. I won't be available to work on solving the problem for a few days. But in the meantime maybe you can help since you have built a board from Mike's schematic.

Here's the issue. Things seemed to work well when I was testing Mike's beta ER9X voice software (but I had the same voice related bugs reported by many other users). Today I loaded Bertrand's Open9X-r1331 code and it does not work correctly. It might be my hardware design so I don't want to bother Bertrand until I thoroughly investigate it.

The problem is that the voice sentences run past the end and either speaks about a second of another voice segment or makes a short noise (which may actually be a slice of another voice segment).

Also, when I program a switch to play a voice it does not play correctly. For example, I programmed the gear switch to say a sample voice. When the switch is activated it does not say anything. When I turn off the gear switch the MP3 module now plays the voice sample one time (plus one second of another voice segment). I think that it should actually play the voice sample, and repeat, when the gear switch is on.

So, if you don't mind, here's what you can do. Please load R1331 (Aug-31) open9x-stock-audio-voice-haptic-ttsen-en.hex (or open9x-stock-frsky-audio-voice-haptic-ttsen-en.hex). Then check to see if the voices are correct and do not have part of another voice sentence appended to them. Also, program the gear switch to speak a voice sample and test it out. I believe it should speak the sentence, and repeat, when the switch is turned on. So if you can confirm what you get with the new R1331 code that would be great.

Share this post


Link to post
Share on other sites

Hi Thomas,

Thanks for the reply, if you could spare me a board set that would be great. Sorry i cant help with the Voice just yet. Ive only just

finished it and it is yet to be installed. Maybe quicker to post, presently i dont hear any comments, but its early days.

Les

Share this post


Link to post
Share on other sites

Too bad you don't have your DiY voice board installed. It would be good to confirm that the new software is not the problem. Please be patient, I'll get back to my troubleshooting later next week.

Kilrah -- any chance you have Mike's voice mod on your 9X? If you do, it would be awesome if you would try out Open9X version R1331 and report back if it works correctly (or if you experience the issues I mentioned).

Share this post


Link to post
Share on other sites

Thomas,

I managed to temp connect my Module and flash to 1335 for openx but could not get any sound. Thought my module was not working.

Then thought i would try er9x and Battery Low message, sign on message all are ok.Only plays one message.

So not sure if Openx is ok. Sorry i cant be any more specific.

Les

Share this post


Link to post
Share on other sites

No, I don't have the mod. It kind of exceeds the amount of mess I'm ready to put in my TX ;)

I'll wait for the FrSky radios for that functionality :)

Share this post


Link to post
Share on other sites

Hi thomas,

I posted a message re sound on module/open9x and one guy reported all was ok.he didnt elaborate as to what prefs he had set

Les

Share this post


Link to post
Share on other sites

Thomas,

I have just tried to use the english file and i find when i power up and i get the throttle warning, im getting a small portion of another one.

The guy i mentioned was using czec language. Trying to check with his file but cant d/l yet.

Will keep trying and post u.Suspect your module is ok.

Les

P.S was able d/l czec and it was ok. Even though i cant understand it. It does only repeat with a defined gap. Wheras the

english one has two gaps before repeating.

Have asked Bertrand to check it.

Edited by iwik

Share this post


Link to post
Share on other sites

Hi Thomas,

It looks like the sound file that can be d/l via Companion9x for Open9x is corrupt.

I had some one provide me(1361 sound file) which plays perfectly.

If u go to Open9x sub group of 9xforums you will find the files attached to my post

and the files were supplied by mhotar.

I programmed the gear switch and my one says the message and repeats till switched off.

After switching off it repeats a couple of time before it stops.

So currently have latest Open9x flashed with 1361 sound files on sd card.

Sorry its taken so long but had to find everything.

I think your hardware is ok.

Les

Share this post


Link to post
Share on other sites

Thanks for all the help! I will check out the new sound file and report back. I'm still buried in work related stuff but hope to get back to the project sometime this weekend.

Share this post


Link to post
Share on other sites

I tried the new sound file and it solved the voice run-on issue. Thanks for the heads-up on the new file release.

I'm still having problems with the programmed switch test; In case it is a software issue I've posted the details at the Open9X forum. But the problem may be on my end so I plan to check out my circuitry too (hopefully this weekend).

Share this post


Link to post
Share on other sites

I found the source of the problem that is related to the programmed switch test. My transistors are FET's so they are slower than the ones used in the voice developer's circuit. The 9X voice software only allows a few hundred nanoseconds for the MP3 module's /Busy signal read cycle, but my FET's need at least 3.5uS.

The FET array's package/pinout is a SOT-363-6 (micro sized SMD) so it may take a miracle to find the same package with faster transistors (I will look for one). In the meantime I made a little adapter board with fast BJT transistors that works with the existing software. It's not pretty but it solved the /Busy read problem and the programmed switch test now operates correctly.

However, while checking things out I noticed that voice sentences were sometimes (intermittently) missed. A review of the clock/data from the voice interface's 74HC574 revealed a communication timing problem which causes some CPU->sound commands to be ignored by the MP3 sound module. With the existing software the MP3's clock and data are synchronized (0uS setup time / data and rising edge of the clock change together). But for reliable MP3 module operation the data must be stable BEFORE the rising edge of the clock.

The sample code from the MP3 module supplier shows they used 50uS for the data setup time and 50uS for its hold time. There is also a 1-2mS wake-up condition that is expected by the MP3 module that appears to be missing. Both of these issues are likely the reason for the intermittent sound sentences. So the 9X voice code should be changed to follow the supplier's recommendations. I've reported the clock/data timing issue to the Open9X developer (Bertrand). I hope that my information was understood because this is a software issue that needs help from the 9X software experts.

So on a positive note my slow transistor choice helped to find a software timing problem that can affect other users. My FET problem (which is unrelated to the clock timing issue) can be fixed in software too. But I don't know if that is something that the developer will want to do. Fingers are crossed he will help out so I can avoid an ugly hardware mod.

Edit: I found a BJT transistor array to replace the FET (drop-in swap) and I ordered a couple to try out. I have not heard any comments from the developer regarding the clock/data timing problem, so nothing new to report on that issue just yet.

Edited by Mr.RC-Cam
Found possible transistor sub.

Share this post


Link to post
Share on other sites

Hi thomas,

Thanks for the update. Yes have been following your Thread and will see if he wants to modify his software.

I had been researching a drop in replacement for the fets and came up with a BC847BPDWIT1.is this what

you had in mind. Curious as to know why u didnt go with a Transistor package like the one i mentioned.

Thanks again for all your hard work and keenly interested in how the drop in NJT work.

Les

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×