Portable game console based on the Micro:Bit

Similar projects worth following

Micro:Gamer is a portable game console based on the micro:bit board. It features a 128x64 monochrome OLED screen, six buttons (plus the two buttons of the micro:bit), a buzzer for sound and a 2xAAA battery holder. The micro:bit is inserted in the back of the board, like a game cartridge on the GameBoy. The specs being similar to the Arduboy, it is quite easy to port existing games to the Micro:Gamer.

Let me know in the comments section if you are interested by this project, what would you add/remove and if you would like to get one.

  • Playing sounds

    Fabien-Chouteau03/15/2018 at 16:59 1 comment

    After the persistent data storage, the next important feature for me was sound.

    There is a small buzzer on the Micro:Gamer board which means it can play a single note at a time. It is enough to play little tunes and some sounds effect as shown here:

    This time again, I re-use the Arduboy libraries to provide compatibility with the existing games.

  • "Memory Card" (Non-volatile memory)

    Fabien-Chouteau03/14/2018 at 01:28 0 comments

    Most of the games I ported from Arduboy to the Micro:Gamer use EEPROM to save high score or game state when the console is powered off. I think this is must have feature for a game console so I implemented it for the Micro:Gamer.

    There is no EEPROM on the micro:bit board and I don't want to add it as an extra component on my hardware design, so I had to use the flash memory inside the micro-controller.

    The interface to use the flash as persistent storage is provided by the MicroGamerMemoryCard class. This class uses two different memory areas:

    • The first one is a 1k bytes page in the flash memory, this is where the data will be stored permanently. The reason for a fixed size of 1k bytes is because flash memory have to be erased/written by pages of 1k.
    • The second memory area is the temporary RAM buffer. This is where the program will read/write the data before saving it permanently in the flash page. Since there is not a lot of RAM available, the program can decide to have a temporary RAM buffer that is smaller than 1k.

    Here is an example of how it looks like in the code:

    // Create a memory card of one 32bit word
    MicroGamerMemoryCard mem(1);
    // Load the content of the flash page to the temporary RAM buffer
    // Read a value from the temporary RAM buffer
    if ( != 42) {
      // Write a value to the temporary RAM buffer
      mem.write(0, 42);
      // Permanently save the RAM buffer into flash memory;

    And here is a demo with the game Micro City:

  • The idea and the first prototype

    Fabien-Chouteau02/25/2018 at 18:37 1 comment

    Like most of you I suppose, I love the micro:bit. It is very affordable, available everywhere, quite powerful and it even has an integrated programming/debugging probe. However, one “disappointing” aspect in my opinion is the 5x5 LED matrix. It can barely display text and cannot be used for anything beyond very very simple “games”. A couple months ago I saw the Adafruit OLED Bonnet for Raspberry Pi and I thought it would be cool to have something similar for the micro:bit, so I decided to give it a try.

    One of the design choices for the Micro:Gamer is to embrace the micro:bit edge connector. There are a good number of disadvantages with this connector, it’s big, there is no SMD version (at least I couldn’t find one). But for this project in particular I think it is great because it mimics the cartridge of a retro console like the GameBoy. If you have more than one micro:bit you can program different games and swap between them.

    For the batteries, my first idea was to not include any on the board (keep it simple), but then it’s not really a portable device anymore… The next choice was between a coin cell battery and 2xAAA. I decided to use the AAAs because - even if they are bigger - it is easy to find rechargeable ones.

    For the software I use the Arduino IDE and a modified Arduboy2 library. Since the Arduboy and Micro:Gamer have the same screen and buttons, it is very easy to port games from the Arduboy to the Micro:Gamer (I already did 6). I will maybe experiment with Python support and probably Ada as well.

    The next steps for me are:

    • Try audio support with the buzzer
    • Some improvements to the PCB (on/off switch, button position)
    • Add an API for persistent storage (highscores, player data)
    • Add an API to read the accelerometer and magnetometer of the micro:bit
    • Improve performance of screen data transfer
    • Design a case for 3D printing

    That’s it for the first project log. Let me know in the comments what you think about this project.

View all 3 project logs

Enjoy this project?



greenaum wrote 03/01/2018 at 06:55 point

At first this seemed a bit pointless, since Arduboy already exists. But then I noticed you're using the Micro Bit. That changes it! There's probably a lot of kids who'd be much more interested in the MB if it had features like these.

The fact there's games already available helps too. Particularly cos kids can play them, have fun, then, the crucial step, start modifying them and seeing what happens. That's always a good start.

Is it open source? I know the parts are fairly cheap. It'd be great if this takes off for schools. It probably won't, but that's more their failing than yours. Still parents might be interested. Or kids, and for the price it won't be hard to badger a parent into buying it.

Just one suggestion... might it be possible to leave the 5 big hole connectors available? I realise the connector blocks them. But if that can't be changed, maybe have breakout points on the board? You could even just do them as PCB pads, and let the owner drill through if they want to. Should do the trick I think. Don't think it'll need through-hole plating, especially if you connect both sides together.

Then a kid could have lights flash, or whatever else, when they score points. Or make their little robots more interactive.

  Are you sure? yes | no

Fabien-Chouteau wrote 03/01/2018 at 18:05 point

"Just one suggestion... might it be possible to leave the 5 big hole connectors available? I"

I'm using almost all the pins of the edge connector so the 5 big hole connector will not be available for the users.

  Are you sure? yes | no

nardev wrote 02/28/2018 at 14:39 point

Do you plan to share the schematics?

  Are you sure? yes | no

Fabien-Chouteau wrote 03/01/2018 at 18:07 point

I will probably post them but at least I need to clean it before :)

  Are you sure? yes | no

nardev wrote 03/01/2018 at 20:14 point

I have small group of kids in orphanage, teaching them programming since last year.. soon i'l introduce some basic electronics for their age.. and good thing we do all on micro:bit's so it would be cool if you share it, i would most likely add their names on PCB and teach them how to solder it,  some ideas how some product is born.. i see that it's quite simplified, so i would not bother them  with much caps, resistors and others parts.. would be interesting i think...
that is why i'm asking :D

  Are you sure? yes | no

Fabien-Chouteau wrote 03/05/2018 at 20:44 point

@nardev This project is not suitable for teaching soldering, especially for kids. It uses small SMD parts and the screen's flat flex is also quite difficult to solder.

  Are you sure? yes | no

nardev wrote 03/05/2018 at 22:08 point

don't worry, it will fit... it doesn't have many parts...good enough. It would definitely not be the only thing they do.

  Are you sure? yes | no

Stef64kb wrote 02/28/2018 at 11:00 point

Nice one. You might like my project too: #Bit:Boy I attempted the same a couple of months ago. Apart from Arduboy, I have Gamebuino emulation in place and I was experimenting with Bluetooth to play games on your phone and stuff.

  Are you sure? yes | no

Fabien-Chouteau wrote 03/01/2018 at 18:12 point

Awesome, I love how you use the micro:bit as a remote controller!

  Are you sure? yes | no

oshpark wrote 02/28/2018 at 00:29 point

Great project!

  Are you sure? yes | no

Fabien-Chouteau wrote 03/01/2018 at 18:08 point


  Are you sure? yes | no

ðeshipu wrote 02/25/2018 at 19:06 point

Very nice! Making the library fit an existing one and thus leveraging an existing community and their games makes a lot of sense when you just want to play games on it.

  Are you sure? yes | no

Fabien-Chouteau wrote 03/01/2018 at 18:11 point

The micro:bit is more capable than the Arduboy so this is just a quick solution to get started. There's a lot more to do with the on board accelerometer, magnetometer, the increased RAM size and CPU power.

  Are you sure? yes | no

ðeshipu wrote 02/08/2018 at 16:30 point

Hi, great to see you starting work on this! You might be interested in my recent attempt at the same: #Micro:Boy 

  Are you sure? yes | no

Fabien-Chouteau wrote 02/09/2018 at 10:11 point

Thanks! Actually my first prototype was called Micro:Boy until I saw your project this week :)

I will post project details when I get the next board and you will see that we took different approaches.

  Are you sure? yes | no

ðeshipu wrote 02/09/2018 at 10:16 point

Can't wait to see it!

  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