Tiny8BitCam
A free-to-play pixel-art camera kiosk. See yourself as live 8-bit art on a tiny screen, press the shutter, then scan a QR code to download your shot — no charge, just build-it-yourself parts links.
The idea
Point the camera at yourself and the little screen shows you rendered as live pixel art — not raw video, but a real-time retro palette. Hit the shutter, a QR code appears, and you scan it to download the photo from your phone. It's designed as a fun, free kiosk: the download page carries a "build this camera yourself" parts list, so it earns through affiliate links rather than charging users. Made under the UnoIOT banner — "ซื้อไม่ได้ก็สร้างเอง" (if you can't buy it, build it).
How it works
The magic is the viewfinder pipeline, running 10–15 fps on the ESP32-S3:
- Capture the OV3660 at 320×240.
- Downscale to 60×60 with a box filter for smooth blocks.
- Enhance — boost saturation and contrast so retro palettes pop.
- Quantize to a fixed palette (nearest color), with optional Bayer 4×4 dithering.
- Upscale ×4 with nearest-neighbor — hard pixel edges, never blurred.
Swappable palettes ship with Game Boy, NES, PICO-8 and C64, cycled live with a palette button.
Shoot → download flow
On shutter press the frame freezes and renders to a crisp 480×480 PNG. It's always saved to microSD first (so a bad WiFi moment never loses a shot), then uploaded. A small Cloudflare Worker stores the image in R2 and returns a short URL; the camera draws that as a QR code on the ST7789 display for the user to scan.
Hardware
- MCU: Seeed XIAO ESP32-S3 Sense (8 MB PSRAM, 8 MB flash)
- Camera: OV3660 on the Sense expansion board
- Display: ST7789 240×240 1.54" IPS (SPI)
- Storage: microSD (shared SPI bus)
- Input: shutter button + palette-switch button