- Потребни материјали:
- Како ствари функционишу?
- Програмирање ЕСП8266-01:
- Повезивање ЕСП8266-01 са Ардуином:
- Ардуино програм и рад:
ЕСП8266-01 је сјајан модул за утаживање свих наших жеђи за ИОТ пројектима. Од објављивања развио је јаку заједницу и еволуирао у лаган за употребу, јефтин и моћан Ви-Фи модул. Још једна много популарнија платформа отвореног кода је Ардуино, која већ има на тоне пројеката изграђених око себе. Комбиновањем ове две платформе отвориће се врата многим иновативним пројектима, па ћемо у овом упутству научити како повезати модул ЕСП8266-01 са Ардуином. На овај начин ћемо моћи да шаљемо или примамо податке између Ардуина и Интернета.
У сврху овог упутства очитаћемо време, датум, температуру и влажност са Интернета користећи АПИ са ЕСП8266-01. Затим пошаљите ове вредности на плочу Ардуино и прикажите их на ЛЦД екрану 16 * 2. Звучи кул у реду !! Па кренимо.
Потребни материјали:
- Ардуино Боард (било која верзија)
- ЕСП8266-01
- ФТДИ програмерска плоча са опцијом 3.3В
- ЛЦД 16к2
- Потенциометар
- Тастер
- Повезивање жица
- Бреадбоард
Како ствари функционишу?
Пре него што заронимо, важно је знати како ће заправо та ствар функционисати. У основи, морамо почети са модулом ЕСП8266-01. Ми ћемо се помоћу Ардуино ИДЕ за програмирање ЕСП8266 и код ће бити написан да користите АПИ да прочита ЈСОН датотеку преко ХТТП захтева. Тада ћемо фразирати ову ЈСОН датотеку да би извукли само потребне информације из комплетне ЈСОН датотеке.
Једном када се подаци изразе, исписат ћемо их помоћу серијске комуникације. Те серијске линије ће се затим повезати са Ардуином, како би Ардуино могао читати информације послате са ЕСП8266. Једном када се информације прочитају и обраде, приказаћемо их на ЛЦД екрану.
У реду је, ако ово нисте потпуно разумели, јер ћемо то учити и у остатку овог водича.
Програмирање ЕСП8266-01:
Овај водич претпоставља да имате одређено искуство са модулом ЕСП8266. Ако не, онда је препоручљиво прочитати следећа три упутства да бисте у потпуности разумели то.
- Први кораци са ЕСП8266-01
- Програмирање ЕСП8266-01 помоћу АТ наредби
- Програмирање ЕСП8266-01 користећи Ардуино ИДЕ и флеширање његове меморије
Овде можете погледати и све наше пројекте ЕСП8266.
Овде ћемо програмирати модул ЕСП8266-01 користећи Ардуино ИДЕ. За хардвер користимо ФТДИ плочу са 3.3В за програмирање ЕСП8266, јер ће то учинити хардвер много једноставнијим. Шема кола за повезивање вашег ЕСП8266 са ФТДИ плочом је приказана доле.
Уверите се да су испуњени следећи услови
1. ЕСП8266-01 толерише само 3,3 В, не користите 5 В. Дакле, поставите ФТДИ само у режиму 3.3В.
2. ГПИО_0 мора бити утемељен за режим програмирања
3. Пин за ресетовање треба да буде повезан дугметом са копчом за масу. Ово дугме треба притиснути непосредно пре отпремања кода. Сваки пут када се притисне дугме, плава ЛЕД на модулу ЕСП8266-01 постат ће висока, што указује на то да је модул ресетован.
Када се везе заврше, отворите Ардуино ИДЕ и проверите да ли можете успешно да отпремите пример програма. Ако нисте сигурни како да користите Ардуино ИДЕ за пренос програма на ЕСП8266, следите Програмирање ЕСП8266 са Ардуином да бисте га научили. У овом тренутку претпостављам да сте успешно отпремили програм за трептање.
. Комплетан програм је дат на крају ове странице даље у наставку. Објашњавам их као мале исечке. Програм такође захтева компајлирање Ардуино ЈСОН библиотеке, па ако већ нисте додали библиотеку у свој Ардуино ИДЕ, додајте је преузимањем из Ардуино ЈСОН библиотеке са Гитхуб-а.
ЕСП8266 мора да се повеже са Интернетом како би добио податке о датуму, времену, температури и влажности. Дакле, морате му дозволити да се повеже са Ви-Фи мрежом доказивањем ССИД-а и лозинке у доњим редовима
цонст цхар * ссид = "ЈИО-Фи"; // унесите свој Ви-Фи ССИД цонст цхар * пассворд = "Пас123"; // Унесите своју Ви-Фи лозинку
Унутар подешавање () функцију да провери да ли је ЕСП може да се повеже са Ви-Фи, ако не неће чекати вечно само штампањем "Цоннецтинг.." на серијски монитору.
вхиле (ВиФи.статус ()! = ВЛ_ЦОННЕЦТЕД) {// Сачекајте док се Ви-Фи не повеже са одлагањем (1000); Сериал.принт ("Повезивање.."); // Штампање повезивања.. док се веза не успостави }
Следећи корак је веома важан корак. Ако је Ви-Фи веза успешна, морамо да позовемо хттп захтев за читање ЈСОН датотеке са Интернета. У овом упутству користим АПИ који пружа вундергроунд.цом. Дакле, ако планирате да користите исто, можете да уђете у везу и пријавите се за бесплатни АПИ кључ или да користите било који АПИ по вашем избору. Када завршите са АПИ-јем, на крају ћете добити везу попут ове у наставку
хттп://апи.вундергроунд.цом/апи/абцд124578кверт/цондитионс/к/ИН/Цхеннаи.јсон
Напомена: Променио сам АПИ кључ ове везе, па ово неће функционисати. Нека ваш АПИ кључ буде осигуран и не делите га.
Мој АПИ овде се користи за добијање временских података о Ченају. Можете да користите било који АПИ. Али када учитате АПИ у било који прегледач, требало би да врати ЈСОН датотеку. На пример, мој АПИ враћа следећу ЈСОН датотеку
Ваш ће можда вратити датотеку са различитим подацима. Да ли је ову ЈСОН датотеку примио и наш ЕСП8266, можемо да проверимо читањем и штампањем ЈСОН-а на нашем серијском монитору користећи следеће редове
инт хттпЦоде = хттп.ГЕТ (); // проследи захтев за добијање иф (хттпЦоде> 0) {// Провери повратни код // паилоад = хттп.гетСтринг (); // Складиштимо вредност на варијабилном корисном оптерећењу за отклањање грешака // Сериал.принтлн (корисни терет); // Испис корисног терета за отклањање грешака, у супротном коментаришите оба реда
Коментарисао сам ове редове, јер су они потребни само за тестирање. Када се уверите да је ЕСП8266 у могућности да добије ЈСОН податке, време је за фразирање података. Као што видите, ови подаци су огромни и већина вредности је бескорисна, осим оних које су нам потребне, попут датума, времена, температуре и влажности.
Дакле, користимо ЈСОН Ардуино библиотеку да одвојимо вредности потребне за нас и похранимо је у променљиву. То је могуће јер су вредности у ЈСОН датотеци додељене као парови вредности имена. Дакле, ово име је низ који ће садржати потребну вредност за нас.
Да бисмо то урадили, морамо да пређемо на веб локацију која ће анализирати ЈСОН датотеку и дати нам Ардуино код. Да, лако је то. Идите на хттпс://ардуинојсон.орг/ассистант/ и налепите ЈСОН датотеку коју смо учитали у наш прегледач и притисните ентер. Кад су завршили, моје је изгледало отприлике овако доле
Померите се надоле да бисте видели програм за фразирање који се аутоматски креира
Све што треба да урадите је да одаберете променљиву коју желите, копирате их и залепите на свој Ардуино ИДЕ, као што сам овде урадио
/ * Подаци о фразирању помоћу ЈСОН књижнице * / // Користите хттпс://ардуинојсон.орг/ассистант/ да бисте добили вредности фразирања за ваш ЈСОН низ цонст сизе_т буфферСизе = ЈСОН_ОБЈЕЦТ_СИЗЕ (0) + ЈСОН_ОБЈЕЦТ_СИЗЕ (1) + ЈСОН_ОБЈЕЦТ_СИЗЕ (2) + 2 * ЈСОН_ОБЈЕЦТ_СИЗЕ (3) + ЈСОН_ОБЈЕЦТ_СИЗЕ (8) + ЈСОН_ОБЈЕЦТ_СИЗЕ (12) + ЈСОН_ОБЈЕЦТ_СИЗЕ (56) + 2160; ДинамицЈсонБуффер јсонБуффер (буфферСизе); ЈсонОбјецт & роот = јсонБуффер.парсеОбјецт (хттп.гетСтринг ()); / * Крај фразирања података * / // Адресујте вредност син жељеним променљивим ЈсонОбјецт & цуррент_обсерватион = роот; // под цуррент_обсерватион ЈсонОбјецт & цуррент_обсерватион_обсерватион_лоцатион = цуррент_обсерватион; // под надзором_локација цонст цхар * цуррент_обсерватион_статион_ид = цуррент_обсерватион; // "ИЦХЕННАИ1" // преузми податке о локацији цонст цхар * цуррент_обсерватион_лоцал_тиме_рфц822 = цуррент_обсерватион; // Локално време // добијемо локално време цонст цхар * цуррент_обсерватион_температуре_стринг = цуррент_обсерватион; // "32,7 Ц (90,7 Ф)" // добијемо вредност температуре цонст цхар * цуррент_обсерватион_релативе_хуминити = цуррент_обсерватион; // "73%" // добије се вредност влажности
Управо сам копирао променљиве цуррент_обсерватион_статион_ид, цуррент_обсерватион_лоцал_тиме_рфц822, цуррент_обсерватион_температуре_стринг и цуррент_обсерватион_релативе_хумидити . Будући да планирамо да на ЛЦД екрану прикажемо само та четири података.
На крају, податке који су нам потребни добили смо са Интернета и сачували смо их као променљиву коју можемо комотно користити. Да бисмо ове податке послали Ардуину, само их морамо серијски записати путем серијског монитора. Следећи редови ће учинити потпуно исто
// исписујемо променљиве кроз серијски монитор Сериал.принт (цуррент_обсерватион_статион_ид); // слање података о локацији на Ардуино делаи (100); // кашњење стабилности Сериал.принт (цуррент_обсерватион_лоцал_тиме_рфц822); // слање података о локалном времену на Ардуино делаи (100); // одлагање стабилности Сериал.принт (цуррент_обсерватион_температуре_стринг); // пошаљите детаље о температури на Ардуино делаи (100); // кашњење стабилности Сериал.принт (цуррент_обсерватион_релативе_хумидити); // слање података о влажности на Ардуино делаи (100); // кашњење стабилности
Имајте на уму да сам користио Сериал.принт (), а не Сериал.принтлн (), јер ће наредба Сериал.принтлн () додати а / н и / р заједно са подацима који нам нису потребни. Такође смо додали кашњење од 10 секунди тако да ће ЕСП послати ове вредности Ардуину само у интервалу од 10 секунди.
Повезивање ЕСП8266-01 са Ардуином:
До сада смо програмирали наш ЕСП8266-01 да чита потребне податке са Интернета у размаку од 10 секунди и серијски их шаље. Сада морамо повезати ЕСП са Ардуином како бисмо могли читати ове серијске податке. Такође, Ардуину морамо додати ЛЦД дисплеј 16 * 2 како бисмо могли приказивати податке примљене од модула ЕСП8266. Дијаграм кола да интерфејс ЕСП8266 модуле Ардуино је приказан испод
Уверите се да је пио ГПИО_0 слободан, напајајте модул само 3.3В пином Ардуина и притисните тастер да бисте ставили ЕСП модул у оперативни модул. Сада је програм који смо учитали на ЕСП требало да почне да ради и модул би требало да шаље податке серијским пином у Ардуино. Ови серијски пинови су повезани са пиновима 6 и 7 на Ардуину. Тако да можемо користити софтверску серијску опцију на Ардуину за читање ових серијских података са игла.
Ардуино програм и рад:
Комплетан Ардуино Програм је такође даје заједно са ЕСП кодом на крају ове странице. Можете да се померите надоле да бисте погледали програм или прочитали даље ако желите да разумете програм.
Програм повезивања је прилично једноставан, само морамо да користимо серијску библиотеку софтвера за читање података са пин-а 6 и 7 и њихово приказивање на ЛЦД екрану. Будући да су подаци који се примају у формату низа, морамо да користимо опцију подниз да разбијемо корисни терет према нашем захтеву или га чак претворимо у цео број ако је потребно. Дакле, започињемо са дефинисањем пинова на које је повезан ЛЦД.
цонст инт рс = 8, ен = 9, д4 = 10, д5 = 11, д6 = 12, д7 = 13; // Пинови на које је повезан ЛЦД ЛикуидЦристал лцд (рс, ен, д4, д5, д6, д7);
Будући да смо повезани са РКС и ТКС игле за ЕСП8266 са 6 и 7 -ог пин на Ардуино морамо инитиалисе на Софтваре серију за оне игле, тако да може да прими серијске податке од њих.И имају имена ово као ЕСП_Сериал, можете дајте им имена како год желите
СофтвареСериал ЕСП_Сериал (6,7); // Тк, Рк
Унутар функције сетуп () иницирамо серијску комуникацију за серијски монитор, а такође и за серијски софтвер. Ако се сећате, направили смо ЕСП програм за комуникацију брзином од 9600 бауд-ова, тако да морамо користити исту брзину преноса за серијски порт софтвера. Такође приказујемо малу уводну поруку на ЛЦД-у током 2 секунде.
воид сетуп () {лцд.бегин (16, 2); // Користимо лцд.принт ЛЦД екрана 16 * 2 („Ардуино & ЕСП“); // Приказивање уводне поруке Сериал.бегин (115200); ЕСП_Сериал.бегин (9600); кашњење (2000); лцд.цлеар (); }
Унутар функције главне петље () морамо да проверимо да ли ЕСП8266 шаље нешто. Ако јесте, тада читамо низ из ЕСП8266 и чувамо га у променљивој која се назива корисни терет. Променљива носивост је типа Стринг и садржаће комплетне информације послате из модула ЕСП8266.
вхиле (ЕСП_Сериал.аваилабле ()> 0) {паилоад = ЕСП_Сериал.реадСтринг ();
Сада овај низ морамо поделити на мале делове како бисмо их могли користити за своју сврху, у овом случају морамо их поделити да бисмо их приказали на ЛЦД екрану. Ово се може урадити лако је помоћу Субстринг функцију у Ардуино. Морате знати положај сваког знака да бисте користили ову функцију подниза . Корисни терет можете одштампати на серијском монитору да бисте знали положај знакова и помоћу њих категоризирали поднизове као што је приказано испод
лоцал_дате = паилоад.субстринг (14, 20); лоцал_тиме = паилоад.субстринг (26, 31); температура = корисно оптерећење.подниз (48, 54); Влажност = корисно оптерећење.подстава (55, 60);
Сада могу да користим ове променљиве или да их одштампам на серијски монитор или да их једноставно одштампам на ЛЦД-у. Међутим, њихово штампање на серијском монитору помоћи ће нам да проверимо да ли су поднизови правилно подељени. Затим их само одштампамо на ЛЦД екрану користећи следеће редове
лцд.цлеар (); лцд.сетЦурсор (1, 0); лцд.принт (лоцал_дате); лцд.сетЦурсор (8, 0); лцд.принт (лоцал_тиме); лцд.сетЦурсор (1, 1); лцд.принт (температура); лцд.сетЦурсор (10, 1); лцд.принт (влажност);
Отпремите програм на Ардуино и уверите се да су везе као што је приказано на горњој схеми кола. Подесите контраст ЛЦД екрана док ствари не видите јасно. Требали бисте видети уводну поруку на ЛЦД-у, а затим би након неколико секунди детаљи попут датума, времена, температуре и влажности требали бити приказани на ЛЦД екрану као што је приказано доле.
Такође можете приметити да плава лампица на ЕСП8266 трепће сваки пут када уђу подаци. Ако ово не видите, значи да ЕСП није у режиму програмирања, покушајте притиском на тастер за ресетовање такође проверити везе.
Слично овоме, можете користити било који АПИ за добијање потребних података са Интернета и њихово слање у Ардуино и обраду вашег рада са Ардуином. На интернету је доступно мноштво АПИ-ја, а са свима њима можете направити неограничен број пројеката. Надам се да сте разумели пројекат и уживали сте у његовој изради. Ако сте имали било каквих проблема, објавите их у одељку за коментаре испод или на нашим форумима.
Све наше пројекте повезане са ЕСП8266 можете пронаћи овде.