Obviously, you don’t have to use a PCB and you could make the ArduinoBoy using stripboard/veroboard, ProtoShield, or even on a breadboard… see at the bottom for a suggested layouts.
BTW, I assume Trash80’s moniker is a nod to the Radio Shack TRS-80?
This is the view of the underside of the PCB
Another PCB layout is detailed, in depth, here:
- Arduino Forums: ArduinoBoy Board, (Flickr) (original image)
- Schematic (Flickr) (original image)
- Download EagleCAD zip files : https://www.mediafire.com/?zm7sx90321fb7
Note: This PCB does not incorporate GameBoy Genius’ fix.
Then you will need the following components:
- 1 x ATmega328P-PU
- 2 x 220 Ω
- 1 x 270 Ω
- 7 x 2 kΩ
- 1 x 4.7 kΩ
- 1 x 6N138 Opto couple
- 2 x 57PC5F DIN sockets , although the 61NC5F is a superior DIN socket, its foot print will not fit the PCB – although it will fit the stripboard layout (I think).
- 1 x Diode 1N914 (or any small signal diode really, i.e. 1n4148, or even a rectifier diode, i.e. 1n4007)
- 1 x OMROM push switch
- 6 x LED (3 mm or 5 mm, various colours if desired)
- 1 x 16 MHz crystal
- 2 x 22 pF ceramic capacitors
You are also going to need a GameLink cable, that you are willing to butcher by:
- cutting off the connector are one end, and either:
- soldering directly to the PCB, or;
- fixing a 5 socket DuPont (female) connector.
This is because the PCB does not have the solder points for a GameLink socket. A suitable cable is High Quality 1.5m 2 Player Game Link Connect cable Cord for Nintendo Gameboy For GBC GBP GB Mr25 19 dropship, £2.80+£0.90
- 1 x 24 pin IC socket (optional, but strongly recommended, to enable the ATmega328P-PU to be removed for re-flashing in a flasher, i.e. Arduino Uno)
- 1 x 8 pin IC socket (optional, if you don’t want to solder the opto-couplers pins)
- 5 pin female DuPont connector
- 40 Pin 2.54mm Male PCB Single Row Header Strip Connector
The original schematic by Trash80, from Arduinoboy/Schematic/, is this:
and you should ensure that you incorporate GameBoy Genius’ fix:
The above schematics assume that an Arduino [Uno] is used. However we are using a barebones setup, using an ATmega328P-PU directly.
Here is a tidier schematic, combining the two above schematics and adding the ATmega328P-PU and the crystal and capacitors, drawn in EagleCAD, from DMG MAIN BOARD SCHEMATIC & CIRCUIT (+ARDUINOBOY), this post:
Use this image as a guide to component placement (the resistors’ values are shown, the rest of the components should be self explanatory):
Always solder the smallest components first, as this allows you to use the surface (i.e. the table/bench) upon which you are constructing to push and hold the legs through the underside of the PCB.
So for example, in this order:
- Solder in the diode
- Solder in the resistors
- Solder in the crystal
- Solder in the IC sockets
- Solder in the button
- Solder in the capacitors
- Solder in the LEDs
- Solder in the leads to the MIDI in and out DIN sockets
- Place the pre-programmed ATmega328P-PU and the 6N138 in their respective sockets
- Lastly, solder in the GameBoy GameLink cable directly, or solder in a 5 pin male DuPont connector
The DIN sockets are not soldered directly to the PCB.
The MIDI in is not grounded. From GoogleForums – Arduino Boy – Ground Hum, the reason is:
> If anyone knows how to isolate the ground on the circuit, let me know. I was
> a bit too tired and couldn’t find any information.
> My guess is the ground is looping from midi/usb->arduino->gameboy->audio
> out->back again.
One thing to not here is that. The shielding on the MIDI plug should
*not* be connected to ground on the receiving side. Doing so will
nullify the whole concept of opto-isolation that MIDI is based on.
Game Link cable
The cable can either be soldered directly to the PCB, which is rather inelegant, or use a 5 pin DuPont connector to exchange with the GameLink connector at one end of the GameLink cable
and a 5 pin row of header pins from a 40 Pin 2.54mm Male PCB Single Row Header Strip Connector, soldered to the PCB.
Connect the GB Link pins (BR, BL, TC, TR, TL), as shown in the PCB layout, using the Board column in this modified table taken from ShieldBoy
Plug Position Board Function ShieldBoy GB Header Bottom-Left Top-Left (TL) +5/6 V +V Bottom-Middle Top-Middle (TC) Serial IN (SIN) 1 Bottom-Right Top-Right (TR) Clock (SCLK) 0 Top-Left Bottom-Left (BL) Serial OUT (SOUT) 2 Top-Middle Bottom-Middle (BC) NC Top-Right Bottom-Right (BR) Ground (GND) GND
Components (original image):
Opto-couple and LEDs (original image):
Button (original image)
Final Layout (original image):
It should be noted that this breadboard layout does not have GameBoy Genius’ fix.
The outputs at the bottom, from left to right, are MIDI in, MIDI out and GameLink.
- SparkFun MIDI Shield
- MIDI Shield Breakout Board for Arduino UNO R3 AVI PIC Digital Interface Adapter
- Through the MIDI adapter plate, your Arduino board or other microcontrollers can be accessed to powerful MIDI communication protocol. MIDI protocol and asynchronous serial interface has many similarities, so users can use the micro-controller UART pin to send MIDI event information. MIDI adapter plate provides MIDI – IN and MIDI – OUT connection, and MIDI THRU port. MIDI – port is light IN isolation, to prevent the ground loop. MIDI adapter plate can be installed directly like a shield at the top of the Arduino board: connect MIDI – IN/THRU to for Arduino hardware RX pin, connect MIDI – OUT to TX. It Arduino data and analog pin, power bus and the bus can transfer out. The RUN/PGM switch can let users on the forArduino board serial port programming, without having to remove the board. Note: the three hole MIDI connector no welding on the MIDI adapter plate, but these connectors included in this product.Size: 57.4 x 53.1mmCompatible: 100% compatible arduino
You will need a SparkFun ProtoShield. Trash80 uses a version 2 board, Arduino ProtoShield – Bare PCB (DEV-11665), that may be a bit difficult to find (here is one, Genuine Arduino ProtoShield KIT – AU Stock AU$14), however, the latest incarnation is here: SparkFun Arduino ProtoShield – Bare PCB (DEV-13819), $4.95