- ФМ радио опште ради
- Компоненте потребне
- РДА5807 Пријемник
- Аудио појачало
- Шема круга Ардуино ФМ пријемника
- Објашњење Ардуино ФМ радио кода
- Рад Ардуино ФМ радија
Данас готово сви користе своје мобилне телефоне да слушају музику, вести, подкастове итд. Али не тако давно, сви смо зависили од локалних ФМ радија да бисмо добили најновије вести и песме, полако ти радио губи популарност, али у хитним случајевима када интернет док радио не ради, играју важну улогу у преношењу информација до корисника. Радио сигнали су увек присутни у ваздуху (које станице емитују), а све што нам треба је круг ФМ пријемника да ухвати те радио сигнале и пренесе их на аудио сигнале. У нашим претходним водичима направили смо и неколико других ФМ предајника и пријемника који су наведени у наставку.
- Распберри Пи ФМ предајник
- Распберри Пи ФМ радио пријемник
- Коло ФМ предајника
- Круг ФМ предајника без пригушнице
У овом упутству ћемо направити Ардуино ФМ пријемник и додати га у наш пројектни арсенал. Користићемо РДА5807 ФМ пријемник ИЦ са Ардуином и програмирати га тако да репродукујемо било коју ФМ радио станицу коју корисник може подесити помоћу потенциометра. Такође ћемо користити аудио појачало заједно са струјним кругом за контролу излазне јачине звука нашег Ардуино ФМ радија, звучи занимљиво зар не? Па, кренимо.
ФМ радио опште ради
Радио станице претварају електричне сигнале у радио сигнале и ти сигнали морају бити модулисани пре него што се преносе кроз антену. Постоје две методе у којима се сигнал може модулисати и то АМ и ФМ. Као што и само име говори, амплитудска модулација (АМ) модулира амплитуду пре преноса сигнала, док се у фреквенцијској модулацији (ФМ) фреквенција сигнала модулира пре преноса кроз антену. На радио станицама користе модулацију фреквенције за модулацију сигнала, а затим преношење података. Сада нам је потребан само пријемник који се може подесити на одређене фреквенције и примати те сигнале, а касније и претварати ове електричне сигнале у аудио сигнале. КористићемоРДА5807 ФМ пријемнички модул у овом пројекту, који поједностављује наш круг.
Компоненте потребне
- Ардуино Нано
- РДА5807 пријемник
- Аудио појачало
- Повезивање жица
- Пот - 100К
- Перф Боард
РДА5807 Пријемник
РДА5807 је ФМ радио стерео модул са једним чипом и потпуно интегрисаним синтисајзером. Модул подржава светски опсег фреквенција од 50 - 115МХз, контролу јачине звука и пригушивање звука, програмабилни де-нагласак (50 / 75ус), индикатор јачине сигнала и СНР, кристални осцилатор од 32.768КХз, дигиталну аутоматску контролу појачања итд. Испод слике је приказан блок шема тјунера РДА5807М.
Има дигиталну архитектуру са ниским ИФ-ом и интегрише појачавач са ниским нивоом шума (ЛНА), који подржава ФМ опсег (50 до 115 МХз), програмабилну контролу појачања (ПГА), аналогно-дигитални претварач високе резолуције и дигитално-аналогни претварачи високе верности (ДАЦ). Ограничивач спречава преоптерећење и ограничава број интермодулационих производа створених суседним каналима. ПГА појачава излазни сигнал миксера и затим се дигитализује са АДЦ-има. ДСП језгро управља избором канала, ФМ демодулацијом, стерео МПКС декодером и излазним аудио сигналом. РДА5807 усб дијаграм за ИЦ је у наставку.
Модул ради на напајању од 1,8 - 3,3В. Када дође до одмора и одабраног управљачког интерфејса, модул се ресетује када је ВИО Повер уп, а такође подржава меко ресетовање окидачем бита 1 од 0 до 1 адресе 02Х. Модул користи И2Ц комуникацију за комуникацију са МЦУ-ом, а интерфејс започиње условом старт, бајтом наредбе и бајтовима података. РДА5807 има 13 16-битних регистара, од којих сваки обавља одређену функцију. Адресе регистра почињу са 00Х, које се додељују ИД-у чипа и завршавају са 0ФХ. У свих 13 регистара, неки битови су резервисани, док су неки Р / В. Сваки регистар извршава задатке попут променљиве јачине звука, промене канала итд. У зависности од додељених им битова.
Не можемо директно користити модул када га повезујемо са струјним кругом јер су игле затворене. Дакле, користио сам перф плочу и неке мушке игле и залемио сваки пин модула на сваки мушки пин, као што је приказано на слици доле.
Аудио појачало
Појачало звука је електронски уређај који појачава електронске аудио сигнале мале снаге до нивоа на којем је довољно висок за вожњу звучника или слушалица. Изградили смо једноставно аудио појачало помоћу ЛМ386, склоп за исти приказан је доле, а можете и да проверите везу да бисте сазнали више о овом колу, а такође проверите и друга кола појачала.
Шема круга Ардуино ФМ пријемника
Користили смо два потенциометра за подешавање ФМ опсега и контролу јачине звука аудио појачала. Да бисте променили јачину звука, можете да промените лонац који је повезан између 1 и 8- ог затича ЛМ386 или лонац који је повезан на пин 3 ЛМ386. Слика доле приказује комплетни дијаграм кола за Ардуино ФМ радио.
Мало сам променио појачало. Уместо да користим два потенциометра у појачалу, користио сам само један. Заменио сам лонац, који се користи за мењање појачања, отпорником. Дакле, наш пројекат има два потенциометра, један за подешавање и један за промену јачине звука. Потенциометар, који се користи за подешавање канала, повезан је са Ардуино нано. Централни пин лонца повезан је са А0 пином Ардуино нано-а, а било који од преостала два пина је повезан са 5В, а други са ГНД-ом. Још један лонац се користи за контролу јачине звука радија и повезан је како је приказано на горњој сл.
Пин А4 и А5 Ардуина повезани су са СДА и СЦЛ пином РДА5807М. имајте на уму да модул пријемника ради само на 3.3В. Дакле, спојите 3в3 пин Нано-а на ВЦЦ пин модула пријемника. Једном када су успостављене везе, моја поставка је изгледала овако
Објашњење Ардуино ФМ радио кода
Код ће покренути модул пријемника, а затим подесити канал са унапред подешеном фреквенцијом. Када се вредност коју нано прочита на А0 пину промени (променом пота), фреквенција се мења, што заузврат мења канал. Комплетни код је дат на крају странице.
Наш програм започињемо додавањем потребне жичане библиотеке за комуникацију са РДА5807. Затим, у променљивој „канал“ постављамо вредност канала. Кад год се радио укључи, аутоматски ће се подесити на овај канал.
#инцлуде
Даље, учитаћемо бајтове у сваки регистар на нашем РДА5807 ИЦ да бисмо поставили нашу почетну конфигурацију. У овом тренутку ресетујемо пријемник.
уинт8_т боот_цонфиг = {/ * регистар 0к02 * / 0б11000001, 0б00000011, / * регистар 0к03 * / 0б00000000, 0б00000000, / * регистар 0к04 * / 0б00001010, 0б00000000, / * регистар 0к05 * / 0б10001000, 0б00001111, / * регистар 0б00001111, / * 0б00000000, 0б00000000, / * регистар 0к07 * / 0б01000010, 0б00000010,};
Након што ресетујемо уређај, можемо да га подесимо. За подешавање канала потребно је програмирати само прва 4 бајта. Овај део кода ће променити канал на жељену фреквенцију. Прво у И2Ц започињемо пренос, записујемо или читамо податке, а затим завршавамо пренос. У овом ИЦ-у пријемника не морамо да наведемо адресу јер лист са подацима јасно каже да И2Ц интерфејс има фиксни стартни регистар, тј. 0к02х за операцију писања и 0к0Ах за операцију читања.
уинт8_т туне_цонфиг = {/ * регистар 0к02 * / 0б11000000, 0б00000001, / * регистар 0к03 * / (канал >> 2), ((канал & 0б11) << 6) - 0б00010000};
У подешавању смо иницијализовали конфигурацију покретања (ресетовање), а затим се подесили на канал уписујући бајтове за подешавање на РДА5807М.
воид сетуп () {Сериал.бегин (9600); пинМоде (А0, ИНПУТ); / * Повежи се са РДА5807М ФМ тјунером: * / Вире.бегин (); Вире.бегинТрансмиссион (РДА5807М_АДДРЕСС); Вире.врите (боот_цонфиг, БООТ_ЦОНФИГ_ЛЕН); Вире.ендТрансмиссион (); Вире.бегинТрансмиссион (РДА5807М_АДДРЕСС); Вире.врите (туне_цонфиг, ТУНЕ_ЦОНФИГ_ЛЕН); Вире.ендТрансмиссион (); }
Када сам користио пот за подешавање фреквенције, наишао сам на проблем. Вредности које очитава пин А0 нису константне. Постоји бука са жељеном вредношћу. Користио сам 0,1уФ керамички кондензатор повезан између А0 и ГНД, иако је бука сведена на минимум, није на жељеном нивоу. Дакле, морао сам да променим код. У почетку сам забележио очитавања на која утиче бука. Открио сам да је максимална вредност шума 10. Дакле, написао сам програм тако да ће нову вредност узети у обзир само ако је разлика између нове вредности и старе вредности тог истог пина већа од 10 а затим подеси на жељени канал.
воид лооп () {инт цханнел1 = 187, авг = 0, невА; статиц инт олдА = 0; инт резултат = 0; невА = аналогРеад (А0); иф ((невА - олдА)> 10 - (олдА - невА)> 10) {Сериал.принтлн (невА); иф (невА! = олдА) {цханнел = цханнел1 + (невА / 10); миЦхангеЦханнел (канал); олдА = невА; }}} // крај петље
Ова функција се користи за постављање бајтова низа туне_цонфиг, а затим преноси податке на РДА5807М ИЦ користећи И2Ц протокол.
воид миЦхангеЦханнел (инт цханнел) {/ * воид ако се ништа не врати иначе инт * / туне_цонфиг = (цханнел >> 2); туне_цонфиг = ((цханнел & 0б11) << 6) - 0б00010000; Вире.бегин (); Вире.бегинТрансмиссион (РДА5807М_АДДРЕСС); Вире.врите (туне_цонфиг, ТУНЕ_ЦОНФИГ_ЛЕН); Вире.ендТрансмиссион (); }
Рад Ардуино ФМ радија
Када се модул укључи, наш код ресетује РДА5807-М ИЦ и поставља га на канал жељеног корисника (Напомена: ова фреквенција се узима као основна фреквенција на којој ће се фреквенција повећавати). Променом потенциометра (спојеног на А0), вредности које чита Ардуино Нано се мењају. Ако је разлика између нове и старе вредности већа од 10, наш код ће узети у обзир ову нову вредност. Канал се мења у зависности од промене нове вредности од старе вредности. Повећавање или смањивање јачине звука зависи од потенциометра који је повезан између пина 3 и ГНД.
На крају конструкције и кодирања имаћете свој ФМ радио. Комплетан рад ФМ радија можете пронаћи у видео запису на дну ове странице. Надам се да сте уживали у пројекту и научили нешто корисно. Ако имате било каквих питања у вези са радом овог пројекта, можете их оставити у одељку за коментаре или користити наше форуме за другу техничку помоћ.