A WiFi-enabled, event-driven audio greeting system in car built on ESP32-C3 + JQ6500, that plays a personalized welcome message on car startup, configurable via π web UI with β± delay control.
- π Automatic audio playback on power-up
- π Web-based control (no app required)
- β± Configurable playback delay
- π Real-time log viewer UI
- π Basic Authentication for security
- β‘ Non-blocking, event-driven architecture
This project uses an ESP32-C3 microcontroller to:
- Control a JQ6500 module that stores the welcome audio in its internal flash
- Play it automatically after boot (once per power cycle)
- Allow configuration and control via a web interface
For a detailed overview and complete documentation map, see π Full Project Overview.
- β Modular design
- β Event-driven communication
- β FreeRTOS-based tasks
- β Non-blocking execution
- ESP32-C3 or ESP32-Cam
- JQ6500 Voice Sound Module (16Mbit)
- External speaker / AUX output
- JQ6500 internal flash storage for the welcome track
| ESP32-Cam Pin | JQ6500 Pin | Function |
|---|---|---|
| 5V | VCC | Power (5V) |
| GND | GND | Common Ground |
| GPIO 13 | RX | UART Control Signal |
| N/A | SPK+ / SPK- | Direct Speaker Output (Onboard Amp) |
| N/A | ADL / ADR | AUX / Line Out (Audio DAC L/R) |
The system features a modern, responsive web dashboard (Tasmota-style) accessible via any browser at http://<ESP32_IP>.
- π Audio Control:
- Set Volume level (0β30).
- Configure Playback Delay (0β3600 seconds).
- Select from 50 Preloaded tracks or specify a Custom Index.
- Direct Play: Instant preview button (βΆ) to test any track index without saving.
- Dynamic Title: Displays the currently active track index in real-time.
- πΆ Network Management:
- WiFi Scan & Connect: Visual list of nearby networks with RSSI (signal) strength.
- Hotspot Control: Change AP name and password.
- IP Monitoring: View connection status and IP address in the header.
- π Security & Admin:
- Change Admin credentials for Basic Authentication.
- Backup & Restore: Download your entire configuration as a text file and restore it to a new device instantly.
- π Monitoring & Maintenance:
- Live Logs: Real-time log viewer for troubleshooting UART and Network events.
- Advanced SysInfo: Detailed dashboard showing Heap memory, CPU task list, and Flash usage.
- Remote Actions: Restart or Factory Reset the device via the UI.
Username: admin
Password: 1234
The project follows a clean, modular architecture separating generic core services from application-specific logic.
CarGreeter/
β
βββ /src/CarGreeter
β βββ CarGreeter.ino β Main entry point
β βββ /src
β βββ /app β Application Logic
β β βββ config_manager β NVS settings & defaults
β β βββ jq6500_player β Audio driver & timing safety
β β βββ scheduler β Boot delay & playback triggers
β β βββ web_server β API endpoints & Web UI
β β
β βββ /core β Infrastructure (Reusable)
β β βββ event_bus β Non-blocking message system
β β βββ auth_manager β Basic Authentication
β β βββ network_mgr β WiFi & AP management
β β βββ system_mgr β Task & RAM monitoring
β β βββ logger β Circular log buffer
β β
β βββ build_config.h β β HARDWARE & BRANDING DEFAULTS
β
βββ /docs β Detailed design specs
βββ AGENT.md β AI Agent instructions
- β‘ Power On: The system initializes the
Event BusandLoggerimmediately. - πΎ Config Load:
Config Managerloads saved volume and delay from NVS. If empty, it usesbuild_config.hdefaults. - π Audio Prep:
JQ6500 Playerstarts and waits 500ms for the hardware to stabilize, then syncs the volume. - β±οΈ Greeting Delay: The
Schedulerwaits for the configured delay (e.g., 5s). This allows the car's engine to start and electronics to stabilize. - πΆ Playback: After the delay,
SchedulersendsEVENT_PLAY. The Player receives this, re-syncs volume, waits 100ms, and triggers the JQ6500. - π Ready Mode: The Web Server remains active, allowing you to change settings, view logs, or play tracks manually via the UI.
Refer to:
π docs/14-build-deployment.md
Detailed documentation is available in /docs:
- Architecture
- Modules
- Event system
- API specification
- Storage & audio system
- Logging & scheduler
- Open web UI
- Program the welcome audio onto the JQ6500 module (per its documentation)
- Set delay
- Reboot device to test auto-play
- Use only on trusted local networks
- Audio is stored/decoded on the JQ6500 module (ESP32-C3 only controls playback)
- Follow modular architecture
- Use event-driven communication
- Avoid blocking code (
delay()not allowed) - Update documentation for changes
Open-source (choose your preferred license)
This project is a lightweight, reliable, and extensible ESP32 audio greeting system for car, combining:
- Embedded systems
- Web technologies
- Clean software architecture
![]() @Arun-R-S πΌ Owner & Developer |
![]() @EchoWaveSystems π» Developer & Reviewer |
END OF FILE

