← Projects

XIAO ESP32-S3OV3660ST7789Pixel ArtCloudflare Workers + R2

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:

  1. Capture the OV3660 at 320×240.
  2. Downscale to 60×60 with a box filter for smooth blocks.
  3. Enhance — boost saturation and contrast so retro palettes pop.
  4. Quantize to a fixed palette (nearest color), with optional Bayer 4×4 dithering.
  5. 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

Get the parts (Shopee) ← Back to all projects