ScanBoy
An RFID scanner dressed up as an original Game Boy. ScanBoy reads and writes both common card types, 13.56 MHz (MIFARE/NFC) and 125 kHz, from a single TAP spot on its back.
- Status
- In development
- Controller
- ESP32
- 13.56 MHz
- RC522 module (MIFARE/NFC)
- 125 kHz
- EM4095 module
- Display
- 16×2 blue-backlit LCD
- Controls
- Rotary encoder in the D-pad spot, A and B buttons
- Storage
- Full-size SD card
- Power
- 18650 cell with USB-C charging
- Size
- 90 × 152 × 32 mm, the same width as an original Game Boy
- Enclosure
- 3D-printed in six colors, my own design
- Firmware
- C++ on the Arduino framework (just started)
- Skills
- RFID (13.56 MHz and 125 kHz), ESP32, SPI and I2C, soldering, battery power and charging, parametric CAD (build123d), 3D printing, AI-assisted development


The goal
I'd researched RFID access control systems for work, but my boss decided to go a different direction. I still wanted to learn how RFID works, so I ordered some cheap reader modules and taught myself on my own time.
Design matters to me, and I didn't want those boards sitting on a breadboard on my desk while I learned. I wanted them in something that looked cool, in a nerdy way. While digging through a box of my classic video game consoles, I found my original Game Boy and knew that was the look.
How it works
Reading and writing
Two reader modules cover both common kinds of access card: an RC522 for 13.56 MHz MIFARE and NFC cards, and an EM4095 for 125 kHz cards. Their antennas are stacked behind a single TAP spot on the back, so you never have to know which kind of card you're holding. An ESP32 runs both.
Using it
Results show up on a 16×2 blue-backlit LCD behind a Game Boy-style screen bezel. A rotary encoder sits where the D-pad would be, and the A and B buttons do what you'd expect. A full-size SD card slot on the right side stores your scans.
Power and build
An 18650 cell powers it, with USB-C charging on the bottom edge. The on/off slide switch is on the top edge, right where the original Game Boy's was. Inside, the electronics are wired together, but every board clips or press-fits into its own printed holder, so any of them lifts out of the case without desoldering. The two shells are held together by six screws in heat-set inserts.

I designed ScanBoy and wrote its code with Claude as a coding partner.
Problems and fixes
- The perfboard didn't fit. The first test print showed that a 70 × 30 mm board was too narrow for the ESP32's pin rows, which sit 25.4 mm apart, and a 50 × 70 mm board ran into the encoder. A 40 × 60 mm board fits, with room left for wiring.
- The SD module slid back. Pushing a card in shoved the whole module backward. A backstop wall behind it now takes the push.
- The encoder sat off-center. The knob's shaft isn't centered on its circuit board, so the board's clips and pads moved 1.8 mm to line the knob up with its hole.
Where it is now
The v2 enclosure is designed, with the fixes from the first test print and the 125 kHz reader added. I'm still refining the print so every component is held properly. The firmware is just getting started, in C++ on the Arduino framework, and hasn't been tested on the device yet.
What's next
- Finish the printed design so every component is held securely.
- Cut down the soldering so anyone else who wants to build one can.
- Assemble it and test the firmware on the real device.

