An interface board to allow use of a WiiMote as Atari joystick. Main objective is to provide wireless joystick to increase distance of busy little hands from vintage hardware. Prototype currently supports 1 WiiMote with direction, trigger and analog signals. Video demo posted in the files section.
Software development planned to:
- Support for 2 Atari style joystick DB-9 connections and 2 WiiMotes at same time for multi player.
- Use Wiimote accessories (Nunchuk/gamepad) for input devices as well.
- HTTP interface to configure input setup options to accommodate different hardware. (Like Wiimote tilt sensor used for paddle controller rotation.)
Hardware could support:
- 3rd joystick without analog support.
- Bi-directional digital communication using ESP32 as gateway
Spin off projects:
- 3D printed joystick connector housing. Work in progress, details coming soon.
- Interface board to hook vintage joysticks to a WiiMote accessory port. (Just an idea right now.)
Redo the board with SOIC footprint to use chips on hand
Mount SOIC chip on a breakout board and run wires to main PCB
Find the chip somewhere in TSSOP package
Find another pin equivalent replacement part
All the big US catalog distributors were out of stock. There were a few options on ebay but all international with long shipping estimates. Octopart showed a few international distributors with parts in stock, again with long shipping times. Octopart showed a few other US distributors with stock that I contacted. Most had pretty high minimum order amounts, but I got lucky with South Electronics!
They waived the minimum order amount, accepted paypal payment, and shipped same day. Parts delivered in 3 days!
Rev 3 PCBs and back ordered 1M digital pots arrived earlier this week. After the paste was down and most of the chips installed, ran into a problem with U6. SOIC don't fit on TSSOP footprint.
If the Atari and the ESP are running on separate power supplies want to avoid back feeding the unpowered device. I'm not sure what a reasonable power draw from the Atari is and the ESP could consume several hundred mA. The i2c level shifter output enable will be controlled by ESP logic. A voltage supervisor was added to the Atari 5V supply to disable the ESP 3.3V regulator until Atari is powered. So if just ESP is powered, it won't start until Atari is powered. If just Atari is powered, i2c chip will be tri-state.
Going to use a dedicated level shifting chip TI TXS0104E for the i2c level shifting. This has 4 signals so will let the IO expander handle SCL SDA, the IO expander interrupt feedback, and feedback if the Atari is powered. While picking this chip noticed the 1M digital pots weren't in stock any longer at Digikey in TSSOP package...
After a quick mini project to make a 3d printed back shell for the joystick connector, wired up a Revision 2 PCB with extra interface for the i2c level shifting. An extra strip board pcb was created with 2n7000 level shifters. The PCB 3.3V rail was hooked up to 5V making the whole PCB work at 5V. Not very pretty but everything worked when tested with 800XL and Pac-Man / Super Breakout.
The Rev 2 PCB arrived this afternoon, but the Rev 3 design was started a few hours later....
Reviewing the AD5242 datasheet shows the wiper/leg voltages need to be within the supply voltage range. The current design has the digital pots powered from 3.3v rail to avoid level shifting the i2c bus. But the Atari needs 5v to the digital pot. I removed the 1M AD5242 chip, mounted it on a breakout board, and tested operation in bread board. Test circuit with the digital pot setup with another resistor as a voltage divider resulted in the observed behavior. Works when powered from 5V, When powered by 3.3V with 5V to the digital pot, no good.
So Rev 3 will power all of the i2c chips with +5V and still have one bus with level shifters for the ESP.
Digikey has the AD5242 1M back in stock but the price is up to $4.24 each for 1-9 pcs.
Test code is working using the https://github.com/hrgraf/ESP32Wiimote Arduino library for one joystick. The direction and trigger buttons are working, responsiveness is great. But still not getting the paddle inputs on Super Break out. The 100k pot is always full left and 1M pot is always full right on the screen. Test code uses the WiiMote ± buttons to adjust the pot output. Resistance change looks fine with the multi-meter.
One leg of the digital pot needed to be tied to +5 and the other end floating. Rev 1 of the PCB connected the leg to ground instead. I was able to rework the current board to correct the but put a lot of heat into the chip getting the enamel wire soldered. Doesn't seem like they are covering full range of resistance any more....
Also added a jumper to allow Atari to power the ESP32 dev board. So far I've been powering with separate USB power supply.
I have reviewed the project files on GitHub. I couldn't find the values for the passive components (chip resistors and capacitors) on the PCB. I also opened and checked the KiCad files, but it seems they are not set. Could you provide this information?
Thanks for the feedback. Initially I was assuming I would need to make transmitters and receivers but the Wii-mote right to ESP32 sure simplifies the transmitter side.
Looks to me like PC joystick wouldn't need any changes to the hardware aside from the connector wiring.
Really Nice, I like the economy of the design! I assume this would be relatively easy to adapt for an old PC joystick with a 15pin Gameport connector; mapping the X/Y,Throttle and buttons as appropriate.
I have reviewed the project files on GitHub.
I couldn't find the values for the passive components (chip resistors and capacitors) on the PCB.
I also opened and checked the KiCad files, but it seems they are not set.
Could you provide this information?