DEV Community

Alex Mo
Alex Mo

Posted on

I Built a Camera That Turns Reality Into Pixel Art

I built a camera that captures the real world as low-resolution, retro-style pixel art photos.

This is the first version (v1) of the project, and everything was made by me from scratch — both the 3D model and the code.

For this version, my goal was simple:
to build the cheapest and most accessible version possible, so anyone could recreate it without needing expensive parts or complicated tools.

This is just the starting point. In future versions, I’m planning to add:

an internal battery

a built-in screen

more features and a better overall user experience

Why I Made It

I wanted to create something playful, minimal, and a little nostalgic — a camera that doesn’t try to compete with modern image quality, but instead embraces limitations as part of its charm.

Rather than capturing reality in perfect detail, this camera transforms it into something that feels more like a memory from an old game.

What You Need to Build It

The current version only requires 4 basic electronic components, and they’re all either very cheap or easy to find.

Components

ESPRESSIF ESP32-CAM + TTL programmer

6x6mm push button

USB Type-C to 5V breakout

Wire

Build Guide

Here’s how to assemble your own Pixel Art Camera.

Tools Required

Soldering iron (essential)

Hot glue gun or super glue

Step 1 — Upload the Code

Before assembling the hardware, the first step is to get the system running.

Connect the ESP32-CAM to your computer using the USB-TTL programmer.

Open Arduino IDE.

Select the correct board and port, then upload the code from this repository.

Once the upload is complete, disconnect the board and remove the ESP32-CAM module from the programmer.

From this point on, you’ll only need the camera board itself for the build.

Step 2 — Prepare the Parts

Now solder the wires you’ll need for power and input.

USB Type-C breakout

Solder two wires to the breakout board:

one wire to V / VCC

one wire to G / GND

Button

Solder one wire to each leg of the push button.

Step 3 — Assemble the Case
Mount the external parts first

Glue the Type-C breakout board into the bottom-left slot

Glue the button into the top-right slot

Make sure both parts are firmly secured before moving on.

Install the ESP32-CAM board

Place the ESP32-CAM into the case.

Important: before applying glue, insert the SD card and make sure it can slide in and out freely.
If the board is positioned incorrectly, the case may block access to the card slot.

Once everything is aligned properly, secure the board with a small amount of glue.

Be careful: only apply glue to the corners of the board, especially around the top corners and the lower area near the antenna. Avoid getting glue on the central electronic components.

Step 4 — Wiring

This is the most important part of the assembly.

Power connection

Connect the Type-C breakout to the ESP32-CAM like this:

V / 5V → 5V pin

G / GND → GND pin

Warning: double-check polarity before powering it on. Reversed power wiring can permanently damage the board.

Button connection

Connect one wire from the button to GPIO 13

Connect the other wire to any GND pin

Note: GPIO 13 is the 4th pin from the top on the same side as the 5V pin.

Step 5 — Power On

Once everything is soldered and mounted, close the case, insert the SD card into the top-left slot, and connect the camera to a power source using a USB Type-C cable.

You can use either:

a power bank

a USB wall adapter

Quick Start
How to Use It

Power on: connect the camera to power

Wake the system: after plugging it in, press the button once

Take a photo: each button press captures one image

1 click = 1 photo

LED Status Guide

The LED gives feedback about what the camera is doing.

1 short blink — photo captured and stored in temporary memory

solid light — writing images to the SD card, do not unplug

2 fast blinks — save complete, safe to disconnect power

chaotic / strobe blinking — error, SD card missing or not detected correctly

3 slow blinks — camera is going to sleep automatically

How Image Saving Works

To make shooting faster, the camera uses a temporary RAM buffer.

That means photos are not written to the SD card immediately after every shot.

The write process starts automatically in one of these two situations:

  1. Buffer full

After 15 photos, the camera starts writing everything to the SD card.

  1. Session timeout

If you stop shooting and wait 10 seconds, the camera saves the buffered photos automatically.

Depending on how many photos are waiting, writing may take a few seconds.

Important Warning — How to Avoid Losing Photos

This part matters.

Before images are written to the SD card, they only exist in temporary memory.

Never disconnect power or remove the SD card:

while the LED is solid

while the LED is off but you just finished shooting and the camera is still waiting for the 10-second auto-save trigger

When is it safe to unplug?

Only after the solid light finishes and you see 2 fast blinks.

That signal means the save process is complete.

If power is removed before that, all photos still in the buffer will be permanently lost.

About the Image Format

The camera currently saves all images as BMP files.

That works, but it’s not ideal for sharing online or posting on social media.
To make that easier, I also created a helper script called upscale.bat.

Just place it on the SD card and run it on your computer.

The script will automatically:

create a new folder with today’s date

generate 3 subfolders inside it:

Originals

Stores the raw BMP files

Converted

Converts the images into JPEG for easier sharing

Upscaled

Creates 4x enlarged versions of the images

This upscaling increases the image dimensions to make details easier to see, but it does not increase the original image quality.

What’s Next

This is only v1, but it proves the core idea works:

a tiny DIY camera that turns everyday reality into pixel art.

The next versions will be more refined and more self-contained, with better usability and additional hardware features. But I wanted the first release to stay true to the original idea — simple, cheap, hackable, and fun.

If you like weird little devices, retro aesthetics, or hardware projects built around constraints, this one might be for you.

Top comments (0)