Universal wireless controller for SNES, Saturn, N64, etc....

Started by micro, February 15, 2011, 03:06:53 AM

Previous topic - Next topic

micro








You might remember the one wireless Saturn controller I made a year ago.

Now I've found a cheap 2.4GHz transceiver with some very neat features like adjustable data rate, 128 different channels, auto retransmit...
NRF24L01+ by Nordic Semiconductors:



So what I'm planning to do with these transceivers is to build an universal wireless controller system. So once a controller is equipped with that transceiver you're able to use it on every console you got a receiver for.
Right now I've completed a SNES controller and receivers for SNES and Saturn. Unfortunately the 4. transceiver on the pic was DOA. So I have to wait until I got some more transceivers before I can make more controllers & receivers.











You can see right now I can use the SNES controller on the SNES and Saturn.
I will keep you posted if there's any progress.

When everything's finished I will also release the schematics and hex files.



NFG


ulao


Fwirt

Very cool project!  Would you be able to tell us where you ordered the tranceivers? (And those cool little enclosures you put the console-side in?)

Also, on the SNES controller, how does the battery charging circuit work/how long does the battery last?

micro

Yeah I also love how small the enclosures for the receivers are. :D Unfortunately they are too thick for a NES but they're small enough for a N64.
The series is called SOAP, manufactured by TEKO: http://www.reichelt.de/?;ARTICLE=34080

In my old wireless Saturn pad I installed the charging circuit inside the pad. This time the charging circuit will be external because I plan on making some more pads and each charging circuit will cost around 5€. This way I will be saving a lot of money as well as space inside the pad.
The IC used for charging is a MAXIM 1811.

Right now inside the SNES pad is a Ipod Shuffle battery with mere 250mAh of capacity. I guess the battery lasts for about 10 to 15 hours. But there's more space inside the SNES controller than inside the Saturn controller. Maybe a GBA Micro battery would fit. The GBAM battery got 600mAh so do the math :)

micro

Now I got a new USB Programmer that will replace  my old programmer for the parallel port.

I've also started writing in AVR assembly language. I've completely rewritten the Saturn receiver.  Now it works without 2x 74HC153. But damn, the Saturn timings are brutal!
The Saturn SMPC manual says that after s0&s1 has been changed, d0-d3 are read after 2us.
First I had my AVR run at 8MHz. Changing s0 by the saturn triggered an interrupt and d0-d3 were put out after 1.83us. Guess what, that wasn't fast enough!
So the AVR is running at 16MHz now and it works.

But I'm still wondering if it's possible at 8MHz somehow...


bigsanta

Excellent work on updating the original tut !I was planning on reworking the original so i could get a wireless neo geo AES stick .Would you be able to do  one of these updated versions for the neo geo,as it should be nothing to get one knocked up considering it doesn't use any ASIC/IC encoders ,just basic on off switches ?

micro

Yes, Neogeo support for the old 433MHZ transmitter/receiver would work, but I don't plan on working with the old 433MHz stuff again.

However, sometime I'll probably make an Neogeo receiver for the new wireless system. But at the moment I've got almost no time to work on the project so this won't happen soon I'm afraid.  Next up is support for the N64.

ulao

Quoted0-d3 are read after 2us.
Yeah I read that two but other say its 7us.  Also when working with dream cast the patent says the pits are 6 clocks apart ( 83 ns on a 12 mhz ) but its actually 9.  Sega...

public-pervert

wow! another neat work, micro! can't wait o build my own!  :)

micro

Small update:
As I said, no more internal Lithium battery chargers because of the pricey charge-IC. So today I finished the external charger. I used the transparent case of a SD memory card:

http://i.imgur.com/OKtHM.jpg
http://i.imgur.com/5GINr.jpg

micro

Yesterday I've finished the N64 receiver. As always I've drilled out some holes and used plenty of hot glue on the parts that get stressed mechanically.
It was also the first time I made the programming port accessible from the outside. This way I don't have to open the receiver to (re-)flash the microcontroller.

Here are some pics I shot:






You can see a regular controller may be plugged in besides the receiver, but 2 receivers side by side are to wide I'm afraid...

public-pervert

this is freaking awesome, micro!  :o

will you make a tutorial on how to do it?

again, i can't wait to build my own.  ;D

bigsanta

#13
Quote from: micro on April 17, 2011, 10:20:44 PM
Yesterday I've finished the N64 receiver. As always I've drilled out some holes and used plenty of hot glue on the parts that get stressed mechanically.
It was also the first time I made the programming port accessible from the outside. This way I don't have to open the receiver to (re-)flash the microcontroller.

Here are some pics I shot:






You can see a regular controller may be plugged in besides the receiver, but 2 receivers side by side are to wide I'm afraid...


Awesome !
Well, to resolve the problem of using the two(1player and 2player ports/3 and 4 p) rf receivers on the N64,you have a few options.

Have a few versions/models

A- the standard 1player version

B- a dual version which has two joypad plugs in one bigger shell

C- The N64 joypad plugs, come out of the rf receiver's shell ,on a short cable.As we're dealing with Rf and not IR ,the user doesn't have to worry about losing line of sight with the RF's shell laying on their unit or near the console.

What about a small LED low battery indicator ? A low power comparator like the lm2903 could be used .

public-pervert


micro

Quote from: public-pervert on August 22, 2011, 11:41:28 PM
I'm looking forward to a tutorial, Micro!  ;D

Soon (I hope :P)

I have resumed work and I hope I can finish it within the next 3 or 4 weeeks, but I can't promise....

Right now I'm working on the N64 transmitter. Somehow I thought I'd be cool to integrate a large LiPo battery into a memory card's case or something. That led to the idea of integrating the whole wireless circuit into a rumble pack:



Once the large vibrating motor is discarded there's plenty of room for the microcontroller and the wireless transmitter.
The rumble pack would also provide voltage via 2x AA batteries.
This way you wouldn't need a LiPo battery, 3.3V voltage regulator, recharge IC, etc.... It would be cheaper to build.

The N64 controller itself would only need one or two tiny modifications, all the stuff would be in the rumble pack.

On the downside, the finished N64 controller would be bulkier and heavier with the rumble pack sticking out (although not quite as heavy as an untouched rumble pack with the vibrating motor still inside)

What do you guys think?



Quote from: bigsanta on April 20, 2011, 07:31:40 AM
What about a small LED low battery indicator ? A low power comparator like the lm2903 could be used .
I think the 3.3V voltage regulator I've used also got an "error" pin. I believe when the voltage is dropping to 3.3V or below the pin will be driven low.
Probably, a battery indicator is something nice to have. I will have a closer look at it once everthing else is finished (and is working, too :))

public-pervert

wow! this is a really good idea, micro  ;D will be revolutionary!

this is one of my favourite threads  :)

micro

update:
N64 wireless controller is finished, works great!  :D
Some pics I made:







Essentially, modding the controller means routing the data pin to the memory card port and installing a LED, that's all.
The rest of the circuit is inside the rumble pack.

I also did some measurements. It turned out that the N64 controller is quite power hungry: The wireless circuit draws only 2 mA, but the N64 controller itself draws about 14 mA!!
Under normal circumstances I would cut the N64 controller's power and only turn it on  when I want to read the current status. Unfortunately if I would do that, the N64 controller would reset the analog stick everytime I'd turn off the power.
So the controller needs to be turned on the whole time.

16 mA is no problem when you're using 2x AAA (rechargeable or disposable) batteries within the rumble pack, because the capacity of such batteries lies between 800 and 1000 mAh usually. This should last a while :)
You could also  install a large (800++ mAh)  LiPo battery inside the rumble pack, there would be plenty of space if the battery compartment is removed by using a Dremel.

An all-internal mod inside the N64 controller is possible, too. But you'd need to find a battery with a decent capacity which still fits inside.

Oh, and before I forget: There won't be rumble & memory card support! So you might just as well use the space inside a memory card or rumble pack for big batteries :)

public-pervert

OH-MY-GOD!! this is not just usefull! this is beautifull!  :'(

is it an ATmega8, micro?

will you make a tutorial like the great one you did for "the cube stick on n64"? i can't wait to make my own  ;D

thank you for share these great mods with us!

micro

I finally finished the project :D
For now, I got wireless SNES-, Saturn- and N64 controllers, and receivers for SNES, Saturn, N64 and NES.

I also made a video again:
Universal Wireless Retro Controller for SNES, N64, Saturn, etc...


Quote from: public-pervert on September 05, 2011, 10:24:09 PM
will you make a tutorial like the great one you did for "the cube stick on n64"? i can't wait to make my own  ;D
Yes, but this will take some time. There are a lot of schematics to be drawn... You gonna notice when the tutorial is finished :)

micro

I uploaded the instructions, see video description on Youtube for the download link :)

public-pervert

already downloading! thank you micro! another incedible work! ill let you know when mine is done :D

public-pervert

micro, just wondering.. is possible to make a "wirelles on/off switch" and turn the n64 on and off by these wirelles n64 controller you made?

kendrick

The N64 doesn't have a standby mode, does it? The power switch fully disconnects the main board from the DC current, so there's no circuit present that would actively poll for such a wireless input when powered off.

public-pervert

thanks for the reply, kendrick. but i know about that. i'm asking if there's a way to make a digital switch (activable by these wirelles controllers) between the DC and the input lines of the n64 main board. that way, we can turn the n64 on and off, like in the xbox 360 and ps3... this would be veeeeery cool!!

another thing i want to ask, micro. is possible to use this transceiver to play n64 with GC wavebirds? (obviously it'll need to be modded, but just wondering :D )

kendrick

Quote from: public-pervert on October 22, 2011, 04:35:20 AM
thanks for the reply, kendrick. but i know about that. i'm asking if there's a way to make a digital switch (activable by these wirelles controllers) between the DC and the input lines of the n64 main board. that way, we can turn the n64 on and off, like in the xbox 360 and ps3... this would be veeeeery cool!!

You'd have to do three things. You'd have to keep the receiver powered, and program in a periodic polling interval so that it isn't waiting around to be turned on continuously. Then you'd have to create a separate button system on the wireless controller that not only turns on the controller itself but can do a handshake with the receiver so as to send the power-on signal. Finally, the power switch on the console would have to be replaced with a complicated relay. Since an N64 doesn't have a standby mode, you'd have to have a separately-powered relay circuit that not only engages the normal DC input, but stays actuated by some sort of flip-flip or other single-bit memory.

Without a built-in standby mode that's supported by the normal operation of the console, this is all incredibly power-intensive. At very least, it'd be pushing five volts into a 78xx regulator all the time, when the console normally uses no power at all after you slide the switch off. This sort of mode of operation is one of those things that environmentalists hate about DVRs and microwave ovens, which are technically always on and using electricity, even when we think they're off. Apropos of nothing, I always turn off the power strip that my game systems are connected to so that I'm not using electricity when I'm not playing.

micro

I agree with Kendrick. In theory it's possible, but the effort isn't worth it. (At least not for me...)

I've got power strips with switches for my consoles, too :)

Regarding Wavebird compatibility: Not that's not possible.
Are you already finished building your own wireless N64 controller? I hope you'll post some pics of it. =)

public-pervert

after reading the last kendrick's reply, i think it doesn't worth all the work too.

and i have not finished my controller yet, i'm still waiting for the parts.. i'll let you know when done micro =)

thank you!

public-pervert

where can i get those isp connectors you fitted inside the RXs?

micro

In German the connectors are called "Wannenstecker". I don't know the exact english name, but you should search for a "shrouded header", like that one.

philgood

First of all micro, fantastic work on your project! Good job!

I would like to build 4 wireless controllers for my N64.  With regards to your channel select A/B feature,  especially for N64.  Are you planning to release a mod to handle 4 channels? Or modified code for C/D channels? Or if this is something that your not willing to do, are you able to post/PM your source code, which I can modify then post back on your page or directly back to you, so then other people can have the option to build 4 wireless controllers like me.

Cheers.

micro

Quote from: philgood on November 09, 2011, 03:07:03 PM
First of all micro, fantastic work on your project! Good job!

I would like to build 4 wireless controllers for my N64.  With regards to your channel select A/B feature,  especially for N64.  Are you planning to release a mod to handle 4 channels? Or modified code for C/D channels? Or if this is something that your not willing to do, are you able to post/PM your source code, which I can modify then post back on your page or directly back to you, so then other people can have the option to build 4 wireless controllers like me.

Cheers.

Thank you! =)
Here you go, modified version using channel 3&4 in the same manner like the normal version does with channel 1&2.
Maybe one day there will be a version allowing to directly choose between channel 1 to 4. Then I guess someone would ask for support for 10 channels because of Saturn Bomberman ;)

Hamburglar

Great work Micro, I am amazed this thread has not received the attention it deserves, I see threads on various bulletin boards about things that have been done time and time again get more attention.

I have most of the parts laying around, I need the wireless receiver/transceiver once I get that I will try it out.

Thanks for posting this.

philgood

Quote from: micro on November 11, 2011, 05:42:03 AM
Quote from: philgood on November 09, 2011, 03:07:03 PM
First of all micro, fantastic work on your project! Good job!

I would like to build 4 wireless controllers for my N64.  With regards to your channel select A/B feature,  especially for N64.  Are you planning to release a mod to handle 4 channels? Or modified code for C/D channels? Or if this is something that your not willing to do, are you able to post/PM your source code, which I can modify then post back on your page or directly back to you, so then other people can have the option to build 4 wireless controllers like me.

Cheers.

Thank you! =)
Here you go, modified version using channel 3&4 in the same manner like the normal version does with channel 1&2.
Maybe one day there will be a version allowing to directly choose between channel 1 to 4. Then I guess someone would ask for support for 10 channels because of Saturn Bomberman ;)


Thanks a lot Micro :)  Guess I'll be very busy the next few days! 

So, selecting between channels 3 and 4 work the same as 1 and 2? Eg, holding A on power on select channel 3 and B on power on select channel 4 with your new firmware?

micro

Quote from: philgood on November 11, 2011, 02:34:32 PM
Thanks a lot Micro :)  Guess I'll be very busy the next few days! 

So, selecting between channels 3 and 4 work the same as 1 and 2? Eg, holding A on power on select channel 3 and B on power on select channel 4 with your new firmware?

Yes, exactly!



Quote from: Hamburglar on November 11, 2011, 01:14:44 PM
Great work Micro, I am amazed this thread has not received the attention it deserves, I see threads on various bulletin boards about things that have been done time and time again get more attention.

I have most of the parts laying around, I need the wireless receiver/transceiver once I get that I will try it out.

Thanks for posting this.

I guess this mod will get more attention once people finished their first controllers and post about it in forums.
I really like to hear some feedback =)

GoodSeed

Hey Micro, this is freakin awesome work!  I joined this forum to say thanks for sharing this!

I've got all the parts on order.  I have a simple question and forgive my noob status, but I haven't touched a soldering iron in my life.  For the 2x3 programming plug it looks like you used bare copper wire.  Am I just an idiot or is there more to this?


GoodSeed

Micro,

I have another question on powering the microcontroller.  I am using a USB programmer that provides power.  How does the power coming from the ISP socket tie in?  Do you not wire in the power from the socket?   Or wire the USB power in along with the battery power and just not turn the controller switch on?  I've got all the parts in and starting assembly!

SGGG2

This is amazing, Micro!  :o

Does the Saturn work with analog data? Do you plan on doing any more systems like PC Engine, Mega Drive, PS1/2 and Dreamcast?

micro

@ GoodSeed: Yes, just connect Vcc and GND from ISP socket to Vcc and GND at the microcontroller. This is mandatory, even for programmers that don't provide power themselves,

@SGGG2: Sorry, no Saturn analog data support yet.
I no longer own PCE and Mega Drive, but there will be support for other consoles sometime =)