Skip to content

Add the Seeed XIAO ESP32S3 Sense to the device catalog - #245

Open
AnjinMeili wants to merge 1 commit into
MoonModules:mainfrom
AnjinMeili:xiao-sense-catalog
Open

AnjinMeili wants to merge 1 commit into
MoonModules:mainfrom
AnjinMeili:xiao-sense-catalog

Conversation

@AnjinMeili

Copy link
Copy Markdown
Contributor

Adds the Seeed XIAO ESP32S3 Sense (ESP32-S3R8 with 8 MB octal PSRAM and 8 MB flash, with the Sense expansion board) to mooninstaller/deviceModels.json, on the esp32s3-n8r8 firmware. Picking it in the installer sets up:

  • the PDM microphone on ws 42 and sd 41, at the default 24 kHz;
  • the microSD slot over SPI: clk 7, MOSI 9, MISO 8, CS 21;
  • the BOOT button (pin 0) toggling Control.switch1;
  • the RMT LED driver, with its pins left to the user, as the Generic ESP32 Dev, LOLIN D32, LILYGO T7-S3 and ESP32-C3 SuperMini entries leave them.

The board has no antenna of its own, only a u.FL connector, so the description says WiFi needs the antenna attached.

The camera is listed under planned. I would like it to become a step in the "Video in, LED walls out" plan, behind the source registry; I will raise that separately.

What an agent wrote. Claude Opus 5.5 wrote the entry and this description from the board's schematics, arduino-esp32's pins_arduino.h and camera_pins.h, and Seeed's wiki; I reviewed every line.

Tested on two XIAO ESP32S3 Sense units with the Sense board attached, running esp32s3-n8r8 built from this tree:

  • the entry's state applied over HTTP and read back, on both;
  • the microphone with music playing, on both: gate open, 4 to 7 onsets a second;
  • the microphone on the second unit with four test tones from a speaker (100 Hz, 1 kHz, 4 kHz, 9 kHz), at 16 and 24 kHz: both rates place the first three, 24 kHz places the 9 kHz tone in its top band where 16 kHz cannot, and the band analysis reports 9% CPU at 24 kHz against 6% at 16 kHz;
  • the SD card, one 4 GB card moved between the units, mounted and listed on both, and a 35-byte file written, read back and deleted on the first;
  • the BOOT button on the second unit: a press reached Control.switch1;
  • a 24-LED WS2812B strip (GRB) on pin 1 of the second unit, set by hand as the entry leaves pins to the user, lit by the RMT driver with a sound-reactive effect;
  • check_devices.py: 46 devices, 0 issues.

Not tested: a write over about 50 KB, the size at which an SPI card can stop until a power cycle, as the SD card service warns.

Tried and left out: s60sc's ESP32-CAM_MJPEG2SD drives this slot as SDMMC 1-bit on clk 7, cmd 9, d0 8, but MoonLight's SDMMC found no card on those pins (cause not traced), so the entry keeps SPI.

Reported by a user on the WLED Discord: the microphone works in MoonLight with PDM, ws 42 and sd 41, and he runs three curtains from pins 1, 2 and 4.

The XIAO ESP32S3 Sense installs with its PDM microphone, microSD slot and BOOT button set up, and its LED pins left to the user. Tested on two units: the microphone hears music and test tones, and the card mounts, reads and writes.

KPI: tick:452us(FPS:2212) | heap:8244KB | src:393(99554) | test:292(70180) | functions-over:333
Commit: src +0/-0 lines | test +0/-0 lines | duplicated lines 3186 -> 3186 (+0)

**UI**
- Device catalog: "Seeed XIAO ESP32S3 Sense" on esp32s3-n8r8: PDM mic on 42/41 at the default 24 kHz, SD over SPI (clk 7, MOSI 9, MISO 8, CS 21), BOOT button toggling Control.switch1, RMT LED driver without pins; camera listed as planned; the description says WiFi needs the u.FL antenna attached.

**Tests**
- Two XIAO ESP32S3 Sense units: state applied and read back on both; mic with music on both; 100 Hz, 1 kHz, 4 kHz and 9 kHz tones at 16 and 24 kHz, where only 24 kHz places 9 kHz; SD listed on both and a 35-byte write, read-back and delete; a BOOT press reaching Control.switch1. KPI live from the second unit.

**Reviews**
- LED pins 1,2,4 were a user's wiring, against the catalog's "only what the hardware fixes": done, pins dropped.
- "OV3660" named one unit's sensor: done, "a camera".
- sampleRate 16000 had no hardware reason: done, dropped after the tone test showed 24 kHz clean and 16 kHz folding 9 kHz.
- The J3 jumper claim was unverified: done, dropped.
- The description ran three sentences: done, one sentence.
- SPI was presented as the slot's fact: done, "in SPI mode"; SDMMC 1-bit found no card, so SPI stays.
- GPIO and header names were mixed: done, GPIO numbers.
- "ESP32-S3R8 (8 MB flash" read as on-chip: done, reworded.
- The antenna was unstated: done, a clause.
Copilot AI balanced review requested due to automatic review settings November 13, 2026 19:04
@coderabbitai

coderabbitai Bot commented Nov 13, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues are recorded for the Seeed XIAO ESP32S3 Sense device catalog addition.

No open issues 🎉

What changed in this PR

Adds the Seeed XIAO ESP32S3 Sense to MoonLight’s device catalog so the installer can select compatible firmware and configure its supported peripherals.

Changes:

  • Selects esp32s3-n8r8 firmware and configures the PDM microphone, SPI microSD slot, and BOOT button toggle.
  • Includes the RMT LED driver with user-selected pins.
  • Documents the external antenna requirement and lists camera support as planned.
File Description
mooninstaller/​deviceModels.json Adds the board entry with firmware selection, peripheral defaults, and hardware notes.

Review effort: Balanced

This branch has not been deployed

No deployments
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