A vintage Sony Watchman portable TV converted into a modern ESP32-powered media player that plays classic TV shows on a continuous loop.
Transform a vintage 1980s Sony Watchman into a pocket-sized retro media player powered by ESP32. Turn the dial to switch between channels (TV shows), each playing episodes on continuous loop. Shake to shuffle episodes, or just enjoy the nostalgic viewing experience!
- Multi-Channel System - Each channel plays a different TV series
- Rotary Encoder Control - Authentic channel switching via the original tuning knob
- MJPEG Video Playback - Optimized for ESP32 hardware
- I2S Audio - High-quality sound through the original speaker
- SD Card Storage - 32GB+ for your entire video library
- Battery Powered - 2x 18650 batteries for 10+ hours of playback
- Auto Sleep - Power management for extended battery life
- Episode Auto-Advance - Seamless viewing experience
Phase 1 - Proof of Concept: 60% Complete
- β ESP-IDF project structure
- β Display driver (ST7789VW 240x320)
- β SD card interface with channel management
- β AVI/MJPEG file parser
- β Video playback engine
- β Audio player (I2S)
- β Rotary encoder driver
- β Power management system
- π§ A/V synchronization
- π§ Main application integration
- π§ Hardware testing
- Integrate all components
- Build and flash to hardware
- Create test content
- Optimize performance
See STATUS.md for detailed progress tracking.
| Component | Model | Purpose |
|---|---|---|
| Microcontroller | ESP32-WROOM-32 / ESP32-S3 | Main processor |
| Display | 2" IPS LCD (ST7789VW) | 240x320 color display |
| Storage | MicroSD Card (32GB+) | Video content |
| Audio | I2S DAC | Audio output |
| Input | KY-040 Rotary Encoder | Channel selection |
| Power | 2x 18650 Batteries | 6.0V - 8.4V |
| Case | Vintage Sony Watchman | Original housing |
ESP32 Connections:
ββββββββββββββββββββββββββββββββββββββββ
Display (SPI):
MOSI β GPIO 23
CLK β GPIO 18
CS β GPIO 5
DC β GPIO 16
RST β GPIO 4
BL β GPIO 15
SD Card (SPI):
MISO β GPIO 19
MOSI β GPIO 23 (shared)
CLK β GPIO 18 (shared)
CS β GPIO 17
Audio (I2S):
BCLK β GPIO 26
WS β GPIO 25
DOUT β GPIO 22
Encoder:
CLK β GPIO 32
DT β GPIO 33
SW β GPIO 27
Battery:
VOLTAGE β GPIO 34 (ADC)
components/
βββ display/ # ST7789 SPI display driver
βββ storage/ # SD card + channel management
βββ video/ # AVI parser + MJPEG decoder
βββ audio/ # I2S audio player
βββ input/ # Rotary encoder driver
βββ power/ # Battery monitoring + sleep
Framework: ESP-IDF 5.x Video Format: MJPEG in AVI container Audio Format: PCM 16-bit @ 22.05kHz mono Target FPS: 15-20 FPS Memory: ~288KB heap usage (fits in ESP32)
- Option 1 (Easier): PlatformIO IDE (recommended for beginners)
- Option 2: ESP-IDF v5.x (for advanced users)
- ESP32 development board
- USB cable
- Python 3.8+
PlatformIO (Recommended):
# Install PlatformIO
pip install platformio
# Build
pio run
# Flash
pio run -t upload -t monitorNative ESP-IDF:
# Set up ESP-IDF environment
. ~/esp/esp-idf/export.sh
# Build and flash
idf.py set-target esp32
idf.py build flash monitorFor detailed instructions:
- PlatformIO: see PLATFORMIO.md
- ESP-IDF: see BUILD.md
Hardware: You'll need a MicroSD Card Module (SPI interface)
- See SD_CARD_SETUP.md for module recommendations and wiring
Setup:
-
Format SD Card - FAT32, 16-32GB, Class 10
-
Create Directory Structure
/sdcard/ βββ channels/ βββ MST3K/ β βββ episode_01.avi β βββ episode_02.avi β βββ ... βββ The_Twilight_Zone/ βββ episode_01.avi βββ ... -
Encode Videos
ffmpeg -i input.mp4 \ -vf "scale=240:240:force_original_aspect_ratio=decrease,\ pad=240:240:(ow-iw)/2:(oh-ih)/2" \ -r 15 \ -q:v 8 \ -vcodec mjpeg \ -acodec pcm_s16le \ -ar 22050 \ -ac 1 \ output.avi
- PLATFORMIO.md - PlatformIO setup and usage (recommended)
- BUILD.md - Native ESP-IDF build instructions
- SD_CARD_SETUP.md - SD card module selection and wiring
- STATUS.md - Current development status
- PROJECTPLAN.MD - Project vision and architecture
- TASKS.MD - Detailed task breakdown (156 tasks)
- CLAUDE.MD - Development guidelines for AI assistance
- Video plays at 15+ FPS
- Audio synchronized within 100ms
- Channel switching under 2 seconds
- Battery life exceeds 10 hours
- Fits in original Watchman case
- All controls functional
- Core video/audio playback
- Basic hardware drivers
- SD card content management
- A/V synchronization
- State persistence
- Episode management
- Shake detection
- UI overlays
- Battery optimization
- Case retrofitting
- Final assembly
- Polish and testing
- Video encoding pipeline
- Content library creation
- Documentation
This is a personal hobby project, but suggestions are welcome! Please refer to:
This project is open source for educational and hobby purposes.
- Espressif for the amazing ESP32 platform
- The open-source community for ESP-IDF and libraries
- Vintage electronics enthusiasts keeping retro tech alive
Have questions or want to share your own build? Open an issue on GitHub!
Last Updated: 2025-11-05 ESP-IDF Version: 5.x Hardware: ESP32-WROOM-32 / ESP32-S3