close-circle
Close
0%
0%

Keymu - open source keychain-sized gaming console

A fully functional, completely open-source, and totally nerdy keychain-sized multi-platform emulation console to build yourself.

Similar projects worth following
Keymu is (to my knowledge) the world’s smallest emulation console (42x46x17mm), so small it can easily be attached to your keychain while being fully playable. It is based on the Intel Edison and is fully open-source. But more than being open-source, the code, BOM, PCB and mechanical design will be provided with tutorials so that anyone can build one and/or improve it.

Have you ever dreamed of having a keychain allowing you to play your favorite NES, SNES or GBA games? No ?

Well neither did I until Sprite_TM completely won my heart last year with such a cute, impressive and useless little wonder, as I sincerely hope Keymu will win yours.

And of it does, everything will be provided so that you can build your own.

Inspiration

Before getting into the full description, there is credit to be given first, otherwise this whole project would start by not respecting its own principles.

At the 2016 Hackaday superconference was introduced what, in my mind, could be qualified the coolest, nerdiest and cutest project I ever came across. Sprite_TM simply blew the minds of many people that day, myself included, with his tiny Gameboy emulator that was not only the cutest thing ever but also the full package: a great display of what one man, with knowledge of both hardware and software development can achieve.

Introduction

This project, Keymu, stems from the idea that the incredible feat that Sprite_TM was able to pull off can be passed on to anyone who is willing to learn electronics and software development, so that anyone can build their own amazing little keychain emulation console. The strength of Keymu is to propose fully detailed and complete tutorials along with the source files, for each part of the development, with photographs and videos, so that any tech-lover, retro-gamer, electronic enthusiast, (…) out there who wants to build one from scratch and enhance it the way they want can do so.

Simply copying someone's work, even if making everything open-source and with tutorials, would neither have been original nor fun. Instead Keymu takes the idea from Sprite_TM a step further by incorporating a Linux Debian distribution allowing to install multiple emulators (GameBoy Color, GBA, NES, SNES…). The design has also been rethought, while keeping a Keychain form factor (42x46x17mm), to include a 3D printed foldable screen mechanism allowing more space for the buttons and more protection against the harsh environment that represents someone's pocket.

The first Intel Edison based Emulation console

Thanks to the Raspberry Pi foundation and its amazing community, many versions of multi-platform emulators have been proposed and it is fairly easy nowadays to build its own emulation device, using a Raspberry Pi (any version) coupled with the well-known retroPie distribution.

Keymu however, could not be based on a Raspberry Pi for the obvious reason being that even the smallest version out there (raspberry Pi zero or zero W) is still way too big to make a complete package qualifiable as “keychain sized”. Instead, and this is a first, the system on chip used as core component is the Intel Edison. I am not pro-Edison and in fact the project will discuss in depth the different pros and cons of using this chip, but as of today, and to my knowledge, no other system on chip can compete with the features/size ratio given the constraints of this project.

Open-souce software, electrical and mechanical design

What is given and easy to install for a raspberry pi is neither given nor easy on the Intel Edison, and this is a good thing. Developing on this platform is a great way to learn about Linux: How to install and customize a Debian distribution, how to build and add drivers into the kernel for a color OLED screen with DMA (on a supposedly headless module), for defining a custom keyboard from GPIOS, for adding PWM audio …

Keymu brings a lot of software development knowledge but, being the world smallest fully-playable multi-platform emulator out there (in my knowledge), it is also obviously about hardware. And to continue with the philosophy of this project, all about its hardware will be shared, along with commentaries, tips and thoughts for the PCB design, BOM, CAO, and 3D printing process.

Conclusion

If you are interested or curious about Keymu, then you are most welcome to read the tutorials as they will be published and try/build/play with/enhance this project for yourself.

  • 1 × Keymu custom PCB
  • 1 × Intel Edison SOC
  • 1 × 1.5'' OLED Display 128x128 (SSD1351)
  • 1 × 11.7mm speaker
  • 1 × Micro-USB connector

View all 9 components

  • Block diagram

    c.Invent04/26/2017 at 16:18 0 comments

    At the time when these lines are written, the project prototype has been fully validated except for the sound. Granted, design-wise the prototype is much closer to a bomb than to a keychain, but believe me, after all the work it involved, it has never been so rewarding to play some good old fashion SuperMario Kart (GBA).

    However there is some catching up to do before getting into the fonctional prototype.

    This first log describes the main components of this project:

    • Let us start by the most important component: the processing unit. After looking online for the best fitted computer module (nice comparison of modules at the end of this page), I believe the most suitable solution can be found in the Intel Edison module. For around 50$, you have a module of 35.5 x 25 x 3.9mm with a beefy dual core 500Mhz processor (based on an x86 architecture), 1GB of RAM, 4GB of flash storage on board, bluetooth, wifi, a power management unit, and many interfaces: usb, sd card interface, SPI, 2 I2C, 2 UART, I2S, and 12 GPIOs.
      Agreed, it is expensive but it is either this or building its own processing unit (which I simply do not know how to do), or opt for a way bigger solution. I sincerely hope Intel will decrease the price of their module, especially since it is out for some time now.
    • The second main component of Keymu would be its screen. For this part I realized very quickly that, as for the processing unit, there were not many possible solution available. The size constraint makes it only suitable for screens up to 1.5" to 1.6" maximum to be considered. The Edison does not have display interfaces such as MIPI or MCU, so the only way to command and send data to the screen was with SPI. With difficulty, it is possible to enable DMA on the Edison (I'll get into this later), allowing to communicate in SPI up to 25Mbit/s. Using RGB 565 (2Bytes per pixel), at 25fps, the maximum squared resolution reachable with SPI is then given by sqrt(25000000/(2*8*25)), that is to say 250x250. Other requirements were the display depth and the minimum size of the flex connector (it had to be long enough to turn around the hinge). After searching everywhere I could think of, I could not find a screen meeting all the criterions. The closest I found was an SSD1351 OLED screen but a concession had to be made on the resolution since it is only 128x128. There is a very good point to this screen tough: it is very easy to prototype with since Adafruit sells its very own breakout board.
    • The rest of the components are represented in the block diagram above. They were relatively easy to find once the final design was decided so I will not spend too much time on it. The only thing I would stress out is that "easy to find" is never given when building a product so small. Everything need to be thought of in advance, and my advice is to have a VERY good idea of your final design before getting the components and vice-versa when building the design. Yes it is a vicious circle but it is the way of small, optimized packages such as Keymu: the mechanical design and the choice of components are interconnected and need to evolve at the same time.

    This is it for this first blog, the next one will be, I think, about describing more in details the advancement of the project and giving the roadmap.

View project log

Enjoy this project?

Share

Discussions

peter jansen wrote 06/01/2017 at 17:21 point

Wow that's tiny!  Good work!

  Are you sure? yes | no

Squonk42 wrote 05/22/2017 at 20:11 point

Can't wait to have it in my hands ;-)

  Are you sure? yes | no

Ramon Imbao wrote 05/22/2017 at 13:53 point

Looks fantastic! Can't wait to build one myself.

  Are you sure? yes | no

c.Invent wrote 05/22/2017 at 17:57 point

Thanks Ramon!
The first "real prototype" was put together this weekend and - oh man - it looks even better when you have it in your hands (even though I am obviously not the most objective party able to claim such things).
I'm afraid there are still many little (and not so little) things that need improvements before I can put it out in the open though. Even for the Version 1.0, I would like something sturdy, beautiful and (a bit) finalised/optimized. In fact my next log will be all about that: what's left to be done or improved and most importantly what works today (with a nice video if I have the time)...

  Are you sure? yes | no

c.Invent wrote 04/27/2017 at 13:33 point

It was the idea at first until I realized I had no space for the speaker left. 

Even if they are really small, it was still too big (especially for the space under the right arrow and the X button). The only compromise I found was to opt for a round form factor, allowing to remove the angles taking space for the buttons.

Right now I am using this one:

http://fr.farnell.com/multicomp/mckp1227sp1-4721/transducteur-haut-parleur-rx-1/dp/2396076?ost=MCKP1227SP1-4721&selectedCategoryId=&categoryNameResp=Tous&searchView=table&iscrfnonsku=false

  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