Difference between revisions of "EspNowAudio"

From RevSpace
Jump to navigation Jump to search
m
 
(7 intermediate revisions by the same user not shown)
Line 10: Line 10:
  
 
Stuff to learn:
 
Stuff to learn:
* ESP now broadcast mode: does it really work? https://github.com/espressif/ESP8266_NONOS_SDK/issues/8#issuecomment-419774432
+
* ESP now broadcast mode: does it really work? YES, it does work, there's no ACK (so it's even a bit faster).
* ESP now throughput
+
* ESP now throughput: https://hackaday.io/project/166868-my-attempt-at-an-esp-now-mesh/log/166398-072419-maximum-transmission-throughput-of-esp-now
 
* ESP now packet loss when used continuously
 
* ESP now packet loss when used continuously
 
* Audio over IP protocols, e.g. VBAN
 
* Audio over IP protocols, e.g. VBAN
Line 21: Line 21:
 
It immediately starts transmitting audio from a digital I2S microphone over ESP now.
 
It immediately starts transmitting audio from a digital I2S microphone over ESP now.
 
The receiving end will probably be an ESP32, that receives the ESP now audio and converts into a standardized audio-over-ip protocol, e.g. VBAN.
 
The receiving end will probably be an ESP32, that receives the ESP now audio and converts into a standardized audio-over-ip protocol, e.g. VBAN.
 +
 +
Plans:
 +
* build an Arduino playground project so I can access the API from the command line and play with it
 +
* start with an ESP32 + INMP441
 +
 +
Next steps:
 +
* build a framework to stream the data and determine stream rate:
 +
** queue is filled with random data
 +
** queue is emptied by an espnow send process running in the main loop()
 +
** espnow completion callback notifies when next packet can be sent
 +
* investigate I2S communication from a microphone on an ESP8266
 +
* convert espnow data to UDP/VBAN on the receiving end
 +
* convert UDP/VBAN to audio on laptop
 +
 +
Related interesting stuff:
 +
* https://www.hackster.io/julianfschroeter/esp32-voice-streamer-52bd7e
 +
* ESP audio playback https://github.com/earlephilhower/ESP8266Audio
 +
* VBAN specification https://www.vb-audio.com/Voicemeeter/VBANProtocol_Specifications.pdf
 +
 +
== Result ==
 +
ESP NOW broadcast just seems to work fine (not sure what prevented me from making it work earlier).
 +
I've fixed the WiFi channel to 1.
 +
 +
On the receiving side, I use an ESP32.
 +
On the sending side, I use an ESP8266:
 +
* init the esp now library
 +
* add the broadcast address as a peer
 +
* send a message
 +
* that's it!
 +
 +
Transmission appears to be very fast, taking less than a millisecond for 10 messages in a row.
 +
However, with broadcast, the sending side does not receive (or wait for) any acknowledgements, the tx callback just reports the broadcast address, the rx callback reports nothing.
 +
 +
== References ==
 +
* https://www.espressif.com/sites/default/files/documentation/esp-now_user_guide_en.pdf

Latest revision as of 15:37, 17 March 2020

Project EspNowAudio
350px
Status Initializing
Contact bertrik
Last Update 2020-03-17

What

The idea is to experiment a bit more with ESP now, in particular in combination with audio transfer.

Stuff to learn:

Possible end result: A kind of zero-standby power intercom. When you press the button, an ESP8266 is powered up. It immediately starts transmitting audio from a digital I2S microphone over ESP now. The receiving end will probably be an ESP32, that receives the ESP now audio and converts into a standardized audio-over-ip protocol, e.g. VBAN.

Plans:

  • build an Arduino playground project so I can access the API from the command line and play with it
  • start with an ESP32 + INMP441

Next steps:

  • build a framework to stream the data and determine stream rate:
    • queue is filled with random data
    • queue is emptied by an espnow send process running in the main loop()
    • espnow completion callback notifies when next packet can be sent
  • investigate I2S communication from a microphone on an ESP8266
  • convert espnow data to UDP/VBAN on the receiving end
  • convert UDP/VBAN to audio on laptop

Related interesting stuff:

Result

ESP NOW broadcast just seems to work fine (not sure what prevented me from making it work earlier). I've fixed the WiFi channel to 1.

On the receiving side, I use an ESP32. On the sending side, I use an ESP8266:

  • init the esp now library
  • add the broadcast address as a peer
  • send a message
  • that's it!

Transmission appears to be very fast, taking less than a millisecond for 10 messages in a row. However, with broadcast, the sending side does not receive (or wait for) any acknowledgements, the tx callback just reports the broadcast address, the rx callback reports nothing.

References