esp32_RTC_ZACUS
RTC_BL_PHONE
Firmware ESP-IDF transformant un téléphone RTC à cadran en kit mains-libres Bluetooth (HFP-HF). On décroche le combiné pour répondre ou composer, l'audio est ponté entre le SCO Bluetooth du mobile et le codec local ES8388.
Matériel
- ESP32 classique (carte Ai-Thinker A1S AudioKit, 8 MB PSRAM)
- Codec audio ES8388 (I2S full-duplex, I2C de contrôle)
- Interface ligne SLIC K50835F (détection crochet/SHK, sonnerie)
- Cadran à impulsions + détection DTMF (Goertzel)
- Port série usuel :
/dev/cu.usbserial-0001à 115200 bauds
Fonctionnement
Rôle Hands-Free Unit (HFP-HF) : c'est l'ESP32 qui se connecte au mobile.
- Appairage « Just Works » (sous le nom
RTC_BL_PHONE), reconnexion auto au mobile appairé. - Appel entrant : la cloche SLIC sonne jusqu'au décroché ou la fin d'appel ; décrocher répond et ouvre le pont audio.
- Appel sortant : décrocher → tonalité → composer (impulsion ou DTMF) → 3 s de silence → l'appel part sur le mobile.
- Audio mSBC 16 kHz (Wide Band Speech) via le chemin HCI, avec gains réglables, filtre passe-bande voix (300–3400 Hz) et annulation d'écho.
- Économie d'énergie (sur batterie) : power-down codec/I2S au repos, DFS 160/80 MHz + light sleep, poll adaptatif des tâches.
Build & Flash
ESP-IDF v5.4 (composants + CMake).
. $IDF_PATH/export.sh
idf.py set-target esp32 # une fois
idf.py build
idf.py -p /dev/cu.usbserial-0001 flash monitor
Réglage audio à la volée (CLI série)
Tonalités/voix se règlent sans reflash via le port série (persistance NVS) :
gspk N gain haut-parleur
gmic N gain micro
filt 0/1 filtre passe-bande micro
aec 0/1/2 écho : off / suppression / NLMS
aecd N retard AEC aecmu N pas d'adaptation NLMS
status état courant
Une TUI host est disponible : tools/phone_tui.py.
Organisation
| Domaine | Emplacement |
|---|---|
| Point d'entrée, wiring boot | main/app_main.c |
| Codec ES8388 (I2C) | components/hal_es8388/ |
| I2S full-duplex + capture micro | components/hal_i2s/ |
| Audio : tonalités, pont SCO, gains, filtres, AEC | components/audio_router/ |
| DTMF, cadran, machine d'état d'appel | components/dtmf/, components/dialer/, components/hook_monitor/, components/call_manager/ |
| Interface ligne SLIC | components/slic_ks0835/ |
| Pile Bluetooth HFP-HF | components/bt_hfp/ |
| CLI série de réglage | components/cli/ |
| Specs & plans | docs/superpowers/ |
Languages
C++
72.1%
Python
14.9%
JavaScript
8.9%
HTML
2.5%
CSS
0.9%
Other
0.7%