Skip to content

Latest commit

 

History

123 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESP32-C6-Touch-AMOLED-1.8

A collection of ESP-IDF firmware projects for the Waveshare ESP32-C6-Touch-AMOLED-1.8 development board.

Built with an agentic-first development workflow — each project is developed with Claude Code as the primary agent. Hardware specs, build rules, LVGL gotchas, and lessons learned across all projects live in CLAUDE.md and .claude/commands/, giving the agent full context from the first message of every session.


Board

Feature Detail
Chip ESP32-C6, RISC-V 160MHz, single-core
Flash 16MB external NOR-Flash
Display 1.8" AMOLED, SH8601, 368x448, QSPI 40MHz
Touch Capacitive, FT3168, I2C
PMIC AXP2101 (LiPo charge/discharge, power rails)
IMU QMI8658 (6-axis accelerometer + gyroscope)
RTC PCF85063 (with backup battery pads)
Audio ES8311 codec + dual microphone array + speaker
IO Expander TCA9554 (controls display/touch power)
Wireless Wi-Fi 6, BT 5 LE, IEEE 802.15.4 (Thread / Zigbee / Matter)
Storage microSD card slot (SDMMC)
Battery 3.7V LiPo, MX1.25 connector, ~350mAh

Projects

# Project One-liner
11 MCP Canvas MCP server — AI agent draws to AMOLED over WiFi (12 tools)
12 Baby Cry DSP Crying detection via pure DSP — FFT, adaptive threshold, SD logging
13 Baby Cry VAD Crying detection with VAD gate + DSP (ESP-SR research documented)
14 Sensory Play IMU-driven toy — particle physics, tilt gestures, touch keyboard
15 Nursery Rhymes Music-box player with realistic harmonic synthesis
16 BitChat Relay BLE mesh relay for BitChat protocol — telemetry + SD logging
17 PixelPet Tamagotchi-style virtual pet with sprite renderer + RTC decay
18 Govee Monitor BLE humidity/temperature monitor with charts, Supabase upload and a parquet archive

Each project's own README has the detail (architecture, build steps, screenshots). Numbering continues from an earlier board (ESP32-C6-LCD-1.47) in a separate repo, which is why it starts at 11.

MCP Canvas Demo


Getting Started

Prerequisites

Build & Flash

# Activate ESP-IDF
. ~/esp/esp-idf/export.sh

# Build
idf.py -C projects/<name> build

# Flash
idf.py -C projects/<name> -p /dev/cu.usbmodem1101 flash

New Project Setup

  1. Copy the scaffold from an existing project or use /new-project <name> with Claude Code
  2. Copy sdkconfig.defaults.templatesdkconfig.defaults, fill in WiFi credentials
  3. Run idf.py -C projects/<name> set-target esp32c6
  4. Build and flash

Repository Structure

ESP32-C6-Touch-AMOLED-1.8/
├── shared/components/      # Shared ESP-IDF components (amoled_driver, lvgl, ...)
├── projects/               # One subdirectory per firmware project (11_…, 12_…, …)
├── docs/
│   ├── board-research/     # Numbered research docs — board, silicon, peripherals
│   ├── waveshare-support/  # Verbatim vendor support correspondence
│   ├── research/           # External research artefacts (e.g. BitChat protocol)
│   ├── reference/          # Score sheets, lookup tables
│   ├── media/              # Photos and demo videos for READMEs
│   └── *.md                # Loose blog posts and ad-hoc setup notes
├── ref/                    # Vendor reference code (gitignored)
├── .claude/commands/       # Agent skills for Claude Code
├── CLAUDE.md               # Operational summary: pin map, build rules, gotchas
└── README.md               # You are here

Documentation

  • CLAUDE.md — pin map, build commands, init sequence, every "gotcha" we've hit. Read this first.
  • docs/board-research/ — long-form research backing CLAUDE.md: official docs digest, chip reference, GPIO map, I2C bus, RTC/audio, power saving, project plans, etc. See its index.
  • docs/firmware-robustness.md — how this repo makes firmware-to-REST pipelines survive outages, reboots and its own bugs. Every rule traced to a real failure in project 18.
  • docs/waveshare-support/ — exact vendor support tickets and replies, kept verbatim.
  • Per-project READMEs — each projects/<name>/README.md covers that project's architecture and quirks.

Critical Hardware Notes

  1. TCA9554 IO expander (I2C 0x20) must set P4 and P5 HIGH before display/touch init
  2. SH8601 coordinates must be even-aligned — LVGL needs a rounder callback
  3. No PSRAM — display has built-in GRAM; use widget-based rendering, not framebuffer
  4. Nearly all GPIOs are used by onboard peripherals — very few free pins for external hardware
  5. 6 I2C devices share one bus (GPIO 7/8): TCA9554, AXP2101, FT3168, QMI8658, PCF85063, ES8311
  6. AXP2101 PMIC — long-press power button (2.5s) for hardware shutdown
  7. SD card and AMOLED display share SPI2 — cannot be active simultaneously. See docs/board-research/18-sd-display-spi-sharing.md.

Key Links

License

MIT

About

ESP-IDF firmware projects for the Waveshare ESP32-C6-Touch-AMOLED-1.8 — built with an agentic-first workflow using Claude Code. Includes MCP canvas, baby cry detection, IMU toy, music synth, BLE mesh relay, and Tamagotchi-style virtual pet.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages