
GY-NEO6MV2 GPS Modülü Uygulaması

Merhaba arkadaşlar, bu yazımızda Trudyo Geliştirme Kartı kullanarak GPS konumu izleme uygulaması yapacağız. GPS konumlarını almak için GY-NEO6MV2 GPS Modülü‘nü kullanacağız. Ayrıca GY-NEO6MV2 GPS Modülü‘nden okuduğumuz verileri HC-06 Bluetooth Modül kullanarak gözlemleyeceğiz.
Eğer GY-NEO6MV2 GPS Modülü hakkında ayrıntılı bilgi almak isterseniz aşağıdaki yazımızı incelemenizi öneririz. Ek olarak, Trudyo Geliştirme Kartı‘nın konfigürasyon ayarlarını yapmak için aşağıdaki yazımızı inceleyebilirsiniz.
https://youtu.be/Cox4RN5P_pQ Merhaba arkadaşlar, Trudyo Geliştirme Kartı’nızı ile ilk uygulamalarınızı gerçekleştirmek mi istiyorsunuz? Başlamadan önce konfigürasyon...
GY-NEO6MV2, HC-06 ve Trudyo Geliştirme Kartı Bağlantı Şeması

GY-NEO6MV2 GPS Modülü Pin Şeması

HC-06 Bluetooth Modülü Pin Şeması
Yukarıda GY-NEO6MV2 GPS Modülü ve HC-06 Bluetooth Modülü‘nün pin şemaları görünmektedir. Her iki modülde UART protokolü ile ve 9600 baud hızında iletişim kurmaktadır.
GY-NEO6MV2 GPS Modülü ve HC-06 Bluetooth Modülü‘nün Trudyo Geliştirme Kartı ile bağlantı şeması aşağıda belirtilmiştir. Ayrıca kablo bağlantı şeması da aşağıdaki tabloda belirtilmiştir.

Trudyo Geliştirme Kartı | GY-NEO6MV2 ve HC-06 |
---|
5V | VCC | |
C7 | TX | |
C6 | RXD | |
GND | GND |
GY-NEO6MV2 GPS Modülü Uygulama Kodları
// Connections
sbit LED at LATA4_bit; // Dahili LED RA4 Pinine Bagli
#include "neo6m.c"
void main() {
// Port Giris- ikis Se imi (0: ikis, 1:Giris)
TRISA=0b00000000;// [][][][LED][][][][]
TRISB=0b00000000;// [][][][][][][][]
TRISC=0b10000000;// [RX-GPS_TX][TX-HC06_RX][][][][][][]
TRISD=0b00000000;// [][][][][][][][]
TRISE=0b00000000;// [[][][][][][][][]
// Port Analog-Dijital Giris Se imi (0:Dijital, 1:Analog)
ANSELA=0b00000000;// [][][][][][][][]
ANSELB=0b00000000;// [][][][][][][][]
ANSELC=0b00000000;// [][][][][][][][]
ANSELD=0b00000000;// [][][][][][][][]
ANSELE=0b00000000;// [][][][][][][][]
// Port Temizleme
LATA=0x00;
LATB=0x00;
LATC=0x00;
LATD=0x00;
LATE=0x00;
UART1_Init(9600); // UART Hazirla (RX -> GPS_TX, TX -> HC06_RX)
UART1_Write_Text("GPS Hazirlaniyor...\r\n"); // Program baslatilirken bluetooth üzerinden yazi gönder
// Main loop
while(1) {
if(UART1_Data_Ready()){ // UART verisi geldiyse
if(ReadGPS()){ // GPS verilerini oku
UART1_Write_Text(GPS_DATE); // Tarih verisini UART ile gönder
UART1_Write_Text(" ");
UART1_Write_Text(GPS_TIME); // Saat verisini UART ile gönder
UART1_Write_Text(" - ");
UART1_Write_Text(GPS_LAT); // Enlem verisini UART ile gönder
UART1_Write_Text(GPS_NS); // Kuzey/Güney verisini UART ile gönder
UART1_Write_Text(" - ");
UART1_Write_Text(GPS_LONG); // Boylam verisini UART ile gönder
UART1_Write_Text(GPS_EW); // Dogu/Bati verisini UART ile gönder
UART1_Write_Text("\r\n");
}
}
}
}
Uygulama Kodları Açıklaması
1. Bağlantı Tanımlamaları
sbit
tanımlaması ile bir pine farklı bir isim ataması yapılabilir. Bu sayede, gerekmesi durumunda bağlantı noktalarını dilediğiniz başka bir pine aktarabilirsiniz. Bu yöntem ile çok daha anlaşılabilir program kodları yazabilirsiniz.
// Connections
sbit LED at LATA4_bit; // Dahili LED RA4 Pinine Bagli
A0 pini giriş olarak kullanılacak ise RA0_bit olarak tanımlanmalı,
A0 pini çıkış olarak kullanılacak ise LATA0_bit olarak tanımlanmalıdır.
2. Kütüphane Tanımlamaları
#include "neo6m.c"
#include
tanımlaması ile harici bir dosyayı projenize dahil edebilirsiniz. Dahil etmek istediğiniz dosyanın proje klasörü içerisinde olması gerekmektedir. Örnekteki komut satırında proje klasörü içerisinde Library alt klasöründe bulunan neo6m.c
kütüphane dosyası programa dahil edilmiştir.
3. Giriş/Çıkış Seçimleri
// Port Giris- ikis Se imi (0: ikis, 1:Giris)
TRISA=0b00000000;// [][][][LED][][][][]
TRISB=0b00000000;// [][][][][][][][]
TRISC=0b10000000;// [RX-GPS_TX][TX-HC06_RX][][][][][][]
TRISD=0b00000000;// [][][][][][][][]
TRISE=0b00000000;// [[][][][][][][][]
TRIS
kaydedicisi bir portun pinlerinin giriş olarak mı, yoksa çıkış olarak mı kullanılacağını belirleyen kaydedicidir. 0 değeri bir pinin çıkış olarak kullanıldığını belirtirken, 1 değeri ise ilgili pinin giriş olarak kullanılacağını belirtir. Burada TRISC kaydedicisinin 7 nolu biti GY-NEO6MV2 GPS Modülü‘nün TX pinine bağlanmış ve bu pin üzerinden Trudyo Geliştirme Kartı‘na veri geleceği için 1 değerini almıştır. Ayrıca TRISC kaydedicisinin 6 nolu biti ise HC-06 Bluetooth Modülü‘nün RXD pinine bağlanmış ve bu bağlantı üzerinden HC-06 Bluetooth Modülü‘ne veri gönderileceği için 0 değerini almıştır. 4. Analog/Dijital Giriş Seçimleri
// Port Analog-Dijital Giris Seçimi (0:Dijital, 1:Analog)
ANSELA=0b00000000; // [][][][][][][][]
ANSELB=0b00000000; // [][][][][][][][]
ANSELC=0b00000000; // [][][][][][][][]
ANSELD=0b00000000; // [][][][][][][][]
ANSELE=0b00000000; // [][][][][][][][]
ANSEL
kaydedicisi bir portun pinlerinin dijital giriş olarak mı, yoksa analog giriş olarak mı kullanılacağını belirleyen kaydedicidir. 0 değeri bir pinin dijital giriş olarak kullanıldığını belirtirken, 1 değeri ise ilgili pinin analog giriş olarak kullanılacağını belirtir.
5. Portları Temizleme
// Port Temizleme
LATA=0x00;
LATB=0x00;
LATC=0x00;
LATD=0x00;
LATE=0x00;
LAT
kaydedicisi çıkış olarak ayarlanan bir portun pinlerini lojik-1 veya lojik-0 olarak ayarlamak için kullanılan kaydedicidir. Program başlangıcında portların varsayılan değerleri eğer gerekiyorsa güncellenmeli, gerekmiyor ise temizlenmelidir.
6. UART Hazırlama
UART1_Init(9600); // UART Hazirla (RX -> GPS_TX, TX -> HC06_RX)
UART1_Write_Text("GPS Hazirlaniyor...\r\n"); // Program baslatilirken bluetooth üzerinden yazi gönder
UART1_Init
fonksiyonu donanımsal UART’ı hazırlamak için kullanılır. Donanımsal UART haberleşmesi için C7 ve C6 pinleri kullanılmaktadır. Fonksiyon sadece UART haberleşmesinde kullanılacak iletişim hızı (baud rate) parametresini almaktadır. Uygulamamızda kullandığımız GY-NEO6MV2 GPS Modülü ve HC-06 Bluetooth Modülü varsayılan olarak 9600 baud hızında iletişim kurduğu için UART’ımızı 9600 baud ile hazırlıyoruz. Bu işlemden sonra UART1_Write_Text()
fonksiyonu ile veri göndermeye başlayabiliriz.
7. GPS Verilerini Okuma ve Okunan Değerleri Gönderme
// Sonsuz Dongu
while(1) {
if(UART1_Data_Ready()){ // UART verisi geldiyse
if(ReadGPS()){ // GPS verilerini oku
UART1_Write_Text(GPS_DATE); // Tarih verisini UART ile gönder
UART1_Write_Text(" ");
UART1_Write_Text(GPS_TIME); // Saat verisini UART ile gönder
UART1_Write_Text(" - ");
UART1_Write_Text(GPS_LAT); // Enlem verisini UART ile gönder
UART1_Write_Text(GPS_NS); // Kuzey/Güney verisini UART ile gönder
UART1_Write_Text(" - ");
UART1_Write_Text(GPS_LONG); // Boylam verisini UART ile gönder
UART1_Write_Text(GPS_EW); // Dogu/Bati verisini UART ile gönder
UART1_Write_Text("\r\n");
}
}
}
Sonsuz döngü içerisinde sürekli UART’dan veri gelip gelmediği kontrol edilir. Eğer gelen bir veri varsa ReadGPS
fonksiyonu ile GPS verileri okunur ve GPS_DATE, GPS_TIME, GPS_LAT, GPS_NS, GPS_LONG ve GPS_EW verileri güncellenir. Okuduğumuz verileri doğrudan bir mobil uygulamaya gönderdiğimiz bu uygulamada dilerseniz verileri farklı formatlara dönüştürerek kullanabilirsiniz.
Bir uygulamanın daha sonuna gelmiş bulunmaktayız. Uygulamaya ait dosyaları program kodları bölümünden indirebilirsiniz. Merak ettiğiniz ve aklınıza takılan soruları aşağıda 👇 yorum olarak bize iletebilirsiniz. İyi çalışmalar. 🙂 #geliştirmeyebaşla
Yorum yapmak için giriş yapmalısınız.