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

7.6 KiB

GPS Verilerini Okuma - Sanal IoT Donanımı

Bu dersin bu bölümünde, sanal IoT cihazınıza bir GPS sensörü ekleyecek ve ondan değerler okuyacaksınız.

Sanal Donanım

Sanal IoT cihazı, bir seri port üzerinden UART ile erişilebilen simüle edilmiş bir GPS sensörü kullanacaktır.

Fiziksel bir GPS sensörü, GPS uydularından gelen radyo dalgalarını almak için bir antene sahip olacak ve GPS sinyallerini GPS verilerine dönüştürecektir. Sanal versiyon, bir enlem ve boylam ayarlamanıza, ham NMEA cümleleri göndermenize veya sırasıyla döndürülebilecek birden fazla konum içeren bir GPX dosyası yüklemenize olanak tanıyarak bunu simüle eder.

🎓 NMEA cümleleri bu dersin ilerleyen bölümlerinde ele alınacaktır.

Sensörü CounterFit'e Ekleme

Sanal bir GPS sensörü kullanmak için, CounterFit uygulamasına bir tane eklemeniz gerekir.

Görev - Sensörü CounterFit'e ekleyin

GPS sensörünü CounterFit uygulamasına ekleyin.

  1. Bilgisayarınızda gps-sensor adlı bir klasörde tek bir dosya olan app.py ile yeni bir Python uygulaması oluşturun, bir Python sanal ortamı oluşturun ve CounterFit pip paketlerini ekleyin.

    ⚠️ Gerekirse ders 1'de CounterFit Python projesi oluşturma ve ayarlama talimatlarına başvurabilirsiniz.

  2. Seri bağlantı üzerinden UART tabanlı sensörlerle iletişim kurabilen bir CounterFit shim yüklemek için ek bir Pip paketi yükleyin. Bu işlemi, sanal ortamın etkin olduğu bir terminalden yaptığınızdan emin olun.

    pip install counterfit-shims-serial
    
  3. CounterFit web uygulamasının çalıştığından emin olun.

  4. Bir GPS sensörü oluşturun:

    1. Sensors panelindeki Create sensor kutusunda, Sensor typeılır kutusunu açın ve UART GPS seçeneğini seçin.

    2. Port ayarını /dev/ttyAMA0 olarak bırakın.

    3. Add düğmesini seçerek /dev/ttyAMA0 portunda GPS sensörünü oluşturun.

    GPS sensör ayarları

    GPS sensörü oluşturulacak ve sensörler listesinde görünecektir.

    Oluşturulan GPS sensörü

GPS Sensörünü Programlama

Sanal IoT cihazı artık sanal GPS sensörünü kullanacak şekilde programlanabilir.

Görev - GPS sensörünü programlayın

GPS sensörü uygulamasını programlayın.

  1. gps-sensor uygulamasının VS Code'da açık olduğundan emin olun.

  2. app.py dosyasınıın.

  3. Uygulamayı CounterFit'e bağlamak için app.py dosyasının en üstüne aşağıdaki kodu ekleyin:

    from counterfit_connection import CounterFitConnection
    CounterFitConnection.init('127.0.0.1', 5000)
    
  4. Bunun altına, CounterFit seri port kütüphanesi dahil olmak üzere bazı gerekli kütüphaneleri içe aktarmak için aşağıdaki kodu ekleyin:

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

    Bu kod, counterfit_shims_serial Pip paketinden serial modülünü içe aktarır. Daha sonra sanal GPS sensörünün UART portu için kullandığı /dev/ttyAMA0 seri portuna bağlanır.

  5. Bunun altına, seri porttan veri okumak ve değerleri konsola yazdırmak için aşağıdaki kodu ekleyin:

    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 adlı bir fonksiyon tanımlanır ve kendisine iletilen satırı konsola yazdırır.

    Daha sonra kod, her döngüde seri porttan mümkün olduğunca çok metin satırı okuyarak sonsuza kadar döner. Her satır için print_gps_data fonksiyonunu çağırır.

    Tüm veriler okunduktan sonra döngü 1 saniye uyur ve tekrar denemeye başlar.

  6. Bu kodu çalıştırın, CounterFit uygulamasının çalışmaya devam etmesi için CounterFit uygulamasını çalıştırdığınız terminalden farklı bir terminal kullandığınızdan emin olun.

  7. CounterFit uygulamasından GPS sensörünün değerini değiştirin. Bunu şu yöntemlerden biriyle yapabilirsiniz:

    • Source'u Lat/Lon olarak ayarlayın ve GPS sabitlemesi için kullanılan açık bir enlem, boylam ve uydu sayısı ayarlayın. Bu değer yalnızca bir kez gönderilecektir, bu nedenle verilerin her saniye tekrarlanması için Repeat kutusunu işaretleyin.

      Lat/Lon seçili GPS sensörü

    • Source'u NMEA olarak ayarlayın ve metin kutusuna bazı NMEA cümleleri ekleyin. Tüm bu değerler gönderilecek ve her yeni GGA (konum sabitleme) cümlesi okunmadan önce 1 saniyelik bir gecikme olacaktır.

      NMEA cümleleri ayarlanmış GPS sensörü

      Bu cümleleri oluşturmak için nmeagen.org gibi bir araç kullanabilirsiniz. Bu değerler yalnızca bir kez gönderilecektir, bu nedenle tümü gönderildikten bir saniye sonra verilerin tekrarlanması için Repeat kutusunu işaretleyin.

    • Source'u GPX dosyası olarak ayarlayın ve bir GPX dosyası yükleyin. Bu dosyaları AllTrails gibi popüler haritalama ve yürüyüş sitelerinden indirebilirsiniz. Bu dosyalar bir iz olarak birden fazla GPS konumu içerir ve GPS sensörü her yeni konumu 1 saniyelik aralıklarla döndürecektir.

      GPX dosyası ayarlanmış GPS sensörü

      Bu değerler yalnızca bir kez gönderilecektir, bu nedenle tümü gönderildikten bir saniye sonra verilerin tekrarlanması için Repeat kutusunu işaretleyin.

    GPS ayarlarını yapılandırdıktan sonra, bu değerleri sensöre uygulamak için Set düğmesini seçin.

  8. GPS sensöründen gelen ham çıktıyı göreceksiniz, örneğin:

    $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
    

💁 Bu kodu code-gps/virtual-device klasöründe bulabilirsiniz.

😀 GPS sensörü programınız başarılı oldu!


Feragatname:
Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz.