esp-idf VS ESP32-A2DP

Compare esp-idf vs ESP32-A2DP and see what are their differences.

esp-idf

Espressif IoT Development Framework. Official development framework for Espressif SoCs. (by espressif)

ESP32-A2DP

A Simple ESP32 Bluetooth A2DP Library (to implement a Music Receiver or Sender) that supports Arduino, PlatformIO and Espressif IDF (by pschatzmann)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
esp-idf ESP32-A2DP
245 18
12,379 1,383
2.4% -
10.0 8.1
4 days ago 2 days ago
C C++
Apache License 2.0 Apache License 2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

esp-idf

Posts with mentions or reviews of esp-idf. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-07.
  • ESP-IDP and pytest markers for supported targets
    2 projects | /r/esp32 | 7 Dec 2023
    IDF contains stuff like https://github.com/espressif/esp-idf/blob/master/pytest.ini and https://github.com/espressif/esp-idf/blob/master/tools/ci/idf_pytest/constants.py which are not part of the pytest-embedded package.
  • Unveiling secrets of the ESP32: creating an open-source Mac layer
    5 projects | news.ycombinator.com | 6 Dec 2023
    ugh.. arduino.

    Better to start with ESP-IDF, there's a pretty full featured well documented web server, and a lot more.

    https://github.com/espressif/esp-idf/tree/master/examples/pr...

  • ESP32-S3 Usb host hid
    2 projects | /r/esp32 | 6 Sep 2023
    Hi, I have device ESP32-S3-DevKitM-1 and i want to catch keystrokes from keyboard. I tried using this https://github.com/tanakamasayuki/EspUsbHost and example from espressif https://github.com/espressif/esp-idf/tree/release/v5.1/examples/peripherals/usb/host/hid/main but when i connect keyboard it is just connecting and disconnecting. Can anyone help me with this?
  • Using ESP32C6 to run wifi and Thread simultaneously
    3 projects | /r/embedded | 11 Jul 2023
    According to this page, coexistence of WiFi and 802.15.4 is now supported. Thread is based on 802.15.4.
    3 projects | /r/embedded | 11 Jul 2023
    The example: https://github.com/espressif/esp-idf/tree/master/examples/openthread/ot_br "The example could also run on a single SoC which supports both Wi-Fi and Thread (e.g., ESP32-C6), but since there is only one RF path in ESP32-C6, which means Wi-Fi and Thread can't receive simultaneously, it has a significant impact on performance. Hence the two SoCs solution is recommended."
  • How to Master Esp32
    2 projects | /r/embedded | 3 Jul 2023
  • ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT [pdf]
    9 projects | news.ycombinator.com | 14 Jun 2023
    The latest, but it was a few months ago. The results were off by 400 meters, and many persons have the same problems : https://github.com/espressif/esp-idf/issues/8976
  • ESP32 i2c (BMP280) not working with ESP-IDF but OK with Arduino IDE
    4 projects | /r/esp32 | 10 Jun 2023
    Use an official I2C example form the IDF. Like this: https://github.com/espressif/esp-idf/blob/master/examples/peripherals/i2c/i2c_simple/main/i2c_simple_main.c I’stand corrected with respect to the call order, it appears the driver install comes later. Your speed is unusually low, use the default speed of 400K. If you still get the error in the setup, use the source: the IDF is fully source distributed. Look into the implementation of the function, which errors occur form which code parts. Use ESP_LOGE or similar calls to get output messages on where you are getting to within the code. So that you learn where it’s expectations aren’t met.
  • How to analyse binary coredump
    2 projects | /r/esp32 | 26 May 2023
    You'll need the core dump and the ELF file, assuming you have them both, you will need espcoredump.py (Github), but it's easier to install the whole ESP-IDF (docs.esspressif.com) package as the coredump tool has dependencies.
  • Reading external USB mass storage
    6 projects | /r/esp32 | 22 May 2023
    I habe: https://github.com/espressif/esp-idf/tree/efe919275e8f4516ffd5f99f9a59e9d3efbae281/examples/peripherals/usb/host/msc

ESP32-A2DP

Posts with mentions or reviews of ESP32-A2DP. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-02-16.
  • Audio and Arduino
    2 projects | /r/arduino | 16 Feb 2023
    Check out arduino-audio-tools and other libraries it can make use of, such as ESP32-A2DP. It's tailored towards ESP32 devices, but also supports the RP2040 and others.
  • Outputting the AudioPLL to an external DAC
    3 projects | /r/esp32 | 21 Nov 2022
    For all other i2s pinouts, I'm leaning on this GitHub-project: https://github.com/pschatzmann/ESP32-A2DP
  • Sending data (wav files) from esp 32 to PC
    2 projects | /r/esp32 | 29 Sep 2022
    You can use Bluetooth A2DP. This is the same standard used in Bluetooth headphones. Several implementations are available https://github.com/pschatzmann/ESP32-A2DP
  • ESP32-A2DP Security option / ie BT connection to require password?
    3 projects | /r/arduino | 27 Jan 2022
    /******************************************************************* Talking Unicorn ESP32 as a bluetooth speaker that tries to move the mouth in sync with the vocal audio Heavily Based on https://github.com/thingpulse/esp32-icon64-a2dp Modifications from the original sketch: - Updated to the most recent version of the bluetooth audio lib - Removed graphics - Added the threshold for moving the mouth Parts Used: ESP32 Adafruit Max 98357A I2S Amp I2S Amp Wiring: LRC = 25 BCLK = 26 DIN = 22 GAIN = G (different connections change the gain) If you find what I do useful and would like to support me, please consider becoming a sponsor on Github https://github.com/sponsors/witnessmenow/ Adapted by Brian Lough YouTube: https://www.youtube.com/brianlough Tindie: https://www.tindie.com/stores/brianlough/ Twitter: https://twitter.com/witnessmenow *******************************************************************/ // For ME ESP32 DEV MODULE as board // Original Codes header: /* MIT License Copyright (c) 2020 ThingPulse GmbH (B.L.: Do I leave this here?) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include // ---------------------------- // Additional Libraries - each one of these will need to be installed. // ---------------------------- #include "BluetoothA2DPSink.h" // Library to make the ESP32 act as a Bluetooth speaker // Think it needs to be installed through Github // https://github.com/pschatzmann/ESP32-A2DP #include // Library to do the FFT (seperating the audio into different freuencies) // Can be installed through the library manager // https://github.com/kosme/arduinoFFT BluetoothA2DPSink a2dp_sink; // FFT Settings #define NUM_BANDS 8 #define SAMPLES 512 #define SAMPLING_FREQUENCY 44100 // Threshold for moving the mouth #define VOCAL_CHANNEL 3 // Which band to base the vocal audio on #define VOCAL_THRESHOLD 7 // what threshold it needs to meet to be considered high. 8 is max arduinoFFT FFT = arduinoFFT(); int32_t peak[] = {0, 0, 0, 0, 0, 0, 0, 0}; double vReal[SAMPLES]; double vImag[SAMPLES]; QueueHandle_t queue; int16_t sample_l_int; int16_t sample_r_int; float amplitude = 200.0; uint32_t animationCounter = 0; int visualizationCounter = 0; int32_t lastVisualizationUpdate = 0; int servomove; void createBands(int i, int dsize) { uint8_t band = 0; if (i <= 2) { band = 0; // 125Hz } else if (i <= 5) { band = 1; // 250Hz } else if (i <= 7) { band = 2; // 500Hz } else if (i <= 15) { band = 3; // 1000Hz } else if (i <= 30) { band = 4; // 2000Hz } else if (i <= 53) { band = 5; // 4000Hz } else if (i <= 106) { band = 6;// 8000Hz } else { band = 7; } int dmax = amplitude; if (dsize > dmax) dsize = dmax; if (dsize > peak[band]) { peak[band] = dsize; } } Servo myservo; void renderFFT(void * parameter) { int item = 0; for (;;) { if (uxQueueMessagesWaiting(queue) > 0) { FFT.Windowing(vReal, SAMPLES, FFT_WIN_TYP_HAMMING, FFT_FORWARD); FFT.Compute(vReal, vImag, SAMPLES, FFT_FORWARD); FFT.ComplexToMagnitude(vReal, vImag, SAMPLES); for (uint8_t band = 0; band < NUM_BANDS; band++) { peak[band] = 0; } for (int i = 2; i < (SAMPLES / 2); i++) { // Don't use sample 0 and only first SAMPLES/2 are usable. Each array eleement represents a frequency and its value the amplitude. if (vReal[i] > 2000) { // Add a crude noise filter, 10 x amplitude or more createBands(i, (int)vReal[i] / amplitude); } } // Release handle xQueueReceive(queue, &item, 0); uint8_t intensity; for (byte band = 0; band < NUM_BANDS; band++) { intensity = map(peak[band], 1, amplitude, 0, 8); Serial.print(intensity); Serial.print(" | "); if (band == VOCAL_CHANNEL) { digitalWrite(5, (intensity >= VOCAL_THRESHOLD)); //the above is where we need to change this so it would work with a stepper or servo servomove = map(intensity,0,8, 0,90); myservo.write(servomove); } } Serial.println(""); if ((millis() - lastVisualizationUpdate) > 1000) { log_e("Fps: %f", visualizationCounter / ((millis() - lastVisualizationUpdate) / 1000.0)); visualizationCounter = 0; lastVisualizationUpdate = millis(); //hueOffset += 5; } visualizationCounter++; } } } void avrc_metadata_callback(uint8_t data1, const uint8_t *data2) { Serial.printf("AVRC metadata rsp: attribute id 0x%x, %s\n", data1, data2); } // Then somewhere in your sketch: void read_data_stream(const uint8_t *data, uint32_t length) { int item = 0; // Only prepare new samples if the queue is empty if (uxQueueMessagesWaiting(queue) == 0) { //log_e("Queue is empty, adding new item"); int byteOffset = 0; for (int i = 0; i < SAMPLES; i++) { sample_l_int = (int16_t)(((*(data + byteOffset + 1) << 8) | *(data + byteOffset))); sample_r_int = (int16_t)(((*(data + byteOffset + 3) << 8) | *(data + byteOffset + 2))); vReal[i] = (sample_l_int + sample_r_int) / 2.0f;; vImag[i] = 0; byteOffset = byteOffset + 4; } // Tell the task in core 1 that the processing can start xQueueSend(queue, &item, portMAX_DELAY); } } void setup() { Serial.begin(115200); pinMode(5, OUTPUT); myservo.attach(2); // The queue is used for communication between A2DP callback and the FFT processor queue = xQueueCreate( 1, sizeof( int ) ); if (queue == NULL) { Serial.println("Error creating the queue"); } xTaskCreatePinnedToCore( renderFFT, // Function that should be called "FFT Renderer", // Name of the task (for debugging) 10000, // Stack size (bytes) NULL, // Parameter to pass 1, // Task priority NULL, // Task handle 1 // Core you want to run the task on (0 or 1) ); a2dp_sink.set_avrc_metadata_callback(avrc_metadata_callback); a2dp_sink.set_stream_reader(read_data_stream); a2dp_sink.start("Puppet"); } void loop() { }
  • Looking for ppl to support my open source Hi-Fi Bluetooth speaker project.
    2 projects | /r/esp32 | 9 Jan 2022
    https://github.com/pschatzmann/ESP32-A2DP/issues/149 Seems to cover this for esp32 but form the information 16bit vs 32 bit a2dp does not effect the audio quality just the things it can connect too?
  • ESP32 Bluetooth Audio Receiver
    3 projects | /r/esp32 | 22 Dec 2021
    That project is inspired by KitchenRadio and uses ESP32-A2DP library ! 🙏
  • Has anybody successfully paired an esp32 with a phone to receive phone calls?
    3 projects | /r/esp32 | 27 Nov 2021
    I would look this way for a simple implementation : https://github.com/pschatzmann/ESP32-A2DP
  • [C/C++] Project from Github won't compile in VSCode because of error on one line
    2 projects | /r/AskProgramming | 22 Oct 2021
    where a2dp_sink is an object of type BluetoothAudioSink and audio_data_callback(const uint8_t *data, uint32_t len) appears to be a member function. That class is found in a different project at ESP32-A2DP
  • My first player, MD-R70, for $50 shipped. The remote cost almost as much! Going to reverse engineer to make a Bluetooth interface 😃
    2 projects | /r/minidisc | 7 Aug 2021
    Interesting project. Do you have an idea of the microcontroller you want to use? ( I wonder if something like this would be useful ... https://github.com/pschatzmann/ESP32-A2DP ) Is that something you are going to do solo or are you going to publish somewhere? ( I am thinking about hackaday/github)

What are some alternatives?

When comparing esp-idf and ESP32-A2DP you can also consider the following projects:

arduino-esp32 - Arduino core for the ESP32

esp32-bluetooth-audio-adafruit - An ESP32 bluetooth audio receiver using an adafruit breakout

MicroPython - MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems

WiFiManager - ESP8266 WiFi Connection manager with web captive portal

WLED - Control WS2812B and many more types of digital RGB LEDs with an ESP8266 or ESP32 over WiFi!

AutoConnect - An Arduino library for ESP8266/ESP32 WLAN configuration at runtime with the Web interface

Unity Test API - Simple Unit Testing for C

esptool-js - Javascript implementation of flasher tool for Espressif chips, running in web browser using WebSerial.

esp32-wifi-penetration-tool - Exploring possibilities of ESP32 platform to attack on nearby Wi-Fi networks.

ElegantOTA - OTA updates made slick and simple for everyone!

wolfssl - The wolfSSL library is a small, fast, portable implementation of TLS/SSL for embedded devices to the cloud. wolfSSL supports up to TLS 1.3!

ESP32-W5100 - PoC app to test W5100 integration to esp-idf