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