Annota

ESP32-S3 e-paper voice notes
Open-source firmware · PlatformIO / Arduino

A pocket e-paper recorder that transcribes itself.

Annota turns a Waveshare ESP32-S3 1.54" e-paper board into a standalone voice-note device: record straight from the onboard mic, browse the SD card on a two-button e-paper UI, and send any clip off to an AI provider for transcription — on-device or from the built-in web file manager. No app, no cloud dashboard, just a card full of MP3/WAV files and their .txt siblings.

Device
WiFi ●82%
  • ▶ memo_014.wav
  • voice_note_9.mp3
  • meeting_recap.wav
  • idea_dump.mp3
  • + Record new
200×200 mono e-paper · Next / Select buttons only
What it does
🎙️

Record on-device

ES8311 codec mic straight to 16-bit PCM WAV on the SD card, no working set to allocate.

📝

AI transcription

Send a clip to OpenAI Whisper (or Gemini) and get a sibling .txt file back — from the device or the browser.

🌐

Web file manager

Browse, play, upload, download, delete, and transcribe SD files from any browser on the network.

📶

WiFi captive setup

First boot opens a setup AP; after that it reconnects quietly and stays usable offline for everything but transcription.

🔋

Deep-sleep idle

Configurable idle timeout drops into deep sleep, woken by a long press on Select.

🔘

Two-button UI

Next cycles, Select opens/confirms/backs out — an entire file browser and menu tree on two buttons.

Get it running
1
Clone & open in PlatformIOWaveshare ESP32-S3-ePaper-1.54 board, one env: esp32-s3-epaper154
2
Pick a transcription providerSet the AI_PROVIDER_* build flag in platformio.ini (OpenAI by default)
3
Flashpio run -e esp32-s3-epaper154 -t upload
4
Join the setup APFirst boot opens "Annota-Setup" — connect and enter your WiFi credentials
5
Drop in an SD cardMP3/WAV files at the root show up in the file list and the web UI
Hardware
Board
Waveshare ESP32-S3-ePaper-1.54
Display
1.54" 200×200 mono e-paper, SSD1681-class
Input
2 onboard buttons (no touch)
Audio
ES8311 codec + NS4150B amp, onboard mic
Storage
SD card over SDMMC (1-bit)
UI
LVGL v9.2.2
Credits
Built by Corrado Ignoti.