JC3636W518

18 Mar 2026
ESP32

espTouch

Exploring the limits of the JC3636W518 — a cheap, off-the-shelf round touchscreen module built around an ESP32-S3 with an ST77916 QSPI 360x360 display and capacitive touch.

The goal is to see how far we can push this little device using ESP-IDF (no Arduino), from basic display driving through to more ambitious interactive and networked applications.

Hardware

Component Detail
MCU ESP32-S3 (QFN56, rev v0.2), 8MB PSRAM
Display ST77916, 360x360 round, QSPI interface @ 40MHz
Touch Capacitive, I2C @ 0x15
Flash 16MB

Current: colour_touch

Interactive colour wheel picker. On boot the display renders an HSV colour wheel — white at the centre blending to full-saturation hues at the edge. Touch anywhere to fill the screen with that colour. It stays on your last pick until you touch again.

Key lesson learned: The espressif/esp_lcd_st77916 component has well-tested default init commands for QSPI. Passing custom vendor init (e.g. from Arduino examples) completely replaces the defaults and can cause display artefacts. See colour_touch/NOTES.md for the full debug story.

Build & Flash

Requires ESP-IDF v5.1+.

cd colour_touch
idf.py build flash monitor -p /dev/ttyACM0

Ideas for Next Steps

  • Animated clock face — Use the round form factor for an analogue clock with smooth sweeping hands, rendered in real-time. A good test of partial screen updates and frame rate.

  • WiFi status dashboard — Connect to WiFi and display live data (time via NTP, weather, network stats). Explores the ESP32-S3’s wireless capability alongside the display.

  • Gesture recognition — The touch controller supports multi-touch. Detect swipes, pinches, and rotary gestures around the bezel to build a rotary dial or scroll interface.

  • Audio visualiser — Feed in audio via the ADC or I2S and render a circular spectrum analyser or waveform. Pushes rendering performance and DMA throughput.

  • LVGL integration — Port LVGL to this display for proper UI widgets, menus, and transitions. The 360x360 resolution and round shape make it a good candidate for a watch-style UI.

  • Wireless pixel canvas — Run a WebSocket server on the ESP32-S3. Clients connect via browser and collaboratively paint on the round display in real-time.

  • Brightness-aware dimming — If there’s an ambient light sensor or spare ADC pin, auto-dim the backlight. The LEDC PWM backlight control is already in place.

Recent Activity

  • 6e3f287 colour touch working nicely (2026-03-18)

Languages

  • C: 94%
  • Makefile: 5%