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:
- Buffer full
After 15 photos, the camera starts writing everything to the SD card.
- 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)