- РДА5807М ИЦ
- ИЦ ПТ2258
- Шема
- Компоненте потребне
- Како долазимо до података од Гоогле Асистента?
- Постављање Адафруит рачуна за комуникацију
- Постављање ИФТТТ посредника за ФМ радио
- Ардуино код и објашњење
- Тестирање гласовно контролисаног ФМ радија помоћу Ардуина
- Даље побољшање
У данашње време већина нас воли да слуша музику са својим паметним телефонима. Али пре неколико година, то није био случај, у том тренутку ФМ радији су били први избор за слушање музике, подцастова, вести и других. У данашње време нико не слуша радио за музику, вести и остало, бака и деда су изузетак.
Дакле, да бих мало оживео стару славу ФМ радија, у овом пројекту ћу изградити ФМ радио којим се управља гласом помоћу Гоогле Ассистанце- а и популарног РДА5870М Суперхетеродине ИЦ пријемника.
Такође погледајте наше претходне ФМ радио кругове:
- ФМ радио заснован на Ардуину
- ФМ радио којим управља паметни телефон помоћу Ардуина
- Једноставни круг ФМ предајника
- Како направити круг ФМ предајника
РДА5807М ИЦ
РДА5807М је врло модеран ФМ-стерео радио тјунер са једним чипом са потпуно интегрисаним синтисајзером, ИФ селективношћу, РДС / РБДС-ом и МПКС декодером који подржава фреквенцијски опсег од 50 МХз до 115 МХз. То је врло јефтин ИЦ чип ФМ пријемника са једним чипом који захтева врло мало спољних компонената да би функционисао функционално. Ова ИЦ користи И2Ц интерфејс за комуникацију са било којим главним уређајем, па га све ове карактеристике чине врло погодним за преносне уређаје.
Овај ИЦ има интерни аудио процесор који је одговоран за његов одличан квалитет звука.
Неке од основних карактеристика укључују-
- Подршка за опсеге фреквенција широм света
- Подршка за РДС / РБДС
- Дигитални тјунер са ниским ИФ
- Потпуно интегрисани дигитални синтетизатор фреквенција
- Дигитална аутоматска контрола појачања (АГЦ)
- Појачање баса
- Директно подржава оптерећење отпора од 32Ω
- Интегрисани ЛДО регулатор и још много тога
Можете сазнати више о овом ИЦ-у пролазећи кроз овај пројекат ФМ радија заснован на Ардуину користећи РДА5807.
ИЦ ПТ2258
ПТ2258 је ИЦ направљен за употребу као 6-канални електронски контролер јачине звука, овај ИЦ користи ЦМОС технологију посебно дизајнирану за вишеканалне аудио-видео апликације.
Овај ИЦ обезбеђује И2Ц контролни интерфејс са опсегом слабљења од 0 до -79дБ при 1дБ / корак и долази у 20-пинском ДИП или СОП пакету.
Неке од основних карактеристика укључују-
- 6 улазних и излазних канала (за 5.1 кућне аудио системе)
- Избор И2Ц адресе (за апликацију Даиси-цхаин)
- Раздвајање високих канала (за примену са малим буком)
- С / Н однос> 100дБ
- Радни напон је 5 до 9В
Претходно смо објаснили ову ИЦ у пројекту ПТ2258 Дигитал Аудио Цонтрол Волуме. Можете проверити тај пројекат ако желите да сазнате више о овој ИЦ.
Шема
Дијаграм кола за ФМ радио под контролом Гоогле Ассистант- а дат је у наставку:
Компоненте потребне
- НодеМЦУ микроконтролер - 1
- ПТ2258 Дигитални контролер јачине звука - 1
- РДА5807 ФМ радио модул - 1
- СПДТ релеј 6В - 1
- 1н4007 Диода - 1
- Вијчана стезаљка 5ммк2 - 1
- 3,5 мм прикључак за слушалице - 1
- Логиц Левел Цонвертер - 1
- Отпорник 10К, 5% - 4
- Отпорник 150К, 5% - 4
- Отпорник 100К, 5% - 2
- Кондензатор 10уФ - 6
- Кондензатор 0,1уФ - 1
- Јумпер жица - 10
Како долазимо до података од Гоогле Асистента?
Горња слика даје вам основну идеју процеса комуникације између Гоогле асистента и НодеМЦУ.
Гоогле помоћник има овлашћење да модификује податке на серверу Адафруит ИО да би ИФТТТ са МКТТ радио као посредник.
Ако се догоди било каква промена података на страни сервера (Адафруит ИО), то се одражава на страни НодеМЦУ. Да бисте то постигли, морате следити упутства дата испод -
Постављање Адафруит рачуна за комуникацију
Прво направите Адафруит ИО рачун. Пријавите се на Адафруит ИО са својим акредитивима или се региструјте ако немате налог. Раније смо користили Адафруит ИО за изградњу ЛЕД-а који контролише Алека, аутоматизације куће Распберри Пи и многих других пројеката заснованих на ИоТ-у.
Након пријављивања на рачун Адафруит, Кликните на Контролне табле, а затим на Акција> Направи нову контролну таблу .
Следеће ћемо додати ново име и кратак опис наше нове контролне табле.
Након што направите контролну таблу, са свог налога морате да преузмете корисничко име и активни кључ како је потребно у Ардуино коду. То можете добити кликом на икону КЉУЧ.
После тога направите три блока; један блок за пребацивање, један блок за мерење, један блок за текст.
Блокови су веома важни, јер су ови блокови одговорни за комуникацију између гоогле помоћи и НодеМЦУ.
Да бисте направили блок, потребно је да кликнете на знак + у горњем десном углу.
Даље ћемо направити блокове.
Даље, треба да подесите сваки блок, за то треба да означите одређени блок и кликнете на Следећи корак.
За овај пројекат нема потребе да мењате било која подешавања осим дугмета за пребацивање.
Текст на дугмету за пребацивање је великим словима, треба да буде мало слово и ажурирате промене.
То је то, то су све ствари које треба да подесите у адафруит ИО.
Мој последњи екран изгледа овако-
Постављање ИФТТТ посредника за ФМ радио
Као и увек, Региструјте се ако немате налог или Пријавите се ако већ имате налог.
Сада треба да креирате Аплет. За то следите кораке у наставку:
Да бисте направили аплет, кликните на икону налога и кликните на Креирај.
На екрану за креирање, кликните икону + након иф.
После тога треба да дозволите приступ свом Гоогле налогу.
За то треба да потражите Гоогле помоћника на траци за претрагу и кликнете на икону Гоогле помоћника.
На следећем екрану морамо да изаберемо окидач, Запамтите, направили смо три блока на Адафруит ИО серверу, тамо морамо направити окидаче за та три блока.
Прво, Блок радио станице, за то треба да изаберемо Изговори фразу са састојком текста .
На следећем екрану морамо да откуцамо шта желите да кажете и са чим би вам Гоогле асистент требао да одговори.
Затим кликните на дугме Креирај окидач.
Следећи екран изгледа отприлике овако, пошто сте завршили део Ако је време за тадашњи део, притисните знак + након тога .
Биће вам приказан екран као на слици испод, потражите Адафруит и кликните на икону Адафруит.
Затим, ауторизујте свој Адафруит налог помоћу ИФТТТ, а затим кликните на Цоннецт.
Даље, морате кликнути на Пошаљи податке на Адафруит ИО.
Тада ће вам бити приказан падајући феед који сте раније креирали на рачуну Адафруит.
Изаберите било коју и кликните на креирај акцију, то треба да урадите за све три.
И тиме, означава крај ИФТТТ процеса, мој последњи екран аплета изгледа овако,
Ардуино код и објашњење
Ардуино код је ту да управља целокупном комуникацијом између ИЦ и комуникацијом између Адафруит ИО ИФТТТ и ВИФИ. Комплетни код за овај Ардуино Нано ФМ радио дат је на крају овог водича. Код је мало дугачак и сложен, овде смо објаснили комплетан код ред по ред.
Прво, морамо укључити све потребне библиотеке, а то су:
#инцлуде
Затим дефинишите ССИД и лозинку за ВИ-ФИ, ово је ССИД и ЛОЗИНКА вашег рутера.
цонст цхар * ссид = "Андроид"; // ССИД вашег рутера цонст цхар * пассворд = "12345678"; // Лозинка вашег рутера
Затим дефинишемо два боолеан-а и променљиву, боолеан-ови се користе за задржавање статуса комуникације ИЦ-а, а променљива јачине звука се користи за подешавање нивоа јачине звука.
боол потСтатус; // 1 када се успостави комуникација између МЦУ и ИЦ боол радиоСтатус; // 1 када се успостави комуникација између МЦУ и ИЦ инт волуме = 15; // задати ниво јачине звука са ИЦ-ом почиње са
Затим смо поставили ГПИО пин са именом Релаи_Пин да укључује или искључује појачало.
#дефине Релаи_Пин Д7 // Овај пин се користи за укључивање и искључивање радија
Даље, морамо да дефинишемо све потребне дефиниције за комуникацију са Адафруит ИО.
#дефине АИО_СЕРВЕР "ио.адафруит.цом" #дефине АИО_СЕРВЕРПОРТ 1883 // употреба 8883 за ССЛ #дефине АИО_УСЕРНАМЕ "дебасхис13" // га замени са својим корисничким именом #дефине АИО_КЕИ "аио_Киал47ко1фИхц55КБ1лЕПЕирноФп" // Замените са пројектом Аутх Кључ
Дефиниције ФИКС_БАНД у наставку су заштићене дефиниције које користи библиотека.
Следећи дефинисани израз поставља интерну запремину модула.
#дефине ФИКС_БАНД РАДИО_БАНД_ФМ // <Опсег ће бити подешен овом скицом је ФМ. #дефине ФИКС_РАДИО_ВОЛУМЕ 6 /// <Подразумевани волумен модула.
Затим направите потребне објекте за ПТ2258, РДА5807М и ВиФиЦлиент.
ПТ2258 дигиталПот; // ПТ2258 Предмет РДА5807М радио; // РДА5807М објект ВиФиЦлиент клијент; // ВиФиЦлиент Објецт
Затим подесите класу МКТТ клијента прослеђивањем ВиФи клијента и МКТТ сервера и детаља за пријављивање.
Адафруит_МКТТ_Цлиент мктт (& клијент, АИО_СЕРВЕР, АИО_СЕРВЕРПОРТ, АИО_УСЕРНАМЕ, АИО_КЕИ);
// Подесите класу МКТТ клијента уношењем ВиФи клијента и МКТТ сервера и података за пријаву.
Тада се морамо претплатити на фид. Шта вас то пита да питате?
Ако се неке вредности, неки параметри промене на серверу Адафруит, промене ће се овде одразити.
Адафруит_МКТТ_Субсцрибе Радио_Статион = Адафруит_МКТТ_Субсцрибе (& мктт, АИО_УСЕРНАМЕ "/ феедс / Радио_Статион"); // Методе коришћене за претплату на феед Адафруит_МКТТ_Субсцрибе Тоггле_ФМ = Адафруит_МКТТ_Субсцрибе (& мктт, АИО_УСЕРНАМЕ "/ феедс / Тоггле_ФМ"); // Методе коришћене за претплату на феед Адафруит_МКТТ_Субсцрибе Волуме = Адафруит_МКТТ_Субсцрибе (& мктт, АИО_УСЕРНАМЕ "/ феедс / Волуме"); // Методе коришћене за претплату на фид
Испод је прототип функције за функцију МКТТ_цоннецт () .
воид МКТТ_цоннецт (); // Прототип функције за МКТТ Цоннецт
Тада започињемо процес подешавања. У почетку започињемо УАРТ комуникацију методом бегин.
Сериал.бегин (9600); // УАРТ започиње Сериал.принтлн (); // додаје додатну линију за размак Сериал.принтлн (); // додаје додатну линију за размак Даље, радимо све уобичајене ствари за повезивање на ВиФИ **************** све уобичајене ствари потребне за ВиФи везу *********************** / Сериал.принт ("повезивање са"); Сериал.принтлн (ссид); ВиФи.моде (ВИФИ_СТА); ВиФи.бегин (ссид, лозинка); вхиле (ВиФи.статус ()! = ВЛ_ЦОННЕЦТЕД) {кашњење (500); Сериал.принт ("."); } Сериал.принтлн (""); Сериал.принтлн („ВиФи повезан“); Сериал.принтлн ("ИП адреса:"); Сериал.принтлн (ВиФи.лоцалИП ()); / **************** све уобичајене ствари потребне за ВиФи везу *********************** /
Затим позовите методу Вире.бегин () да бисте успоставили инстанцу И2Ц везе, а ми зовемо методу Вире.сетЦлоцк () да бисмо фиксирали И2Ц фреквенцију на 100КХз, јер је то пуна брзина ПТ2258 ИЦ.
Вире.бегин (); // започињемо почетну секвенцу И2Ц Вире.сетЦлоцк (100000); // постављање И2Ц такта на 100КХз
Затим позовите методу инит () и за ПТ2258 и за РДА5807 ИЦ и задржите статус повратка у претходно дефинисаним логичким вредностима.
потСтатус = дигиталПот.инит (); радиоСтатус = радио.инит ();
Затим проверите да ли је МЦУ успео да комуницира са ИЦ или не. То радимо са две изјаве ако не .
иф (потСтатус) {Сериал.принтлн ("Пронађен ПТ2258 уређај!"); } елсе {Сериал.принтлн ("Покретање ПТ2258 није успело"); } иф (радиоСтатус) {Сериал.принтлн ("Пронађен РДА5807М уређај!"); } елсе {Сериал.принтлн ("Покретање РДА5807М није успело"); }
Затим позовите метод претплате из МКТТ библиотеке. МКТТ сервер ће нас обавестити ако се догоди нека промена у нашим претплаћеним фидовима.
мктт.субсцрибе (& Радио_Статион); // Постављање МКТТ претплате за феед Радио_Статион мктт.субсцрибе (& Тоггле_ФМ); // Постављање МКТТ претплате за Тоггле_ФМ феед мктт.субсцрибе (& Волуме); // Постављање МКТТ претплате за феед фееда
Даље, постављамо релејни пин као излазни, а статус пин-а на ЛОВ
пинМоде (Д7, ИЗЛАЗ); дигиталВрите (Д7, ЛОВ);
Даље, поставите унапред одређену јачину звука радија, овај параметар поставља унутрашњу јачину звука РДА5807 ИЦ, што означава крај нашег процеса подешавања.
радио.сетВолуме (ФИКС_РАДИО_ВОЛУМЕ); // следећи постављамо нормализовање јачине звука радио.сетМоно (фалсе); // не желимо да чип даје моно излаз радио.сетМуте (фалсе); // не желимо да чип на почетку искључи
Петљу започињемо позивањем функције МКТТ_цоннецт () која успоставља везу са МКТТ сервером.
У функцији повезивања МКТТ три пута покушавамо да успоставимо везу са МКТТ сервером.
Ако је успешан, добићемо поруку о успеху, у супротном ћемо добити поруку о грешци.
воид МКТТ_цоннецт () {инт8_т рет; // 8-битни цели број за чување поновних покушаја // Заустави ако је већ повезан. иф (мктт.цоннецтед ()) {ретурн; } Сериал.принт ("Повезивање са МКТТ…"); уинт8_т покушава поново = 3; вхиле ((рет = мктт.цоннецт ())! = 0) {// цоннецт ће вратити 0 за повезани Сериал.принтлн (мктт.цоннецтЕррорСтринг (рет)); Сериал.принтлн („Поновни покушај МКТТ везе за 5 секунди…“); мктт.дисцоннецт (); кашњење (5000); // чекамо 5 секунди покушаја--; иф (ретриес == 0) {// у основи умиру и сачекају да ме ВДТ ресетује вхиле (1); }} Сериал.принтлн ("МКТТ повезан!"); }
Даље, почните са креирањем показивача на објекат Адафруит_МКТТ_Субсцрибе . Ово ћемо користити за утврђивање претплате која је примљена.
Адафруит_МКТТ_Субсцрибе * претплата;
Даље, чекамо поруку претплате.
мктт.реадСубсцриптион (тимеИнМиллисецондс) ће преслушати одређено време, за све поруке које долазе са МКТТ сервера.
Ако добије поруку пре истека времена, одговориће показивачем на претплату или ће само истекнути и вратити 0. У том случају ће сачекати 2 сек.
вхиле ((претплата = мктт.реадСубсцриптион (20000)))
Уколико дође до истека времена док петља пуњење не успе. Ако не, упоређујемо претплату и добићемо познате претплате.
У овом коду то радимо за сва три наша претплаћена фида.
иф (претплата == & Тоггле_ФМ) иф (претплата == & Радио_Статион) иф (претплата == & Волуме)
То су била главна три параметра која треба да разумете у одељку петље.
Овај одељак кода се користи за надгледање и подешавање Тоггле_ФМ фееда.
иф (субсцриптион == & Тоггле_ФМ) // да ли је то порука са Тоггле_ФМ Феед {Сериал.принт (Ф ("Гот:")); Сериал.принтлн ((цхар *) Тоггле_ФМ.ластреад); // исписујемо податке феед-а само за отклањање грешака ако (Стринг ((цхар *) Тоггле_ФМ.ластреад) == Стринг ("он")) // примљене податке упоређујемо са познатим параметром, у овом случају очекујемо да је „он "долази из север {// али пре него што то учинимо, морамо да направимо стринг који упоређивање чини супер лаким дигиталВрите (Д7, ХИГХ); // ако добијемо низ" он "од сервера који правимо Д7 пин ХИГХ} иф (Стринг ((цхар *) Тоггле_ФМ.ластреад) == Стринг ("офф")) // поново проверавамо да ли је низ искључен {дигиталВрите (Д7, ЛОВ); // ако добијемо „офф“ стринг са сервера израђујемо Д7 пин ЛОВ}}
Овај одељак кода се користи за надгледање и подешавање фееда Радио_Статион .
иф (претплата == & Радио_Статион) {Сериал.принт (Ф ("Добио:")); Сериал.принтлн ((цхар *) Радио_Статион.ластреад); иф (Стринг ((цхар *) Радио_Статион.ластреад) == Стринг ("Биг ФМ")) // чујемо да проверавамо низ Биг ФМ {радио.сетБандФрекуенци (ФИКС_БАНД, 9270); // ако је горњи услов тачан, канал радои постављамо на 92,7МХз} // Горе наведени процес се наставља испод иф (Стринг ((цхар *) Радио_Статион.ластреад) == Стринг ("Ред ФМ")) { радио.сетБандФрекуенци (ФИКС_БАНД, 9350); } иф (Стринг ((цхар *) Радио_Статион.ластреад) == Стринг ("Радио Мирцхи")) {радио.сетБандФрекуенци (ФИКС_БАНД, 9830); }}
Овај одељак кода користи се за надгледање и подешавање гласноће.
иф (субсцриптион == & Волуме) // // чујемо да проверавамо да ли постоји запремина низа и то је цела вредност у формату низа // Морамо је претворити у целу вредност да бисмо променили јачину звука уз помоћ ПТ2258 ИЦ Сериал.принт (Ф ("Добио:")); Сериал.принтлн ((цхар *) Волуме.ластреад); волуме = атои ((цхар *) Волуме.ластреад); // Користимо методу атои () за претварање показивача на знак у целобројни волуме = мап (волуме, 0,100,79,0); // мап (валуе, фромЛов, фромХигх, тоЛов, тоХигх) // пошто пт2258 разуме само целобројне вредности у дБ // ми мапирамо вредност 0дБ - 79дБ на 0% - 100%. дигиталПот.сетЦханнелВолуме (волумен, 0); // након свега што подешавамо јачину звука за канал 0 ПТ2258 ИЦ дигиталПот.сетЦханнелВолуме (јачина звука, 1); // након свега што подешавамо јачину звука за канал 1 ПТ2258 ИЦ}}
Тестирање гласовно контролисаног ФМ радија помоћу Ардуина
За испитивање кола коришћен је следећи апарат -
- Трансформатор који има славину 13-0-13
- Два 4Ω 20В звучника као оптерећење.
- Телефон да бисте користили Гоогле помоћника.
У претходном чланку показао сам вам како да направите једноставно аудио појачало од 2к32 В са ТДА2050 ИЦ, користићу то и за ову демонстрацију, Пореметио сам механички потенциометар и спојио два кабла са два мала кабла краткоспојника. Сада сам уз помоћ два тастера успео да променим јачину звука појачала.
Даље побољшање
Постоје многа додатна побољшања која се могу извршити у овом колу.
- Постоје различити проблеми са буком јер поред НодеМЦУ ради извор звука, па морамо да применимо додатну заштиту да бисмо побољшали отпорност на буку.
- Изградња целокупног кола на ПЦБ побољшаће отпорност на буку.
- Додатни филтри се могу додати овом ИЦ-у како би се елиминисао шум.
Надам се да вам се свидео овај чланак и да сте из њега научили нешто ново. Ако сумњате, можете питати у коментарима испод или можете користити наше форуме за детаљну дискусију.