diff --git a/README.md b/README.md index 940dc16..9d8d284 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Realtime AI Speech powered by SoTA AI voice models on ESP32, with Secure WebSockets, and Deno Edge Functions for >15-minute uninterrupted conversations globally. We currently support OpenAI Realtime API, Gemini Live API, xAI Grok Voice Agents API, Eleven Labs Conversational AI Agents, and Hume AI EVI-4. -- [🚀 Quick start](https://www.elatoai.com/docs/quickstart) +- [🚀 Quick Start](https://www.elatoai.com/docs/quickstart) - [Build with PlatformIO](https://www.elatoai.com/docs/platformio) - [Build on Arduino IDE](https://www.elatoai.com/docs/arduino) - [Deploy globally](https://www.elatoai.com/docs/blog/deploying-globally) diff --git a/firmware-arduino/README.md b/firmware-arduino/README.md index 11d416c..3bd2627 100644 --- a/firmware-arduino/README.md +++ b/firmware-arduino/README.md @@ -1,110 +1,3 @@ # ESP32 WebSocket Audio Client -This firmware turns your ESP32 device into a WebSocket audio client for Elato, enabling real-time conversations with AI characters. - -## Hardware Setup - -Hardware Setup - -### Components Needed -- ESP32-S3 board -- I2S MEMS microphone (INMP441 recommended) -- I2S speaker with amplifier (MAX98357A recommended) -- Microspeaker -- Button/Touch sensor and RGB LED (optional but recommended) - -### Pin Connections - -| **Component** | **Standard ESP32** | -|---------------|-------------------| -| **Microphone** | | -| SD (Data) | GPIO 14 | -| WS (Word Select) | GPIO 4 | -| SCK (Clock) | GPIO 1 | -| **Speaker** | | | -| WS | GPIO 5 | -| BCK | GPIO 6 | -| DATA | GPIO 7 | -| SD (shutdown) | GPIO 10 | -| **Control** | | -| Button | GPIO 2 | -| LED (Blue) | GPIO 13 | -| LED (Red) | GPIO 9 | -| LED (Green) | GPIO 8 | - -## Software Setup - -### Using PlatformIO - -1. Install Visual Studio Code and the PlatformIO extension -2. Clone this repository -3. Open the project folder in PlatformIO. `Open > Open Project > firmware-arduino` -4. Edit `src/Config.cpp` with your server details: - - If using locally: Set your computer's IP address in `ws_server` and `backend_server` - - If using production: Ensure proper certificates are set -5. Build and upload to your ESP32 - - -### To use locally: -1. **Find your local IP address**: - - View your Wifi IP when you click on Wifi Settings > Your Wifi Network > Details, OR - - On macOS/Linux: Open Terminal and run `ifconfig` - - On Windows: Open Command Prompt and run `ipconfig` - - Look for your active network interface (WiFi: `en0` on Mac, `wlan0` on Linux, `Wireless LAN adapter Wi-Fi` on Windows) - - Note the IP address (e.g., `192.168.1.100`) - -2. **Update firmware configuration**: - - In the firmware project, set `DEV_MODE` in Config.cpp - - Update the WebSocket server IP to your local IP address - -## NVS Storage - -We store the following data in Non-Volatile Storage (NVS) on the ESP32: -1. **Auth token**: The supabase auth token that is used to authenticate the device with the backend server. -2. **Factory reset**: Whether the device has been factory reset. -3. **Wifi credentials**: The wifi credentials of the device. - -## First-Time Setup - -1. Power on your ESP32 -2. Connect to the "Elato device" WiFi network from your phone/computer -3. A configuration portal will open (or navigate to 192.168.4.1) -4. Enter your home WiFi credentials -5. The device will restart and connect to your WiFi - -## Usage - -1. Power on the device -2. The LED indicates status: - - Green 🟢: Setup mode and websocket/wifi is not connected - - Blue 🔵: Device is speaking - - Yellow 🟡: Device is listening to user - - Red 🔴: Processing user request - - Cyan 🩵: OTA in progress - - Magenta 🩷: Soft AP mode - -## Troubleshooting - -- If connection fails, check your WiFi signal and server details -- Monitor serial output at 115200 baud for detailed logs - -## Deploying and Advanced Config - -1. Add your Deno and Vercel server Root CA to `config.cpp`. You can find the Root CA of vercel by running the following command and picking the Root certificate in the chain: - -```bash -# vercel server root ca -openssl s_client -showcerts -connect .vercel.app:443 .deno.dev:443 - - -## Tables -1. `users` - user details are stored here -2. `devices` - device details (mac address, device name, etc) are stored here -3. `conversations` - conversation details (start time, end time, etc) are stored here -4. `messages` - all conversations and transcripts are stored here -5. `api_keys` - api keys are stored here (not used for local development) -6. `languages` - all supported languages are stored here - - -## Development Workflow - -1. Make schema changes in Supabase Studio (http://127.0.0.1:54323) -2. Generate migrations: `supabase db diff -f ` -3. Apply to local database: `supabase migration up` -4. Push changes to production when ready - -## Deploying to your own supabase instance - -1. Create a new supabase project on supabase.com -2. Copy the supabase url and anon key -3. Paste them in the `.env` and `.env.local` file in the root of the project -4. Link the project to the new supabase instance: `supabase link --project-ref ` -5. Run `supabase db push --include-seed` to push the changes to the local database and seed the database with the data in `supabase/seed.sql` - -## Stopping Supabase - -```bash -supabase stop -``` - -For more details, visit the [Supabase documentation](https://supabase.com/docs). \ No newline at end of file +For more details, visit the [Elato Supabase Docs](https://www.elatoai.com/docs/blog/database). \ No newline at end of file