feat(xiao-esp32-s3-sense): Add XIAO ESP32 S3 Sense BSP component, example streams audio/video using RTSP component#634
Merged
Conversation
…mple streams audio/video using RTSP component
|
✅Static analysis result - no issues found! ✅ |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces a new Board Support Package (BSP) component for the Seeed Studio XIAO ESP32S3 Sense and adds an ESP-IDF example application that streams OV2640 MJPEG video plus PDM-microphone PCM audio over RTSP, along with initial Sphinx documentation pages for the component.
Changes:
- Added
espp::XiaoEsp32S3SenseBSP component with pin mappings, LED breathing helpers, and default ESP-IDF PDM RX config builders. - Added an RTSP “camera streamer” example project (camera + mic capture, RTSP server, mDNS advertisement, CLI + memory monitoring).
- Added initial Sphinx docs pages to document the component and include the example README.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| doc/en/xiao_esp32s3_sense.rst | New Sphinx page describing the XIAO ESP32S3 Sense BSP and linking to example + API include. |
| doc/en/xiao_esp32s3_sense_example.md | Includes the example README into the docs build. |
| components/xiao-esp32s3-sense/CMakeLists.txt | Registers the new BSP as an ESP-IDF component (include/src + dependencies + target). |
| components/xiao-esp32s3-sense/README.md | Component README describing hardware and exposed helpers. |
| components/xiao-esp32s3-sense/include/xiao-esp32s3-sense.hpp | Public API for pin mappings, LED control, and PDM RX config helpers. |
| components/xiao-esp32s3-sense/src/xiao-esp32s3-sense.cpp | Implementation of pin mapping accessors, LED breathing task, and PDM config builders. |
| components/xiao-esp32s3-sense/idf_component.yml | Component Manager manifest for the new BSP component. |
| components/xiao-esp32s3-sense/example/CMakeLists.txt | ESP-IDF example project CMake configuring component directories and project name. |
| components/xiao-esp32s3-sense/example/README.md | Example documentation (configuration, build/flash, RTSP URL and tracks). |
| components/xiao-esp32s3-sense/example/partitions.csv | Custom partition table for the example (factory + littlefs). |
| components/xiao-esp32s3-sense/example/sdkconfig.defaults | Example defaults tuned for ESP32-S3 + camera/RTSP (PSRAM, stacks, lwIP/WiFi). |
| components/xiao-esp32s3-sense/example/main/CMakeLists.txt | Registers the example “main” component and its REQUIRES list. |
| components/xiao-esp32s3-sense/example/main/idf_component.yml | Example-level component dependencies (mdns, esp32-camera, espp components via override_path). |
| components/xiao-esp32s3-sense/example/main/Kconfig.projbuild | Menuconfig options for RTSP port, task stacks, and WiFi credentials/retry. |
| components/xiao-esp32s3-sense/example/main/xiao_esp32s3_sense_example.cpp | Full streamer application: WiFi STA, RTSP server setup, camera + microphone capture tasks, mDNS. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR adds support for the Seeed Studio XIAO ESP32S3 Sense as a new ESPP BSP
component and provides a streamer-style RTSP example for the board.
The new
espp::XiaoEsp32S3Sensecomponent exposes the documented hardwaremapping for the board, including:
The example was updated to act as a compact RTSP camera/audio streamer for the
XIAO ESP32S3 Sense, serving:
This PR also includes the supporting example configuration and RTSP integration
work needed to run the XIAO example cleanly, along with follow-up safety and
resilience fixes from review:
start_led_breathing()when LED/task initialization has not occurredstop_led_breathing()when LED/task initialization has not occurredesp_camera_fb_get()returnsnullptrMotivation and Context
This change adds first-class support for the XIAO ESP32S3 Sense in ESPP and
provides a practical reference application for using the board as a compact RTSP
streaming endpoint.
It solves a few problems:
streaming on this hardware
camera capture failures under error conditions
How has this been tested?
The changes were tested by building the XIAO example with ESP-IDF on
esp32s3:components/xiao-esp32s3-sense/exampleThe branch work was also exercised through the RTSP streaming flow by using the
XIAO hardware with the Python RTSP client / multitrack client path to verify
camera streaming and onboard microphone audio capture.
Follow-up review fixes were validated by rebuilding the XIAO example after the
LED guard and camera backoff changes.
Screenshots (if appropriate, e.g. schematic, board, console logs, lab pictures):
Types of changes
Checklist:
Software
.github/workflows/build.ymlfile to add my new test to the automated cloud build github action.