Go Down

Topic: ESP8266 : I2S et UDP pour transmettre un son en Wifi (Read 405 times) previous topic - next topic

al1fch

Bonjour

Je viens içi faire un simple retour de test d'un programme pour ESP8266 qui m'intriguait, le programme I2STransmit qui propose la transmission par UDP d'un flux audio extrait d'un microphone I2S.  Il s'agit d'un des exemples fournis avec l'extension ESP8266 pour IDE Arduino.

Résultat : ça fonctionne, 'genre babyphone'

Le micro utilisé est un module utilisant la puce INMP441 d'Invensense /TDK

C'est un micro plutôt destiné à capter une source proche.
C'est évidement par l'ouverture centrale au dos du petit circuit imprimé que le micro capte le son. (face opposée à la puce)


On  le trouve, facilement  monté  en module (<2€)  :



pour le bus I2S voir par exemple Wikipedia : https://fr.wikipedia.org/wiki/I2S

S'agisant d'une source il faut la relier aux 3 signaux I2SI_x du bus d'entrée I2S de l'ESP8266, un DAC  serait, lui,  relié à l'interface de sortie I2SO_x :


5 fils relient  donc le module à la carte Wemos D1 Mini utilisée
  • D5/GPIO14   - WS
  • D6/GPIO12  - Data
  • D7/GPIO13  - BCK
  • + 2 fils d'alimentation sous 3,3 Volts

Au niveau du micro j'ai relié L/R à la masse ( fonctionnement sur le  canal Gauche)



Dans le code d'exemple  I2STransmit penser à renseigner :
en lignes 16 et 17 les paramètres du point d'accès,
en ligne 20 l'adresse IP du destinataire, (qui écoute le flux audio)

A l'autre bout (ordinateur en écoute du flux audio) j'ai testé sous mon Linux habituel la  simple ligne de commande 'enfilant' netcat et play (de sox), proposée par l'auteur de l'exemple.
Résultat OK, comme attendu.
Code: [Select]
nc -u -p 8266 -l | play -t raw -r 11025 -b 16 -c 2 -e signed-integer -


Il est probable que ça fonctionne également de cette façon avec un Mac.....si netcat et sox y tournent avec les options à utiliser ici.

Pour Windows il faut trouver une autre solution, je pensais à PyAudio et effectivement une petite recherche m'a amené sur ce fil qui propose une solution sous Python.
Après avoir augmenté la taille du buffer à 100 , adapté à 11025 Hz la fréquence d'échantillonnage du flux j'ai eu un résultat acceptable... disons que le son passe....
Je joins le petit programme play.py qui nécessite des améliorations !
(lancer Python play.py)

Voilà de quoi jouer un peu en Audio sur WiFi
La librairie utilisée sur l'ESP8266 ouvre d'ailleurs des perspectives intéressantes
https://github.com/earlephilhower/ESP8266Audio


al1fch

Réservé pour un complément éventuel, ESP32 peut être.... Réception sur smartphone peut être...

Go Up