Assistive keyboard bridge for visually impaired users. A standard keyboard connects to the device; every keypress is spoken aloud. When a key is held for a configurable duration, a single keypress is sent to a connected computer (USB or Bluetooth).
See SPEC.md for the full product specification.
| Path | Purpose |
|---|---|
| firmware/ | PlatformIO C++ firmware for M5Stack CoreS3 |
| scripts/generate-tts/ | macOS say script to build microSD audio files |
| assets/audio-manifest.json | HID key labels for TTS generation |
- Generate audio (macOS): see scripts/generate-tts/README.md
- Copy
sd-card/to a FAT32 microSD and insert into CoreS3 - Build and flash firmware: see firmware/README.md
Published builds are on GitHub Releases. Each release includes:
| Asset | Purpose |
|---|---|
echolocation-sd-audio-*.zip |
Speech files for the microSD card |
echolocation-cores3-*.zip |
Firmware binaries and flashing notes |
firmware.bin |
Application image only (use the zip for a full flash) |
You need both the audio zip and the firmware zip (or a dev build from source) before the device is ready to use.
- Format a microSD card as FAT32 (32 GB or smaller cards are usually pre-formatted).
- Download and unzip
echolocation-sd-audio-*.zip. - Copy everything inside the unzipped folder to the root of the card. After copying, the card should contain
audio/keys/*.wavat the top level (not an extra parent folder). - Eject the card, insert it into the CoreS3 SD slot, and power on.
If the card is missing or the layout is wrong, the device shows an on-screen error.
Connect the CoreS3 to your computer with USB-C. Use one of these methods:
Option A — PlatformIO (recommended if you build from source)
cd firmware
pio run -e m5stack-cores3 -t uploadOption B — esptool (from the release zip)
- Download and unzip
echolocation-cores3-*.zip. - Install esptool if needed (
pip install esptool). - From inside the unzipped folder, flash all three binaries (replace
PORTwith your serial port, e.g./dev/cu.usbmodem*on macOS orCOM3on Windows):
esptool.py --chip esp32s3 -p PORT write_flash \
0x0 bootloader.bin \
0x8000 partitions.bin \
0x10000 firmware.binThe same commands are in FLASHING.txt inside the firmware zip.
After flashing, open a serial monitor if you want boot logs: pio device monitor from firmware/, or any 115200 baud terminal on the USB port.
- Flash firmware first (or confirm a matching version is already on the device).
- Prepare the microSD card and insert it.
- Connect the keyboard to the USB module and the computer to the CoreS3 USB-C port when you are ready to use the bridge.
Hardware assembly and DIP switch settings are in firmware/README.md.
- M5Stack CoreS3
- M5GO Battery Bottom3
- USB Module with MAX3421E v1.2
- M5Stack Audio Module (STM32G030)