Tag Archives: Arduino Pokemon

Using Arduino to catch Pokémon

Gotta catch ‘em all but have no one to play with? Luckily, there’s Arduino. 

If you’re looking to “catch ’em all,” you’re going to need to have two Game Boys, two copies of the same game and, of course, someone else to play along with. Those not lucky enough to score all three, Pepijn de Vos has devised a solution.

“Sadly, not a whole lot of people own a Game Boy, a Pokémon game, and a link cable. So I decided to get creative and trade Pokémon with my Arduino,” the Maker writes.

De Vos has created an Atmel based system that acts as a Game Boy, storing a single Pokémon in EEPROM. This enables a user to trade between first-generation games using only a single console.


How it works is pretty simple. Compatible with both Pokémon Red and Blue versions, users connect their Game Boy, Game Boy Color or Game Boy Advance to the Arduino via a Game Link Cable, inserting the cartridge to the desired game and complete the trade. Meanwhile, the data is saved in the Arduino’s EEPROM — made possible through the on-board Atmel MCU.

“The Game Boy communicates over what is essentially a 5v SPI bus that can act both as a master and a slave. At 8KHz it is slow enough to bit-bang, so it works on any 3 GPIO pins,” the Maker explains. “I salvaged a connector from a GBA wireless adapter, and hooked it up to three Arduino pins with 1KΩ series resistors to be sure. Because both ends can in theory drive the clock line, I don’t want to short them out.”

All in all, the project will enable multiple trades in one session, and allow you to cancel them as well. What’s more, you can easily swap Pokémon between the different versions of the game by initiating a trade, swapping out cartridges, and re-trading. However, de Vos does advise users to remember to reset the Arduino when resetting the Game Boy, or else “bad things will happen.”
Ready to attain all 151 Pokémon? You can find all the necessary code for the project here.