Close
0%
0%

GBAA: Game Boy Advance Arduino

An Arduino- based prototyping handheld housed in a GBA case

Similar projects worth following
This project has spawned from many ideas into a small, handheld device I can use as a portable prototyping platform and also as a serial device for communicating with other devices.

Key Features:
LCD display - for displaying the on board menu options and showing feedback from devices
Button input - full use of the D-Pad, A, B, Start, select and shoulder buttons for navigating the menu and sending commands to attached devices
Connectivity options - a Bluetooth Module and ESP8266 to open up extra options for connecting devices
HID capability - to allow the device to input to a connected machine, be it as a keyboard or acting as a game controller
Plenty of Pins - to connect to for prototyping

in order to achieve my initial plans I have an idea for an initial prototype:

Arduino Pro Micro - main controller. Handles button input via analog pins, and a Bluetooth dongle via softwareserial pins. An i2c master (for lcd display and communication with i2c slave devices below). Also adds HID capability.

ESP8266 - allows wifi options; connecting to networks, AP mode, webserver.

20x4 LCD Display - i2c controlled, for showing menus and feedback from slave devices

Arduino Nano - i2c slave, for expansion. Pins to be broken out and made available via the cartridge socket on the GBA case. Eventually cartridges can be made to work with this breakout.

This combination for components, along with a well coded set of menus, should provide me with a great starting point for this project.

I have two GBA cases to start filling; on for the above layout, and one featuring a Nextion touch screen. Replacing the lcd with this will mean defining an extra software serial on the Prother Micro, but allows me to add a full colour GUI to this potentially great device.

  • 1 × Arduino Pro Mino
  • 1 × Arduino Nano
  • 1 × ESP8266 For prototyping I may use a Wemos D1 mini
  • 1 × i2c LCD Screen 20x4 if it fits, or 16x2
  • 10 × Buttons For D-pad, A, B, Start, Select and shoulder buttons
  • 1 × Power circuit For handling 5v requirements, potential battery charger
  • 1 × Game Boy Advance case Available on Ebay for a few quid
  • 1 × Perfboard For fudging together all these connections and also for creating spacers for the buttons

  • ESP Spree!

    Craig Hissett04/03/2017 at 15:41 0 comments

    That monthly sacred day known as Pay Day has arrived.

    I've ordered a few different types of ESP8266 based boards for my various projects:

    While I've been looking at various ways of connecting all the devices planned in here I've also been looking at ways to reduce the number of components.

    I've ordered a 2.8" Serial Touchscreen from Nextion. These screens look great; design your GUI using their software and upload it to the screen via a micro SD card. Using this screen I can just use serial commands to interact with the user interface, offloading the grunt work of running menus in the process.

    If I can get this to work to my advantage I can almost definitely do away with one of the arduinos in this build, and have the ESP8266 board (potentially the NodeMCU) operate as the master for all the GUI and WiFi connections. I would still love to keep keyboard emulation as a feature, so the Nano would be dropped, and the Pro Micro used as a slave with it's pins broken out.

    Not only does it reduce the number of components, it also makes the flow of the project much, much simpler.

    I can't wait for all my shiz to turn up!

  • Tight Fit!

    Craig Hissett02/22/2017 at 21:34 2 comments

    While work continues on writing menus and working on my Arduino Mega-based prototyping setups (which are great little things in their own right - mayou design a case for them and keep them as is!) I have been looking at test-fitting the components into the GBA case.

    As much as I'd like to just a the 16x2 screen via i2c the i2c backpack board makes it way deeper than what can fit in three relatively shallow space. One solution would be to remove the original battery compartment and mount a slimmer LiPo or Li-Ion battery instead of the normal batteries.

    Another alternative would be to use the screen via spi, connected to the master arduino (leaning towards this being the Nano rather than the Pro Micro). But, by the time it is wired up would the loom of wires be any more space saving?

    The plot thickens...

  • Refining the Prototyping

    Craig Hissett02/21/2017 at 00:14 0 comments

    Over the last week or so I have been messing around with breadboards and jumper wires and all that kind of shiz to get my project up and running in some shape or form.

    Writing the menu I'm after is proving a bit (read: a lot) more tricky than I first thought, but enjoying the challenges.

    In order to make it easier to carry my prototyping setups around (I'm working on both 16x2 and Nokia screens, between home and work) I am going to streamline them by making a little board to plug into the Mega's free pins to the right of the Shields.

    This board will contain the Wemos D1 mini for wifi-based shenanigans, and also the Pro Micro for HID functions. Both will be connected to the i2c bus as slaves.

    I was going to use the pro micro as the master and the nano (being represented by the Mega for convenience in this setup) as the slave, but it makes sense to handle all functions (including the keyboard/hid stuff) one one device. It also means if I ever switch the screen to the Nextion serial touch screen in a future revision I can potentially ditch the Nano and have the ESP8266 as the master.

    Booya!!

  • More prototyping: Screen Options

    Craig Hissett02/18/2017 at 02:16 0 comments

    So... While prototyping my Pro Micro/Nano/ESP8266 communication I have also been working at my dynamic menu options, using an Arduino lcd/button shield on an Arduino Mega.

    While looking at the case and the space available for a screen I started considering other options that could possibly utilise the space better. Within approximately 90 seconds I'd found and bought a shield with a Nokia screen and buttons etc.

    I'm going to have a play around with this as I could possibly use two of these screens in the space given and have a much better menu system and more feedback given.

    Could be interesting!

  • Parts Layout

    Craig Hissett02/10/2017 at 22:08 1 comment

    I couldn't find my breadboard, but managed to dig out an old Arduino Mega with a prototyping shield. That should do the trick ha ha!

    The Mega can act as the slave for now. On Monday I'm going to solder some headers onto the protoshield for the Wemos D1 mini and also the Pro Micro, and this shield can serve as the test unit for this project and many more in the future.

    I've been having a bit more of a look at the case and where to fit my components. For the cartridge slot I will fit the Nano and its breakout; it's usb port exposed for serial use and programming. I will need to remove the 2x3 pins on top of the Nano and potentially shorten the pins on the bottom to get it to fit nicely. For the breakout pins I have some right-angled headers from my Pi Zero kit to use. If I can get the nano and header soldered nicely onto a bit of perfboard and make it fit it could even be modular.

    I have a plan to fit the Pro Micro above this board and inline with the Link cable socket to keep the case looking clean on the outside. There will be a bit of plastic to be removed to allow the board to fit in flush. I will need tomake sure the screen doesnt get in the way when it arrives before deciding on that.

    I have also decided to drop the start/select buttons and swap them for status/mode LEDs.

  • Weekend To Do List

    Craig Hissett02/09/2017 at 21:22 0 comments

    Ive managed to dig out my breadboard and so over the weekend I'll hopefully be beginning to start working on getting this fella working!

    Nothing fancy at first; basic functonality, all written using the Arduino IDE. This log is just to outline roughly an order for myself to approach this.

    First up, the pro micro:

    • Add code for button capture (lift from another arduino project I have going)
    • Add code for lcd display (borrowed from my Aquariumatic project, which also uses i2c displays)
    • Add code for menu creation (lift from the other project mentioned previously. Use an array to contain the menu options, and a secondary array containing the commands/function names to be executed on selection. Later in the build I can revisit this code and have the arrays populated from a menus file on an sd card. This in turn opens the door to allowing users to add menus and functions via the esp8266 Web interface later)
    • Add code for keyboard emulation (to be used for sending keyboard commands and also for using the device as a game controller)
    • Add i2c master code ready for use later.

    Arduino Nano

    • for the time being have the nano coded to recleve i2c commands from the Pro Micro.
    • Also writer basic function to toggle pins on/off via i2c command.
    • More work on this will take place once the breakouts board is created.

    ESP8266

    • add some simple webserving code
    • Add i2c/software serial code for created comms with the pro micro
    • Add code to support sd card shield
    • Work on the html for the Web interface

    For the second version (the one using the nextion screen ) I'm planning a slightly different approach. With the Nextion screen handling all the menus I can hopefully have the esp8266 as the main controller (using serial to communicate with the screen and its one analog pin for button reading)

    The pro micro can then be repurchased as the slave (doing all the shit the nano will do in this build, but retaining the keyboard functions) and removing the nano from the equation.

    Lots to be testing and getting on with! :-)

  • Next Step: Breadboard

    Craig Hissett02/07/2017 at 20:03 6 comments

    While I wait for my screens and stuff to arrive I'm going to stick my three microcontrollers onto a breadboard and start trying to get them communicating and playing nicely.

    I was tempted to try and shoehorn them straight into the case, but I want to see where the screen fits in. If it sits deep in the case I won't be able to fit my boards behind it (which is a bit of a bummer), but I have a backup plan.

    I'm thinking of putting the pro micro behind the screen (with the micro usb port sticking out of the link cable hole), and fit the other two in the battery compartment. Rather than using AA/AAA batteries I'm going to use a LiPo, but I'm sure that can fit somewhere else :-)

  • Parts Scavenge

    Craig Hissett02/06/2017 at 16:03 0 comments

    I've been in the parts bin today and found:

    Arduino Pro Micro

    Arduino Nano

    Wemos D1 mini

    Wemos D1 mini Micro SD card shield

    Wemos D1 mini battery shield

    Should be enough to get me tinkering with the code on these while I wait for the screens to arrive :-)

  • Screens ordered

    Craig Hissett02/05/2017 at 01:13 0 comments

    It's 1am, and to celebrate I've ordered some bits and bobs from Aliexpress for this project, just to try out some options:

    • 20x4 i2c lcd screen
    • 16x2 i2c lcd screen
    • 2.8" Nextion touch screen
    • Micro SD card modules

    As previously mentioned I'm going to try two versions of this; one with an lcd screen and one with the Nextion touch screen.

    The Nextion will allow me to design smell great gui screens and menus, which can be called/requested from the Pro Micro via Serial.

    If can get the Nextion one working I think that would be a more useful option as it takes the handling of menus away from the pro micro as such. The lcd screen could always be added to the expansion port if that type of display is required :-)

  • Menus

    Craig Hissett02/04/2017 at 02:05 0 comments

    For this project to work it needs to have a nice, easy to use interface.

    In order to keep it simple I will write a straight forward set of menus and sub menus for each device:

    Main Device (Pro Micro orientated options):

    Serial Commands, BT Commands, Keyboard mode, Game Controller

    WiFi (for ESP8266 based cmmands)

    Search Wifi, Connect Wifi, Access Point, Webserver

    Expansion (for Nano):

    Toggle Pins (for list of pins to turn HIGH/LOW), run program, configure pins

    I order to make menu management easy for this device I would like to make their creation as dynamic and modular as possible; maybe even include an SD card module for me to store some text files containing menumber contents and the commands to be sent when selected. This way I can easily update the sd card via PC (or Web interface on the esp8266) and have the Arduino build the menus from there.

    Any input on how to go about this would be swell ;-)

View all 10 project logs

Enjoy this project?

Share

Discussions

greenaum wrote 02/06/2017 at 16:59 point

Just a thought, but the GBA SP's case seems like it'd be much better for prototyping. You could put a breadboard, or Arduino, on the control pad part, since it lays down flat. Then the screen could replace the GBA's screen, alongside some other bits and pieces. Perhaps even a couple of LCDs, a text one and a graphics one, or whatever you like. Maybe a few of those WS8201 RGB LEDs.

The GBA SP also has the great advantage of folding. Almost like it was made for a project like this! Just something that struck me when I saw your project in a list. Soon as I read "Arduino development with a GBA case" I assumed you'd use the SP, and thought what a great idea it was!

You might be able to do all sorts of stuff in a GBA SP's folding case. Perhaps have a little storage space inside it. Have the lid close like a clamshell, and cover and protect any components you have assembled on the flat part. There might be room for a matrix keypad too. 

Good luck either way!

  Are you sure? yes | no

Craig Hissett wrote 02/06/2017 at 21:55 point

Thanks for your comment mate!

Don't worry, the SP case is on my radar :-)

The only reason I went for this one was because I like the form factor, and thought it may be easier to fit everything in for the proof of concept. The battery compartment takes up a lot of the internal space so I've got a feeling I'm going to be cutting that out and adding a LiPo battery to make it easier.

Once I have one up and running I will almost likely going straight into making an SP version.

Regardless of the case I think my biggest challenge is getting the 'software' right, and getting the three boards working together nicely.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates