Webradio - arnaudrco/exemples GitHub Wiki
8 dépôts github : exemples-de-montages festisol CROUS-micro-python piano visio anumby jouets developpement-voiture raspberry-pico Blog ateliers numériques Repair Café d'Orsay
Des anciennes enceintes de PC recyclées en une radio internet ; le caisson de basse est en bas ; installation réussie !
Que faire d'une vieille enceinte d'ordinateur ? Recyclez la pour en faire une radio internet pour moins de 5€ ! C'est économique en plus !
Il existe de nombreux tutos sur internet pour réaliser une radio internet ; que faire si cela ne marche pas ou si je n'ai pas exactement les bons composants, ou que l'un des composants soit défectueux ? J'ai ajouté une rubrique "comprendre" en fin de page bien pratique
https://github.com/user-attachments/assets/945c3bb9-92b5-4fbe-8e1d-ea5ba34b064a
prototype avec un s3 "super mini"
J'ai ajouté le fichier d'initialisation platformio. Pour avoir un modèle plus solide, je conseille de souder directement "esp" et "jack" ensemble ; fil bleu a ajouter pour avoir la masse ( GND sur esp et broche AGND sur jack ) et c'est tout. La compilation est extrêmement rapide avec PlatformIO.
Recevoir la radio par internet
La réception de la bande FM est mauvaise ? Vous voulez une "webradio" qui n’existe pas sur DAB+ ? La réalisation est possible pour quelques euros
comment-ecouter-radio-france. Sur un navigateur web, entrez
https://icecast.radiofrance.fr/monpetitfranceinter-midfi.mp3
Les appareils de type radio K7 n'ont pas toujours de prise audion externe jack . Un petit France Inter peut en cacher un autre ! Version sans prise jack installée dans une ancienne enceinte
Vous ne voulez pas d'écran ? un modèle rudimentaire (esp32 sans mémoire ram supplémentaire dans la rubrique en fin de page "comprendre") utilise une adresse internet pour changer la station ou le volume
construction
Télécharger avant audioI2S le zip avant ; code testé
logiciel
MAX98357A (sortie haut parleur 3W) ou PCM5102a (sortie jack)
Comprendre le montage
Le tuto le plus détaillé est en chinois ! Lire macsbug ; j'ai ajouté des explications pour le cablage
Pas facile d'utiliser la sortie série I2S ! Il faut absolument tester cette bibliothèque : elle est géniale et avec un wiki
https://github.com/schreibfaul1/ESP32-audioI2S
https://github.com/arnaudrco/exemples/blob/main/WebRadio_ESP32_2432S028R_P.zip
montage de l'interface jack ou HP
câblage
Les interfaces I2S sont nombreuses
les fils relient les broches 17, 22
arrière de la carte
câblage par le connecteur d'extension
la carte est livrée avec un cable
alimentation de la carte jack par le connecteur d'extension
de même pour GPOI 27
accès au réseau
mettre à jour le SSID dans le fichier WebRadio_ESP32_2432S028R_P.ino
SSID = "SFR_ED28" # Enter your WiFi name PASSWORD = "xxx" # Enter your WiFi password
auto connexion
Je n'ai pas les mots de passe ? Augustin veut un appareil ; il existe une bibliothèque magique "WiFiManager" pour réaliser une auto connexion
et voila, le papa d'Augustin peut rentrer le mot de passe de sa box
Comprendre le fonctionnement
que faire si cela ne marche pas ? Comment fonctionne chacun des éléments ?
afficheurs
J'ai préparé une rubrique afficheurs avec un module arduino ou esp et des programmes de test bien pratiques ; lorsque c'est possible, un montage sans soudure sur une plaque : je branche et je teste aussitôt sur des "bancs de test"
montage
Le montage est difficile : il remplace les anciens montages avec un "gros" rasberry ; suppose d'avoir suffisamment de mémoire et un convertisseur ; très économique. Je propose de tester d'abord le convertisseur (I2S) en fin de page ; avec l'ajout d'une mémoire rapide (PSRAM), le son est "stocké" et la restitution plus fluide
RAM "psram"
Pas facile ; on peut ajouter de la mémoire sur l'écran
clock (GPIO17)
chip select (GPIO16)
Lire le montage RAM et prise JACK https://github.com/hexeguitar/ESP32_TFT_PIO/blob/main/README.md
Pas facile de savoir si la mémoire ( pseudo statique RAM ) est présente ; pour le module esp32 n16r8 sélectionnez OPI et la carte ESP32 S3 DEV ; le code indique la présence de la mémoire
ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0x1 (POWERON),boot:0x28 (SPI_FAST_FLASH_BOOT) SPIWP:0xee mode:DIO, clock div:1 load:0x3fce2820,len:0x116c load:0x403c8700,len:0xc2c load:0x403cb700,len:0x3108 entry 0x403c88b8
La PSRAM est correctement initialisée
correction pour le convertisseur PCM
Certains convertisseurs ne fonctionnent pas du premier coup ; il faut souder les ponts ( cercle rouge ) ; j'ai testé avec la radio par internet avec un ancien esp8266 ou un esp32
radio par internet simple
Le mode d'emploi est en anglais mais cette petite radio sans écran est facile à installer ; avec un esp32 à la place de esp8266 les performances sont correctes
- In Arduino add the ESP8266 Board Manger, discussed here: https://github.com/esp8266/Arduino/blob/master/README.md#using-git-version
- In Arduino, add the library ESP8266Audio
- In Arduino, select the sample code File –> Examples –> ESP8266Audio –> WebRadio
- In Arduino, set the CPU Frequency to 160 MHz Tools –> CPU Frequency
- Set your STASSID and STAPSK in the code
- Upload the code to your ESP then open the serial monitor
- Open your browser to the URL provided in the serial monitor
- In the web browser, type the URL for an MP3 file, such as http://kvbstreams.dyndns.org:8000/wkvi-am as shown below
le son est haché avec ce montage ancien esp8266 très simple ; esp8266 est très pratique pour tester le convertisseur I2S
- RX Din
- D4 Lrc
- D8 Bck
Sck est relié à la masse
une page internet
en changeant l'adresse
le son est bien meilleur avec un esp32, les broches 22, 25 et 26
- GPIO 22 Din
- GPIO 25 Lrc
- GPIO 26 Bck
logiciel
plusieurs environnements sont disponibles ; ma préférence va dans l'orde
- arduino version 2 : malheureusement pour des raisons commerciales il a du mal à reconnaître les cartes "espressif"
pensez à ajouter les cartes esp ; j'ai pris
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
https://github.com/handledexception/platform-espressif32/blob/esp32-s3-devkitc-1-n16r8v/boards/esp32-s3-devkitc-1-n16r8v.json
https://espressif.github.io/arduino-esp32/package_esp32_index.json
http://arduino.esp8266.com/stable/package_esp8266com_index.json
- arduino version 1 : attention aux versions des bibliothèques compilation rapide
- IDE espressif : il faut prendre garde au numéro de version ( 1.44 seule marche pour le projet de drone ) ; idéale pour produits esp
- PlatformIO : moins intuitive, le type de carte doit être ecrit explicitement dans un fichier PlatformIO.ini
voir Afficheur-meteo un exemple de programme
visalisation I2S par oscilloscope
Le bus I2S a un fonctionnement
Pour notre application I2S audio rythmé par une horloge (signal "clock" SCK de synchronisation ) pour transmettre des mots ( WS) composé de bits ( most significant bit MSB ou least significant LSB )
Tout le monde n'a pas d'analyseur numérique à 3 voies ; avec un oscilloscope plus simple à 2 entrées, je visualise Lrc (courbe jaune) et Din (bleu)
De même avec Lrc (courbe jaune) et Bck (bleu)
Comment reconnaitre les sorties avec la fréquence ? le signal "Bck" est celui à la fréquence le plus élevée (700 KHz à 1.5 MHz), le signal "Din" la plus basse (20 KHz )
radio simple
J'ai pris un module esp32S2 avec de la mémoire PSRAM
https://github.com/arnaudrco/exemples/tree/main/jack3
https://github.com/arnaudrco/CROUS-micro-python/wiki/esp32-S2-ou-S3
changer de station
Le code doit être modifié ; la commande est "connecttohost" avec l'adresse URL ; pour mettre FIP pour avoir du jazz :
audio.connecttohost("http://icecast.radiofrance.fr/fipjazz-midfi.mp3"); //audio.connecttohost("http://icecast.radiofrance.fr/fipworld-midfi.mp3"); //audio.connecttohost("http://icecast.radiofrance.fr/fip-midfi.mp3"); //audio.connecttohost("http://icecast.radiofrance.fr/franceinfo-midfi.mp3"); //audio.connecttohost("http://tsfjazz.ice.infomaniak.ch/tsfjazz-high.mp3");
Lite d'adresse URL
Stations France Inter, Mon Petit France Inter, franceinfo...
https://stream.radiofrance.fr/franceinter/franceinter.m3u8
https://stream.radiofrance.fr/franceinterlamusiqueinter/franceinterlamusiqueinter.m3u8?
https://stream.radiofrance.fr/monpetitfranceinter/monpetitfranceinter.m3u8
https://stream.radiofrance.fr/franceinfo/franceinfo.m3u8?
https://stream.radiofrance.fr/franceculture/franceculture.m3u8?
https://stream.radiofrance.fr/fbchansonfrancaise/fbchansonfrancaise.m3u8?
choix du débit
Lire https://fluxradios.blogspot.com/2014/07/flux-url-france-inter.html
posez des questions
pas facile de comprendre les applications "API" ; j'envoie une question (requete) et le site me répond ; c'est très bien expliqué pour radiofrance
Les stations de radio sont "rangées" par marque. Il est possible de récupérer l'ensemble de ces marques avec la requête suivante :
{ brands { id title baseline description websiteUrl playerUrl liveStream } }
pour les curieux https://developers.radiofrance.fr/doc
radiofrance donne même un tuto https://developers.radiofrance.fr/doc/tutorial-by-example/list-brands
pour les curieux, je fais pareil pour la météo
https://github.com/arnaudrco/exemples/wiki/Afficheur-meteo