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

ESP32- ի միջոցով ինտերնետային ռադիոընդունիչ. 7 քայլ (նկարներով)
ESP32- ի միջոցով ինտերնետային ռադիոընդունիչ. 7 քայլ (նկարներով)

Video: ESP32- ի միջոցով ինտերնետային ռադիոընդունիչ. 7 քայլ (նկարներով)

Video: ESP32- ի միջոցով ինտերնետային ռադիոընդունիչ. 7 քայլ (նկարներով)
Video: ESP32 Tutorial 4 - Data types Define Variable Int, bool, char, Serial Monitor-ESP32 IoT Learnig kit 2024, Հունիսի
Anonim
Image
Image
Ինտերնետ ռադիո ՝ օգտագործելով ESP32
Ինտերնետ ռադիո ՝ օգտագործելով ESP32
Ինտերնետ ռադիո ՝ օգտագործելով ESP32
Ինտերնետ ռադիո ՝ օգտագործելով ESP32

Հարգելի ընկերներ, բարի գալուստ մեկ այլ Ուսուցիչ: Այսօր մենք պատրաստվում ենք կառուցել 3,5 դյույմ մեծ էկրանով ինտերնետային ռադիո սարք `օգտագործելով էժան ESP32 տախտակ: Ուզում եք հավատացեք, ուզում եք ՝ ոչ, մենք այժմ կարող ենք ինտերնետ ռադիոկայան կառուցել 10 րոպեից պակաս ժամանակում և 30 դոլարից էլ պակաս գումարով: Շատ բան կա լուսաբանելու, եկեք սկսենք:

Մի քանի ամիս առաջ ես ավարտեցի Arduino FM Radio նախագիծը, որը հիանալի է աշխատում և, իմ կարծիքով, նույնիսկ ավելի լավ տեսք ունի: Եթե ցանկանում եք տեսնել, թե ինչպես եմ ես կառուցել այս նախագիծը, կարող եք կարդալ Instructable- ը այստեղ: Խնդիրն այն է, որ չնայած այս ռադիոն զով է թվում, բայց դա գործնական չէ, քանի որ ես ապրում եմ հարավային Հունաստանի մի փոքր քաղաքում, և հունական մեծ ռադիոկայանները, որոնց ես նախընտրում եմ լսել, այստեղ չունեն հաղորդիչներ: Այսպիսով, ես առցանց լսում եմ իմ նախընտրած ռադիոկայանները իմ նոութբուքի կամ պլանշետի համակարգչի վրա, որը նույնպես այնքան էլ գործնական չէ: Այսպիսով, այսօր ես պատրաստվում եմ կառուցել ինտերնետային ռադիո սարք, որպեսզի կարողանամ լսել իմ սիրած ռադիոկայանները ամբողջ աշխարհից:

Ինչպես տեսնում եք, նախագծի առաջին տարբերակը պատրաստ է հացահատիկի վրա: Եկեք այն հզորացնենք: Ինչպես տեսնում եք, նախագիծը միանում է ինտերնետին, այնուհետև երաժշտություն է փոխանցում կանխորոշված ռադիոկայաններից:

Ես միացել եմ Աթենքից Real FM ռադիոկայանին և այս կոճակների միջոցով կարող ենք փոխել ռադիոկայանը, որը մենք լսում ենք: Ես պահել եմ իմ սիրած ռադիոկայանները ESP32- ի հիշողության մեջ, որպեսզի կարողանամ հեշտությամբ մուտք գործել դրանք: Այս պոտենցիոմետրով ես կարող եմ փոխել բարձրախոսի ձայնը: Ես ցուցադրում եմ այն ռադիոկայանի անունը, որը մենք լսում ենք, մեծ 3.5”էկրանով ՝ ռետրո ինտերֆեյսով: Նախագիծը լավ է աշխատում, և այն կառուցելը շատ հեշտ է:

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

ԹԱՐՄԱՆԵԼ 6/6/2019

Աղմուկի հարցը լուծվել է մեկուսիչ տրանսֆորմատոր ավելացնելով: Ստուգեք թարմացված շեմատիկ դիագրամը: Շնորհակալություն

Քայլ 1: Ստացեք բոլոր մասերը

Ստացեք բոլոր մասերը
Ստացեք բոլոր մասերը

Մեզ անհրաժեշտ կլինեն հետևյալ մասերը.

  • ESP32 ▶
  • MP3 ապակոդավորիչ ▶
  • Մեկուսիչ տրանսֆորմատոր ▶
  • Ուժեղացուցիչ ▶
  • 3W բարձրախոս ▶
  • 3.5 "Nextion Display ▶
  • Հրել կոճակներ ▶
  • Breadboard ▶
  • Լարեր ▶

Նախագծի ընդհանուր արժեքը մոտ 40 $ է, բայց եթե էկրան չօգտագործեք, ծրագրի արժեքը մոտ 20 $ է: Amazարմանալի իրեր: Մենք կարող ենք կառուցել մեր սեփական ինտերնետային ռադիոն ընդամենը 20 դոլարով:

Քայլ 2: ESP32 տախտակ

Image
Image
ESP32 տախտակ
ESP32 տախտակ
ESP32 տախտակ
ESP32 տախտակ

Նախագծի առանցքը, իհարկե, հզոր ESP32 տախտակն է: Եթե դուք ծանոթ չեք դրան, ESP32 չիպը հանդիսանում է հայտնի ESP8266 չիպի իրավահաջորդը, որը մենք բազմիցս օգտագործել ենք անցյալում: ESP32- ը գազան է: Այն առաջարկում է երկու 32 բիթանոց պրոցեսորային միջուկներ, որոնք աշխատում են 160 ՄՀց հաճախականությամբ, հսկայական քանակությամբ հիշողություն, WiFi, Bluetooth և բազմաթիվ այլ հնարավորություններ ՝ մոտ 7 դոլար արժողությամբ: Amazարմանալի իրեր!

Խնդրում ենք դիտել այս տախտակի համար պատրաստած մանրամասն ակնարկը: Ես կցել եմ այս հրահանգի տեսանյութը: Դա կօգնի հասկանալ, թե ինչու է այս չիպը ընդմիշտ փոխելու իրերի ստեղծման եղանակը: ESP32- ի ամենահուզիչ բաներից մեկն այն է, որ չնայած այն այնքան հզոր է, բայց այն առաջարկում է խոր քնի ռեժիմ, որը պահանջում է ընդամենը 10μΑ հոսանք: Սա ESP32- ը դարձնում է իդեալական չիպ ցածր էներգիայի կիրառման համար:

Այս նախագծում ESP32 տախտակը միանում է ինտերնետին, այնուհետև ստանում է MP3 տվյալներ այն ռադիոկայանից, որը մենք լսում ենք, և այն որոշ հրամաններ է ուղարկում էկրանին:

Քայլ 3: MP3 ապակոդավորիչ

MP3 ապակոդավորիչ
MP3 ապակոդավորիչ
MP3 ապակոդավորիչ
MP3 ապակոդավորիչ

Այնուհետև MP3 տվյալները ուղարկվում են MP3 ապակոդավորման մոդուլ ՝ օգտագործելով SPI ինտերֆեյսը: Այս մոդուլն օգտագործում է VS1053 IC- ն: Այս IC- ն հատուկ ապարատային MP3 ապակոդավորիչ է: Այն ստանում է MP3 տվյալները ESP32- ից և այն շատ արագ փոխակերպում է ձայնային ազդանշանի:

Աուդիո ազդանշանը, որը դուրս է գալիս այս աուդիո խցիկից թույլ և աղմկոտ է, ուստի մենք պետք է մաքրենք այն աղմուկից և ուժեղացնենք այն: (Եթե ականջակալներ եք օգտագործում, ազդանշանը պետք չէ մաքրել աղմուկից կամ ուժեղացնել): Այդ իսկ պատճառով ես օգտագործում եմ Մեկուսիչ տրանսֆորմատոր `ձայնը աղմուկից մաքրելու համար, և PAM8403 ձայնային ուժեղացուցիչ` ձայնային ազդանշանը ուժեղացնելու, այնուհետև ուղարկելու համար: խոսնակին: Ես նաև ESP32- ին միացրել եմ երկու կոճակ `MP3 հոսքը փոխելու համար, որից մենք ստանում ենք տվյալներ, և Nextion- ի ցուցադրում` ռադիոկայանը, որը մենք լսում ենք:

Քայլ 4: Հաջորդի ցուցադրում

Image
Image
Բոլոր մասերի միացում
Բոլոր մասերի միացում

Ես ընտրեցի օգտագործել Nextion ցուցադրումը այս նախագծի համար, քանի որ այն շատ հեշտ է օգտագործել: Մենք պետք է միայն մեկ լար միացնենք այն վերահսկելու համար:

Nextion ցուցադրումները նոր տեսակի ցուցադրումներ են: Նրանք ունեն իրենց սեփական ARM պրոցեսորը, որը պատասխանատու է էկրանը վարելու և գրաֆիկական ինտերֆեյսի ստեղծման համար: Այսպիսով, մենք կարող ենք դրանք օգտագործել ցանկացած միկրոկոնտրոլերի հետ և հասնել դիտարժան արդյունքների: Ես պատրաստել եմ Nextion- ի այս ցուցադրման մանրամասն ակնարկ, որը մանրամասն բացատրում է, թե ինչպես են նրանք աշխատում, ինչպես օգտագործել դրանք և դրանց թերությունները: Կարող եք կարդալ այստեղ կամ դիտել կից տեսանյութը:

Քայլ 5: Բոլոր մասերի միացում

Բոլոր մասերի միացում
Բոլոր մասերի միացում
Բոլոր մասերի միացում
Բոլոր մասերի միացում

Մեզ մնում է միայն միացնել բոլոր մասերը ՝ ըստ այս սխեմատիկ դիագրամի: Սխեմատիկ դիագրամին կարող եք ծանոթանալ այստեղ: Կապը պարզ է:

Չնայած երկու բան պետք է նշել. MP3 ապակոդավորման մոդուլը թողարկում է ստերեո ազդանշան, բայց ես այս նախագծում օգտագործում եմ միայն մեկ աուդիո ալիք: Աուդիո ազդանշանը ստանալու համար ես միացրեցի աուդիո մալուխը մոդուլի աուդիո խցիկին և կտրեցի այն ՝ ներսում չորս լարերը բացահայտելու համար: Ես միացրեցի լարերից երկուսը: Դրանցից մեկը GND- ն է, իսկ մյուսը `երկու աուդիո ալիքներից մեկի ձայնային ազդանշանը: Եթե ցանկանում եք, կարող եք երկու ալիքները միացնել ուժեղացուցիչի մոդուլին և քշել երկու բարձրախոս:

Յուրաքանչյուր աուդիո ալիք պետք է անցնի մեկուսացման տրանսֆորմատորով `ուժեղացուցիչին միանալուց առաջ առկա աղմուկը մաքրելու համար:

Էկրանին տվյալներ ուղարկելու համար մեզ անհրաժեշտ է միայն մեկ լար միացնել ESP32- ի TX0 կապին: Մասերը միացնելուց հետո մենք պետք է ծածկագիրը բեռնենք ESP32- ում, իսկ GUI- ն ՝ Nextion ցուցադրման վրա:

GUI- ն Nextion- ի էկրանին բեռնելու համար պատճենեք InternetRadio.tft ֆայլը, որը ես պատրաստվում եմ կիսել ձեզ հետ դատարկ SD քարտի վրա: Տեղադրեք SD քարտը ցուցադրման հետևի SD քարտի բնիկի մեջ: Այնուհետեւ միացրեք էկրանը, եւ GUI- ն կբեռնվի: Այնուհետև հանեք SD քարտը և նորից միացրեք հոսանքը:

Կոդը հաջողությամբ բեռնելուց հետո եկեք միացնենք նախագիծը: Այն մի քանի վայրկյան ցուցադրում է «Միացում…» տեքստը էկրանին: Ինտերնետին միանալուց հետո նախագիծը միանում է կանխորոշված ռադիոկայանին: Սարքավորումը աշխատում է ինչպես և սպասվում էր, բայց հիմա եկեք տեսնենք ծրագրի ծրագրային կողմը:

Քայլ 6. Նախագծի ծածկագիրը

Րագրի ծածկագիրը
Րագրի ծածկագիրը
Րագրի ծածկագիրը
Րագրի ծածկագիրը

Նախ թույլ տվեք ձեզ մի բան ցույց տալ: Նախագծի ծածկագիրը 140 տողից պակաս է: Մտածեք դրա մասին, մենք կարող ենք կառուցել 3,5 դյույմանոց էկրան ունեցող ինտերնետային ռադիո ՝ 140 տող կոդով, սա զարմանալի է: Այս ամենին մենք կարող ենք հասնել, օգտագործելով, իհարկե, տարբեր գրադարաններ, որոնք պարունակում են հազարավոր տողեր կոդ: Սա Arduino- ի և Բաց կոդով համայնքի ուժն է: Դա ամեն ինչ հեշտացնում է ստեղծողների համար:

Այս նախագծում ես օգտագործում եմ VS1053 գրադարանը ESP32 տախտակի համար:

Սկզբում մենք պետք է սահմանենք SSID- ը և Wi-Fi ցանցի գաղտնաբառը: Հաջորդը, մենք այստեղ պետք է փրկենք որոշ ռադիոկայաններ: Մեզ պետք է հյուրընկալողի URL- ը, ուղին, որտեղ հոսքը գտնվում է, և նավահանգիստը, որը մենք պետք է օգտագործենք: Մենք պահում ենք այս բոլոր տվյալները այս փոփոխականների մեջ:

char ssid = "yourSSID"; // ձեր ցանցի SSID (անունը) char pass = "yourWifiPassword"; // ձեր ցանցի գաղտնաբառը

// Մի քանի ռադիոկայաններ

char *host [4] = {"149.255.59.162", "radiostreaming.ert.gr", "realfm.live24.gr", "secure1.live24.gr"}; char *path [4] = {"/1", "/ert-kosmos", "/realfm", "/skai1003"}; int նավահանգիստ [4] = {8062, 80, 80, 80};

Այս օրինակում ես ներառել եմ 4 ռադիոկայան:

Կարգավորման գործառույթում մենք ընդհատումներ ենք ամրացնում կոճակներին, մենք նախաստորագրում ենք MP3 ապակոդավորման մոդուլը և միանում ենք Wi-Fi- ին:

void setup () {

Serial.begin (9600); ուշացում (500); SPI.begin ();

pinMode (նախորդ կոճակ, INPUT_PULLUP);

pinMode (հաջորդ կոճակը, INPUT_PULLUP);

attachInterrupt (digitalPinToInterrupt (previousButton), previousButtonInterrupt, FALLING);

attachInterrupt (digitalPinToInterrupt (nextButton), nextButtonInterrupt, FALLING); initMP3Dododer (); connectToWIFI (); }

Օղակի գործառույթում, առաջին հերթին, մենք ստուգում ենք, արդյոք օգտվողն ընտրել է այլ ռադիոկայան, քան այն, որից մենք տվյալներ ենք ստանում: Եթե այո, ապա մենք միանում ենք նոր ռադիոկայանին, այլապես տվյալներ ենք ստանում հոսքից և ուղարկում դրանք MP3 ապակոդավորման մոդուլին:

void loop () {if (radioStation! = previousRadioStation) {station_connect (radioStation); previousRadioStation = ռադիոկայան; } if (client.available ()> 0) {uint8_t bytesread = client.read (mp3buff, 32); player.playChunk (mp3buff, bytesread); }}

Վերջ! Երբ օգտվողը սեղմում է կոճակը, տեղի է ունենում ընդհատում և փոխում է փոփոխականի արժեքը, որը հուշում է, թե որ հոսքին միանալ:

անվավեր IRAM_ATTR previousButtonInterrupt () {

ստատիկ անստորագիր երկար last_interrupt_time = 0;

unsigned long interrupt_time = millis (); if (interrupt_time-last_interrupt_time> 200) {if (radioStation> 0) radioStation--; այլապես ռադիոկայան = 3; } last_interrupt_time = interrupt_time; }

Էկրանը թարմացնելու համար մենք պարզապես որոշ հրամաններ ենք ուղարկում սերիական նավահանգիստ:

void drawRadioStationName (int id) {Լարային հրաման; switch (id) {case 0: command = "p1.pic = 2"; Serial.print (հրաման); endNextionCommand (); ընդմիջում; // 1940 Միացյալ Թագավորության ռադիոյի դեպք 1. Հրաման = "p1.pic = 3"; Serial.print (հրաման); endNextionCommand (); ընդմիջում; // KOSMOS GREEK case 2: command = "p1.pic = 4"; Serial.print (հրաման); endNextionCommand (); ընդմիջում; // REAL FM GREEK case 3: command = "p1.pic = 5"; Serial.print (հրաման); endNextionCommand (); ընդմիջում; // SKAI 100.3 GREEK}}

Այժմ եկեք նայենք Nextion Display GUI- ին: Nextion GUI- ն բաղկացած է ֆոնային պատկերից և նկարից, որը ցուցադրում է Ռադիոկայանի անունը: ESP32 տախտակն ուղարկում է հրամաններ ՝ փոխելու ռադիոկայանի անունը ներկառուցված պատկերներից: Դա շատ հեշտ է: Խնդրում ենք դիտել Nextion ցուցադրման ձեռնարկը, որը ես պատրաստել եմ որոշ ժամանակ առաջ ՝ լրացուցիչ տեղեկությունների համար: Wishանկության դեպքում կարող եք արագ նախագծել ձեր սեփական GUI- ն և ավելի շատ իրեր ցուցադրել դրա վրա:

Ինչպես միշտ, դուք կարող եք գտնել ծրագրի ծածկագիրը, որը կցված է սույն Հրահանգում:

Քայլ 7: Վերջնական մտքեր և բարելավումներ

Վերջնական մտքեր և բարելավումներ
Վերջնական մտքեր և բարելավումներ
Վերջնական մտքեր և բարելավումներ
Վերջնական մտքեր և բարելավումներ
Վերջնական մտքեր և բարելավումներ
Վերջնական մտքեր և բարելավումներ
Վերջնական մտքեր և բարելավումներ
Վերջնական մտքեր և բարելավումներ

Այս նախագիծը շատ պարզ է: Ես ուզում էի մի պարզ ինտերնետային ռադիոյի ծրագրի կմախքի հետ աշխատել: Այժմ, երբ նախագծի առաջին տարբերակը պատրաստ է, մենք կարող ենք դրան ավելացնել բազմաթիվ հնարավորություններ `այն բարելավելու համար: Առաջին հերթին, ես պետք է նախագծեմ մի պարիսպ, որտեղ կտեղադրվեն ամբողջ էլեկտրոնիկան:

Երբևէ արված Ամենագեղեցիկ ռադիոկայանների մասին այս գրքում կան շատ զով ռադիոկայաններ, որոնցից կարելի է ընտրել որպես այս նախագծի պատյան: Կարծում եմ, որ պատրաստվում եմ պարիսպ կառուցել այս դիտարժան Art Deco ռադիոյի շուրջ: Ի՞նչ եք կարծում, Ձեզ դուր են գալիս այս ռադիոյի արտաքին տեսքերը, թե նախընտրում եք ավելի արդիական մի բան: Ունե՞ք այլ փակման գաղափարներ: Բացի այդ, Ձեզ դուր է գալիս այս ինտերնետային ռադիոյի նախագիծը, և ի՞նչ եք կարծում, ինչ հատկություններ պետք է ավելացնենք դրան, որպեսզի այն ավելի օգտակար լինի: Ուրախ կլինեմ կարդալ ձեր մտքերն ու գաղափարները, ուստի խնդրում ենք դրանք տեղադրել ստորև բերված մեկնաբանությունների բաժնում:

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