How pangcrd/esp32-smart-photo-frame works
This is an ESP32 photo-frame firmware: people configure it through a browser dashboard or the device UI, while the frame reads JPEGs from SD storage and cycles them on its display. The web server also exposes WiFi setup, gallery management, weather, display settings, and system status; the README documents image editing, localization, themes, and reset actions. The map follows calls visible in sampled code and named interfaces; unsampled route and weather implementations are represented only where their paths are explicit, with uncertain wiring omitted.
Main entry points: web_server_manager.cpp HTTP API · main.cpp Firmware entry · ui_events.cpp UI interactions · jpg_gallery.cpp JPEG slideshow
Components 20
Firmware runtime
- Firmware entry
Source code/src/main.cpp - System monitor
Source code/src/sys/system_monitor.cpp - SD card storage
Source code/src/drv/sd_card_conf.cpp - Display port
Source code/src/drv/lvgl_port.cpp - Battery sensing
Source code/src/drv/bat_adc.cpp - Configuration store
Display experience
- JPEG slideshow
Source code/src/jpg/jpg_gallery.cpp - LVGL interface
Source code/src/ui/ui.c - UI interactions
Source code/src/ui/ui_events.cpp - Setup screens
Source code/src/ui/screens/ui_setup.c - Gallery screen
Source code/src/ui/screens/ui_image_gallery.c
Device management
- HTTP API
Source code/src/web/web_server_manager.cpp - Dashboard controls
Source code/data/app.js
Network services
- WiFi manager
Source code/src/wifi/wifi_manager.cpp - Weather data
Source code/src/web/get_weather.cpp - Network time
Source code/src/web/get_ntp.cpp - Weather API
Source code/src/web/get_api_data.h
Other components
- Frame user
- Browser dashboard
Source code/data/app.js - Internet services
Connections 30
- Frame user → Browser dashboard: manages frame
- Browser dashboard → Dashboard controls: uses dashboard
- Dashboard controls → HTTP API: HTTP requests
- Firmware entry → System monitor: updates
- Firmware entry → HTTP API: starts and updates
- Firmware entry → Display port: initializes
- Firmware entry → LVGL interface: initializes
- Firmware entry → UI interactions: updates
- Firmware entry → JPEG slideshow: ticks slideshow
- HTTP API → System monitor: reads status
- HTTP API → WiFi manager: manages WiFi
- HTTP API → SD card storage: uploads and deletes
- HTTP API → Configuration store: persists settings
- HTTP API → Weather data: serves weather
- HTTP API → Network time: serves time data
- WiFi manager → Configuration store: loads and saves
- WiFi manager → Internet services: connects
- System monitor → SD card storage: checks card
- JPEG slideshow → SD card storage: lists and reads JPEGs
- JPEG slideshow → Display port: renders images
- UI interactions → JPEG slideshow: starts gallery
- UI interactions → WiFi manager: resets WiFi
- UI interactions → Weather data: reads weather
- UI interactions → Battery sensing: reads charge
- UI interactions → LVGL interface: updates widgets
- LVGL interface → Setup screens: shows setup
- LVGL interface → Gallery screen: shows gallery
- Weather data → Weather API: uses API data
- Weather data → Internet services: fetches forecast
- Network time → Internet services: synchronizes