- Компоненте потребне
- Коришћење апликације нРФ Цоннецт Андроид за ЕСП32 иБеацон
- Програмирање ЕСП32 да ради као БЛЕ иБеацон
ЕСП32 је заиста моћан ИоТ уређај који има уграђену подршку за Блуетоотх и ВиФи. ЕСП32 је напредна верзија свог претходника ЕСП8266 са додатним функцијама попут РАМ-а, РОМ-а, ГПИО пинова итд. ЕСП32 модул подржава класични Блуетоотх и Блуетоотх Лов Енерги (БЛЕ), класични Блуетоотх се може користити за пренос песама или датотека и БЛЕ опција се може користити за апликације оптимизоване за батерију као што су Блуетоотх светионици, фитнес опсези, близина итд. Такође је могуће користити ЕСП32 као серијски Блуетоотх попут модула ХЦ-05 или ХЦ-06 за једноставне пројекте микроконтролера.
Као што знамо, БЛЕ може радити у два различита режима - Сервер моду и Цлиент моду. Оба начина су разматрана у нашим претходним водичима за ЕСП32:
- ЕСП32 БЛЕ сервер - ГАТТ услуга за индикацију нивоа батерије
- ЕСП32 БЛЕ клијент - повезивање на фитнес траку за покретање сијалице
У овом упутству ћемо направити БЛЕ иБеацон користећи ЕСП32 где ће ЕСП32 деловати као сервер, а паметни телефон као клијент. Претпостављам да сте већ упознати са начином коришћења ЕСП32 плоче са Ардуино ИДЕ-ом, ако се не вратите на почетак рада са ЕСП32 упутством.
Такође можете знати више о томе шта је Беацон / иБеацон технологија пролазећи кроз наше претходне Блуетоотх иБеацон пројекте користећи Распберри Пи и ХМ-10 БЛЕ иБеацон.
Компоненте потребне
Хардвер:
- ЕСП32 одбор за развој
- Микро УСБ кабл
Софтвер:
- Ардуино ИДЕ
- Андроид апликација: нРФ Цоннецт за мобилне уређаје (компаније Нордиц Семицондуцтор)
Постоји много апликација БЛЕ скенера, једну од њих смо користили у претходном пројекту Како користити ХМ-10 БЛЕ модул са Ардуином. Ова апликација БЛЕ скенера пружа добар графички интерфејс (ГУИ), али јој недостају додатне информације, па у овом пројекту користимо апликацију НРФ Цоннецт за мобилне уређаје.
Коришћење апликације нРФ Цоннецт Андроид за ЕСП32 иБеацон
1. Преузмите апликацију нРФ Цоннецт из Гоогле Плаи продавнице и отворите је.
2. Екран изгледа као испод. Корисне опције за овај пројекат биће „Скенирај“, „Скенер“ и „Информације“ када се уређаји пронађу.
Опција „Скенирај“ користиће се за преглед свих доступних иБеацонса. Да бисте започели потрагу за иБеацон-ом, повуците екран или идите на опцију „Скенирај“ у горњем десном углу екрана. Ово ће започети потрагу за доступним иБеацонс.
3. Након претраживања иБеацон-а, моћи ћете да видите РССИ, УУИД, Мајор и Минор иБеацон-а. РССИ ће се променити ако одвојите мобител или иБеацон један од другог. Овде на овом екрану, РССИ је (-37). Осим овога, постоје неки детаљи као што су име компаније, име уређаја, дужина бајтова, локално име ЕСП32. Овде је „ ЕСП32 као иБеацон “. Локално име можете променити на скици.
4. Након одузимања паметног телефона иБеацон-у, вредност РССИ се мења са -37 на -58. Ове вредности ће се и даље мењати ако преместите један од уређаја.
Прихватљиве вредности РССИ сигнала су следеће:
Јачина сигнала | ТЛ; ДР | Потребна за | |
---|---|---|---|
-30 дБм | Невероватно | Максимално достижна снага сигнала. Клијент може бити удаљен само неколико стопа од АП да би то постигао. Није типично или пожељно у стварном свету. | Н / А |
-67 дБм | Врло добар | Минимална јачина сигнала за апликације које захтевају врло поуздану, правовремену испоруку пакета података. | ВоИП / ВоВиФи, стреаминг видео |
-70 дБм | у реду | Минимална јачина сигнала за поуздану испоруку пакета. | Емаил, веб |
-80 дБм | Није добро | Минимална јачина сигнала за основно повезивање. Достава пакета може бити непоуздана. | Н / А |
-90 дБм | Неупотребљиво | Приближавање или утапање у поду буке. Било која функционалност је мало вероватна. | Н / А |
Програмирање ЕСП32 да ради као БЛЕ иБеацон
Постоји узорак програма ЕСП32 БЛЕ иБеацон доступан када инсталирате ЕСП32 плочу у Ардуино ИДЕ. Али мало смо уредили ову скицу у овом упутству, комплетна уређена верзија узорка програма дата је на крају овог водича.
Да бисте отворили Пример програма ЕСП32 БЛЕ_иБеацон, само следите кораке испод.
- Отворите Ардуино ИДЕ и изаберите „ЕСП32 Дев Модуле“. (Ако не пронађете ову плочу, проверите да ли сте инсталирали ЕСП32 пакет пакета)
- Идите на Датотека > Примери > ЕСП32 БЛЕ Ардуино > БЛЕ_иБеацон
- Отворите скицу „БЛЕ_иБеацон“.
Сада постоји мала модификација кода која је урађена у овом упутству. Име ЕСП32 ће такође бити ажурирано у овој скици. Започните са укључивањем потребних библиотека које ће се користити у креирању БЛЕ сервера и иБеацон-а.
#инцлуде "сис / тиме.х"
Ово је библиотека времена за добијање тренутног системског времена. Садржи функције као што су тв_сец, геттимеофдаи () итд. За више информација можете посетити званично УНИКС издање ' сис / тиме.х'.
Затим су укључене ЕСП32 БЛЕ библиотеке које садрже многе функције које се користе за израду ЕСП32 у различитим конфигурацијама као што су БЛЕ клијент или БЛЕ сервер.
#инцлуде "БЛЕДевице.х" #инцлуде "БЛЕУтилс.х" #инцлуде "БЛЕСервер.х"
Библиотека иБеацон је укључен који поставља ЕСП32 као иБеацон. Уз ово, за ЕСП32 је укључена и библиотека дубоког сна. Библиотека ће се користити за слање ЕСП32 у режим дубоког спавања током одређеног временског периода.
#инцлуде "БЛЕБеацон.х" #инцлуде "есп_слееп.х"
Дефинишите трајање спавања за ЕСП32. Овде ће ЕСП32 бити у дубоком сну у трајању од 10 секунди, оглашаваће се, а затим поново ићи у дубоки сан на 10 секунди.
#дефине ГПИО_ДЕЕП_СЛЕЕП_ДУРАТИОН 10
Овде је дефинисан РТЦ_ДАТА_АТТР. Имајте на уму да ако дефинишете глобалну променљиву са РТЦ_ДАТА_АТТР атрибутом, променљива ће бити смештена у РТЦ_СЛОВ_МЕМ меморију. Дакле, структура декларисана као РТЦ_ДАТА_АТТР и копирање динамичке меморије у ову структуру пре дубоког спавања помаже опоравку овог у динамичку меморију након буђења. Једноставним речима штедимо време у статичкој меморији од динамичке меморије да бисмо је поново опоравили након дубоког сна. Овде су дефинисане две променљиве. „ Последњи “ се користи за добијање последњег пута када је ЕСП32 прешао у дубоко спавање и када се користи број рачунара за ресетовање.
РТЦ_ДАТА_АТТР статички тиме_т ласт; РТЦ_ДАТА_АТТР статиц уинт32_т боотцоунт;
Затим дефинишите тип оглашавања БЛЕ. Дефиниција се врши на следећи начин.
БЛЕАдвертисинг * пАдвертисинг;
Временски интервал је дефинисан као структура за приступ тренутном времену.
струцт тимевал сада;
Такође је дефинисан УУИД. УУИД-ови се могу генерисати са ове везе .
#дефине БЕАЦОН_УУИД "87б99б2ц-9КСКСд-11е9-бКСКС2-526КСКСКСКС64ф64"
Сада креирајте функцију која ће садржати иБеацон атрибуте као што су УУИД, Мајор, Минор, итд. У овој функцији креирајте инстанцу за БЛЕ као иБеацон и поставите лажни ИД произвођача, УУИД, мајор и мол за ЕСП32 као иБеацон.
воид сетБеацон () { БЛЕБеацон оБеацон = БЛЕБеацон (); оБеацон.сетМануфацтурерИд (0к4Ц00); оБеацон.сетПрокимитиУУИД (БЛЕУУИД (БЕАЦОН_УУИД)); оБеацон.сетМајор ((број покретања & 0кФФФФ0000) >> 16); оБеацон.сетМинор (број покретања & 0кФФФФ);
Поставите заставицу на 0к04 тако да ће на скенеру излазити БрЕдрНотСуппортед .
оДата.сетФлагс (0к04);
Подесите податке о оглашавању за објављивање.
стд:: стринг стрСервицеДата = "";
Додајте низ један за другим за оглашавање.
стрСервицеДата + = (цхар) 26; // Лен стрСервицеДата + = (цхар) 0кФФ; // Укуцајте стрСервицеДата + = оБеацон.гетДата (); оДата.аддДата (стрСервицеДата);
Започните оглашавање објављивањем података.
пАдвертисинг-> сетДата (оДата); пАдвертисинг-> сетСцанРеспонсеДата (оСцанРеспонсеДата);
Покрените серијски монитор брзином од 115200 бода и узмите времена. Такође повећајте број покретања да бисте сачували број Ресетовања.
Сериал.бегин (115200); геттимеофдаи (& сада, НУЛЛ); Сериал.принтф ("покрени ЕСП32% д \ н", број покретања ++);
Спремите тренутно време у статичку меморију.
ласт = нов.тв_сец;
Направите БЛЕ уређај и именујте га како желите. Овде је ЕСП32 назван „ ЕСП2 као иБеацон “. Имајте на уму да имена могу бити дугачка, али ова верзија кода покренула је подршку за дугачка имена.
БЛЕДевице:: инит ("ЕСП32 као иБеацон");
Направите БЛЕ сервер за оглашавање и почетак.
БЛЕСервер * пСервер = БЛЕДевице:: цреатеСервер (); пАдвертисинг = БЛЕДевице:: гетАдвертисинг (); БЛЕДевице:: стартАдвертисинг ();
Затим поставите ЕСП32 у иБеацон режим.
сетБеацон ();
Почните са оглашавањем, а затим зауставите оглашавање и пређите на дубоко спавање 10 секунди.
пРекламирање-> старт (); пРекламирање-> стоп (); есп_дееп_слееп (1000000ЛЛ * ГПИО_ДЕЕП_СЛЕЕП_ДУРАТИОН);
На крају прикључите ЕСП32 развојну плочу са преносним рачунаром помоћу Мицро УСБ кабла и отпремите код у ЕСП32 помоћу Ардуино ИДЕ-а. Затим отворите апликацију нРФ Цоннецт Андроид на паметном телефону и започните скенирање. ЕСП32 као иБеацон емитовање наћи ћете како је приказано на доњој слици:
На овај начин се ЕСП32 може користити као БЛЕ светионик за оглашавање УУИД-а, Мајор-а и Минор-а. Ако желите да сазнате више о иБеацону, следите наш претходни водич о ХМ10 као иБеацон. Такође, ако сумњате, коментаришите испод или постављајте питања на форумима.
Комплетни код са радним видео записом дат је у наставку.
/>