ESP32 Radio
Radio internet WiFi basée sur ESP32 avec interface web intégrée et contrôles physiques.
🎵 Pour l'utilisateur
Première utilisation
- Alimentez la radio : Au premier démarrage, la radio entre automatiquement en mode configuration
- Connectez-vous au WiFi : Réseau
ESP32_Radio_Config
(mot de passe:radio12345
) - Configurez votre WiFi : Allez sur http://192.168.4.1 et entrez vos paramètres WiFi
- Redémarrage automatique : La radio se connecte à votre réseau et est prête
Utilisation quotidienne
Contrôles physiques
- 🔘 Appui court : Mise en veille (économie d'énergie)
- 🔘 Appui long (2s) : Mode sélection de stations (LED clignote 3x)
- 🔘 Appui très long (5s) : Reset WiFi et retour en mode configuration
- 🎛️ Potentiomètre :
- Mode normal : Contrôle du volume
- Mode sélection : Choix de la station radio
Interface web
Accédez à l'interface via l'adresse IP de la radio (affichée au démarrage) :
- 🎵 Contrôle de lecture : Play/Stop/Changement de station
- 📻 Gestion des stations : Ajouter/supprimer jusqu'à 10 stations
- 🌐 Configuration WiFi : Modifier les paramètres réseau
- 📱 Compatible mobile : Interface responsive
Stations pré-configurées
- France Inter
- FIP
- France Info
- 80s Hits
- BBC Radio 1
⚙️ Pour le développeur
Prérequis
- Arduino CLI installé et configuré
- Board ESP32 :
esp32:esp32:esp32
- Bibliothèques :
- ESP32-audioI2S
- WiFi (intégrée)
- WebServer (intégrée)
- EEPROM (intégrée)
Schéma de câblage
ESP32 Pin | Composant
-----------|----------
25 | I2S_DOUT (vers DAC)
26 | I2S_LRC (vers DAC)
27 | I2S_BCLK (vers DAC)
32 | LED de statut
33 | Bouton d'alimentation
34 | Potentiomètre (signal analogique)
Configuration WiFi
- Copiez
wifiinfo.h.sample
verswifiinfo.h
- Modifiez les paramètres par défaut :
#define WIFI_SSID "VotreSSID"
#define WIFI_PASSWD "VotreMotDePasse"
#define HOSTNAME "ESP32-Radio"
Compilation et upload
Méthode simple
make all # Compile + Upload + Monitor
Méthode détaillée
make compile # Compilation uniquement
make upload # Upload vers ESP32
make watch # Monitoring série (screen)
Troubleshooting upload
Si l'upload échoue avec "Device or resource busy" :
lsof /dev/ttyUSB0 # Vérifier les processus
kill <PID> # Tuer le processus si nécessaire
Architecture du code
Fichiers principaux
esp32_radio.ino
: Code principalwifiinfo.h
: Configuration WiFi (non versionné)Makefile
: Scripts de build
Fonctions clés
setup()
: Initialisation, gestion du réveil, connexion WiFiloop()
: Boucle principale (audio, web, contrôles)wifi_init()
: Gestion intelligente de la connexion WiFipowerButton()
: Gestion multi-niveau des appuis boutonvolumeAdjust()
: Volume ou sélection selon le modehandleRoot()
: Interface web principale
Stockage EEPROM
EEPROM_SIZE = 2048
├── WiFi credentials (0-96)
└── Radio stations (100-2047)
├── Nombre de stations (1 byte)
└── Stations (200 bytes chacune)
Modes de fonctionnement
- Normal : Lecture + contrôles standard
- Sélection : Potentiomètre = sélection station
- Configuration : Point d'accès + interface web
- Deep Sleep : Réveil par bouton uniquement
Personnalisation
Ajouter des stations par défaut
Modifiez loadStationsFromEEPROM()
ligne 428-441.
Modifier les timeouts
#define CONNECTION_TIMEOUT 10 // Timeout WiFi (secondes)
#define LONG_PRESS_TIME 2000 // Appui long (ms)
#define SELECTION_TIMEOUT 5000 // Timeout sélection (ms)
Pins personnalisées
Modifiez les defines lignes 9-14 selon votre câblage.
API Web
GET /
: Interface principalePOST /add
: Ajouter station (name
,url
)POST /delete?id=X
: Supprimer stationPOST /play?id=X
: Lancer stationPOST /stop
: Arrêter + veilleGET /wifi-config
: Interface WiFiPOST /save-wifi
: Sauvegarder WiFi + redémarragePOST /reset-wifi
: Reset + mode configuration
Description
Languages
C++
75.3%
Makefile
24.7%