doc: feed readme
This commit is contained in:
145
README.md
145
README.md
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user