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
The heart of this project is all about education and nerdiness:
How can embedded electronics be taught in a fun and interesting way without just scratching the surface but by instead going deep into software and hardware development?
Motivation is key.

Keymu addresses this issue by allowing anyone to build the world’s smallest emulation console from scratch. So small it can easily be attached to your keychain while being fully playable. It stems from an original (amazing) idea from Sprite_TM, and brings improvements, completely open source files, and most importantly fully adapted tutorials to everyone.

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 if it does, everything will be provided so that you can build your own.

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.

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 Gameboys.

The core issue that Keymu is trying to address is how embedded electronics can be made interesting and fun to learn, how it can make some people at home say “hey, whoah it’s so cool, I could build this myself!” without being shallow, but on the contrary by tackling a lot of different subjects thoroughly, such as (but not limited to):

  • What is Linux how to build a Linux distribution?
  • Basic communications in Embedded systems between components,
  • Modifying the Kernel and creating kernel drivers
  • Software development in QT,
  • Building a functioning prototype,
  • Custom board development,
  • Mechanical design,
  • 3D printing,

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 enthousiast, (…) 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 distribution allowing to install multiple emulators (GameBoy Color, GBA, NES, SNES…). The design has also been rethought, while keeping a Keychain form factor, to include a 3D printed flexible screen mechanism allowing more space for the buttons and more protection against the harsh life going on in someone's pocket.

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.

“This is absurd then! What makes this project stand out, how is it new in any way?”

Well, in fact, Keymu has a lot to bring, and more importantly a lot of new.

For starters, it does not use a raspberry Pi, 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.

What is given and easy to install for a raspberry pi is – be sure of it – neither given nor easy on the intel Edison, and this is a good thing. Developing on this platform is a great way to teach about Linux: How to install and customize a Debian distribution from scratch, 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, how to build a basic front-end in QT…

Keymu brings a lot of software development knowledge but, being the world smallest fully-playable multi-platform emulator out there (in my knowledge),...

Read more »

  • 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

Squonk42 wrote a day ago point

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

  Are you sure? yes | no

Ramon Imbao wrote 2 days ago point

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

  Are you sure? yes | no

c.Invent wrote a day ago 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