- Компоненте потребне
- Добијање података о локацији са ГПС-а
- Кружни дијаграм
- Кораци за повезивање ГПС-а са АВР микроконтролером
- Објашњење кода
ГПС модули се широко користе у електроничким апликацијама за праћење локације на основу координата дужине и ширине. Систем за праћење возила, ГПС сат, систем упозорења за откривање незгода, саобраћајна навигација, надзорни систем итд. Су неки од примера где је ГПС функционалност од суштинске важности. ГПС пружа надморску висину, ширину, дужину, УТЦ време и многе друге информације о одређеној локацији које се узимају са више сателита. За читање података са ГПС-а потребан је микроконтролер, па овде повезујемо ГПС модул са АВР микроконтролером Атмега16 и исписујемо дужину и ширину на ЛЦД дисплеју 16к2.
Компоненте потребне
- Атмега16 / 32
- ГПС модул (уБлок Нео 6М ГПС)
- Дуга жичана антена
- ЛЦД 16к2
- 2.2к отпорник
- Кондензатор 1000уф
- 10уФ кондензатор
- Прикључна жица
- ЛМ7805
- ДЦ Јацк
- 12в ДЦ адаптер
- Бургстипс
- ПЦБ или ПЦБ опште намене
Ублок Нео 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 и ГПС
Овде погледајте све пројекте повезане са ГПС-ом.
Кружни дијаграм
Дијаграм кола за ГПС повезивање са АВР Атемга16 микроконтролером је дат у наставку:
Читав систем напаја 12В једносмерни адаптер, али склопови раде на 5в, тако да напајање регулише ЛМ7805 регулатор напона на 5в. ЛЦД од 16к2 је конфигурисан у 4-битном режиму и његове пин везе су приказане на дијаграму кола. ГПС такође напаја 5в, а његов тк пин је директно повезан са Рк Атмега16 микроконтролера. Кристални осцилатор од 8 МХз користи се за усмеравање микроконтролера.
Кораци за повезивање ГПС-а са АВР микроконтролером
- Подесите конфигурације микроконтролера које укључују конфигурацију осцилатора.
- Подесите жељени порт за ЛЦД, укључујући ДДР регистар.
- Повежите ГПС модул са микроконтролером помоћу УСАРТ-а.
- Иницијализујте систем УАРТ у ИСР режиму, са 9600 брзина преноса и ЛЦД у 4-битном режиму.
- Узмите два низа знакова у зависности од дужине ширине и дужине.
- Примајте по један бит карактера и проверите да ли је започет од $ или не.
- Ако је примљен $, то је низ, морамо да проверимо $ ГПГГА, ових 6 слова укључујући и $.
- Ако је ГПГГА, примите комплетан низ и поставите заставице.
- Затим извуците географску ширину и дужину са правцима у два низа.
- На крају одштампајте низове географске ширине и дужине на ЛЦД екрану.
Објашњење кода
Комплетни код са демонстрацијским видео записом дат је на крају, овде су објашњени неки важни делови кода.
Прво укључите неко потребно заглавље у код, а затим напишите МАЦРОС битмаске за ЛЦД и УАРТ конфигурацију.
#дефине Ф_ЦПУ 8000000ул # инцлуде # инцлуде
Сада пријавите и иницирајте неке променљиве и низове за чување ГПС низа, географске ширине и дужине и застава.
цхар буф; волатиле цхар инд, флаг, стрингРецеивед; цхар гпгга = {'$', 'Г', 'П', 'Г', 'Г', 'А'}; цхар латитуде; цхар логитуде;
Након њега имамо функцију ЛЦД Дривер за вожњу ЛЦД-а.
воид лцдврите (цхар цх, цхар р) { ЛЦДПОРТ = цх & 0кФ0; РВЛов; ако је (р == 1) РСХигх; елсе РСЛов; ЕНХигх; _делаи_мс (1); ЕНЛов; _делаи_мс (1); ЛЦДПОРТ = цх << 4 & 0кФ0; РВЛов; ако је (р == 1) РСХигх; елсе РСЛов; ЕНХигх; _делаи_мс (1); ЕНЛов; _делаи_мс (1); } Воид лцдпринт (цхар * стр) { вхиле (* стр) { лцдврите (* ул ++, ДАТА); // __ кашњење_мс (20); } } воид лцдбегин () { цхар лцдцмд = {0к02,0к28,0к0Е, 0к06,0к01}; за (инт и = 0; и <5; и ++) лцдврите (лцдцмд, ЦМД); }
Након тога смо иницијализовали серијску комуникацију са ГПС-ом и упоредили примљени низ са "ГПГГА":
воид сериалбегин () { УЦСРЦ = (1 << УРСЕЛ) - (1 << УЦСЗ0) - (1 << УЦСЗ1); УБРРХ = (БАУД_ПРЕСЦАЛЕ >> 8); УБРРЛ = БАУД_ПРЕСЦАЛЕ; УЦСРБ = (1 <
Сада, ако се примљени низ успешно подудара са ГПГГА, онда у главној функцији издвојите и прикажите координате географске ширине и дужине локације:
лцдврите (0к80,0); лцдпринт ("Лат:"); серијски отисак ("Латитуде:"); за (инт и = 15; и <27; и ++) { ширина = буф; лцдврите (ширина, 1); серијски запис (ширина); иф (и == 24) { лцдврите ('', 1); и ++; } } сериалпринтлн (""); лцдврите (192,0); лцдпринт ("Евиденција:"); серијски отисак ("Логитуде:"); за (инт и = 29; и <41; и ++) { логитуде = буф; лцдврите (логитуде, 1); сериалврите (логитуде); иф (и == 38) { лцдврите ('', 1); и ++; } }
Дакле, ово је начин на који ГПС модул може бити повезан са АТмега16 како би се пронашле координате локације.
Комплетни код и радни видео пронађите у наставку.