Crank-Powered Game Console

2025-07-03

Crank-Powered Game Console
Hardware, Embedded, ESP32, Sustainability, Energy Harvesting

This is a handheld crank-powered game console I built around the ESP32, designed to run on nothing but human power and sunlight. It uses supercapacitors for energy storage, a Sharp memory LCD for ultra-low power display, and a tiny gear motor crank that charges the system directly. It boots when you generate enough voltage and plays Game Boy ROMs through the peanutGB emulator.

Inspired by the Playdate, I was initially excited by the concept, but disappointed to find out its crank doesn’t actually power the device. So I decided to build my own version that could.

Features

Design Overview

The creation doesn’t use a custom PCB. It’s a collection of perfboard and breakout boards wired together into a functioning prototype. The crank is a small DC gear motor connected through a full bridge rectifier to charge the supercapacitors directly. Cranking for about 4 minutes gets it to the boot threshold. The solar panel charges faster, taking roughly 2 minutes.

The ESP32 runs through a boost-buck converter to maintain voltage during operation. I originally used a boost-buck for charging as well, but it restricted current flow too much, so I removed it and went direct.

The system also features an SD card, which it uses to load its operating environment and ROMs. On boot, it launches a Lua-based shell that gives access to system internals. Through this, I can write Lua commands that interface directly with C bindings for lower-level hardware or emulator control. It’s a fun hybrid model that makes experimentation easy and quick.

Input and Gameplay

You can play using a small soldered button panel with a D-pad and A/B buttons. The crank also serves as an analog input using voltage dividers to measure direction and speed. There’s no sound yet, though I plan to add it in the future.

Technical Challenge

The hardest issue was one that looked like a memory corruption bug. I was seeing display artifacts and frequent crashes and assumed it was bad PSRAM access. It turned out I had wired the display to the ESP32’s internal SPI pins, which interfered with PSRAM and caused instability. Debugging this took a long time and forced me to set the creation aside for a while. Eventually I figured it out and rerouted the pins, which solved the problem completely.

What I Learned

This was a deep dive into energy-aware system design. I gained a lot of practical knowledge about managing low-voltage electronics, choosing components that behave well under fluctuating conditions, and designing systems where power is always a constraint. Supercapacitors are surprisingly pleasant to work with despite their low energy capacity, and I’m glad I chose them.

What I'd Do Differently

If I were rebuilding this, I probably wouldn’t use the crank as the primary power source. It works, but it takes time and effort to charge, and the power-to-playtime ratio isn’t great. The solar panel is far more convenient. I’d also design a custom PCB to make the system more compact and durable. And I’d probably include a small speaker or buzzer for sound.

GitHub

You can find the code here: GitHub


This started as an experiment and a bit of a dare to myself, but it ended up being one of my favorite embedded creations. It’s weird, expressive, and surprisingly playable.