- Gerekli Bileşenler
- GPS Modülü
- STM32F103C8'den pin çıkışı
- Devre Şeması ve Bağlantılar
- GPS Modül Arayüzü için STM32F103C8 Programlama
- GPS ve STM32 ile Enlem ve Boylamı Bulma
GPS, Küresel Konumlandırma Sistemi anlamına gelir ve Dünya üzerindeki herhangi bir konumun Enlem ve Boylamını tam UTC saatiyle (Evrensel Zaman Koordineli) tespit etmek için kullanılır. Bu cihaz, saat ve tarihle birlikte her saniye uydudan koordinatları alır. GPS, mükemmel doğruluk sağlar ve ayrıca konum koordinatlarının yanı sıra başka veriler de sağlar.
Hepimiz GPS'in çok yararlı bir cihaz olduğunu ve konumu takip etmek için cep telefonlarında ve diğer taşınabilir cihazlarda çok yaygın olarak kullanıldığını biliyoruz. Evinizdeki taksi çağırmaktan uçakların irtifasını takip etmek için her alanda çok geniş bir uygulama yelpazesine sahiptir. Daha önce oluşturduğumuz GPS ile ilgili bazı faydalı projeler şunlardır:
- Araç Takip Sistemi
- GPS Saati
- Kaza Tespit Uyarı Sistemi
- Raspberry Pi GPS Modülü Arayüz Eğitimi
- GPS Modülünü PIC Mikrodenetleyiciyle Arayüz
Bu eğitimde, konum koordinatlarını bulmak ve bunları 16x2 LCD ekranda görüntülemek için bir GPS modülünü STM32F103C8 mikro denetleyici ile Arayüzleştireceğiz.
Gerekli Bileşenler
- STM32F103C8 Mikrodenetleyici
- GPS Modülü
- 16x2 LCD ekran
- Breadboard
- Kabloların Bağlanması
GPS Modülü
Bir GY-NEO6MV2 XM37-1612 GPS Modülüdür. Bu GPS modülünde dört pimli + 5V, GND, TXD ve RXD bulunur. Seri pinleri kullanarak iletişim kurar ve STM32F103C8'in Seri portu ile kolayca arayüzlenebilir.
GPS modülü, verileri NMEA formatında gönderir (aşağıdaki ekran görüntüsüne bakın). NMEA formatı, yalnızca bir cümleye ihtiyacımız olan birkaç cümleden oluşur. Bu cümle $ GPGGA'dan başlar ve koordinatları, zamanı ve diğer yararlı bilgileri içerir. Bu GPGGA, Küresel Konumlandırma Sistemi Düzeltme Verileri olarak adlandırılır. GPS verilerini ve dizelerini buradan okuma hakkında daha fazla bilgi edinin.
Aşağıda, açıklamasıyla birlikte bir örnek $ GPGGA Dizesi verilmiştir:
$ GPGGA, 104534.000,7791.0381, K, 06727.4434, E, 1,08,0,9,510,4, M, 43,9, M,, * 47
$ GPGGA, HHMMSS.SSS, enlem, K, boylam, E, FQ, NOS, HDP, rakım, M, yükseklik, M,, sağlama toplamı verileri
Ancak burada, bu eğitimde, NMEA cümlesinden gerekli tüm bilgileri alan bir TinyGPSPlus GPS kitaplığı kullanıyoruz ve eğitimde daha sonra göreceğimiz enlem ve boylamı elde etmek için basit bir kod satırı yazmamız gerekiyor..
STM32F103C8'den pin çıkışı
STM32F103C8 (MAVİ HAP) USART seri iletişim portları aşağıdaki pin çıkışı görüntüsünde gösterilmiştir. Bunlar mavi renklidir (PA9-TX1, PA10- RX1, PA2-TX2, PA3-RX2, PB10-TX3, PB11-RX3). Bu tür üç iletişim kanalına sahiptir.
Devre Şeması ve Bağlantılar
GPS modülü ve STM32F103C8 arasındaki Devre Bağlantıları
GPS Modülü |
STM32F103C8 |
RXD |
PA9 (TX1) |
TXD |
PA10 (RX1) |
+ 5V |
+ 5V |
GND |
GND |
16x2 LCD ve STM32F103C8 arasındaki bağlantılar
LCD Pin Hayır |
LCD Pin Adı |
STM32 Pin Adı |
1 |
Zemin (Gnd) |
Zemin (G) |
2 |
VCC |
5V |
3 |
VEE |
Potansiyometre Merkezinden Pim |
4 |
Kayıt Seçimi (RS) |
PB11 |
5 |
Okuma / Yazma (RW) |
Zemin (G) |
6 |
Etkinleştir (EN) |
PB10 |
7 |
Veri Bit 0 (DB0) |
Bağlantı Yok (NC) |
8 |
Veri Bit 1 (DB1) |
Bağlantı Yok (NC) |
9 |
Veri Bit 2 (DB2) |
Bağlantı Yok (NC) |
10 |
Veri Bit 3 (DB3) |
Bağlantı Yok (NC) |
11 |
Veri Bit 4 (DB4) |
PB0 |
12 |
Veri Bit 5 (DB5) |
PB1 |
13 |
Veri Bit 6 (DB6) |
PC13 |
14 |
Veri Bit 7 (DB7) |
PC14 |
15 |
LED Pozitif |
5V |
16 |
LED Negatif |
Zemin (G) |
Tüm kurulum aşağıdaki gibi görünecektir:
GPS Modül Arayüzü için STM32F103C8 Programlama
STM32 kullanarak GPS modülünü kullanarak konum bulmaya yönelik eksiksiz program bu projenin sonunda verilmiştir. STM32F103C8, Arduino IDE kullanılarak USB portu üzerinden PC'ye bağlanarak programlanabilir. Kodu yüklerken TX ve RX pinlerini çıkardığınızdan ve yükledikten sonra bağladığınızdan emin olun.
GPS ile STM32 arasında arayüz oluşturmak için önce GitHub link TinyGPSPlus'tan bir kitaplık indirmemiz gerekir. Kitaplığı indirdikten sonra, Arduino IDE'ye Sketch -> Include Library ->.zip Kitaplığı Ekle seçeneği ile dahil edilebilir. GPS ile Arduino arasında arayüz oluşturmak için aynı kütüphane kullanılabilir.
Öncelikle gerekli kitaplık dosyalarını ekleyin ve 16x2 LCD için pinleri tanımlayın:
#Dahil etmek
Sonra TinyGPSPlus sınıfından gps adlı bir nesne oluşturun.
TinyGPSPlus gps;
Bir Sonraki geçersiz kurulum kullanarak GPS modülüyle seri iletişim başlar (9600) Serial1.begin. Serial1, STM32F103C8'in Seri 1 portu (Pin-PA9, PA10) olarak kullanılır.
Serial1.begin (9600);
Ardından bir süre hoş geldiniz mesajını görüntüleyin.
lcd.begin (16,2); lcd.print ("Devre Özeti"); lcd.setCursor (0,1); lcd.print ("GPS'li STM32"); gecikme (4000); lcd.clear ();
Bir Sonraki geçersiz döngü (), biz GPS enlem ve boylam almak ve alınan veri seri monitör ve LCD geçerli olmadığını ve ekran bilgisi olup olmadığını kontrol edin.
Mevcut konum verilerinin geçerli olup olmadığını kontrol etme
loc_valid = gps.location.isValid ();
Enlem verilerini alır
lat_val = gps.location.lat ();
Boylam verilerini alır
lng_val = gps.location.lng ();
Geçersiz veri alınırsa, seri monitörde “*****” görüntülenir ve LCD'de “bekliyor” görüntülenir.
eğer (! loc_valid) { lcd.print ("Bekliyor"); Serial.print ("Enlem:"); Serial.println ("*****"); Seri.print ("Boylam:"); Serial.println ("*****"); gecikme (4000); lcd.clear (); }
Geçerli veri alınırsa, enlem ve boylam, seri monitörde ve LCD ekranda görüntülenir.
lcd.clear (); Serial.println ("GPS OKUMA:"); Seri.print ("Enlem:"); Serial.println (lat_val, 6); lcd.setCursor (0,0); lcd.print ("LAT:"); lcd.print (lat_val, 6); Seri.print ("Boylam:"); Serial.println (lng_val, 6); lcd.setCursor (0,1); lcd.print ("UZUN:"); lcd.print (lng_val, 6); gecikme (4000);
Aşağıdaki fonksiyon, verilerin okunması için gecikme sağlar. Seri bağlantı noktasındaki verileri aramaya devam eder.
statik boşluk GPSDelay (işaretsiz uzun ms) { işaretsiz uzun başlangıç = milis (); do { while (Serial1.available ()) gps.encode (Serial1.read ()); } while (milis () - başlangıç <ms); }
GPS ve STM32 ile Enlem ve Boylamı Bulma
Kurulumu oluşturduktan ve kodu yükledikten sonra, sinyali hızlı bir şekilde almak için GPS modülünü açık alana yerleştirdiğinizden emin olun. Bazen sinyalin alınması birkaç dakika sürer, bu yüzden biraz bekleyin. GPS modülünde sinyal almaya başladığında LED yanıp sönmeye başlayacak ve konum koordinatları LCD ekranda görüntülenecektir.
Google haritalarını kullanarak konumun enlem ve boylamını doğrulayabilirsiniz. GPS AÇIK olarak Google haritalarına gidin ve mavi noktayı tıklayın. Aşağıdaki resimde gösterildiği gibi adresi enlem ve boylam ile gösterecektir.
Tam kod ve Tanıtım videosunu aşağıda verilmiştir.