Skip to content

Hardware

CanadianCommander edited this page Aug 11, 2018 · 1 revision

Introduction

What follows is a description of the hardware used in the ArmBoy gaming system. This is by no means the only hardware configuration possible, in-fact due to the highly module software design there are infinite configuration possibilities. For example, one could swap out the d-pad for a analog stick with only minor software changes in the ArmboyInputDriver. So truly what follows is the super bear bones, default ArmBoy hardware configuration.

Hardware overview

wiring diagram complete wiring diagram for ArmBoy gaming system

As you can see, the ArmBoy is an assembly of off the shelf parts. These parts when wired as depicted above comprise the ArmBoy handheld gaming system. A quick note on the wiring schematic connection names. When you see "A26 SD_MISO" this means, Arduino Due Pin A26 to SD_MISO pin on target board. So names are allways of the format [Arduino board pin] [target pin]. This is using the true pin names not the numbers printed on the board itself, see Arduino Due pinout

Components

  1. Arduino Due micro controller as the core of the system.
  2. Sainsmart 3.2" LCD for display output and SD card port.
  3. Lithium-ion battery charge controller such as the TP4056 (exact module unimportant).
  4. Supplying power is a single cell lithium-ion battery.
  5. Boost converter such as 40408 boost converter to step up voltage from the standard 3.7v of a lipo battery to the acceptable input range for an Arduino Due of 7 - 12 volts.
  6. Custom button arrays, using simple tact switches for user input.

Arduino Due manufacturing/software "defect"

There is a well known problem (on some) Arduino Due boards. As far as I can tell both knock offs and genuine boards are affect. The problem is a bug (or is it a feature?) in the factory firmware of the avr 16u2. The 16u2 is a small co-processor on the Arduino Due that handles USB to serial conversion for the sam3x8e. Unfortunately, with its default factory firmware, on power up it puts the sam3x8e in to programming mode, meaning no user code is executed, rather the sam3x8e must be soft reset (possibly by the red reset button on the board) before it starts executing user code. This presents an obvious problem, when the reset button cannot be reached (board is inside a case) and no USB programmer is connected the processor will just sit there doing nothing on power up. The desired behaviour for the ArmBoy on the other hand, is to boot the system on power up.

The Fix

To fix this problem you have to flash new firmware to the 16u2 chip. An Arduino forum user by the name of emech has posted his patched firmware here. To perform the flash you will need either an AVR ISP programmer or another AVR MCU running the "Arduino as ISP" sketch (found in the example sketch drop down in the Arduino IDE). Once you have all that follow these flashing instructions. Your Arduino Due should now execute user code when powered up!

Assembly Guide

quick step by step to build your very own ArmBoy!

  1. download and print (3D printer required ofc) the case. case top + bottom case bottom.stl - top.stl. For the d-pad I used PiGRRL 2 D-pad.stl.
  2. build button arrays (4 round push buttons and a 4 direction D-pad). For this task I recommend perfboard. Just follow the wiring diagram, four active high switches with pull down resistors per board. Note, the bellow image shows dupont wires which are very space inefficient and can pose space challenges when putting the case together. I would recommend 30 or more AWG wire (.25 mm or less). my buttons back side of perfboards mounted in case, tact switches on other side.
  3. mount perfboards in to top half of case using 10 mm standoffs for the push button board and the 7mm standoffs for the d-pad board. Once secured buttons should protrude nicely through the top of the case.
  4. connect wires to display unit as show in wiring diagram. Then mount display (using super glue or some such) in to top of case. display in case LCD mounted in top half of case
  5. (some what optional). Despite the size of the case it can still be quite hard to fit all the components inside. To make this task easier I recommend removing the Dupont wire connectors on the Arduino Due board. This dramatically slims the board. Arduino Due with and without Dupont Headers* with Dupont headers on left. Without on Right *
  6. connect wires from the display and buttons to Arduino board mounted in bottom of case, keeping in mind that every thing has to sandwich together. display wired to arduino display in top of case being wired to Arduino board. (buttons not depicted but, should be installed as well)
  7. Install in to the cases top right hole, your usb charging mechanism. Then in to the top left a power button of some sort. I just used a cheep latching button I had laying around. Shove the battery in where ever it will fit and wire as shown in wiring diagram.
  8. Sandwich the top and bottom of the case together (requires some force but should snap together). Now if every thing has gone to plan you should have a complete ArmBoy! ArmBoy finished ArmBoy

Clone this wiki locally