Tafuta Msimbo

Mafunzo ya ESP32 39/55 - Kutumia ESP32 kama Kicheza Muziki cha Bluetooth | Kifurushi cha Kujifunza cha ESP32 IoT cha SunFounder

Mafunzo ya ESP32 39/55 - Kutumia ESP32 kama Kicheza Muziki cha Bluetooth | Kifurushi cha Kujifunza cha ESP32 IoT cha SunFounder

Katika mafunzo haya, tutachunguza jinsi ya kutumia ESP32 kama kicheza muziki cha Bluetooth. ESP32 ni kidhibiti chenye nguvu kinachojumuisha uwezo wa Wi-Fi na Bluetooth, na kuifanya kuwa chaguo bora kwa programu za IoT. Tutatumia Bluetooth A2DP sink kutiririsha sauti hadi ESP32, ambayo inaweza kisha kutolewa kupitia DAC yake iliyojengewa ndani.

moduli_ya_sauti

Ili kufanikisha hili, tutasanidi ESP32 na maktaba na mipangilio muhimu ili kushughulikia utiririshaji wa sauti wa Bluetooth. Kufikia mwisho wa mafunzo haya, utakuwa na kicheza sauti cha Bluetooth kinachofanya kazi ambacho kinaweza kudhibitiwa kutoka kwa simu yako mahiri au vifaa vingine vinavyotumia Bluetooth. Kwa maelezo ya kina zaidi, hakikisha umeangalia video (katika video saa 00:00).

picha_ya_spika

Vifaa Vimeelezwa

Vipengele vikuu vya mradi huu vinajumuisha kidhibiti cha ESP32 na maktaba ya BluetoothA2DPSink. ESP32 ina Digital-to-Analog Converter (DAC) iliyojengewa ndani inayoruhusu utoaji wa sauti bila vifaa vyovyote vya ziada. Maktaba ya BluetoothA2DPSink hurahisisha mchakato wa kusanidi sink ya sauti ya Bluetooth, kukuwezesha kupokea mitiririko ya sauti kupitia Bluetooth.

ESP32 ina pini nyingi za GPIO ambazo zinaweza kusanidiwa kwa madhumuni mbalimbali, ikiwa ni pamoja na utoaji wa sauti. Katika usanidi wetu, tutatumia GPIO25 kwa chaneli za sauti za kushoto na kulia. Maktaba hushughulikia usimamizi wa muunganisho wa Bluetooth na utiririshaji wa sauti, na kurahisisha kuzingatia programu badala ya itifaki za msingi za Bluetooth.

Maelezo ya Datasheet

Mtengenezaji Espressif Systems
Nambari ya sehemu ESP32-WROOM-32
Voltage ya Logic/IO 3.3 V
Voltage ya usambazaji 3.0–3.6 V
Mkondo wa pato (kwa kila chaneli) Hadi 40 mA
Mwongozo wa mzunguko wa PWM 1 KHz - 40 KHz
Mipaka ya joto 125 °C
Kifurushi QFN48
Vidokezo / lahaja Mipangilio mbalimbali inapatikana

 

  • Pini za kawaida za GPIO zinaweza kutumika kwa utoaji wa sauti.
  • Hakikisha usambazaji wa nishati sahihi (3.3 V) ili kuepuka uharibifu.
  • Weka firmware kusasishwa kwa utendaji bora wa Bluetooth.
  • Tumia antena za nje kwa masafa bora ya Bluetooth.
  • Fahamu mapungufu ya pato la DAC; tumia DAC za nje kwa sauti ya ubora wa juu.

Maagizo ya Uunganishaji wa Waya

esp32-39_bluetooth_audio_wiring

Ili kuunganisha ESP32 kwa uchezaji wa sauti wa Bluetooth, anza kwa kuunganisha ESP32 kwenye chanzo cha nishati. Tumia kebo ya USB kuiunganisha kwenye kompyuta yako, ambayo itatoa nishati muhimu. Ifuatayo, unganisha pini za pato la sauti: unganisha chaneli ya sauti ya kushoto kwa GPIO25 na chaneli ya sauti ya kulia kwa pini hiyo hiyo ya GPIO25. Unaweza kutumia waya za kurukia kwa miunganisho hii.

Kwa kuwa ESP32 ina DAC iliyojengewa ndani, hauitaji vipengele vyovyote vya ziada kwa utoaji wa sauti. Hata hivyo, hakikisha kwamba muunganisho wa ardhi ni wa kawaida kati ya ESP32 na vifaa vyovyote vya sauti vya nje unavyoweza kutumia. Usanidi huu utakuwezesha kutiririsha sauti moja kwa moja hadi ESP32 kupitia Bluetooth.

Mifano ya Msimbo na Maelekezo

Kipande kifuatacho cha msimbo huanzisha sink ya Bluetooth A2DP na kusanidi usanidi wa I2S kwa uchezaji wa sauti.


// ==> Mfano wa kutumia DAC iliyojengewa ndani ya ESP32

#include "BluetoothA2DPSink.h"

BluetoothA2DPSink a2dp_sink;


void setup() {
  const i2s_config_t i2s_config = {
    .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_DAC_BUILT_IN),
    .sample_rate = 44100,
    .bits_per_sample = (i2s_bits_per_sample_t)16,
    .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
  };

  a2dp_sink.set_i2s_config(i2s_config);
  a2dp_sink.start("ESP32_Bluetooth");
}

Katika kazi ya setup(), kwanza tunasanidi mipangilio ya I2S, tukibainisha hali kama master na kuwezesha DAC iliyojengewa ndani. Kiwango cha sampuli kinawekwa kuwa 44100 Hz, ambacho ni cha kawaida kwa uchezaji wa sauti. Sink ya Bluetooth A2DP kisha inaanzishwa kwa jina maalum, ikiruhusu kutambuliwa na vifaa vingine vya Bluetooth.

Kazi ya loop() inabaki tupu, kwani maktaba ya Bluetooth hushughulikia utiririshaji nyuma ya pazia. Unaweza kuangalia msimbo kamili uliopakiwa chini ya makala kwa maelezo zaidi.

Maonyesho / Nini cha Kutarajia

Mara tu usanidi utakapokamilika na msimbo kupakiwa, washa ESP32 na utafute kifaa kinachoitwa "ESP32_Bluetooth" kwenye kifaa chako kinachotumia Bluetooth. Baada ya kuunganisha, sauti yoyote inayochezwa kwenye kifaa kilichounganishwa inapaswa kutiririka kupitia ESP32. Unaweza kutarajia pato la sauti la ubora wa juu kupitia DAC mradi miunganisho ni sahihi na usambazaji wa nishati ni thabiti.

Makosa ya kawaida ni pamoja na uunganishaji usio sahihi wa pini za pato la sauti na usambazaji wa nishati usiotosha. Hakikisha ESP32 ina nishati sahihi na kwamba miunganisho ya ardhi ni salama. Ikiwa utapata matatizo yoyote, angalia video kwa vidokezo vya utatuzi (katika video saa 00:00).

Vidokezo vya Muda wa Video

  • 00:00 Anza
  • 2:12 Utangulizi
  • 5:22 Uunganishaji wa waya umeelezwa
  • 7:51 Msimbo wa Arduino umeelezwa
  • 10:37 Kuchagua bodi ya ESP32 na bandari ya COM katika Arduino IDE
  • 12:19 Kucheza muziki kwa kutumia ESP32 kutoka kwa simu ya mkononi
  • 13:30 Kuunganisha amplifier yenye nguvu zaidi kwa ESP32

Bilder

esp32-39_bluetooth_audio_wiring
esp32-39_bluetooth_audio_wiring
speaker_pic
speaker_pic
audio_module
audio_module
840-ESP32 Tutorial 39/55- Arduino code for playing audio via bluetooth
Språk: C++

// ==> Example to use built in DAC of ESP32

// R,L connect to GPIO25

#include "BluetoothA2DPSink.h"

BluetoothA2DPSink a2dp_sink;

void setup() {
  const i2s_config_t i2s_config = {
    .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_DAC_BUILT_IN),
    .sample_rate = 44100,                          // corrected by info from bluetooth
    .bits_per_sample = (i2s_bits_per_sample_t)16,  //the DAC module will only take the 8bits from MSB
    .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
    .communication_format = (i2s_comm_format_t)I2S_COMM_FORMAT_STAND_MSB,
    .intr_alloc_flags = 0,  // default interrupt priority
    .dma_buf_count = 8,
    .dma_buf_len = 64,
    .use_apll = false
  };

  a2dp_sink.set_i2s_config(i2s_config);
  a2dp_sink.start("ESP32_Bluetooth");
}


void loop() {
}

Resurser och referenser

Filer📁

Inga filer tillgängliga.