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/lt/3-transport/lessons/1-location-tracking/virtual-device-gps-sensor.md

7.5 KiB

Skaitykite GPS duomenis - Virtuali IoT Aparatūra

Šioje pamokos dalyje pridėsite GPS jutiklį prie savo virtualaus IoT įrenginio ir skaitysite jo duomenis.

Virtuali Aparatūra

Virtualus IoT įrenginys naudos imituotą GPS jutiklį, kuris yra pasiekiamas per UART naudojant nuoseklųjį prievadą.

Fizinis GPS jutiklis turi anteną, kuri priima radijo bangas iš GPS palydovų ir paverčia GPS signalus į GPS duomenis. Virtuali versija tai imituoja, leidžiant nustatyti platumą ir ilgumą, siųsti neapdorotas NMEA eilutes arba įkelti GPX failą su keliais vietos taškais, kurie gali būti grąžinami paeiliui.

🎓 NMEA eilutės bus aptartos vėliau šioje pamokoje

Pridėkite jutiklį prie CounterFit

Norėdami naudoti virtualų GPS jutiklį, turite jį pridėti prie CounterFit programos.

Užduotis - pridėkite jutiklį prie CounterFit

Pridėkite GPS jutiklį prie CounterFit programos.

  1. Sukurkite naują Python programą savo kompiuteryje aplanke, pavadintame gps-sensor, su vienu failu, pavadintu app.py, ir Python virtualią aplinką, tada pridėkite CounterFit pip paketus.

    ⚠️ Jei reikia, galite pasinaudoti instrukcijomis, kaip sukurti ir nustatyti CounterFit Python projektą 1-oje pamokoje.

  2. Įdiekite papildomą Pip paketą, kuris leidžia naudoti CounterFit shim, galintį bendrauti su UART pagrįstais jutikliais per nuoseklųjį ryšį. Įsitikinkite, kad tai darote terminale su aktyvuota virtualia aplinka.

    pip install counterfit-shims-serial
    
  3. Įsitikinkite, kad CounterFit žiniatinklio programa veikia.

  4. Sukurkite GPS jutiklį:

    1. Laukelyje Create sensor skiltyje Sensors išskleidžiamajame meniu Sensor type pasirinkite UART GPS.

    2. Palikite Port nustatytą kaip /dev/ttyAMA0.

    3. Pasirinkite mygtuką Add, kad sukurtumėte GPS jutiklį prievade /dev/ttyAMA0.

    GPS jutiklio nustatymai

    GPS jutiklis bus sukurtas ir pasirodys jutiklių sąraše.

    Sukurtas GPS jutiklis

Užprogramuokite GPS jutiklį

Dabar virtualus IoT įrenginys gali būti užprogramuotas naudoti virtualų GPS jutiklį.

Užduotis - užprogramuokite GPS jutiklį

Užprogramuokite GPS jutiklio programą.

  1. Įsitikinkite, kad gps-sensor programa yra atidaryta VS Code.

  2. Atidarykite app.py failą.

  3. Pridėkite šį kodą į app.py viršų, kad prijungtumėte programą prie CounterFit:

    from counterfit_connection import CounterFitConnection
    CounterFitConnection.init('127.0.0.1', 5000)
    
  4. Pridėkite šį kodą žemiau, kad importuotumėte reikalingas bibliotekas, įskaitant biblioteką CounterFit nuosekliajam prievadui:

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

    Šis kodas importuoja serial modulį iš counterfit_shims_serial Pip paketo. Tada jis prisijungia prie /dev/ttyAMA0 nuosekliojo prievado - tai yra nuosekliojo prievado adresas, kurį naudoja virtualus GPS jutiklis savo UART prievadui.

  5. Pridėkite šį kodą žemiau, kad skaitytumėte iš nuosekliojo prievado ir spausdintumėte reikšmes į konsolę:

    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)
    

    Apibrėžiama funkcija print_gps_data, kuri spausdina perduotą eilutę į konsolę.

    Toliau kodas vykdo begalinį ciklą, skaitydamas tiek teksto eilučių, kiek gali, iš nuosekliojo prievado kiekviename cikle. Jis kviečia funkciją print_gps_data kiekvienai eilutei.

    Kai visi duomenys yra perskaityti, ciklas laukia 1 sekundę ir bando dar kartą.

  6. Paleiskite šį kodą, užtikrindami, kad naudojate kitą terminalą nei tą, kuriame veikia CounterFit programa, kad CounterFit programa liktų aktyvi.

  7. CounterFit programoje pakeiskite GPS jutiklio reikšmę. Tai galite padaryti vienu iš šių būdų:

    • Nustatykite Source kaip Lat/Lon ir įveskite konkrečią platumą, ilgumą bei palydovų skaičių, naudojamą GPS fiksavimui. Ši reikšmė bus siunčiama tik vieną kartą, todėl pažymėkite Repeat, kad duomenys būtų kartojami kas sekundę.

      GPS jutiklis su pasirinktu lat lon

    • Nustatykite Source kaip NMEA ir pridėkite keletą NMEA eilučių į teksto laukelį. Visos šios reikšmės bus siunčiamos, su 1 sekundės pertrauka prieš kiekvieną naują GGA (vietos fiksavimo) eilutę.

      GPS jutiklis su nustatytomis NMEA eilutėmis

      Galite naudoti tokius įrankius kaip nmeagen.org, kad sugeneruotumėte šias eilutes, piešdami žemėlapyje. Šios reikšmės bus siunčiamos tik vieną kartą, todėl pažymėkite Repeat, kad duomenys būtų kartojami kas sekundę po to, kai viskas bus išsiųsta.

    • Nustatykite Source kaip GPX failą ir įkelkite GPX failą su maršruto vietomis. GPX failus galite atsisiųsti iš daugelio populiarių žemėlapių ir žygių svetainių, tokių kaip AllTrails. Šie failai turi kelias GPS vietas kaip maršrutą, o GPS jutiklis grąžins kiekvieną naują vietą kas 1 sekundę.

      GPS jutiklis su nustatytu GPX failu

      Šios reikšmės bus siunčiamos tik vieną kartą, todėl pažymėkite Repeat, kad duomenys būtų kartojami kas sekundę po to, kai viskas bus išsiųsta.

    Kai sukonfigūruosite GPS nustatymus, pasirinkite mygtuką Set, kad patvirtintumėte šias reikšmes jutikliui.

  8. Matysite neapdorotą GPS jutiklio išvestį, panašią į šią:

    $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
    

💁 Šį kodą galite rasti code-gps/virtual-device aplanke.

😀 Jūsų GPS jutiklio programa pavyko!


Atsakomybės apribojimas:
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą Co-op Translator. Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.