- Упознавање РФ модула нРФ24Л01
- Повезивање нРФ24Л01 са Ардуином
- Страна пријемника: везе модула Ардуино Уно нРФ24Л01
- Страна предајника: Прикључци модула Ардуино Нано нРФ24Л01
- Рад са модулом бежичног примопредајника нРФ24Л01 +
- Програмирање нРФ24Л01 за Ардуино
- Управљање серво мотором помоћу бежичног уређаја нРФ24Л01
Док Интернет оф Тхингс (ИоТ), индустрија 4.0, комуникација од машине до машине итд. Постају све популарније, потреба за бежичном комуникацијом постала је актуелна, са више машина / уређаја који међусобно разговарају у облаку. Дизајнери користе многе бежичне комуникационе системе као што су Блуетоотх Лов Енерги (БЛЕ 4.0), Зигбее, ЕСП43 Ви-Фи модули, 433МХз РФ модули, Лора, нРФ итд., А избор медија зависи од врсте апликације у којој се користи.
Међу свим популарним бежичним медијима за локалну мрежну комуникацију је нРФ24Л01. Ови модули раде на 2,4 ГХз (ИСМ опсег) брзином пријеноса од 250Кбпс до 2Мбпс, што је легално у многим земљама и може се користити у индустријским и медицинским апликацијама. Такође се тврди да са одговарајућим антенама ови модули могу да емитују и примају на растојању од 100 метара између њих. Занимљиво зар не? Дакле, у овом упутству ћемо научити више о овим нРФ24л01 модулима и како да их повежемо са платформом микроконтролера попут Ардуина. Такође ћемо поделити нека решења за проблеме са којима се често суочавају током коришћења овог модула.
Упознавање РФ модула нРФ24Л01
У нРФ24Л01 модули су трансцеивер модули, што значи да сваки модул може и шаљу и примају податке, али с обзиром да су полу-дуплек они ни да шаљете или примате податке у исто време. Модул има генерички нРФ24Л01 ИЦ из нордијских полупроводника који је одговоран за пренос и пријем података. ИЦ комуницира помоћу СПИ протокола и стога се лако може повезати са било којим микроконтролером. Са Ардуином постаје много лакше јер су библиотеке лако доступне. У пиноутс стандардног нРФ24Л01 модула је приказан испод
Модул има радни напон од 1,9 В до 3,6 В (обично 3,3 В) и троши врло мало струје од само 12 мА током нормалног рада, што га чини ефикасним у батерији, па стога може радити и на ћелијским новчићима. Иако је радни напон 3,3 В, већина пинова је толерантна на 5 В и стога се може директно повезати са 5 В микроконтролером попут Ардуина. Још једна предност коришћења ових модула је та што сваки модул има 6 цевовода. Значи, сваки модул може комуницирати са 6 других модула за пренос или пријем података. Ово чини модул погодним за стварање звездастих или мрежастих мрежа у ИоТ апликацијама. Такође имају широк опсег адреса од 125 јединствених ИД-ова, тако да у затвореном простору можемо користити 125 ових модула без међусобног ометања.
Повезивање нРФ24Л01 са Ардуином
У овом упутству научићемо како повезати нРФ24Л01 са Ардуином управљајући серво мотором повезаним са једним Ардуином променом потенциометра на другом Ардуину. Ради једноставности користили смо један нРФ24Л01 модул као предајник, а други је пријемник, али сваки модул може бити програмиран за појединачно слање и примање података.
Шема кола за повезивање модула нРФ24Л01 са Ардуином је приказана испод. За разноликост сам користио УНО за пријемник и Нано за страну предајника. Али логика повезивања остаје иста за остале Ардуино плоче као што су мини, мега.
Страна пријемника: везе модула Ардуино Уно нРФ24Л01
Као што је раније речено, нРФ24Л01 комуницира уз помоћ СПИ протокола. На Ардуино Нано и УНО пинови 11, 12 и 13 се користе за СПИ комуникацију. Отуда повезујемо МОСИ, МИСО и СЦК пинове са нРФ на пинове 11, 12 и 13 респективно. Прибадаче ЦЕ и ЦС могу се конфигурисати, овде сам користио пинове 7 и 8, али можете променити програм помоћу било ког пина. Модул нРФ напаја се пином од 3.3В на Ардуину, што ће у већини случајева радити. Ако није, може се испробати засебно напајање. Осим повезивања нРФ-а, такође сам повезао серво мотор на пин 7 и напајао га преко 5В пина на Ардуину. На сличан начин је приказан склоп предајника.
Страна предајника: Прикључци модула Ардуино Нано нРФ24Л01
Прикључци за предајник су такође исти, осим тога, користио сам потенциометар повезан преко 5В ад Гроунд пин-а Ардуино-а. Излазни аналогни напон који ће варирати од 0-5В повезан је на А7 пин Нано-а. Обе плоче се напајају преко УСБ порта.
Рад са модулом бежичног примопредајника нРФ24Л01 +
Међутим, како би наш нРФ24Л01 радио без буке, можда бисмо желели да размотримо следеће ствари. Радим на овом нРФ24Л01 + већ дуго времена и научио сам следеће тачке које вам могу помоћи да вас не удари у зид. Можете их испробати када модули нису радили нормално.
1. Већина нРФ24Л01 + модула на тржишту су лажни. Најјефтиније које можемо пронаћи на Ебаи-у и Амазон-у су најгоре (не брините, са неколико подешавања можемо их натерати да раде)
2. Главни проблем је напајање, а не ваша шифра. Већина кодова на мрежи ће радити исправно, и сам имам радни код који сам лично тестирао. Обавестите ме ако вам требају.
3. Обратите пажњу јер су модули који су одштампани као НРФ24Л01 + заправо Си24Ри (да, кинески производ).
4. Клонски и лажни модули трошит ће више енергије, стога немојте развијати свој круг напајања заснован на техничком листу нРФ24Л01 +, јер ће Си24Ри имати велику тренутну потрошњу од око 250мА.
5. Пазите мрешкања напона и струјних удара, ови модули су врло осетљиви и лако могу сагорети. (;-(засад је спржио 2 модула)
6. Додавање неколико кондензатора (10уФ и 0,1уФ) преко Вцц и Гнд модула помаже у оспособљавању вашег напајања, што ради за већину модула.
Ипак, ако имате проблема, пријавите одељак коментара или прочитајте ово или поставите своја питања на нашем форуму.
Такође погледајте наш претходни пројекат о стварању собе за ћаскање помоћу нРФ24Л01.
Програмирање нРФ24Л01 за Ардуино
Било је врло лако користити ове модуле са Ардуином, захваљујући лако доступној библиотеци коју је креирао маниацбуг на ГитХуб-у. Кликните на везу да бисте преузели библиотеку као ЗИП мапу и додали је у свој Ардуино ИДЕ помоћу опције Скица -> Укључи библиотеку -> Додај.ЗИП библиотеку . Након додавања библиотеке можемо започети програмирање за пројекат. Морамо написати два програма, један је за предајник, а други за пријемник. Међутим, као што сам раније рекао, сваки модул може радити и као предајник и као пријемник. Оба програма дата су на крају ове странице, у коду предајника ће се коментарисати опција пријемника, ау програму пријемника код предајника. Можете га користити ако покушавате пројекат у којем модул мора да функционише као оба. Рад програма је објашњен у наставку.
Као и сви програми, почињемо укључивањем заглавних датотека. Пошто нРФ користи СПИ протокол, укључили смо заглавље СПИ и библиотеку коју смо управо преузели. Серво библиотека се користи за управљање серво мотором.
#инцлуде
Следећи ред је важан ред где библиотеку упућујемо на ЦЕ и ЦС пинове. У нашем дијаграму споја спојили смо ЦЕ на пин 7 и ЦС на пин 8, па смо линију поставили као
РФ24 миРадио (7, 8);
Све променљиве које су повезане са РФ библиотеком треба да буду декларисане као сложена структура променљивих. У овом програму променљива мсг се користи за слање и пријем података са РФ модула.
струцт пацкаге { инт мсг; }; типедеф струцт пакет Пацкаге; Подаци о пакету;
Сваки РФ модул има јединствену адресу помоћу које може да шаље податке на одговарајући уређај. С обзиром да овде имамо само један пар, адресу постављамо на нулу и у предајнику и у пријемнику, али ако имате више модула, можете да подесите ИД на било који јединствени 6-цифрени низ.
адресе бајтова = {"0"};
Следећа унутар воид сетуп функцију да покрене РФ модул и кренули у посао са 115 бендом који је слободан од буке, као и сет модула за рад у минималном режиму потрошње електричне енергије са минималном брзином од 250кбпс.
воид сетуп () { Сериал.бегин (9600); миРадио.бегин (); миРадио.сетЦханнел (115); // опсег 115 изнад ВИФИ сигнала миРадио.сетПАЛевел (РФ24_ПА_МИН); // МИН снаге ниског дизања миРадио.сетДатаРате (РФ24_250КБПС); // Минимална брзина мисерво.аттацх (6); Сериал.принт („Иницијализовано подешавање“); кашњење (500); }
воид ВритеДата () функција уписује податке који су јој прослеђени. Као што је раније речено, нРФ има 6 различитих цеви на које можемо читати или писати податке, овде смо користили 0кФ0Ф0Ф0Ф066 као адресу за писање података. На страни пријемника морамо да користимо исту адресу на функцији РеадДата () за пријем података који су записани.
воид ВритеДата () { миРадио.стопЛистенинг (); // Зауставите пријем и започните трансминитнг миРадио.опенВритингПипе (0кФ0Ф0Ф0Ф066); // Шаље податке на ову 40-битну адресу миРадио.врите (& дата, сизеоф (дата)); кашњење (300); }
воид ВритеДата () функција чита податке и ставља их у променљиву. Поново од 6 различитих цеви помоћу којих овде можемо читати или писати податке, користили смо 0кФ0Ф0Ф0Ф0АА као адресу за читање података. То значи да је предајник другог модула нешто написао на овој адреси и стога га читамо са исте.
воид РеадДата () { миРадио.опенРеадингПипе (1, 0кФ0Ф0Ф0Ф0АА); // Коју цијев читати, 40-битна адреса миРадио.стартЛистенинг (); // Зауставите преношење и започните ревидирање иф (миРадио.аваилабле ()) { вхиле (миРадио.аваилабле ()) { миРадио.реад (& дата, сизеоф (дата)); } Сериал.принтлн (дата.тект); } }
Поред ових линија, остале линије у програму користе се за очитавање ПОТ-а и његово претварање у 0 до 180 помоћу функције мап и шаљу га у модул пријемника где у складу са тим контролишемо серво. Нисам их објашњавао ред по ред јер смо то већ научили у нашем упутству за серво повезивање.
Управљање серво мотором помоћу бежичног уређаја нРФ24Л01
Када будете спремни са програмом, пренесите код предајника и пријемника (дат испод) на одговарајуће Ардуино плоче и напајајте их помоћу УСБ порта. Такође можете да покренете серијски монитор обе плоче да бисте проверили која се вредност преноси и шта прима. Ако све ради како се очекивало када окренете дугме ПОТ на страни предајника, серво на другој страни такође треба да се окрене у складу с тим.
Комплетан рад пројекта приказан је у видео запису испод. Сасвим је нормално да ови модули не раде из првог покушаја. Ако сте наишли на било какав проблем, поново проверите код и ожичење и испробајте горе дате смернице за решавање проблема. Ако ништа не успе, поставите свој проблем на форуме или у одељак за коментаре и покушаћу да их решим.