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.
-
Bilgisayarınızda
gps-sensor
adlı bir klasörde tek bir dosya olanapp.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.
-
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
-
CounterFit web uygulamasının çalıştığından emin olun.
-
Bir GPS sensörü oluşturun:
-
Sensors panelindeki Create sensor kutusunda, Sensor type açılır kutusunu açın ve UART GPS seçeneğini seçin.
-
Port ayarını /dev/ttyAMA0 olarak bırakın.
-
Add düğmesini seçerek
/dev/ttyAMA0
portunda GPS sensörünü oluşturun.
GPS sensörü oluşturulacak ve sensörler listesinde görünecektir.
-
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.
-
gps-sensor
uygulamasının VS Code'da açık olduğundan emin olun. -
app.py
dosyasını açın. -
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)
-
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 paketindenserial
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. -
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.
-
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.
-
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. -
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.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.
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.
-
-
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.