Jump to content
Sign in to follow this  
Mr.RC-Cam

9X R/C Tx Hack / Voice Recognition Project Blog

Recommended Posts

It's official, my 9x R/C transmitter now listens to me. And to my surprise it does what I say. Here's a chatty conversation I had with my 9x today:

So here's the story.

A few weeks ago I was looking for a headset to hack into my open9x R/C transmitter so I could privately hear its telemetry voice messages. Then as fate would have it I came across a Xbox headset on eBay that had a microphone. And that was my undoing since it taunted me to make a voice recognition interface for my 9x transmitter. So a simple 1-hour project became a much bigger ordeal! But now that it is working I can enthusiastically say that a 9x with voice recognition is a really cool hack.

First on the project list was to idenitfy some affordable voice recognition modules were available that I could interface to a Arduino. The $50USD EasyVR module is sold by a lot of shops and there's endless discussions about it. But I don't like following the crowds so I took a chance and ordered a $25 Chinese voice recognition module (sold by emartee.com and other China stores). This module was definitely a gamble since other than a video posted by a seller, there was zero internet discussions about it. I also purchased a Arduino Pro Mini CPU (they're only $6 on eBay).

While this stuff was on the slow boat from China the custom PCB was created. It has a audio amp for the headset and some audio conditioning circuitry to improve the microphone's performance, which helps eliminate false voice recognition hits. The voice recognition module can respond to five commands and from my experiments the success rate is very good.

Here's a photo of the installation:

post-2-0-45212400-1379038129_thumb.jpg

The graphic display at the top of the transmitter is a 128x64 OLED. These are about $15 from China/eBay shops. It interfaces to the Arduino using a i2c buss. The displayed images were created with Photoshop and then converted to bitmaps that were stored as data arrays in the Arduino code.

post-2-0-31906800-1379262918_thumb.jpg

I'm having a blast with the 9x's new voice recognition feature. If there is sufficient interest I'll publish the schematic and Arduino code. But creating useful documentation is a lot of work (and I have limited free time) so I'll need to see a good show of hands. So join the forum and post a "+1" to help motivate me to document the project's details.

  • Like 1

Share this post


Link to post
Share on other sites

Update: Here's the technical information on the Genie project.

Schematic: Genie_SchemA0.pdf

Please note that any component marked "N/A" is not used.

Software: Genie_Voice_Cmd.zip

This is an advanced project that requires strong electronics experience. Arduino programming skills are also required in order to customize the voice control features to the user's requirements. The PCB art files are not being released so be prepared to roll your own.

Sorry, but I won't be providing build instructions or customized firmware. But if there are any general technical questions then please post them in this discussion (DO NOT email or PM me).

Share this post


Link to post
Share on other sites

That IS amazing!

If I were more active in the hobby I would go for it just so I dont have to flick a switch to take photos. I take it that this is only for the 9X?

Terry

Share this post


Link to post
Share on other sites

I have to say that a 9x makes external servo signal integration a breeze. The Arduino sends a PPM signal through the 9x's trainer port and the 9x's mixing features are used to extract two needed servo signals for the flight control and photo functions. So the actual control signal integration is one wire. A good clue that your R/C Tx can do this too is if you have used a headtracker with it.

But in case someone wanted to use this on a R/C Tx (even an ancient design) that did not allow that kind of trickery there's a backup plan. If you look at the left side of the custom PCB you will see some unpopulated parts locations. There's a place for a digital pot IC (to emulate a pot-knob on the Tx) and also a optocoupler IC to act as an on/off switch. So as an alternative you could use the optocoupler to control a switch input on your R/C Tx to trigger the camera for photos. So as they say, there's an app for that. :)

Share this post


Link to post
Share on other sites

Good backup plan :)

So dose that mean you could interface with anything?

How many different commands can you do?

I wouldn't mind trying a voice command pan & tilt, down, stop, left, stop, photo :)

Terry

Share this post


Link to post
Share on other sites

So dose that mean you could interface with anything? How many different commands can you do?

You can control anything within reason, but you would have to customize the Arduino code to do what you need. This particular voice recognition module can process five commands, which was perfect for my Quadcopter's flight control features.

I wouldn't mind trying a voice command pan & tilt, down, stop, left, stop, photo

You could do pan/tilt and photo snapshots with five commands. But this would require three R/C channels, so the trainer port connection method (and a R/C Tx with flexible channel mixing) would be the most practical interface for the job.

Share this post


Link to post
Share on other sites

The voice announcements for each flight mode required some special "custom switch" logic in the 9x's open9x software. I had a working solution but it consumed all the custom switch resources. So I went to the experts at the opentx forum and they saved the day. The dialog exchange is here: http://openrcforums.com/forum/viewtopic.php?f=45&t=4227&p=60243

The solution that Mike provided is useful information for other flight controller applications. That is to say, anyone that is using a rotary knob/pot on their open9x transmitter to control several flight phases.

Share this post


Link to post
Share on other sites

Some additional discussion about the project is found here:

http://openrcforums.com/forum/viewtopic.php?f=84&t=4246

However, it would be ideal if all the technical questions are posted here so that the project details are all in one place. It only takes a few seconds to join the rc-cam forum so sign up today and join the discussion.

Share this post


Link to post
Share on other sites

I'm having a blast with the 9x's new voice recognition feature. If there is sufficient interest I'll publish the schematic and Arduino code. But creating useful documentation is a lot of work (and I have limited free time) so I'll need to see a good show of hands. So join the forum and post a "+1" to help motivate me to document the project's details.

+1 ;)

Here are a few questions I have:

1. for the Sky9x board which already has an excellent audio/amp circuitry, can this be utilized/integrated and simplify the design of the PCB board?

2. Sky9x already has SD voice files and more can be added. Can this VR/arduno utilize the voice files on the SD?

3. in open9x forum there is some discussion about using the BT for audio and that can be easily implemented with

this: http://www.ebay.com/itm/180878952260?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649

and this: http://www.ebay.com/itm/Stereo-A2DP-Bluetooth-V3-0-Music-Headset-earphone-Sports-Bundel-for-iPhone-5-4S-/111113265367?pt=LH_DefaultDomain_0&var=&hash=item19dedde0d7

since the BT headset is a stereo headphone and speakerphone, can this BT thing be integrated into the VR?

It would be so cool to have wireless stereo audio and VR with one simple BT connection. :)

by the way, this is my spker holes for 9x, very inconsipicuous while makes the audio really stands out:

post-24975-0-94977300-1380775510_thumb.j

Share this post


Link to post
Share on other sites

Thanks for +1 on the project.

Feedback:

1. That could be possible. But I don't have a Sky9x board to try it on.

2. The 9x's spoken messages are activated by Open9x's custom switches. Any voice file you want can be used. The flight mode messages heard in the video were created just for this project.

3. A wireless headset with an interface that connects like a common wired connection should work. But keep in mind that the microphone (and its physical position to the user's mouth) is important. In the end, selecting any headset will require "buy and try."

BTW, the name of the Voice Control board is Genie. But instead of only granting 3 wishes, this Genie gives you 5. :)

Share this post


Link to post
Share on other sites

hmm, I was looking at the voice module with more detail. what signal does the Vmodule gives out? It says can store 15 commmands. Once it is programed by the arduno, If we can convert these 15 commmands to a signal acceptable via I2C,Sky9x board has tons of I2C port not used yet. I wonder if we can just link the Vmodule directly to the I2C input, and MikeB can write (or beg him ;) ) some codes (like V1-V15 voice switch) for Sky9x to accept codes from I2C. Then it would work. right?

I know. Too little electronic knowledge to deal with this. But I think it can be done fairly simple?

Share this post


Link to post
Share on other sites

Here is the data sheet to the module I used. It has all the details to using it:

https://docs.google.com/file/d/0B2_rhDNAxM4sLWdWM1Y3YmI1bjA/edit?usp=sharing

As explained in the Introduction paragraph, it can store 15 command words. They are organized in 3 groups of 5 commands. Only one group can be active at a time and each group (1-3) has their own 5 control words that YOU record. The words are speaker dependent.

In my implementation the user can change the group by a pressing a switch during 9x power-up. They can also record the group's command words using this switch. The process is managed by text instructions displayed on the OLED.

The interface is serial (5V TTL RS232). This is not the same as i2c. When a command word is matched by the module it sends a serial message to the Arduino. Then the code on the Arduino determines which command (1-5) was recognized and it changes the PPM servo pulse that is assigned to the flight mode. My best analogy is that it works like the mechanical 5-position flight mode switches that others have installed on their 9x. But in this case you speak instead of turn a knob to change the flight mode.

Share this post


Link to post
Share on other sites

+1

Will follow this intently. Looking forward to more info. Thanks for your effort. Currently have an el-cheapo IR quad that responds to 16 voice commands. Really looking forward to do this with my 9X.

Share this post


Link to post
Share on other sites

an you get in touch with me please, regarding voice control

Hello Roger, I replied to your PM back on Dec 16. Please check your forum inbox.

Share this post


Link to post
Share on other sites

awesome work!!! have you used it for flying yet ? great feature to keep your eyes in the sky instead of on your transmitter ;)

wonder if their would be a wider rage board capable of more command storage? Now I'm hooked LOL :D

time to do some Google searching!!!!!

P.S. Glade i ran across this forum so i could tell Roger that his plans for his Taranis radio is very close to reality hope you can help him out !

thanks

Tom.R :)

Share this post


Link to post
Share on other sites

Yes, I've used it and it is an attention getter. However, the prototype was installed in my FlySky 9x and so flying with it required swapping out the Frsky Rx in my Quadcopters. I don't trust flying with a FlySky Rx, so I will pull the voice hardware out so I can move it to my upgraded FrSky 9x. The voice feature will get reinstalled when some free time comes up.

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
Sign in to follow this  

×