User Tools

Site Tools


Twitter my Tweets    my YouTube

my Thingiverse    my GitHub    my Hackaday.io

Translations of this page:

Sidebar

I think it, i tinker it, i make it :-)



—-

Recent updates:


en:tinkering:microcontrollers:usbdiggerjoystick

USB Digger Joystick

Basic Infos

What is this?

USB Digger Joystick is an hardware interface designed to connect old school 8 bit home computer joysticks (Atari, Commodore, ecc…) on a modern PCs by USB keyboard emulation, is designed to play Digger.

History

The idea was born as a present for my mother, the only videogame as played a lot is Digger.

When i upgraded my PC set from Olivetti Prodest PC1 to a 386 with VGA, my parents was no more able to play with Digger because in the past they worked only on native CGA systems.

Many year later Andrew Jenner with a reverse engineering process of the original DOS program, has remastered Digger for VGA machines, its work created also another platform version of the game (see http://www.digger.org)

At that point, Digger run on Windows but my parents didn't like keyboard because with the PC1 they used a joystick.

Recently my interest was captured by Atmel microcontrollers, Arduino and libraries V-USB by Objective Development, from this the idea to realize the missing piece :-)

How it works

Connecting the interface to a Windows PC, Linux or Mac it is recognized as a generic USB keyboard, no drivers needed for working, via joystick commands these keys are emulated:

EMULATED KEY
JOYSTICK COMMAND PLAYER 1 PLAYER 2
UP CURSOR UP w
DOWN CURSOR DOWN s
RIGHT CURSOR RIGHT d
LEFT CURSOR LEFT a
FIRE F1 TAB

Features

  • Device seen as USB HID (no drivers needed for working)
  • It's possible to connect 2 standard Atari joystick
  • Firmware upgradble via USB (only tested under Linux, may work on Windows e Mac)

Make your own!

USB Digger Joystick is an OpenSource hardware/software project, all detail are available for download / make / modify / hack it.

An archive with schematics, PCB layout and software stuff is available in downloads section.

Make the hardware

The schematic and the PCB layout are designed using CadSoft Eagle 6.10 Light, this is the part list exported:

Partlist

Exported from VUSB_Digger_Joystick.sch at 30/04/12 15:19

EAGLE Version 6.1.0 Copyright (c) 1988-2012 CadSoft

Assembly variant: 

Part     Value              Device             Package      Library  Sheet

C1       22pF               C-EU025-025X050    C025-025X050 resistor 1
C2       22pF               C-EU025-025X050    C025-025X050 resistor 1
C3       10uF               CPOL-EUE2.5-6      E2,5-6       resistor 1
C4       100nF              C-EU025-025X050    C025-025X050 resistor 1
D1       BZX 3V6            BZX55              DO35Z10      diode    1
D2       BZX 3V6            BZX55              DO35Z10      diode    1
H1       MOUNT-PAD-ROUND3.0 MOUNT-PAD-ROUND3.0 3,0-PAD      holes    1
H2       MOUNT-PAD-ROUND3.0 MOUNT-PAD-ROUND3.0 3,0-PAD      holes    1
H3       MOUNT-PAD-ROUND3.0 MOUNT-PAD-ROUND3.0 3,0-PAD      holes    1
H4       MOUNT-PAD-ROUND3.0 MOUNT-PAD-ROUND3.0 3,0-PAD      holes    1
IC1      ATMEGA328-P        MEGA8-P            DIL28-3      atmel    1
JP1                         JP1E               JP1          jumper   1
JP2                         PINHD-2X5          2X05         pinhead  1
JP3                         PINHD-2X8          2X08         pinhead  1
JP4                         JP1E               JP1          jumper   1
JP5                         JP1E               JP1          jumper   1
JP6                         JP1E               JP1          jumper   1
JP7                         PINHD-1X1          1X01         adafruit 1
JP8                         PINHD-1X1          1X01         adafruit 1
JP9                         PINHD-1X3          1X03         adafruit 1
JP10                        PINHD-1X1          1X01         adafruit 1
JP11                        PINHD-1X1          1X01         adafruit 1
JP12                        PINHD-1X1          1X01         adafruit 1
Q1       12MHz              CRYSTALHC18U-V     HC18U-V      crystal  1
R1       10k                R-EU_0207/15       0207/15      resistor 1
R2       68R                R-EU_0207/15       0207/15      resistor 1
R3       1k5                R-EU_0207/15       0207/15      resistor 1
R4       68R                R-EU_0207/15       0207/15      resistor 1
R5       10k                R-EU_0207/7        0207/7       rcl      1
R6       10k                R-EU_0207/7        0207/7       rcl      1
R7       100k               R-EU_0207/7        0207/7       rcl      1
R8       100k               R-EU_0207/7        0207/7       rcl      1
X1       PN61729-S          PN61729-S          PN61729-S    con-berg 1

Schematic

PCB layout

This layout is only suitable for web pubblication (just for a look :-) ), for etching purpose please use the 1200 DPI version available in downloads

Rendering of the Eagle project

Burn the booloadHID

The interfarce use bootloadHID as bootloader to make possibile easy upgrade with newer firmwares.

Fuses used to burn the bootloadHID on the atMega328p chip:

FUSE VALUE
lfuse 0xf7
hfuse 0xda
efuse 0x03

to burn after download the HEX binary, you can use various methods, i have tested the burning via the Arduino 2009 that is equipped with an FTDI chip, the procedure is explained here.

I have use a breadboard with only quartz christal and the two 22pf capacitors connected to X3 Arduino's connector:

Connector X3 PIN on Arduino Duemilanove PIN atMega328 on breadboard
1 18
2 19
3 17
4 1

You can use the Arduino board also as power source for +5V and GND.

This document explain how to patch avrdude on Ubuntu Linux (i used Ubuntu 10.04 for all development process)

TODO / future development

  • MAME mode (es. emulation of CTRL key instead of F1 for FIRE button and other MAME keys via spare pins of the board)
  • emulated keys redefinition on the fly, actually is possible redefine the keys only via firmware re-flash
  • realizing an Arduino shield, actually is available only the stand-alone version of the PCB layout
  • Nintendo Wii Nunchuk as contoller instead of joystick

Based on...

The development of interface is based on Arduino and porting for Arduino of the V-USB by Objective Development Software GmbH

Licensing

The hardware (the schematic and the PCB layout), is released under Creative Commons Attribution Share-Alike license.

The software (the sources and the firmware binary), is released under GPL in execptions of the V-USB librearies, there are released by Objective Development Software GmbH under a proprietary OpenSource license, contained in the source directory of USB Digger Joystick project, you can find it in firmware/usbdrv/License.txt

The hardware and the software are released by the author Alessio Cavalieri AS IS, without any warranty, the author is not responsible for malfunction and/or damages to devices connected to interface USB Digger Joystick, assemble and use at your own risk.

Appendix

Atari compatible joystick interface

The joysticks are connected to the interface with these pins, via two DB9 male connector:

PIN FUNCTION
1 UP
2 DOWN
3 LEFT
4 RIGHT
6 FIRE
8 GND (GROUND, 0V)

Functions and MCU pins

Functions matching pins using an Arduino or an Atmel atMega328p standalone

PLAYER1
FUNCTION DB9 CONNECTOR ARDUINO ATMEL
GND 8 GND GND
FIRE 6 8 14
UP 1 10 16
DOWN 2 11 17
LEFT 3 9 15
RIGHT 4 12 18
PLAYER1
FUNCTION DB9 CONNECTOR ARDUINO ATMEL
GND 8 GND GND
FIRE 6 3 5
UP 1 A4 27
DOWN 2 A3 27
LEFT 3 A5 28
RIGHT 4 5 11

On board connectors

Connector functions
JP1 bootloadHID enable jumper (for firmware updates) / Player 2 fire button
JP2 Player 1 joystick DB9 connector / suitable for ICSP functions
JP3 free for future development, Player 1 analog joystick DB15 connector (not actually implemented in firmware, suitable only as future development / espansion)
JP4 free for future development
JP5 Player 2 joystick right
JP6 free for future development
JP7 +5V USB PORT
JP8 GND USB PORT
JP9 (1) Player 2 joystick down / (2) Player 2 joystick up / (3) Player 2 joystick left
JP10 free / suitable for ICSP RESET function
JP11 free / suitable for ICSP SCK function
JP12 free for future development
X1 USB PORT

Some photos...

The case is taken from a broken USB 3,5“ Hard Drive enclosure, some useful components removed from original PCB: USB Type B socket and 12 MHz quartz.
Joysticks DB9 connectors are old serial connectors from trashware PCs
Detail of the new plexyglass front-panel make
Front-panel fit test
Two joy connected test
Finished front-panel graphic detail
On action :-)

Downloads

Contacts

For contact me, write a mail to info at itink.it

en/tinkering/microcontrollers/usbdiggerjoystick.txt · Last modified: 2015/05/26 09:28 (external edit)