- Компоненте потребне:
- Шема и објашњење: -
- Добијање података о локацији са ГПС-а:
- Кораци за повезивање ГПС-а са ПИЦ микроконтролером: -
- Објашњење кода:
ГПС је кратки облик Глобал Поситионинг Систем-а. То је систем који пружа тачне надморске висине, ширину, дужину, УТЦ време и много више информација преузетих са 2, 3, 4 или више сателита. Да бисмо читали податке са ГПС-а, потребан нам је микроконтролер и већ смо повезали ГПС са Ардуином и Распберри Пи.
Одабрали смо Г7020 ГПС модул који производи У-блок. Земљописну дужину и ширину одређеног положаја примићемо са сателита и приказаћемо исте на ЛЦД екрану са карактером 16к2. Дакле, овде ћемо повезати ГПС са микроконтролером ПИЦ16Ф877А помоћу микрочипа.
Компоненте потребне:
- Пиц16Ф877А - ПДИП40 пакет
- Даска за хлеб
- Пицкит-3
- 5В адаптер
- ЛЦД ЈХД162А
- ГПС модул уБЛОКС-Г7020
- Жице за повезивање периферних уређаја.
- 4.7к отпорници
- 10к пот
- Кристал од 20мХз
- 2 ком. 33пФ керамички кондензатори
Шема и објашњење: -
ЛЦД од 16 к 2 карактера повезан је преко микроконтролера ПИЦ16Ф877А, у којем су РБ0, РБ1, РБ2 повезани са ЛЦД пином који је РС, Р / В и Е. РБ4, РБ5, РБ6 и РБ7 су повезани преко 4-полног ЛЦД-а Д4, Д5, Д6, Д7. ЛЦД је повезан у 4-битном режиму или режиму грицкања. Сазнајте више о повезивању ЛЦД-а са ПИЦ микроконтролером.
Кристални осцилатор од 20 МХз са два керамичка кондензатора од 33 пФ повезана преко ОСЦ1 и ОСЦ2 пина. Пружаће микроконтролеру константну тактну фреквенцију од 20 МХз.
уБлок-Г7020 ГПС модул, прима и преноси податке користећи УАРТ. ПИЦ16Ф877А се састоји од једног УСАРТ драјвера унутар чипа, податке ћемо примати од ГПС модула од стране УСАРТ-а, тако да ће се успоставити унакрсна веза од Рк пина микроконтролера до ГПС Тк пина и УСАРТ пина за примање повезаних преко ГПС Трансмит пина.
УБлок-Г7020 има код у боји за игле. Позитивни или 5В пин је у црвеној боји, негативни или ГНД пин у црној боји, а Трансмит пин у плавој боји.
Све ово сам повезао у плочу за памћење.
Добијање података о локацији са ГПС-а:
Погледајмо како повезати ГПС помоћу УСАРТ-а и видети резултат на ЛЦД екрану од 16к2 карактера.
Модул ће преносити податке у више низова брзином од 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 да бисмо прикупили информације о локацији модула или о томе где се налази.
Кораци за повезивање ГПС-а са ПИЦ микроконтролером: -
- Подесите конфигурације микроконтролера које укључују конфигурацију осцилатора.
- Подесите жељени порт за ЛЦД, укључујући ТРИС регистар.
- Повежите ГПС модул са микроконтролером помоћу УСАРТ-а.
- Иницијализујте систем УСАРТ у режиму континуираног пријема, са брзином преноса од 9600 бита и ЛЦД у 4-битном режиму.
- Узмите два низа знакова у зависности од дужине ширине и дужине.
- Примајте по један бит карактера и проверите да ли је започет од $ или не.
- Ако је $ Рецеиве онда је то низ, треба да проверимо ГПГГА, ових 5 слова и зарез.
- Ако је у питању ГПГГА, прескочићемо време и потражимо географску ширину и дужину, а географску ширину и дужину ћемо похранити у низ од два знака све док Н (север) и Е (исток) не буду примљени.
- Низ ћемо исписати на ЛЦД екрану.
- Обриши низ.
Објашњење кода:
Погледајмо код ред по ред. Првих неколико редова је за подешавање конфигурационих битова који су објашњени у претходном водичу, па их за сада прескачем. Комплетни код је дат на крају овог водича.
Ових пет редова користи се за укључивање датотека заглавља библиотеке, лцд.х и еусарт.х је за ЛЦД, односно УСАРТ. А кц.х је за заглавну датотеку микроконтролера.
#инцлуде
У воид маин () функцији, систем_инит () ; функција се користи за иницијализацију ЛЦД-а и УСАРТ-а.
Главна празнина (воид) { ТРИСБ = 0к00; // Постављање као излаз систем_инит ();
Тхе лцд_инит (); и ЕУСАРТ_Интиализе (); позива се из две библиотеке лцд.х и еусарт.х
воид систем_инит (воид) { лцд_инит (); // Ово ће иницирати лцд ЕУСАРТ1_Инитиализе (); // Ово ће иницирати Еусарт }
У док петља ми разбити ГПГГА низ да добије дужином и ширином координирају. Примамо један по један бит и упоређујемо га са појединачним знаковима присутним у ГПГГА низу.
Разбијамо кодове које ћемо добити: -
инцомер_дата = ЕУСАРТ1_Реад (); // Проверите низ '$ ГПГГА,' / * ------------------------------ Корак по корак проналажење ГПГГА линије- --------------------------- * / иф (инцомер_дата == '$') {// Прва изјава ГПС података почиње са $ сигн инцомер_дата = ЕУСАРТ1_Реад (); // Ако први иф постане тачан, следећа фаза иф (инцомер_дата == 'Г') { инцомер_дата = ЕУСАРТ1_Реад (); иф (инцомер_дата == 'П'); { инцомер_дата = ЕУСАРТ1_Реад (); иф (инцомер_дата == 'Г'); { инцомер_дата = ЕУСАРТ1_Реад (); иф (инцомер_дата == 'Г') { инцомер_дата = ЕУСАРТ1_Реад (); иф (инцомер_дата == 'А') { инцомер_дата = ЕУСАРТ1_Реад (); иф (инцомер_дата == ',') {// прво, примљено инцомер_дата = ЕУСАРТ1_Реад (); // У овој фази завршено пријављивање је завршено, налази се ГПГГА.
Коришћењем овог кода прескачемо УТЦ време.
вхиле (инцомер_дата! = ',') {// прескакање ГМТ времена инцомер_дата = ЕУСАРТ1_Реад (); }
Овај код служи за чување података о географској ширини и дужини у низу знакова.
инцомер_дата = ЕУСАРТ1_Реад (); географска ширина = инцомер_дата; вхиле (инцомер_дата! = ',') { фор (арраи_цоунт = 1; инцомер_дата! = 'Н'; арраи_цоунт ++) { инцомер_дата = ЕУСАРТ1_Реад (); географска ширина = инцомер_дата; // складиштење података Латитуде } инцомер_дата = ЕУСАРТ1_Реад (); иф (инцомер_дата == ',') { фор (арраи_цоунт = 0; инцомер_дата! = 'Е'; арраи_цоунт ++) { инцомер_дата = ЕУСАРТ1_Реад (); лонгитуде = инцомер_дата; // Чување података о географској дужини } }
И коначно, на ЛЦД-у смо одштампали дужину и ширину.
арраи_цоунт = 0; лцд_цом (0к80); // ЛЦД линија један избор док је (арраи_цоунт <12) {// Низ Латитуде података је 11-цифрени лцд_дата (латитуде); // испис Латитуде података арраи_цоунт ++; } арраи_цоунт = 0; лцд_цом (0кЦ0); // Избор две линије ЛЦД- а вхиле (арраи_цоунт <13) {// Низ података Лонгитуде је 12-цифрени лцд_дата (лонгитуде); // исписује податке о географској дужини арраи_цоунт ++; }
На овај начин можемо повезати ГПС модул са ПИЦ микроконтролером да бисмо добили географску ширину и дужину тренутне локације.
Комплетне датотеке кода и заглавља дате су у наставку.