Skip to content

Add Waveshare ESP32-S3-Touch-AMOLED-1.43 (466×466 round) board port#79

Open
fjarvis wants to merge 1 commit into
HermannBjorgvin:mainfrom
fjarvis:port/waveshare-amoled-143
Open

Add Waveshare ESP32-S3-Touch-AMOLED-1.43 (466×466 round) board port#79
fjarvis wants to merge 1 commit into
HermannBjorgvin:mainfrom
fjarvis:port/waveshare-amoled-143

Conversation

@fjarvis

@fjarvis fjarvis commented Jun 16, 2026

Copy link
Copy Markdown

Adds a board target for the Waveshare ESP32-S3-Touch-AMOLED-1.43 — a 466×466 round AMOLED (ESP32-S3, 16 MB flash / 8 MB OPI PSRAM). A new boards/ folder plus one PlatformIO env; shared code is untouched apart from the sanctioned round-screen layout pass in ui.cpp.

Verified end-to-end on hardware: builds clean, boots to the splash, drives the panel, touch toggles screens, and the macOS daemon connects over BLE and updates the usage screen.

Board — firmware/src/boards/waveshare_amoled_143/

  • CO5300 display over QSPI (CS=9 SCLK=10 D0–3=11–14 RST=21). Display selection is decoupled from touch: this panel is a CO5300 even on units fitted with an FT3168 touch, so inferring it from the touch address (as the 1.8 port does) is wrong and leaves the panel black. The QSPI bus is write-only so the display ID can't be read; SH8601 stays as a compile-time escape hatch (DISPLAY_IS_SH8601).
  • Touch: FocalTech-style polled reader (FT3168 @ 0x38 / CST820 @ 0x15), raw coordinates — the panel mounts 180° and the device is rotated physically in use.
  • Input: BOOT only; the hold-3s-to-pair gesture is synthesized from a BOOT long-press in power.cpp, so main.cpp stays untouched.
  • No PMU / IMU / IO-expander; imu and the power battery paths are stubs.

Round-screen UI — ui.cpp::compute_layout() (keyed on 466×466)

The square-480 layout pushed content under the round bezel. Added a round branch:

  • Inset, vertically-centred cards; the logo centred at the top with a small title under it; mono_18 status line so long animation words fit the narrow bottom chord.
  • Bug fix: hide the battery indicator on no-battery boards (it was rendering, clipped, in a corner).

The other boards (2.16 / 1.8 / C6) are unaffected.

Notes

  • Build: pio run -e waveshare_amoled_143 — ~1.3 MB, ~20% of the 6.25 MiB app partition.
  • Still unverified on hardware (minor): the 3 s BOOT-hold pairing gesture clearing bonds.

🤖 Generated with Claude Code

New board target `waveshare_amoled_143` (466x466 round AMOLED, ESP32-S3,
16MB flash / 8MB OPI PSRAM) plus its PlatformIO env. Shared code is untouched
apart from the sanctioned round-screen layout pass in ui.cpp.

Board (firmware/src/boards/waveshare_amoled_143/):
- CO5300 display over QSPI (CS=9 SCLK=10 D0-3=11-14 RST=21), driven
  unconditionally. Display selection is decoupled from touch: this panel is a
  CO5300 even on units fitted with an FT3168 touch, so inferring it from the
  touch address (as the 1.8 port does) is wrong and left the panel black. The
  QSPI bus is write-only so the display ID can't be read; SH8601 stays as a
  compile-time escape hatch (DISPLAY_IS_SH8601).
- FocalTech-style polled touch reader (FT3168 @ 0x38 / CST820 @ 0x15), raw
  coordinates — the panel mounts 180 deg and the device is rotated physically.
- BOOT-only input; the hold-3s-to-pair gesture is synthesized from a BOOT long
  press in power.cpp so main.cpp stays untouched.
- No PMU / IMU / IO-expander; imu and power battery paths are stubs.

Round-screen UI (ui.cpp::compute_layout, keyed on 466x466):
- Inset, vertically-centred cards; logo centred at the top with a small title
  under it; mono_18 status line so long animation words fit the narrow chord.
- Fix: hide the battery indicator on no-battery boards (it was rendering,
  clipped, in a corner).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@HermannBjorgvin

Copy link
Copy Markdown
Owner

Got a picture of it? Curious to see the round layout

@fjarvis

fjarvis commented Jul 16, 2026

Copy link
Copy Markdown
Author

Got a picture of it? Curious to see the round layout

Here's a picture - it's in a small 3D printed desk case.

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants