You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/sr/3-transport/lessons/1-location-tracking/virtual-device-gps-sensor.md

11 KiB

Читање GPS података - Виртуелни IoT хардвер

У овом делу лекције, додаћете GPS сензор вашем виртуелном IoT уређају и читати вредности са њега.

Виртуелни хардвер

Виртуелни IoT уређај ће користити симулирани GPS сензор који је доступан преко UART-а путем серијског порта.

Физички GPS сензор имаће антену за пријем радио таласа са GPS сателита и конвертовање GPS сигнала у GPS податке. Виртуелна верзија симулира ово омогућавајући вам да подесите географску ширину и дужину, пошаљете сирове NMEA реченице или отпремите GPX датотеку са више локација које се могу враћати секвенцијално.

🎓 NMEA реченице ће бити обрађене касније у овој лекцији

Додавање сензора у CounterFit

Да бисте користили виртуелни GPS сензор, потребно је да га додате у CounterFit апликацију.

Задатак - додавање сензора у CounterFit

Додајте GPS сензор у CounterFit апликацију.

  1. Направите нову Python апликацију на вашем рачунару у фасцикли названој gps-sensor са једном датотеком названом app.py и Python виртуелним окружењем, и додајте CounterFit pip пакете.

    ⚠️ Можете се позвати на упутства за креирање и подешавање CounterFit Python пројекта у лекцији 1 ако је потребно.

  2. Инсталирајте додатни Pip пакет за инсталацију CounterFit shim-а који може комуницирати са сензорима базираним на UART-у преко серијске везе. Уверите се да ово инсталирате из терминала са активираним виртуелним окружењем.

    pip install counterfit-shims-serial
    
  3. Уверите се да је CounterFit веб апликација покренута.

  4. Направите GPS сензор:

    1. У оквиру Create sensor у панелу Sensors, из падајућег менија Sensor type изаберите UART GPS.

    2. Оставите Port подешен на /dev/ttyAMA0.

    3. Изаберите дугме Add да бисте креирали GPS сензор на порту /dev/ttyAMA0.

    Подешавања GPS сензора

    GPS сензор ће бити креиран и појавиће се на листи сензора.

    Креирани GPS сензор

Програмирање GPS сензора

Виртуелни IoT уређај сада може бити програмиран да користи виртуелни GPS сензор.

Задатак - програмирање GPS сензора

Програмирајте апликацију за GPS сензор.

  1. Уверите се да је апликација gps-sensor отворена у VS Code-у.

  2. Отворите датотеку app.py.

  3. Додајте следећи код на врх app.py да бисте повезали апликацију са CounterFit-ом:

    from counterfit_connection import CounterFitConnection
    CounterFitConnection.init('127.0.0.1', 5000)
    
  4. Додајте следећи код испод овог да бисте увезли потребне библиотеке, укључујући библиотеку за CounterFit серијски порт:

    import time
    import counterfit_shims_serial
    
    serial = counterfit_shims_serial.Serial('/dev/ttyAMA0')
    

    Овај код увози модул serial из Pip пакета counterfit_shims_serial. Затим се повезује на серијски порт /dev/ttyAMA0 - ово је адреса серијског порта који виртуелни GPS сензор користи за свој UART порт.

  5. Додајте следећи код испод овог да бисте читали са серијског порта и штампали вредности на конзолу:

    def print_gps_data(line):
        print(line.rstrip())
    
    while True:
        line = serial.readline().decode('utf-8')
    
        while len(line) > 0:
            print_gps_data(line)
            line = serial.readline().decode('utf-8')
    
        time.sleep(1)
    

    Дефинише се функција print_gps_data која штампа линију прослеђену њој на конзолу.

    Затим код бесконачно петља, читајући што више линија текста може са серијског порта у свакој итерацији. Позива функцију print_gps_data за сваку линију.

    Након што су сви подаци прочитани, петља спава 1 секунду, а затим покушава поново.

  6. Покрените овај код, водећи рачуна да користите други терминал од оног на којем је CounterFit апликација покренута, како би CounterFit апликација остала активна.

  7. У CounterFit апликацији, промените вредност GPS сензора. Можете то урадити на један од следећих начина:

    • Подесите Source на Lat/Lon и поставите експлицитну географску ширину, дужину и број сателита који се користе за GPS фиксацију. Ова вредност ће бити послата само једном, па означите Repeat кутију да би се подаци понављали сваке секунде.

      GPS сензор са изабраним lat lon

    • Подесите Source на NMEA и додајте неке NMEA реченице у текстуални оквир. Све ове вредности ће бити послате, са кашњењем од 1 секунде пре сваке нове GGA (позициона фиксација) реченице.

      GPS сензор са подешеним NMEA реченицама

      Можете користити алат као што је nmeagen.org за генерисање ових реченица цртањем на мапи. Ове вредности ће бити послате само једном, па означите Repeat кутију да би се подаци понављали једну секунду након што су сви послати.

    • Подесите Source на GPX датотеку и отпремите GPX датотеку са локацијама стазе. Можете преузети GPX датотеке са бројних популарних сајтова за мапирање и планинарење, као што је AllTrails. Ове датотеке садрже више GPS локација као стазу, а GPS сензор ће враћати сваку нову локацију у интервалима од 1 секунде.

      GPS сензор са подешеном GPX датотеком

      Ове вредности ће бити послате само једном, па означите Repeat кутију да би се подаци понављали једну секунду након што су сви послати.

    Када конфигуришете GPS подешавања, изаберите дугме Set да бисте потврдили ове вредности за сензор.

  8. Видећете сирови излаз са GPS сензора, нешто попут следећег:

    $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
    $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
    

💁 Овај код можете пронаћи у фасцикли code-gps/virtual-device.

😀 Ваш програм за GPS сензор је успешно завршен!


Одрицање од одговорности:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције Co-op Translator. Иако се трудимо да превод буде тачан, молимо вас да имате у виду да аутоматизовани преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.