# Четене на 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.bg.png) 1. Поставете единия край на Grove кабела в гнездото на GPS сензора. Той ще влезе само в една посока. 1. С изключен Wio Terminal от вашия компютър или друг източник на захранване, свържете другия край на Grove кабела към лявото гнездо на Wio Terminal, когато гледате екрана. Това е гнездото, което е най-близо до бутона за захранване. ![Grove GPS сензор, свързан към лявото гнездо](../../../../../translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.bg.png) 1. Позиционирайте GPS сензора така, че прикрепената антена да има видимост към небето - най-добре до отворен прозорец или навън. По-лесно е да получите ясен сигнал, когато няма препятствия пред антената. 1. Сега можете да свържете Wio Terminal към вашия компютър. 1. GPS сензорът има 2 светодиода - син светодиод, който мига, когато се предават данни, и зелен светодиод, който мига всяка секунда, когато получава данни от сателити. Уверете се, че синият светодиод мига, когато включите Wio Terminal. След няколко минути зеленият светодиод ще започне да мига - ако не, може да се наложи да пренаредите антената. ## Програмиране на 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 сензора беше успешна! --- **Отказ от отговорност**: Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Ние не носим отговорност за каквито и да е недоразумения или погрешни интерпретации, произтичащи от използването на този превод.