- Компоненте потребне:
- ГПС модул:
- Добијање података о локацији са ГПС-а:
- Повезивање ГПС-а са ЕСП12Е НодеМЦУ:
- Објашњење кода:
- ХТМЛ код за веб страницу:
ГПС је скраћеница од Глобал Поситионинг Систем и користи се за откривање локације, надморске висине, брзине, датума и времена у УТЦ. У овом пројекту ћемо повезати ГПС модул са НодеМЦУ. Једноставни локални веб сервер се креира помоћу НодеМЦУ и детаљи локације се ажурирају на тој веб страници сервера. Посебност овог ИоТ пројекта је да можемо да проверимо локацију на Гоолге Мапс кликом на везу наведену на веб страници. Такође можете отворити ову веб страницу и са било ког места проверити локацију активирањем прослеђивања порта у вашем модему / рутеру.
Компоненте потребне:
- НодеМЦУ ЕСП12
- ГПС модул (уБлок Нео 6М ГПС)
ГПС модул:
Ублок Нео 6М је серијски ГПС модул који пружа детаље о локацији путем серијске комуникације. Има четири пина.
пин |
Опис |
Вцц |
2,7 - 5В напајање |
Гнд |
Приземље |
ТКСД |
Пренеси податке |
РКСД |
Примање података |
Ублок нео 6М ГПС модул је компатибилан са ТТЛ и његове спецификације су дате у наставку.
Хватање времена | Цоол старт: 27с, Хот старт: 1с |
Комуникациони протокол | НМЕА |
Серијска комуникација | 9600 бпс, 8 битова података, 1 зауставни бит, без паритета и без контроле протока |
Радна струја | 45мА |
Добијање података о локацији са ГПС-а:
Модул ће преносити податке у више низова брзином од 9600 Бауд. Ако користимо УАРТ терминал са брзином од 9600 Бауд, видећемо податке примљене од ГПС-а.
ГПС модул шаље податке о положају за праћење у стварном времену у НМЕА формату (погледајте снимак екрана горе). НМЕА формат се састоји од неколико реченица, у којима су у наставку дате четири важне реченице. Детаљније о реченици НМЕА и њеном формату података можете пронаћи овде.
- $ ГПГГА: Подаци о поправци система за глобално позиционирање
- $ ГПГСВ: ГПС сателити на видику
- $ ГПГСА: ГПС ДОП и активни сателити
- $ ГПРМЦ: Препоручени минимум специфичних ГПС / података о транзиту
Овде сазнајте више о ГПС подацима и НМЕА низовима.
Ово су подаци које ГПС прима када је повезан брзином од 9600 бауд.
$ ГПРМЦ, 141848,00, А, 2237,63306, Н, 08820,86316, Е, 0,553 ,, 100418 ,,, А * 73 $ ГПВТГ,, Т,, М, 0,553, Н, 1,024, К, А * 27 $ ГПГГА, 141848,00, 2237.63306, Н, 08820.86316, Е, 1,03,2.56,1.9, М, -54,2, М,, * 74 $ ГПГСА, А, 2,06,02,05,,,,,,,,,, 2.75, 2,56,1,00 * 02 $ ГПГСВ, 1,1,04,02,59,316,30,05,43,188,25,06,44,022,23,25,03,324, * 76 $ ГПГЛЛ, 2237,63306, Н, 08820,86316, Е, 141848,00, А, А * 65
Када користимо ГПС модул за праћење било које локације, требају нам само координате и то можемо пронаћи у $ ГПГГА низу. Само програми $ ГПГГА (Глобал Поситионинг Систем Фик Дата) се углавном користе у програмима, а други низови се занемарују.
$ ГПГГА, 141848,00,2237.63306, Н, 08820.86316, Е, 1,03,2.56,1.9, М, -54,2, М,, * 74
Шта значи та линија?
Значење те линије је: -
1. Низ увек започиње знаком „$“
2. ГПГГА је скраћеница од Глобал Поситионинг Систем Фик Дата
3. „,“ Зарез означава раздвајање две вредности
4. 141848,00: ГМТ време као 14 (хр): 18 (мин): 48 (сек): 00 (мс)
5. 2237.63306, Н: ширина 22 (степен) 37 (минута) 63306 (сек) север
6. 08820.86316, Е: Земљописна дужина 088 (степен) 20 (минута) 86316 (сек) Исток
7. 1: Фиксна количина 0 = неважећи подаци, 1 = важећи подаци, 2 = ДГПС поправак
8. 03: Број тренутно прегледаних сателита.
9. 1.0: ХДОП
10. 2,56, М: Надморска висина (висина надморске висине у метрима)
11. 1.9, М: Висина геоида
12. * 74: контролна сума
Дакле, требају нам бр. 5 и 6 да бисмо прикупили информације о локацији модула или о томе где се налази. У овом пројекту користили смо ГПС библиотеку која пружа неке функције за издвајање географске ширине и дужине, тако да о томе не морамо да бринемо.
Претходно смо ГПС повезивали са другим микроконтролерима:
· Како користити ГПС са Ардуином
· Водич за повезивање модула Распберри Пи ГПС
· Повезивање ГПС модула са ПИЦ микроконтролером
· Пратите возило на Гоогле мапама користећи Ардуино, ЕСП8266 и ГПС
Повезивање ГПС-а са ЕСП12Е НодеМЦУ:
НодеМЦУ је развојна плоча заснована на ЕСП8266. Као језгро за обраду има ЕСП-12Е. То је 32-битни МЦУ. Има 14 ГПИО пинова, једноканални 10-битни интегрисани АДЦ. Подржава УАРТ, И2Ц, СПИ комуникацију. Компатибилан је са 3.3В, не може да поднесе 5В. Ако сте нови у НодеМЦУ, прочитајте наш Почетак рада са НодеМЦУ ЕСП-12.
У везе између НодеМЦУ и ГПС модул је као што је приказано у наставку.
НодеМЦУ |
ГПС модул |
3В3 |
Вцц |
ГНД |
ГНД |
Д1 (ГПИО5) |
РКС |
Д2 (ГПИО4) |
ТКС |
Испод је дијаграм кола повезивања ГПС-а са НодеМЦУ:
ГПС модулу треба неко време да ухвати детаље о локацији када се укључи. НодеМЦУ покреће веб сервер и чека да се клијент повеже са веб сервером. Једном када се клијент повеже са веб сервером, НодеМЦУ шаље детаље о локацији повезаном клијенту. Детаљи локације приказани су на једноставној веб страници дизајнираној помоћу ХТМЛ-а.
Кораци:
- Спојите коло као што је приказано на шеми.
- Отпремите код након промене Ви-Фи акредитива.
- Отворите серијски монитор у Ардуино ИДЕ и забележите ИП адресу веб сервера.
- Отворите било који прегледач и унесите ИП адресу веб сервера.
- Приказаће детаље локације, датум, време и везу до Гоогле мапа.
Објашњење кода:
Комплетан изворни код за овај пројекат је дат на крају овог чланка. Код је подељен на мале смислене делове и објашњен у наставку.
Да бисмо повезали ГПС модул са НодеМЦУ, морамо укључити одговарајуће датотеке заглавља. Датотеке заглавља могу се преузети са доњих веза.
Мала ГПС ++ библиотека: хттпс://гитхуб.цом/микалхарт/ТиниГПСПлус/арцхиве/в1.0.2.зип
#инцлуде
Да бисте креирали веб сервер помоћу НодеМЦУ, он мора бити повезан на Ви-Фи мрежу. У овом делу кода пружамо Ви-Фи акредитиве бежичне мреже на коју се НодеМЦУ повезује. Замените ово својим Ви-Фи акредитивима.
цонст цхар * ссид = " схасхи "; цонст цхар * лозинка = "12345678";
У овом делу кода креирамо објекат класе ТиниГПСПлус и дефинишемо пинове на које је повезан ГПС модул. ГПС модул је повезан на пинове 4 и 5 (ГПИО4 и ГПИО5) НодеМЦУ. Да бисмо подржали серијску комуникацију на пиновима 4 и 5, користимо библиотеку „СофтвареСериал“ за креирање виртуелног серијског порта.
ТиниГПСПлус гпс; // објект ТиниГПС ++ СофтвареСериал сс (4, 5); // Серијска веза са ГПС уређајем.
Овај ред кода означава број порта веб сервера који се креира. За ХТТП везу, подразумевани број порта је 80.
ВиФиСервер сервер (80);
За креирање веб сервера помоћу НодеМЦУ користи се доле наведени комад кода. Након креирања веб сервера, он исписује ИП адресу веб сервера у Сериал Монитор. Касније се ова ИП адреса користи за приступ веб серверу у локалној мрежи.
сервер.бегин (); Сериал.принтлн („Сервер покренут“); Сериал.принтлн (ВиФи.лоцалИП ()); // Испис ИП адресе
Даље морамо започети читање серијских података послатих са ГПС модула и ако је у њему грешка, морамо из њега извући детаље локације. За издвајање података о локацији користимо библиотеку ТиниГПСПлус . Овај део кода ради горе наведени посао.
вхиле (сс.аваилабле ()> 0) иф (гпс.енцоде (сс.реад ()))
Ако је у примљеном низу грешка, прво морамо да проверимо да ли је локација важећа или не. Ако је локација валидна, из ње морамо извући географску ширину и дужину. Затим се претвара у формат низа за приказивање на веб страници. Да бисмо испунили овај задатак, користимо овај део кода.
иф (гпс .лоцатион.исВалид ()) { ширина = гпс.лоцатион.лат (); лат_стр = Низ (ширина, 6); дужина = гпс.лоцатион.лнг (); лнг_стр = Низ (дужина, 6); }
Морамо следити исте кораке да бисмо издвојили датум и време.
иф (гпс.дате.исВалид ()) { датум = гпс.дате.даи (); месец = гпс.дате.монтх (); иеар = гпс.дате.иеар (); }
Да бисмо издвојили време, потребно је да следимо исту процедуру, али ГПС пружа време у УТЦ формату. Да бисмо претворили УТЦ у ИСТ, потребно је додати одмак од + 5 сати и 30 минута у УТЦ. Овај део кода врши конверзију из УТЦ у ИСТ.
минут = (минут + 30); иф (минут> 59) { минут = минут - 60; сат = сат + 1; } сат = (сат + 5); иф (сат> 23) сат = сат - 24;
Ово време је у 24-часовном формату. За претварање формата од 24 сата у 12 сати користи се доле наведени код.
иф (сат> = 12) пм = 1; иначе пм = 0; сат = сат% 12;
У овом делу кода проверавамо да ли је клијент повезан са веб сервером. чека док се клијент не повеже.
ВиФиЦлиент клијент = сервер.аваилабле (); иф (! цлиент) { ретурн; }
Једном када се клијент повеже, веб сервер мора да пошаље одговор клијенту. Веб страница је дизајнирана помоћу ХТМЛ-а. ХТМЛ код за веб страницу дат је на крају овог чланка. Вредности географске ширине, дужине, датума и времена се ажурирају након пријема података са ГПС модула. У овом делу кода шаљемо одговор клијенту. Где је 'с' низ који садржи ХТМЛ код за детаље о веб страници и локацији.
цлиент.принт (с);
ХТМЛ код за веб страницу:
ГПС повезивање са НодеМЦУ
Детаљи локације
Географска ширина | 12.9000 |
---|---|
Земљописна дужина | 77.5900 |
Датум | 22. 06. 18 |
време | 07:12:12 |
Кликните овде! Да бисте проверили локацију на Гоогле мапама.
Овако изгледа веб страница након што отворимо ИП локалног веб сервера у веб прегледачу.
Када кликнете на везу „ Кликните овде “, отвориће се локација у Гоогле мапама као испод: