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?
- Cheap Atmega328P-PU ICs
- ArduinoBoys and others
- Scaling PDF for PCB
- DIN sockets
- ArduinoBoy build – A photographic guide of the PCB build
PCB mask (Original Image)
This is the view of the underside of the PCB
PCB Silk screen (original image)
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Ω (2.2 kΩ are used)
- 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 – even a rectifier diode, i.e. 1N4001/1N4007, will do the job, if that is all you have to hand)
- See Difference between 1N914 and 1N4148 diodes – the 1N4148 has a lower leakage current than the 1N914 (25 nA vs 5 µA)
- 1 x OMROM push switch (note that the PCB above does not use a push button)
- 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
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:
From ATmega168/328P-Arduino Pin Mapping, for reference the pinout of the ATmega328P against the Arduino pins:
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 ceramic capacitors
- Solder in the IC sockets
Solder in the buttonThere is no button used on this PCB
- 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.
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