Introduction: Bluetooth SNES Controller for Android

So this is my first instructable...

A little over a year ago I was working on my ECE senior design project, which was a bluetooth SNES controller for Android.  Shortly after completing the project, I posted a working video on Youtube.  Since then I have received quite a few requests for more info or even a tutorial on how to make one.  I figured I had put it off long enough, and now I finally got a video together.

I apologize in advance for the sub-par production value (I'm no Ben Heck), it was literally my first exposure to iMovie, and I'm sure it shows.  It also is a bit on the long side at about 35 minutes, but I wanted it to be detailed enough that just about anybody would be able to build a controller.  Also, if the whiteboard discussion wasn't clear for you, don't worry...you can just use my arduino source code, I just thought it would be useful for those who are interested.

Here is the source code for the Arduino, along with my Easymote app from the tutorial (you won't find it on the market)
Arduino source: http://www.box.com/s/nt7nr3trnv4dzjm8nvk5
Easymote apk: http://www.box.com/s/sc96b9xah987qlrdmkh8

Here is a video showing my battery operated controller along with playing some Donkey Kong and Zelda on my Touchpad, unfortunately my rechargeable controller was built for a contract and I no longer have it:
 

 
If you are looking to internalize the components I have done so with both AAA batteries and also with a rechargeable lith-ion battery from a nintendo DS.  For the lith-ion battery you will also need a charging circuit (look at sparkfun.com), and for the 4xAAA battery method I also had to use a voltage regulator.  The lith-ion was 850mAh and lasted about 12 hours, the 4xAAA batteries make it over 30 hours.

Other parts:

Bluetooth module: MDFLY module - http://www.mdfly.com/index.php?main_page=product_info&cPath=&products_id=769&zenid=sas6sak8bq57hgr5e4cgrg6ac7
OR BlueSMiRF module - http://www.sparkfun.com/products/10269

Microcontroller: if you have the UNO Dev board - http://www.sparkfun.com/products/10524
OR the mini pro - http://www.sparkfun.com/products/11114

SNES Controller: Either buy an original on Ebay or a knockoff for ~5 bucks online

Also some benefits to making this controller:
1) No need to root your phone/tablet to use the controller
2) Fairly portable in comparison to the wiimote with controller attachment 
3) Look like a BA while playing super mario

Enjoy!!

Comments

author
Artixvon01 (author)2015-08-09

i'm new in electronics but this project interest me. I already have an arduino and the bluetoith module and other parts. but my problem is I don't understand where pin to connect the bluetooth module.

author
JohnyAllen (author)2014-05-08

author
Sme11sLikeSatan (author)2014-01-11

For some reason easymote app is keeps giving me a stopped responding message. I assume this is because I am running 4.2 jelleybean as opposed to ice cream sandwich. Is there a fix or another program I can use to get my controller up and running as an input method. Thanks!

author

I am on an S4 BTW

author
mmrakozy (author)2012-04-22

Does it only work with android?

author
foxwater (author)mmrakozy2012-04-22

Well the instructable works for android only, but I did also make a Windows app that showed it could work on a PC too.

author
firehawk23 (author)foxwater2013-05-07

I'd be interested in the windows app as well. I have the bluetooth controller built and would love to be able to use this on PC as well as my Android device.

author
foxwater (author)firehawk232013-05-07

Unfortunately I wasn't ever able to track down my visual studio project for the windows app, I remember it wasn't too difficult though. I just used the built in .NET bluetooth libraries to communicate with the controller, and had the controller button presses trigger keyboard events (much like we do for the android app), then in the emulator just make sure the keyboard keys correspond to the correct actions. I might have had to fiddle around with the meetandroid library for the arduino end too I can't really remember. Also, make sure the BAUD rate matches the 57.6k. If that is a path you decide to go down I could do my best to answer any questions you might have along the way.

author
purpulhaze (author)foxwater2012-12-30

Do you have info posted for the windows app?

author
foxwater (author)purpulhaze2012-12-31

Unfortunately I don't, but I might still have the Visual Studio project somewhere, if I find it I'll try and post it.

author
mmrakozy (author)foxwater2012-05-13

thanks!

author
stevenbrimer87 (author)2013-04-22

https://www.sparkfun.com/products/11114

https://www.sparkfun.com/products/10401

http://www.mdfly.com/index.php?main_page=product_info&cPath=&products_id=63

i got mine to fit inside, i had to dremmel some of the plastic out

author

https://www.sparkfun.com/products/341

author
stevenbrimer87 (author)2013-04-22

btw, you can't get rid of the constant stream of blank messages, this lets the android device know that the bt connection is still good. I tried and easymote kept crashing,

author
Spondee (author)2013-04-12

Yea I'm having a few issues with the easymote app and could probably use a look at the source myself. It's outputting to the amarino monitor just as in your video and it seems to connect with the easymote app but when I try to change the mapping it doesn't react to button presses. I've used an AT&T Note 2 (4.1.2) and a Transformer TF700 (4.2.1). I've also struggled with it crashing sometimes.

author
Subtle (author)2013-03-11

Would you mind releasing your EasyMode app source? I'm doing a similar project but with a Gamecube controller and I'd love to see your take on the app. :)

author
foxwater (author)Subtle2013-03-20

Hey, its been awhile since I've pulled up that project, let me see if I can track down that code...if I can I'll post a link to the project here.

author
sbeckstrand (author)2013-03-08

I'm using a Nano arduino for this. Are the pins the same for the clock, latch and data?

author
foxwater (author)sbeckstrand2013-03-09

Yeah they should be as long as your using my arduino file

author
KarasuZero (author)2013-01-05

Hi, I've followed this and got the controller up and running on my phone but I have a problem with Easymote on my tablet (Asus transfomer tf300). Easymote crashes after selecting it in the "Change Input Method", any idea on how to fix it? Thanks

author
foxwater (author)KarasuZero2013-01-07

It's tough to say really, I haven't tested it with anything other than a few phones and my hacked touchpad tablet. So far I haven't had any problems with any stock version of Android, but it could be having an issue the the Asus specific flavor of Android. I'll try to look into it a bit when I get a chance.

author
foxwater (author)2012-12-31

Sorry for the delayed response, but you'll need a microcontroller (like and Arduino) between the BT board and the SD card reader.

author
firehawk23 (author)foxwater2013-01-06

I decided to go with the Arduino Mini instead, more discreet. I'm guessing the Arduino can handle charging as well? Is the programing going to remain the same? The chip type doesn't change just gets smaller. Let me know if I'm off base of any of this.

author
foxwater (author)firehawk232013-01-07

It's true that the chip type is the same (should just be the super small factor ATMEGA328), what do you mean by handle charging though?

author
purpulhaze (author)2012-12-30

Nice Work! Going to use this info to help make one for my htpc as I'm using xbox 360 controllers with my Nintendo emulators but it just doesn't feel right.

author
foxwater (author)purpulhaze2012-12-31

Thanks! good luck with your project

author
firehawk23 (author)2012-12-04

I had a crazy mad scientist thought: Would it be possible to add a microsd card slot in the gamepad? This way where ever you go you have all your data with you.. I'm not finding anything on it, so I don't think anyone's done it before. Also, I plan on using a li-ion batt pack. What do I need to charge it and would it be possible to make it a data port as well? I know I'm dreaming of the moon here, but I always dream big.

author
foxwater (author)firehawk232012-12-04

Well let me start by saying that I think that is an awesome idea, especially if you just loaded the card with emulator games. To answer your question though....yes, it would probably possible...to an extent. I don't think (not positive) it would be possible to play the game files directly from the sd card over the bluetooth connection. But, what you could do is read the files on the sd card from your phone, and select one that you would like to play/use, copy it over to your phone's internal memory, play/use it, and delete it from the phones memory when your done.

This might be quite the undertaking though, and I would have to look into it further to really know exactly what it would take.

As for the charging part:
https://www.sparkfun.com/products/10217
That should do the trick, just make sure the battery you use matches the specs of the charger. Unfortunately, you can't use it as a data port though.

author
Gomex19 (author)2012-03-21

When i saw that this was recently posted i got excited becuase that usually means that your a little more willing to help. ive been looking for a bluetooth controller for my LG Thrill 4G and finally decided to make one. ive always been into tinkering and almost bought a cheep bluetooth controller and took it apart to put inside a old controller but then saw this video and just finished watching the whole thing. although ive never used an arduino i have used processing which it uses the same programing style so i can understand the code. i saw that on the Youtube video you posted the code which helps a lot and also the easymote app which is an awesome design btw, dont worry about the look.

so to get to my point. i want to copy every move you made except i want it inside the controller. i understand it will be a little more work but ill give it a shot. also if you could help us all one more time with a nice "Shopping list" of the hardware and software needed for the project that would be awesome. Thanks a lot man!

author
foxwater (author)Gomex192012-03-21

Hey man, I'll try to get some parts posted on here, and if I can figure out how to embed some photos on this thing I'll get some pics up from the inside of the controller. Thanks for watching

author
Gomex19 (author)foxwater2012-03-22

no, thankyou =D