2025-08-21 07:38:58 +02:00
2022-08-09 22:30:37 +02:00
2025-08-21 07:40:34 +02:00
2025-08-21 07:38:58 +02:00
2022-08-11 17:09:39 +02:00

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

  1. Alimentez la radio : Au premier démarrage, la radio entre automatiquement en mode configuration
  2. Connectez-vous au WiFi : Réseau ESP32_Radio_Config (mot de passe: radio12345)
  3. Configurez votre WiFi : Allez sur http://192.168.4.1 et entrez vos paramètres WiFi
  4. 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

  1. Copiez wifiinfo.h.sample vers wifiinfo.h
  2. 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 principal
  • wifiinfo.h : Configuration WiFi (non versionné)
  • Makefile : Scripts de build

Fonctions clés

  • setup() : Initialisation, gestion du réveil, connexion WiFi
  • loop() : Boucle principale (audio, web, contrôles)
  • wifi_init() : Gestion intelligente de la connexion WiFi
  • powerButton() : Gestion multi-niveau des appuis bouton
  • volumeAdjust() : Volume ou sélection selon le mode
  • handleRoot() : 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

  1. Normal : Lecture + contrôles standard
  2. Sélection : Potentiomètre = sélection station
  3. Configuration : Point d'accès + interface web
  4. 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 principale
  • POST /add : Ajouter station (name, url)
  • POST /delete?id=X : Supprimer station
  • POST /play?id=X : Lancer station
  • POST /stop : Arrêter + veille
  • GET /wifi-config : Interface WiFi
  • POST /save-wifi : Sauvegarder WiFi + redémarrage
  • POST /reset-wifi : Reset + mode configuration
Description
Ecouter la radio avec un ESP32.
Readme 60 KiB
Languages
C++ 75.3%
Makefile 24.7%