# Читање GPS података - Wio Terminal У овом делу лекције, додаћете GPS сензор на ваш Wio Terminal и читати вредности са њега. ## Хардвер Wio Terminal захтева GPS сензор. Сензор који ћете користити је [Grove GPS Air530 сензор](https://www.seeedstudio.com/Grove-GPS-Air530-p-4584.html). Овај сензор може да се повезује са више GPS система ради брзог и прецизног позиционирања. Сензор се састоји из два дела - основне електронике сензора и спољашње антене која је повезана танким каблом за пријем радио таласа са сателита. Ово је UART сензор, што значи да шаље GPS податке преко UART-а. ### Повезивање GPS сензора Grove GPS сензор може да се повезује са Wio Terminal-ом. #### Задатак - повежите GPS сензор Повежите GPS сензор. ![Grove GPS сензор](../../../../../translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.sr.png) 1. Уметните један крај Grove кабла у прикључак на GPS сензору. Кабл може да се уметне само на један начин. 1. Док је Wio Terminal искључен са вашег рачунара или другог извора напајања, повежите други крај Grove кабла са левим Grove прикључком на Wio Terminal-у, гледајући екран. То је прикључак најближи дугмету за напајање. ![Grove GPS сензор повезан са левим прикључком](../../../../../translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.sr.png) 1. Поставите GPS сензор тако да прикључена антена има видљивост ка небу - идеално поред отвореног прозора или напољу. Лакше је добити јаснији сигнал ако ништа не блокира антену. 1. Сада можете повезати Wio Terminal са вашим рачунаром. 1. GPS сензор има 2 LED диоде - плаву LED диоду која трепће када се подаци преносе, и зелену LED диоду која трепће сваке секунде када прима податке са сателита. Уверите се да плава LED диода трепће када укључите Wio Terminal. Након неколико минута зелена LED диода ће почети да трепће - ако не, можда ћете морати да преместите антену. ## Програмирање GPS сензора Wio Terminal сада може да се програмира за коришћење прикљученог GPS сензора. ### Задатак - програмирајте GPS сензор Програмирајте уређај. 1. Направите потпуно нови Wio Terminal пројекат користећи PlatformIO. Назовите овај пројекат `gps-sensor`. Додајте код у функцију `setup` за конфигурисање серијског порта. 1. Додајте следећу директиву за укључивање на врх `main.cpp` датотеке. Ово укључује хедер датотеку са функцијама за конфигурисање левог Grove порта за UART. ```cpp #include ``` 1. Испод овога, додајте следећи ред кода за декларацију серијске порт везе са UART портом: ```cpp static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0); ``` 1. Потребно је да додате код за преусмеравање неких интерних сигналних руковалаца на овај серијски порт. Додајте следећи код испод декларације `Serial3`: ```cpp void SERCOM3_0_Handler() { Serial3.IrqHandler(); } void SERCOM3_1_Handler() { Serial3.IrqHandler(); } void SERCOM3_2_Handler() { Serial3.IrqHandler(); } void SERCOM3_3_Handler() { Serial3.IrqHandler(); } ``` 1. У функцији `setup`, испод где је конфигурисан `Serial` порт, конфигуришите UART серијски порт са следећим кодом: ```cpp Serial3.begin(9600); while (!Serial3) ; // Wait for Serial3 to be ready delay(1000); ``` 1. Испод овог кода у функцији `setup`, додајте следећи код за повезивање Grove пина са серијским портом: ```cpp pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT); ``` 1. Додајте следећу функцију пре функције `loop` за слање GPS података на серијски монитор: ```cpp void printGPSData() { Serial.println(Serial3.readStringUntil('\n')); } ``` 1. У функцији `loop`, додајте следећи код за читање са UART серијског порта и штампање излазних података на серијски монитор: ```cpp while (Serial3.available() > 0) { printGPSData(); } delay(1000); ``` Овај код чита са UART серијског порта. Функција `readStringUntil` чита до карактера терминатора, у овом случају новог реда. Ово ће прочитати целу NMEA реченицу (NMEA реченице се завршавају карактером новог реда). Док год се подаци могу читати са UART серијског порта, они се читају и шаљу на серијски монитор преко функције `printGPSData`. Када више нема података за читање, `loop` прави паузу од 1 секунде (1,000ms). 1. Компилирајте и отпремите код на Wio Terminal. 1. Када је код отпремљен, можете пратити GPS податке користећи серијски монитор. ```output > Executing task: platformio device monitor < --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at http://bit.ly/pio-monitor-filters --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $BDGSA,A,1,,,,,,,,,,,,,,,*0F $GPGSV,1,1,00*79 $BDGSV,1,1,00*68 ``` > 💁 Овај код можете пронаћи у [code-gps/wio-terminal](../../../../../3-transport/lessons/1-location-tracking/code-gps/wio-terminal) фасцикли. 😀 Ваш програм за GPS сензор је успешно завршен! --- **Одрицање од одговорности**: Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да превод буде тачан, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.