doc: feed readme

This commit is contained in:
2025-08-21 07:31:31 +02:00
parent 1d2a817b61
commit fcee080589

145
README.md
View File

@@ -1 +1,144 @@
# ESP32 radio
# 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 :
```cpp
#define WIFI_SSID "VotreSSID"
#define WIFI_PASSWD "VotreMotDePasse"
#define HOSTNAME "ESP32-Radio"
```
### Compilation et upload
#### Méthode simple
```bash
make all # Compile + Upload + Monitor
```
#### Méthode détaillée
```bash
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" :
```bash
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
```cpp
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
```cpp
#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