feat: add M5Atom Echo/Lite and Atom VoiceS3R (ESP32-S3) board support + multi-board READMEMain#44
Open
simeononsecurity wants to merge 2 commits into
Open
Conversation
Hardware support added - M5Atom Echo (USE_M5ATOM_ECHO): NeoPixel LED + GPIO25 buzzer - M5Atom Lite (USE_M5ATOM_LITE): NeoPixel LED, no buzzer - Atom VoiceS3R (USE_M5ATOM_VOICES3R): ESP32-S3-PICO-1-N8R8, ES8311 I2S speaker via M5Unified, no RGB LED, button on GPIO41 platformio.ini - [env:m5atom-echo]: Adafruit NeoPixel, usbserial port, 1.5Mbaud upload - [env:m5atom-lite]: same board, no buzzer flag - [env:m5atom-voices3r]: espressif32@6.7.0, esp32-s3-devkitc-1, qio_opi PSRAM, ARDUINO_USB_CDC_ON_BOOT, M5Unified@^0.2.2 main.cpp - TESTING_MODE guarded with #ifndef so build flag can override it - Adafruit NeoPixel include guarded for Echo/Lite only (no NeoPixel on S3R) - M5Unified speaker: M5.Speaker.tone() used for all audio on VoiceS3R - Startup: SMB World 1-1 overworld riff (E E _E_ C E G) - Detection chirp: two ascending tones (2000→2800 Hz) - Heartbeat beep: two monotone 1500 Hz pulses - Serial1 UART mirror skipped on VoiceS3R (USB-CDC only) - setup(): M5.begin() + Speaker.setVolume(200) for VoiceS3R New scripts - flash_atom.sh: auto-detects /dev/tty.usbserial-*, venv auto-load - flash_voices3r.sh: targets /dev/tty.usbmodem* (ESP32-S3 native USB-CDC), kills port-holding processes, uses brew esptool with --before usb-reset - Both scripts activate venv automatically (searches .venv/venv/env/api/venv and ~/.platformio/penv in priority order) - partitions_4mb.csv: custom partition table for all supported boards Add -DTESTING_MODE=1 to any env's build_flags to alert on all WiFi frames.
…g mode docs - Restored [env:xiao_esp32s3] (Seeed XIAO ESP32-S3, original upstream board) - Added Supported Hardware table: xiao_esp32s3 / esp32dev / m5atom-echo / m5atom-lite / m5atom-voices3r with port types, audio/LED notes - Replaced generic 'pio run' section with board-specific flash + monitor commands for all five environments - Added VoiceS3R section: kill-port-holder one-liner + esptool fallback for ESP32-S3 native USB-CDC (fixes 'port busy' upload errors) - Added Testing mode section: -DTESTING_MODE=1 build flag instructions - Pin maps for XIAO ESP32-S3 (original) and Atom VoiceS3R - Removed flash_atom.sh and flash_voices3r.sh (commands in README instead)
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.
Summary
Adds PlatformIO build environments and firmware support for four additional boards — M5Stack Atom Echo, Atom Lite, Atom Voice, and Atom VoiceS3R (ESP32-S3), plus generic ESP32 DevKit with a piezo buzzer, all validated with real hardware. The original
xiao_esp32s3environment is preserved unchanged.Justification
The Flock You firmware is a great tool, but until now it was only easily buildable for the Seeed XIAO ESP32-S3. A lot of people already own M5Stack Atom boards or a generic ESP32 DevKit and shouldn't need to buy specific hardware just to get started. Making the project flashable on common, cheap, widely-available boards lowers the barrier to entry significantly, you can grab whatever ESP32 you have on your bench, clone the repo, pick your environment, and be scanning in minutes. The M5Stack Atom series in particular is compact, self-contained, and battery-friendly, making it a natural fit for field use. Adding proper
platformio.inienvironments means contributors don't have to reverse-engineer build flags; it just works with a singlepio runcommand.New board environments
xiao_esp32s3esp32devm5atom-echom5atom-litem5atom-voicem5atom-voices3rChanges
platformio.ini[env:esp32dev]generic ESP32 DevKit with passive piezo on configurable GPIO pin[env:m5atom-echo],[env:m5atom-lite]— standard ESP32 Atom boards using Adafruit NeoPixel for LED[env:m5atom-voice]M5Stack Atom Voice with SPM1423 PDM microphone and speaker support[env:m5atom-voices3r]ESP32-S3 withespressif32@6.7.0, qio_opi PSRAM,ARDUINO_USB_CDC_ON_BOOT, andM5Unified@^0.2.2for ES8311 I²S speakerpartitions_4mb.csvfor M5Stack boards (XIAO keeps originalpartitions.csv)main.cpp#ifndef TESTING_MODEguard so-DTESTING_MODE=1inbuild_flagsworks without source edits#includeguarded for Echo/Lite only VoiceS3R and Voice builds no longer need that depUSE_M5ATOM_VOICES3Rhardware block:M5.begin()init,M5.Speaker.setVolume(200), Serial1 mirror skipped (USB-CDC only)USE_M5ATOM_VOICEhardware block: M5Unified speaker init for the original Atom Voiceesp32devtone()/noTone()on configurable pinM5.Speaker.tone()branches instartupBeep(),newDetectChirp(), andheartbeatBeep()startup plays the SMB World 1-1 overworld riff through supported speakers; piezo boards play simplified tonesREADME.mdpio run -e <env> -t uploadandscreenmonitor commandsesptool --before usb-resetfallback for ESP32-S3 native USB-CDC-DTESTING_MODE=1)Testing
All boards were field-tested:
/dev/tty.usbmodem*at 115200 baud.