Project Description
I need a professional firmware solution to turn a Waveshare ESP32-S3-Touch-LCD-1.85" (V2 Hardware) into a high-performance, self-starting digital photo frame. The board features a 360 × 360 circular display and must operate as a dedicated appliance.
Hardware Specifications
• Board: Waveshare ESP32-S3-Touch-LCD-1.85" V2 (Must support ES8311 and ST77916).
• Memory: 16MB Flash / 8MB OPI PSRAM (OPI configuration is mandatory).
• Peripherals: TCA9554PWR IO Expander (for Reset/Backlight) and Micro-SD slot.
Core Requirements
1. Instant Start: The slideshow must launch automatically upon power-on without any user interaction.
2. Smooth Performance: Implementation of DMA transfers or double-buffering to ensure buttery-smooth transitions at a perceived 30+ FPS. No tearing, flickering, or visible artifacts during image swaps.
3. Media Handling: Code must mount the Micro-SD card and loop through a folder of JPEGs or PNGs. Images should be neatly scaled or cropped to fill the circular 360 × 360 area.
4. Rotation Support: Include a simple logic to rotate images 90/180/270 degrees based on a filename suffix (e.g., photo_90.jpg).
Deliverables
• Portable Source Code: A complete Arduino IDE project folder (.ino plus all necessary local .h and .cpp drivers). The project must be "self-contained" (all hardware drivers in the local folder) so it compiles on a clean install without path errors.
• Flashable Binary: A compiled .bin file that I can flash directly to the board using esptool.py or a web-flasher for immediate verification.
• README: A brief guide on folder structure for the SD card and instructions for compilation/flashing.
• Resource Report: Notes on memory headroom (Flash/PSRAM usage) to understand limits for future assets.
Acceptance Criteria
• Successful boot and automatic slideshow start from power-up.
• Zero lag or flicker during image transitions.
• Full utilization of the circular screen area with no "dead" pixels or framing issues.