29 Ağustos 2019 Perşembe

pickat neo6mv2 gps modül proton basic kodu




Gps modül gy-neo6mv2 ile hazırladığım projede proton basic 3.2.5.5 kullandım. Kodlar ve açıklamalara aşağıdan bakabilirsiniz:


' AÇIKLAMA: NEO6MV2 GPS MODÜLÜ İLE KULLANILABİLECEK PROTON BASİC (3.2.5.5) DEMO 'KODUDUR.' TEST PLATFORMU: Pickat pic geliştirme kartı www.pickat.org
' GPS MODÜL: neo6mv2 (GY-NEO6MV2)(GPS6MV2)(modül seri iletişim kullanır, ilk 'çalıştırmada '10 dakika açık alanda sadece voltaj (max 5 volt) veriniz. Daha 'sonra cam kenarı bir yerde sinyal 'alabilirsiniz)Device = 18F2550  'Kullanılan işlemci
'Device = 16f876a  'Kullanılan işlemci olarak seçilebilir, sda-scl pinleri 14-'15'te...
XTAL 20          'Kullanılan kristal değeri (mhz)OPTIMISER_LEVEL=2 'Kod optimize açık
ALL_DIGITAL = true
'CMCON = 7Declare FLOAT_ROUNDING = On'Declare FLOAT_DISPLAY_TYPE = 1 'OR FAST'4x20 LCD TANIMLAMALARI
Declare LCD_DTPIN PORTB.4
Declare LCD_RSPIN PORTB.2
Declare LCD_ENPIN PORTB.3
Declare LCD_INTERFACE 4
Declare LCD_LINES 4
Declare LCD_TYPE 0
Declare LCD_COMMANDUS = 2000
Declare LCD_DATAUS =50 ' YADA 255
' Gps modül sürekli bilgi gönderiyor, bu bilgiyi almak yeterli, modül rx ucunu 'bağlamanıza gerek 'yok.
Declare HSERIAL_BAUD  = 9600      ' SERİ İLETİŞİM HIZI 9600 BAUD, GPS MODÜL '9600 BAUDDeclare HSERIAL_RCSTA = %10010000  ' SERİ PORT AÇILIYOR VE SÜREKLİ VERİ 'ALIŞINA 'AYARLANIYORDeclare HSERIAL_TXSTA = 100100  ' SERİ PORT VERİCİ 'MODÜLÜ AÇILIYOR - pickat 'pin:TX1 (portc.7)
Declare HSERIAL_SPBRG  = 129  '20mhz kristal için verilen değer, Pickat 'üzerinde 20 mhz kristal 'bulunuyor.
'Declare HSERIAL_SPBRG = 64  '10mhz kristal için verilen değer...'Declare HSERIAL_SPBRG= 12  '8mhz kristal için verilen değer...
Dim verial As DWord ' GELEN GENEL DATA
Dim GPSSAAT[7] As Byte ' GENEL DATADAN AYRIŞRITILAN ZAMAN BİLGİSİ DEĞİŞKENİ
Dim MESAJ[9]  As Byte ' GENEL DATADAN AYRIŞRITILAN KUZEY DOĞU KOORDİNAT 'BİLGİLERİ DEĞİŞKENİ
Dim SAY As Byte ' SAYAÇ DEĞİŞKENİ
TRISA = 000001
TRISB = 000011
TRISC = %10000000
PORTA=0
PORTB=0
PORTC=0
verial = 0
Cls

gps_al1:  'GPS saat verisi

HSerIn [verial,skip 5,Str GPSSAAT\12]  'GELEN BİLGİ 5. KARAKTER DEĞERİ VE SONRASI 'ZAMAN SAAT VERİR

'GELEN DEĞERLERDEN 48 ÇIKARILARAK LCD KARAKTER GÖSTERİMİNE 'HAZIRLANIYOR:
For SAY=0 To 6
  GPSSAAT[SAY]=GPSSAAT[SAY]-48
Next
'GREENWICH 3 SAAT ZAMAN FARKI DÜZELTME KODU:
If GPSSAAT[1] <= 9 Then
GPSSAAT[1] = GPSSAAT[1] + 3
End If

If GPSSAAT[0] = 1 Then
GPSSAAT[1] = GPSSAAT[1] - 3
End If
'BİLGİ LCDYE YAZILIYOR:
Print At 1,1,"SAAT :", " ", #GPSSAAT[0], #GPSSAAT[1],":",#GPSSAAT[2],#GPSSAAT[3],":",#GPSSAAT[4],#GPSSAAT[5]  ',#GPSSAAT[6],#GPSSAAT[7],#GPSSAAT[8],#GPSSAAT[9],#GPSSAAT[10]
DelayMS 1700  'bu değerin 1500-1900 ms arasında olması lazım

gps_al2: 'GPS 1. koordinat bilgisi

HSerIn [verial,skip 17,Str MESAJ\9]  'GELEN BİLGİ 17. KARAKTER DEĞERİ VE 'SONRASI 'ZAMAN SAAT VERİR
'GELEN DEĞERLERDEN 48 ÇIKARILARAK LCD KARAKTER GÖSTERİMİNE 'HAZIRLANIYOR:
For SAY=0 To 8
  MESAJ[SAY]=MESAJ[SAY]-48
Next

'BİLGİ LCDYE YAZILIYOR:
Print At 2,1,"KUZEY:"," ", #MESAJ[0],#MESAJ[1],".",#MESAJ[2],#MESAJ[3],".",#MESAJ[5],#MESAJ[6]  DelayMS 1700  'bu değerin 1500-1900 ms arasında olması lazım

gps_al3: 'GPS 1. koordinat bilgisi

HSerIn [verial,skip 31,Str MESAJ\9]  'GELEN BİLGİ 31. KARAKTER DEĞERİ VE 'SONRASI 'ZAMAN SAAT VERİR
'GELEN DEĞERLERDEN 48 ÇIKARILARAK LCD KARAKTER GÖSTERİMİNE 'HAZIRLANIYOR:
For SAY=0 To 7
  MESAJ[SAY]=MESAJ[SAY]-48
Next

'BİLGİ LCDYE YAZILIYOR:
Print At 3,1,"DOGU :"," ", #MESAJ[0],#MESAJ[1],".",#MESAJ[2],#MESAJ[3],".",#MESAJ[5],#MESAJ[6] 
DelayMS 1700  'bu değerin 1500-1900 ms arasında olması lazım
Cls

GoTo gps_al1
End

Gps modülden alınan ham veri, usb-serial modül ile gps sensörü bağlantısı kurulduğunda terminal programda görülen değerlerdir:


$GPRMC,112702.00,A,3946.64705,N,03033.56412,E,0.032,,280819,,,A*73
$GPVTG,,T,,M,0.032,N,0.059,K,A*2E
$GPGGA,112702.00,3946.64705,N,03033.56412,E,1,08,1.17,793.7,M,37.9,M,,*5C
$GPGSA,A,3,27,10,08,32,14,18,20,21,,,,,2.36,1.17,2.05*05
$GPGSV,4,1,14,01,13,293,18,04,48,181,21,08,57,292,15,10,52,045,36*7D
$GPGSV,4,2,14,11,20,305,19,14,38,157,10,16,06,204,,18,35,302,18*7A
$GPGSV,4,3,14,20,26,057,35,21,14,103,27,22,13,245,,24,01,051,*7A
$GPGSV,4,4,14,27,64,193,40,32,53,129,39*73
$GPGLL,3946.64705,N,03033.56412,E,112702.00,A,A*61


Örnek bir görsel ham veri için: