Мазмуну:

ESP32 колдонуп интернет радио: 7 кадам (Сүрөттөр менен)
ESP32 колдонуп интернет радио: 7 кадам (Сүрөттөр менен)

Video: ESP32 колдонуп интернет радио: 7 кадам (Сүрөттөр менен)

Video: ESP32 колдонуп интернет радио: 7 кадам (Сүрөттөр менен)
Video: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Сентябрь
Anonim
Image
Image
ESP32 колдонуу Интернет радио
ESP32 колдонуу Интернет радио
ESP32 колдонуу Интернет радио
ESP32 колдонуу Интернет радио

Урматтуу достор, дагы бир инструкцияга кош келиңиздер! Бүгүн биз кымбат ESP32 тактасын колдонуп, чоң 3,5 дюймдук Интернет Радио түзүлүшүн курганы жатабыз. Ишенсеңиз же ишенбесеңиз, биз азыр Интернет Радиону 10 мүнөттөн аз убакыттын ичинде жана 30 долларга жетпей кура алабыз. Каптай турган нерселер көп, баштайлы!

Бир нече ай мурун мен Arduino FM Radio долбоорун аяктадым, ал сонун иштейт жана менин оюмча андан да жакшы көрүнөт. Бул долбоорду кантип курганымды билгиңиз келсе, Инструкцияны бул жерден окуй аласыз. Көйгөй, бул радио салкын көрүнгөнү менен, бул практикалык эмес, анткени мен Грециянын түштүгүндөгү кичинекей шаарда жашайм жана мен укканды жактырган чоң грек радиостанцияларында бул жерде өткөргүчтөр жок. Ошентип, мен ноутбуктан же планшеттен компьютерден сүйүктүү радиолорумду онлайн угам, бул дагы анча практикалык эмес. Ошентип, бүгүн мен дүйнөнүн булуң -бурчунан сүйүктүү радиостанцияларды угуу үчүн интернет радио түзүлүшүн курайын деп жатам!

Көрүнүп тургандай, долбоордун биринчи версиясы нан тактасында даяр. Аны кубаттайлы. Көрүнүп тургандай, долбоор Интернетке туташып, андан кийин алдын ала аныкталган радиостанциялардан музыка чыгарат.

Мен Афинадан келген Real FM радиостанциясын жөнгө салдым жана бул баскычтардын жардамы менен биз угуп жаткан радиостанцияны өзгөртө алабыз. Мен сүйүктүү радиостанцияларды ESP32 эсине сактап койгом, ошондуктан аларга оңой кире алам. Бул потенциометр менен мен динамиктин үнүн өзгөртө алам. Мен уккан радиостанциянын атын ретро колдонуучу интерфейси бар чоң 3,5”дисплейде көрсөтөм. Долбоор жакшы иштейт жана аны куруу абдан оңой.

Сиз бир эле долбоорду 10 мүнөттөн аз кура аласыз, бирок тажрыйбаңыз болушу керек. Эгер бул сиздин биринчи долбооруңуз болсо, тажрыйбага ээ болуу үчүн, эң оболу, жөнөкөйүн курууну ойлонуп көрүңүз. Жөнөкөй проект идеялары үчүн менин Instructablesымды текшериңиз жана Arduino сизге ыңгайлуу болгондо, электроника бул сонун долбоорду куруу үчүн кайтып келет. Эми өзүбүздүн интернет радиобузду курууну баштайлы.

UPDATE 6/6/2019

Ызы -чуу маселеси изолятордук трансформаторду кошуу менен чечилди. Жаңыртылган схемалык схеманы карап көрүңүз. Рахмат!

1 -кадам: Бардык бөлүктөрдү алыңыз

Бардык бөлүктөрдү алыңыз
Бардык бөлүктөрдү алыңыз

Бизге төмөнкү бөлүктөр керек болот:

  • ESP32 ▶
  • MP3 декодер ▶
  • Изоляция трансформатору ▶
  • Күчөткүч ▶
  • 3W динамиги ▶
  • 3.5 "Nextion Display ▶
  • Баскычтар ▶
  • Breadboard ▶
  • Зымдар ▶

Долбоордун жалпы баасы 40 доллардын тегерегинде, бирок дисплейди колдонбосоңуз, долбоордун баасы 20 доллардын тегерегинде. Укмуш нерселер. Биз өзүбүздүн интернет радиобузду болгону 20 долларга кура алабыз!

2 -кадам: ESP32 Board

Image
Image
ESP32 тактасы
ESP32 тактасы
ESP32 тактасы
ESP32 тактасы

Долбоордун жүрөгү, албетте, күчтүү ESP32 тактасы. Эгерде сиз аны жакшы билбесеңиз, ESP32 чипи - биз мурда көп жолу колдонгон популярдуу ESP8266 чиптин мураскери. ESP32 - бул жырткыч! Бул 160 МГцте иштеген 32 бит иштетүүчү эки өзөктү, эс тутумдун чоң көлөмүн, WiFi, Bluetooth жана баасы 7 доллардын тегерегиндеги башка көптөгөн функцияларды сунуштайт! Укмуш нерселер!

Сураныч, мен бул такта үчүн даярдаган деталдуу кароону көрүңүз. Мен бул Нускамага видеону тиркеп койдум. Бул чип эмне үчүн түбөлүккө нерселерди жасообузду өзгөртөөрүн түшүнүүгө жардам берет! ESP32 жөнүндө эң кызыктуу нерселердин бири-бул абдан күчтүү болгонуна карабастан, терең уйку режимин сунуштайт, ал үчүн 10μΑs гана ток керектелет. Бул ESP32ди аз кубаттуулуктагы тиркемелер үчүн идеалдуу чипке айландырат.

Бул долбоордо ESP32 платасы интернетке туташат, анан биз уккан радиостанциядан MP3 маалыматын алат жана дисплейге кээ бир буйруктарды жөнөтөт.

3 -кадам: MP3 декодер

MP3 декодер
MP3 декодер
MP3 декодер
MP3 декодер

MP3 маалыматтары SPI интерфейсинин жардамы менен MP3 декодер модулуна жөнөтүлөт. Бул модуль VS1053 IC колдонот. Бул IC атайын жабдык MP3 декодери болуп саналат. Бул MP3 маалыматын ESP32ден алат жана аны чындап аудио сигналга айлантат.

Бул аудио джекти чыгарган аудио сигнал алсыз жана ызы -чуу болгондуктан, аны ызы -чуудан тазалап, күчөтүшүбүз керек. (Эгерде сиз гарнитураны колдонуп жатсаңыз, анда сигналды ызы -чуудан тазалоонун же күчөтүүнүн кереги жок.) Мына ошондуктан мен үндү ызы -чуудан тазалоо үчүн Изоляция трансформаторун жана аудио сигналды күчөтүү үчүн PAM8403 аудио күчөткүчүн колдонуп жатам. спикерге. Мен ошондой эле ESP32ге эки баскычты туташтырдым, алар биз алып жаткан MP3 агымын жана биз угуп жаткан радиостанцияны көрсөтүү үчүн Nextion дисплейин өзгөртүү үчүн.

4 -кадам: Nextion Display

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 саптан кем эмес. Ойлонуп көрүңүз, биз 140 диапазону бар 3.5”дисплейи бар интернет радиосун кура алабыз, бул укмуш. Мунун баарына, албетте, миңдеген коддор камтылган ар кандай китепканаларды колдонуу менен жетише алабыз. Бул Arduino жана Ачык булак коомчулугунун күчү. Бул жаратуучулар үчүн иштерди жеңилдетет.

Бул долбоордо мен ESP32 тактасы үчүн VS1053 китепканасын колдонуп жатам.

Башында, SSIDди жана Wi-Fi тармагынын сырсөзүн аныкташыбыз керек. Андан кийин, биз бул жерде кээ бир радиостанцияларды сакташыбыз керек. Бизге хосттун URLи, агым жайгашкан жол жана биз колдонууга муктаж болгон порт керек. Биз бул маалыматты бул өзгөрмөлөргө сактайбыз.

char ssid = "yourSSID"; // сиздин тармак SSID (аты) char pass = "yourWifiPassword"; // сиздин тармак сырсөзүңүз

// Бир нече радиостанциялар

char *хост [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га туташабыз.

жараксыз орнотуу () {

Serial.begin (9600); кечигүү (500); SPI.begin ();

pinMode (previousButton, INPUT_PULLUP);

pinMode (nextButton, INPUT_PULLUP);

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

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

Укурук функциясында, биринчиден, биз колдонуучу биз алган маалыматтан башка радиостанцияны тандаганын текшеребиз. Андай болсо, биз жаңы радиостанцияга туташабыз, башка учурда биз агымдан маалыматтарды алып, MP3 декодер модулуна жөнөтөбүз.

void loop () {if (radioStation! = previousRadioStation) {station_connect (radioStation); previousRadioStation = radioStation; } if (client.available ()> 0) {uint8_t bytesread = client.read (mp3buff, 32); player.playChunk (mp3buff, байт окуу); }}

Баары болду! Колдонуучу баскычты басканда, үзгүлтүк болуп, кайсы агымга туташуу керек экенин айткан өзгөрмөнүн мааниси өзгөрөт.

жараксыз IRAM_ATTR previousButtonInterrupt () {

статикалык белгисиз узак last_interrupt_time = 0;

белгисиз узак interrupt_time = millis (); if (interrupt_time-last_interrupt_time> 200) {if (radioStation> 0) radioStation--; else radioStation = 3; } last_interrupt_time = interrupt_time; }

Дисплейди жаңыртуу үчүн, биз жөн гана кээ бир буйруктарды сериялык портко жөнөтөбүз.

void drawRadioStationName (int id) {String командасы; switch (id) {case 0: command = "p1.pic = 2"; Serial.print (буйрук); endNextionCommand (); тыныгуу; // 1940 UK Radio Case 1: command = "p1.pic = 3"; Serial.print (буйрук); endNextionCommand (); тыныгуу; // KOSMOS GREEK case 2: command = "p1.pic = 4"; Serial.print (буйрук); endNextionCommand (); тыныгуу; // REAL FM GREEK иши 3: command = "p1.pic = 5"; Serial.print (буйрук); endNextionCommand (); тыныгуу; // СКАЙ 100.3 ГРЕК}}

Эми Nextion Display GUIди карап көрөлү. Nextion GUI фондук сүрөттөн жана радиостанциянын атын көрсөтүүчү сүрөттөн турат. ESP32 тактасы камтылган сүрөттөрдөн радиостанциянын атын өзгөртүү боюнча буйруктарды жөнөтөт. Бул абдан оңой. Көбүрөөк маалымат алуу үчүн мен бир аз мурун даярдаган Nextion дисплей үйрөткүчүн караңыз. Эгерде сиз кааласаңыз жана өзүңүздүн GUIди тезирээк түзө аласыз жана анда көбүрөөк нерселерди көрсөтсөңүз болот.

Дайыма эле бул Нускамада тиркелген долбоордун кодун таба аласыз.

7 -кадам: Акыркы ойлор жана жакшыртуулар

Акыркы ойлор жана жакшыртуулар
Акыркы ойлор жана жакшыртуулар
Акыркы ойлор жана жакшыртуулар
Акыркы ойлор жана жакшыртуулар
Акыркы ойлор жана жакшыртуулар
Акыркы ойлор жана жакшыртуулар
Акыркы ойлор жана жакшыртуулар
Акыркы ойлор жана жакшыртуулар

Бул долбоор абдан жөнөкөй. Мен Интернет Радионун проектинин скелети менен иштөөнү кааладым. Эми долбоордун биринчи версиясы даяр болгондон кийин, аны жакшыртуу үчүн көптөгөн функцияларды кошо алабыз. Биринчиден, мен бардык электрониканы жайгаштыра турган корпусту долбоорлоом керек.

Эң кооз радиолор жөнүндө жазылган бул китепте бул долбоор үчүн корпус катары тандоо үчүн абдан сонун радиолор бар. Мен бул укмуштуудай Art Deco радиосунун айланасына корпус курам деп ойлойм. Сиздин оюңузча, бул радионун көрүнүшү сизге жактыбы же сизге заманбап нерсе жактыбы? Сизде башка короо ойлор барбы? Ошондой эле, бул интернет радио долбоору сизге жактыбы жана аны пайдалуу кылуу үчүн ага кандай өзгөчөлүктөрдү кошушубуз керек деп ойлойсуз? Мен сиздин ойлоруңузду жана идеяларыңызды окугум келет, аларды төмөндөгү комментарийлер бөлүмүнө жайгаштырыңыз.

Сунушталууда: