Բովանդակություն:

Bluetooth Աուդիո և թվային ազդանշանների մշակում. Arduino շրջանակ. 10 քայլ
Bluetooth Աուդիո և թվային ազդանշանների մշակում. Arduino շրջանակ. 10 քայլ

Video: Bluetooth Աուդիո և թվային ազդանշանների մշակում. Arduino շրջանակ. 10 քայլ

Video: Bluetooth Աուդիո և թվային ազդանշանների մշակում. Arduino շրջանակ. 10 քայլ
Video: ESP32 Turorial 1 - Introduction to SunFounder's ESP32 IoT Learnig kit Software and Arduino IDE 2024, Նոյեմբեր
Anonim
Image
Image
Bluetooth Աուդիո և թվային ազդանշանների մշակում. Arduino շրջանակ
Bluetooth Աուդիո և թվային ազդանշանների մշակում. Arduino շրջանակ

Ամփոփում

Երբ ես մտածում եմ Bluetooth- ի մասին, ես մտածում եմ երաժշտության մասին, բայց, ցավոք, միկրոկոնտրոլերների մեծ մասը չի կարող երաժշտություն նվագել Bluetooth- ի միջոցով: Raspberry Pi- ն կարող է, բայց դա համակարգիչ է: Ես ցանկանում եմ մշակել Arduino- ի վրա հիմնված միկրոկոնտրոլերների համար Bluetooth- ի միջոցով աուդիո նվագարկելու շրջանակ: Միկրոկառավարիչի մկանները լիովին ճկելու համար ես պատրաստվում եմ ձայնի վրա ավելացնել իրական ժամանակի թվային ազդանշանի մշակում (DSP) (բարձր անցումային ֆիլտրացում, ցածր անցումային զտում և դինամիկ տիրույթի սեղմում): Վերևի բալի համար ես կավելացնեմ վեբ սերվեր, որը կարող է օգտագործվել DSP- ի անլար կազմաձևման համար: Ներկառուցված տեսանյութը ցույց է տալիս Bluetooth ձայնի հիմունքները գործողության մեջ: Այն նաև ցույց է տալիս, որ ես օգտագործում եմ վեբ սերվերը ՝ բարձր անցման, ցածր անցման զտման և դինամիկ տիրույթի սեղմման համար: Դինամիկ տիրույթի սեղմման առաջին օգտագործումը նպատակաուղղված առաջացնում է աղավաղում `որպես պարամետրերի վատ ընտրության օրինակ: Երկրորդ օրինակը վերացնում է այս խեղաթյուրումը:

Այս նախագծի համար ESP32- ը ընտրված միկրոկոնտրոլերն է: Այն արժե 10 ֆունտից պակաս և հագեցած է ADC- ներով, DAC- ներով, Wifi- ով, Bluetooth Low Energy- ով, Bluetooth Classic- ով և 240 ՄՀց երկմիջուկ պրոցեսորով: Ինքնաթիռի DAC- ն կարող է տեխնիկապես աուդիո նվագարկել, բայց այն հիանալի չի հնչի: Փոխարենը, ես կօգտագործեմ Adafruit I2S ստերեո ապակոդավորիչը `ելքային ազդանշան արտադրելու համար: Այս ազդանշանը կարող է հեշտությամբ ուղարկվել ցանկացած HiFi համակարգ ՝ ձեր առկա HiFi համակարգին անմիջապես անլար ձայն ավելացնելու համար:

Պարագաներ

Հուսանք, որ արտադրողներից շատերը կունենան տախտակներ, թռիչքներ, USB մալուխներ, էլեկտրամատակարարման եռակցման արդուկներ և միայն 15 ֆունտ պետք է ծախսեն ESP32- ի և ստերեո ապակոդավորման վրա: Եթե ոչ, ապա պահանջվող բոլոր մասերը ստորև նշված են:

  • ESP32 - փորձարկված ESP32 -PICO -KIT- ի և TinyPico- ի վրա - 9.50 ֆունտ/ 24 ֆունտ ստեռլինգ
  • Adafruit I2S ստերեո ապակոդավորիչ - 5.51 ֆունտ
  • Breadboard - £ 3- £ 5 -ական հատ
  • Թռիչքային լարեր - 3 ֆունտ
  • Լարային ականջակալներ/Hi -Fi համակարգ -
  • Գլխարկներ կամ զոդման երկաթ - 2.10 / / 30 £
  • Միկրո USB մալուխ - 2.10// £ 3
  • 3.5mm դեպի RCA միակցիչ/ 3.5mm jack դեպի jack (կամ այն, ինչ անհրաժեշտ է ձեր բարձրախոսին) - 2.40 £/ 1.50
  • USB սնուցման աղբյուր - 5 ֆունտ

Քայլ 1. Շինարարություն

Շինարարություն
Շինարարություն

Եթե դուք գնել եք ESP32-PICO-KIT- ը, ստիպված չեք լինի որևէ կապում զոդել, քանի որ այն նախապես զոդված է: Պարզապես տեղադրեք այն սեղանի վրա:

Քայլ 2. Շինարարություն - Հրել վերնագրեր/զոդում

Շինարարություն - հրում վերնագրեր/զոդում
Շինարարություն - հրում վերնագրեր/զոդում
Շինարարություն - հրում վերնագրեր/զոդում
Շինարարություն - հրում վերնագրեր/զոդում

Եթե ունեք զոդման սարք, կպցրեք քորոցները ստերեո ապակոդավորիչին `Adafruit կայքում տեղադրված հրահանգների համաձայն: Գրելու պահին իմ զոդիչը աշխատում էր, որը փակված էր: Ես չէի ուզում վճարել ժամանակավոր զոդման համար, ուստի կտրեցի պիմորոնիի մի քանի գլխարկ: Ես դրանք կտրեցի այնպես, որ դրանք տեղավորվեն ստերեո ապակոդավորիչին: Սա լավագույն լուծումը չէ (և ոչ թե այն, թե ինչպես էին նախատեսված վերնագրերի օգտագործումը), բայց դա ամենաէժան այլընտրանքն է զոդման համար: Կտրված վերնագիրը տեղադրեք սեղանի վրա: Ապակոդավորման համար անհրաժեշտ է ընդամենը 1 տող ՝ 6 կապում: Կայունության համար կարող եք մյուս վեցը ավելացնել, բայց դա անհրաժեշտ չէ այս նախատիպային համակարգի համար: Վերնագրերը տեղադրելու համար կապում են vin, 3vo, gnd, wsel, din և bclk:

Քայլ 3. Շինարարություն - Լարեք էլեկտրագծերը

Շինարարություն - լարերի հոսանքի կապում
Շինարարություն - լարերի հոսանքի կապում

Տեղադրեք Stereo ապակոդավորիչը սեղմման վերնագրերի վրա (vin, 3vo, gnd, wsel, din և bclk կապում) և ամուր սեղմեք դրանք միասին: Կրկին, դա իդեալականորեն պետք է արվի զոդման երկաթով, բայց ես ստիպված էի իմպրովիզ անել: Դուք կնկատեք, որ այս հրահանգի բոլոր լարերը կապույտ են: Դա այն պատճառով է, որ ես ոչ մի ցատկային լար չունեի, ուստի 1 երկար մետաղալար կտրեցի ավելի փոքր կտորների: Բացի այդ, ես գունավոր կույր եմ և իրականում թքած ունեմ լարերի գույնի վրա: Սնուցման սարքերը կցվում են հետևյալ կերպ.

3v3 (ESP32) -> ստերեո ապակոդավորման վրա vin- ի վրա

gnd (ESP32) -> gnd ստերեո ապակոդավորման վրա

Քայլ 4. Շինարարություն - I2S լարերի տեղադրում

Շինարարություն - I2S լարեր
Շինարարություն - I2S լարեր

ESP32- ից Bluetooth- ի ձայնը ստերեո ապակոդավորող ուղարկելու համար մենք պատրաստվում ենք օգտագործել թվային հաղորդակցության մի մեթոդ, որը կոչվում է I2S: Ստերեո ապակոդավորիչը կվերցնի այս թվային ազդանշանը և այն կդարձնի անալոգային ազդանշանի, որը կարող է միացվել բարձրախոսին կամ HiFi- ին: I2S- ը պահանջում է ընդամենը 3 լար և հասկանալի է, որ դա պարզ է: Բիթ ժամացույցի (bclk) տողը դառնում է բարձր ու ցածր `նշելով, որ նոր բիթ է փոխանցվում: Տվյալների դուրսբերման տողը (dout) դառնում է բարձր կամ ցածր `ցույց տալու համար, թե արդյոք այդ բիթն ունի 0 կամ 1 արժեք, իսկ ընտրված բառի տողը (wsel) դառնում է բարձր կամ ցածր` նշելու համար, թե ձախ կամ աջ ալիքը փոխանցվում է: Ոչ բոլոր միկրոկոնտրոլերներն են աջակցում I2S- ին, բայց ESP32- ն ունի 2 I2S տող: Սա ակնհայտ ընտրություն է դարձնում այս նախագծի համար:

Հաղորդալարերի տեղադրումը հետևյալն է.

27 (ESP32) -> wsel (ստերեո ապակոդավորիչ)

25 (ESP32) -> դին (ստերեո ապակոդավորիչ)

26 (ESP32) -> bclk (ստերեո ապակոդավորիչ)

Քայլ 5: Տեղադրելով BtAudio գրադարանը

Տեղադրելով BtAudio գրադարանը
Տեղադրելով BtAudio գրադարանը
Տեղադրելով BtAudio գրադարանը
Տեղադրելով BtAudio գրադարանը

Եթե դրանք դեռ տեղադրված չեք, տեղադրեք Arduino IDE- ն և Arduino միջուկը ESP32- ի համար: Երբ դրանք տեղադրեք, այցելեք իմ Github էջը և ներբեռնեք պահոցը: Arduino IDE- ի շրջանակում «Էսքիզ» բաժնում >> Ներառել գրադարանը >> ընտրեք «Ավելացնել. ZIP գրադարան»: Այնուհետեւ ընտրեք ներբեռնված zip ֆայլը: Սա պետք է ավելացնի իմ btAudio գրադարանը ձեր Arduino գրադարաններին: Գրադարանից օգտվելու համար դուք պետք է համապատասխան վերնագիր ներառեք Arduino էսքիզի մեջ: Սա կտեսնեք հաջորդ քայլին:

Քայլ 6: Օգտագործելով BtAudio գրադարանը

Օգտագործելով BtAudio գրադարանը
Օգտագործելով BtAudio գրադարանը
Օգտագործելով BtAudio գրադարանը
Օգտագործելով BtAudio գրադարանը

Տեղադրվելուց հետո միացրեք ձեր ESP32- ը ձեր համակարգչին միկրո USB- ի միջոցով, այնուհետև միացրեք ձեր ստերեո ապակոդավորիչը ձեր բարձրախոսին `ձեր 3.5 մմ մետաղալարով: Նախքան էսքիզը վերբեռնելը, դուք պետք է որոշ բաներ փոխեք Arduino խմբագրիչում: Ձեր տախտակն ընտրելուց հետո ձեզ հարկավոր է խմբագրել միջնորմերի բաժինը Գործիքներ >> Բաժանման սխեմա և ընտրել կամ «Ոչ OTA (Մեծ Pրագրեր)» կամ «Նվազագույն SPIFFS (Մեծ PSրագրեր OTA- ով)»: Սա անհրաժեշտ է, քանի որ այս նախագիծը օգտագործում է և՛ WiFi, և՛ Bluetooth, որոնք երկուսն էլ շատ հիշողությամբ ծանր գրադարաններ են: Դա անելուց հետո վերբեռնեք հետևյալ ուրվագիծը ESP32- ում:

#ներառում

// Սահմանում է ձայնային սարքի անունը btAudio audio = btAudio («ESP_Speaker»); void setup () {// ձայնային տվյալները փոխանցում է ESP32 audio.begin (); // ստացված տվյալները թողարկում է I2S DAC int bck = 26; int ws = 27; int dout = 25; աուդիո. I2S (bck, dout, ws); } void loop () {}

Էսքիզը լայնորեն կարելի է բաժանել 3 քայլի.

  1. Ստեղծեք գլոբալ btAudio օբյեկտ, որը սահմանում է ձեր ESP32- ի «Bluetooth անունը»
  2. Կարգավորեք ESP32- ը `ձայնագրություն ստանալու btAudio:: begin մեթոդով
  3. Տեղադրեք I2S կապում btAudio:: I2S մեթոդով:

Դա այն է, ինչ ծրագրային ապահովման կողմն է: Այժմ մնում է միայն սկսել Bluetooth կապը ձեր ESP32- ին: Պարզապես սկանավորեք նոր սարքեր ձեր հեռախոսի/նոութբուքի/MP3 նվագարկչի վրա և կհայտնվի «ESP_Speaker»: Երբ գոհ եք, որ ամեն ինչ աշխատում է (երաժշտությունը նվագում է), կարող եք անջատել ESP32- ը ձեր համակարգչից: Միացրեք այն USB հոսանքի աղբյուրով և այն կհիշի վերջին կոդը, որը դուք վերբեռնել եք դրան: Այս կերպ, դուք կարող եք ընդմիշտ թողնել ձեր ESP32- ը թաքնված ձեր HiFi համակարգի հետևում:

Քայլ 7: DSP - terտում

Թվային ազդանշանի մշակմամբ ստացողի ընդլայնում

Եթե դուք հետևել եք բոլոր քայլերին (և ես ոչինչ բաց չեմ թողել), այժմ ունեք լիովին գործող Bluetooth ընդունիչ ձեր HiFi համակարգի համար: Թեև սա զով է, այն իրականում չի հասցնում միկրոկոնտրոլերին իր սահմաններին: ESP32- ն ունի երկու միջուկ, որոնք աշխատում են 240 ՄՀց հաճախականությամբ: Դա նշանակում է, որ այս նախագիծը շատ ավելին է, քան պարզապես ընդունիչ: Այն ունի Bluetooth ընդունիչ ՝ թվային ազդանշանի պրոցեսորով (DSP): DSP- ներն ըստ էության իրականացնում են ազդանշանի մաթեմատիկական գործողություններ իրական ժամանակում: Օգտակար գործողություններից մեկը կոչվում է Թվային զտում: Այս գործընթացը թուլացնում է որոշակի անջատման հաճախականությունից ցածր կամ բարձր ազդանշանի հաճախականությունները `կախված այն բանից, թե դուք օգտագործում եք բարձր անցումային կամ ցածր անցանելի զտիչ:

Բարձր փոխանցման զտիչներ

High-Pass ֆիլտրերը թուլացնում են որոշակի տիրույթից ցածր հաճախականությունները: Ես կառուցել եմ զտիչ գրադարան Arduino համակարգերի համար ՝ հիմնված earlevel.com- ի կոդի վրա: Հիմնական տարբերությունն այն է, որ ես փոխել եմ դասի կառուցվածքը `ավելի հեշտ կարգի բարձրակարգ ֆիլտրերի կառուցման համար: Ավելի բարձր կարգի զտիչները ավելի արդյունավետ են ճնշում ձեր անջատումից այն կողմ հաճախականությունները, բայց դրանք պահանջում են շատ ավելի մեծ հաշվարկ: Այնուամենայնիվ, ընթացիկ իրականացման դեպքում դուք կարող եք նույնիսկ 6-րդ կարգի ֆիլտրեր օգտագործել իրական ժամանակի ձայնի համար:

Էսքիզը նույնն է, ինչ նախորդ քայլում հայտնաբերվածը, բացառությամբ, որ մենք փոխել ենք հիմնական օղակը: Ֆիլտրերը միացնելու համար մենք օգտագործում ենք btAudio:: createFilter մեթոդը: Այս մեթոդը ընդունում է 3 փաստարկ: Առաջինը ֆիլտրի կասկադների քանակն է: Filterտիչի կասկադների քանակը զտիչի կարգի կեսն է: 6 -րդ կարգի ֆիլտրի համար առաջին արգումենտը պետք է լինի 3. 8 -րդ կարգի ֆիլտրի համար այն կլինի 4. Երկրորդ փաստարկը ֆիլտրի անջատումն է: Ես դա դրել եմ 1000Hz- ի վրա, որպեսզի իսկապես դրամատիկ ազդեցություն ունենա տվյալների վրա: Վերջապես, մենք նշում ենք filer- ի տեսակը երրորդ փաստարկով: Սա պետք է լինի բարձրուղի բարձր անցման ֆիլտրի համար, իսկ ցածրուղի `ցածր անցումային ֆիլտրի համար: Ստորև բերված սցենարը փոխում է այս հաճախականության անջատումը 1000Hz- ից 2Hz- ի միջև: Դուք պետք է կտրուկ ազդեցություն լսեք տվյալների վրա:

#ներառում

btAudio audio = btAudio ("ESP_Speaker"); void setup () {audio.begin (); int bck = 26; int ws = 27; int dout = 25; աուդիո. I2S (bck, dout, ws); } void loop () {հետաձգում (5000); audio.createFilter (3, 1000, բարձրուղի); ուշացում (5000); audio.createFilter (3, 2, բարձրուղի); }

Lowածր անցման զտիչներ

Lowածր փոխանցման զտիչները կատարում են բարձր անցման ֆիլտրերի հակառակը և ճնշում որոշակի հաճախականությունից բարձր հաճախականությունները: Դրանք կարող են իրականացվել այնպես, ինչպես բարձր փոխանցման ֆիլտրերը, բացառությամբ, որ նրանք պահանջում են երրորդ արգումենտը փոխել ցածր անցումով: Ստորև բերված ուրվագծի համար ես փոխարինում եմ ցածր անցման անջատումը 2000Hz- ից մինչև 20000Hz- ի միջև: Հուսանք, դուք կլսեք տարբերությունը: Այն պետք է բավականին խլացված հնչի, երբ ցածր անցման ֆիլտրը 2000 Հց է:

#ներառում

btAudio audio = btAudio ("ESP_Speaker"); void setup () {audio.begin (); int bck = 26; int ws = 27; int dout = 25; աուդիո. I2S (bck, dout, ws); } void loop () {հետաձգում (5000); audio.createFilter (3, 2000, ցածրուղի); ուշացում (5000); audio.createFilter (3, 20000, ցածրուղի); }

Քայլ 8: DSP - Դինամիկ տիրույթի սեղմում

Նախապատմություն

Դինամիկ տիրույթի սեղմումը ազդանշանի մշակման մեթոդ է, որը փորձում է հավասարեցնել ձայնի բարձրությունը: Այն սեղմում է բարձր հնչյունները, որոնք բարձրանում են որոշակի շեմից, դեպի հանգիստ հնչյունների մակարդակ, այնուհետև, ըստ ցանկության, ուժեղացնում է երկուսն էլ: Արդյունքը շատ ավելի համաչափ լսելու փորձ է: Սա իսկապես օգտակար դարձավ, երբ ես դիտում էի շոու ՝ շատ բարձր ֆոնային երաժշտությամբ և շատ հանգիստ վոկալով: Այս դեպքում միայն ձայնի բարձրացումը չօգնեց, քանի որ դա միայն ուժեղացրեց ֆոնային երաժշտությունը: Դինամիկ տիրույթի սեղմումով ես կարող էի բարձր երաժշտության ֆոնին իջեցնել վոկալի մակարդակին և նորից ամեն ինչ լսել ինչպես հարկն է:

Օրենսգիրքը

Դինամիկ տիրույթի սեղմումը չի ենթադրում միայն ազդանշանի ձայնի իջեցում կամ շեմը: Դա մի փոքր ավելի խելացի է, քան դա: Եթե ձայնը նվազեցնեք, հանգիստ ձայները կկրճատվեն, ինչպես նաև բարձր հնչյունները: Սրա շուրջ մեկ ճանապարհ է ազդանշանի շեմը, բայց դա հանգեցնում է լուրջ խեղաթյուրման: Դինամիկ տիրույթի սեղմումը ներառում է փափուկ շեմի և զտման համադրություն `նվազագույնի հասցնելու համար այն խեղաթյուրումը, որը դուք կստանաք, եթե ազդանշանը շեմը կտրեք: Արդյունքը մի ազդանշան է, որտեղ բարձր ձայները «խեղաթյուրվում են» առանց աղավաղումների, իսկ հանգիստը մնում են այնպիսին, ինչպիսին կան: Ստորև բերված կոդը անցնում է սեղմման երեք տարբեր մակարդակների միջև:

  1. Սեղմում խեղաթյուրմամբ
  2. Սեղմում առանց խեղաթյուրման
  3. Ոչ մի սեղմում

#ներառում

btAudio audio = btAudio ("ESP_Speaker"); void setup () {audio.begin (); int bck = 26; int ws = 27; int dout = 25; աուդիո. I2S (bck, dout, ws); } void loop () {հետաձգում (5000); audio.compress (30, 0.0001, 0.0001, 10, 10, 0); ուշացում (5000); audio.compress (30, 0.0001, 0.1, 10, 10, 0); ուշացում (5000); audio.decompress (); }

Դինամիկ տիրույթի սեղմումը բարդ է, և btAudio:: compress մեթոդներն ունեն բազմաթիվ պարամետրեր: Ես կփորձեմ դրանք բացատրել (ըստ հերթականության) այստեղ ՝

  1. Շեմ - այն մակարդակը, որով ձայնը նվազում է (չափվում է դեցիբելներով)
  2. Հարձակման ժամանակը - այն ժամանակը, որը պահանջվում է, որպեսզի կոմպրեսորը սկսի աշխատել, երբ շեմը գերազանցվի
  3. Թողարկման ժամանակը - այն ժամանակը, որն անհրաժեշտ է, որպեսզի կոմպրեսորը դադարեցնի աշխատանքը:
  4. Կրճատման հարաբերակցությունը `այն գործոնը, որով ձայնը սեղմվում է:
  5. Kնկների լայնություն - լայնությունը (դեցիբելներով) այն շեմի շուրջ, որի վրա կոմպրեսորը մասամբ աշխատում է (ավելի բնական ձայն):
  6. Սեղմումից հետո ազդանշանին ավելացված շահույթը (դեցիբել) (ձայնի բարձրացում/նվազում)

Սեղմման առաջին օգտագործման ժամանակ շատ լսելի աղավաղումը պայմանավորված է նրանով, որ շեմը շատ ցածր է, և հարձակման ժամանակը և արձակման ժամանակը շատ կարճ են, ինչը արդյունավետորեն հանգեցնում է ծանր շեմային վարքագծի: Սա հստակորեն լուծվում է երկրորդ դեպքում ՝ թողարկման ժամանակը մեծացնելով: Սա էապես ստիպում է, որ կոմպրեսորը գործի շատ ավելի սահուն կերպով: Այստեղ ես միայն ցույց տվեցի, թե ինչպես է 1 պարամետրի փոփոխությունը կարող է դրամատիկ ազդեցություն ունենալ ձայնի վրա: Այժմ ձեր հերթն է տարբեր պարամետրերով փորձեր կատարել:

Իրականացում (կախարդական մաթեմատիկա - ըստ ցանկության)

Ես գտա, որ Դինամիկ տիրույթի սեղմումը միամտորեն դժվար լինելը դժվար է: Ալգորիթմը պահանջում է 16-բիթ ամբողջ թիվը փոխակերպել դեցիբելների, այնուհետև այն վերափոխել 16-բիթանոց ամբողջի ՝ ազդանշանը մշակելուց հետո: Ես նկատեցի, որ կոդի մեկ տողում տևում էր 10 միկրովայրկյան ՝ ստերեո տվյալների մշակման համար: Քանի որ 44.1 ԿՀց հաճախականությամբ ստերեո ձայնագրությունը DSP- ի համար թողնում է ընդամենը 11.3 միկրովայրկյան, դա անթույլատրելիորեն դանդաղ է … Այնուամենայնիվ, համատեղելով փոքր որոնման աղյուսակը (400 բայթ) և Netwon- ի բաժանված տարբերությունների հիման վրա ինտերպոլացիայի ընթացակարգը, մենք կարող ենք ձեռք բերել գրեթե 17 բիթ ճշգրտություն 0.2 միկրովայրկյանում:. Ես կցել եմ pdf փաստաթուղթ ՝ բոլոր մաթեմատիկայի հետ, իսկապես հետաքրքրվողների համար: Բարդ է, ձեզ զգուշացրել են:

Քայլ 9: Wifi ինտերֆեյս

Wifi ինտերֆեյս
Wifi ինտերֆեյս
Wifi ինտերֆեյս
Wifi ինտերֆեյս

Այժմ դուք ունեք Bluetooth ընդունիչ, որն ի վիճակի է գործարկել իրական ժամանակի DSP: Sadավոք, եթե ցանկանում եք փոխել DSP- ի պարամետրերից որևէ մեկը, ապա ձեզ հարկավոր է անջատել ձեր HiFi- ից, վերբեռնել նոր ուրվագիծ և ապա նորից միանալ: Սա խրթին է: Սա շտկելու համար ես մշակեցի վեբ սերվեր, որը կարող եք օգտագործել ՝ խմբագրելու բոլոր DSP պարամետրերը ՝ առանց ձեր համակարգչին նորից միանալու: Վեբ սերվերից օգտվելու ուրվագիծը ստորև է:

#ներառում

#ներառել btAudio audio = btAudio ("ESP_Speaker"); webDSP վեբ; void setup () {Serial.begin (115200); audio.begin (); int bck = 26; int ws = 27; int dout = 25; աուդիո. I2S (bck, dout, ws); // փոխարինել ձեր WiFi ID- ով և գաղտնաբառով const char* ssid = "SSID"; const char* գաղտնաբառ = "PASSWORD"; web.begin (ssid, գաղտնաբառ և աուդիո); } void loop () {web._server.handleClient (); }

Ձեր ESP32 ծածկագրին տրվում է IP հասցե, որը կարող եք օգտագործել վեբ էջ մուտք գործելու համար: Առաջին անգամ այս կոդը գործարկելիս այն պետք է կցված լինի համակարգչին: Այդ կերպ դուք կարող եք տեսնել ձեր ESP32- ին տրված IP հասցեն ձեր սերիական մոնիտորի վրա: Եթե ցանկանում եք մուտք գործել այս վեբ էջ, պարզապես մուտքագրեք այս IP հասցեն ցանկացած վեբ դիտարկիչում (փորձարկված է Chrome- ում):

Մինչ այժմ մենք պետք է ծանոթ լինենք Bluetooth- ի և I2S- ի միացման եղանակին: Հիմնական տարբերությունը webDSP օբյեկտի օգտագործումն է: Այս օբյեկտը վերցնում է ձեր Wifi SSID- ն ու գաղտնաբառը որպես փաստարկներ, ինչպես նաև ցուցիչ դեպի btAudio օբյեկտ: Հիմնական հանգույցում մենք անընդհատ ստանում ենք, որ webDSP օբյեկտը լսի վեբ էջից մուտքային տվյալները, այնուհետև թարմացնի DSP պարամետրերը: Որպես փակման կետ, պետք է նշել, որ և՛ Bluetooth- ը, և՛ Wifi- ն օգտագործում են միևնույն ռադիոն ESP32- ում: Սա նշանակում է, որ գուցե ստիպված լինեք սպասել մինչև 10 վայրկյան ՝ կայքի պարամետրերը մուտքագրելուց մինչև այն պահը, երբ տեղեկատվությունն իրականում հասնում է ESP32- ին:

Քայլ 10: Ապագա ծրագրեր

Հուսանք, որ ձեզ դուր եկավ այս ուսանելի տարբերակը և այժմ ձեր HiFi- ին ավելացվել է Bluetooth Audio և DSP: Այնուամենայնիվ, ես կարծում եմ, որ այս նախագծում աճելու մեծ տեղ կա, և ես պարզապես ուզում էի մատնանշել ապագա որոշ ուղղություններ, որոնք կարող եմ վերցնել:

  • Միացնել ձայնի Wifi հոսքը (լավագույն ձայնի որակի համար)
  • Ձայնային հրամանները միացնելու համար օգտագործեք I2S խոսափող
  • մշակել WiFi- ով կառավարվող հավասարեցուցիչ
  • Դարձրեք այն գեղեցիկ (տախտակը չի գոռում արտադրանքի հիանալի ձևավորում)

Երբ ես մոտենամ այս գաղափարների իրականացմանը, ես ավելի շատ հրահանգներ կստեղծեմ: Կամ գուցե մեկ ուրիշը կստանա այս գործառույթների իրականացումը: Դա ամեն ինչ բաց կոդ դարձնելու ուրախությունն է:

Խորհուրդ ենք տալիս: