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 !

CODE

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.

CODE

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

CODE

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

code perso de test ICI

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

code WebRadio

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

Autres pages

  1. PlatformIO
  2. Développements de code CROUS en micro python
  3. Développements de code anumby
  4. développement IA en python

Proto