EspNowAudio: Difference between revisions

From RevSpace
Jump to navigation Jump to search
mNo edit summary
 
(3 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: https://hackaday.io/project/166868-my-attempt-at-an-esp-now-mesh/log/166398-072419-maximum-transmission-throughput-of-esp-now
* 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
Line 25: Line 25:
* build an Arduino playground project so I can access the API from the command line and play with it
* build an Arduino playground project so I can access the API from the command line and play with it
* start with an ESP32 + INMP441
* 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:
Related interesting stuff:
Line 30: Line 39:
* ESP audio playback https://github.com/earlephilhower/ESP8266Audio
* ESP audio playback https://github.com/earlephilhower/ESP8266Audio
* VBAN specification https://www.vb-audio.com/Voicemeeter/VBANProtocol_Specifications.pdf
* 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 13:37, 17 March 2020

Project EspNowAudio
Whyunopicture.png
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