From b87f3559725ef06c4efc616e082eaff04158f90e Mon Sep 17 00:00:00 2001 From: James Hutchinson Date: Fri, 13 Nov 2026 10:57:32 -0800 Subject: [PATCH] Add the Seeed XIAO ESP32S3 Sense to the device catalog 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. --- mooninstaller/deviceModels.json | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/mooninstaller/deviceModels.json b/mooninstaller/deviceModels.json index 0788a6bf..18db92c4 100644 --- a/mooninstaller/deviceModels.json +++ b/mooninstaller/deviceModels.json @@ -1963,6 +1963,66 @@ } } }, + { + "name": "Seeed XIAO ESP32S3 Sense", + "chip": "ESP32-S3", + "firmwares": [ + "esp32s3-n8r8" + ], + "url": "https://wiki.seeedstudio.com/xiao_esp32s3_getting_started/", + "description": "ESP32-S3R8 with 8 MB octal PSRAM and 8 MB flash, and the Sense board: a PDM microphone on 42 and 41, a camera, and a microSD slot that takes 7 to 9 and, in SPI mode, shares its chip select, 21, with the user LED; WiFi needs the u.FL antenna attached.", + "supported": [ + "LEDs", + "WiFi", + "Audio", + "Buttons", + "SD card" + ], + "planned": [ + "Camera" + ], + "state": { + "System": { + "deviceModel": "Seeed XIAO ESP32S3 Sense" + }, + "Drivers": { + "$patch": "replace", + "RmtLed": { + "type": "RmtLedDriver" + } + }, + "Services": { + "$patch": "replace", + "Audio": { + "type": "AudioService", + "mode": 2, + "micMode": 1, + "wsPin": 42, + "sdPin": 41 + }, + "Buttons": { + "type": "ButtonService", + "buttons": [ + { + "pin": 0, + "activeLow": true, + "target": "Control.switch1", + "kind": "toggle" + } + ] + }, + "SdCard": { + "type": "SdCardService", + "board": "Custom", + "bus": 1, + "clkPin": 7, + "cmdPin": 9, + "d0Pin": 8, + "d3Pin": 21 + } + } + } + }, { "name": "Adafruit MatrixPortal S3", "chip": "ESP32-S3",