B

GPS veri görüntüleme

Başlatan Bülent, 02 Nisan 2013, 17:36:00

Bülent

Arkadaşlar Merhaba,

Hem forumda hem de PİC konularında yeniyim. ETE hocamızın derslerine çok teşekkür ediyorum. GPS modül alıp proje yapmayı düşünürken, önce elimdeki Magellan Explorist 400  GPS el cihazının USB çıkışındaki $GPRMC cümlesini LCD ekranda yazdırmak üzere 16F628A kullanarak çeşitli PBP kodları yazarak denedim fakat başarılı olmadı, acaba nerede yanlış yapıyorum ?
NOT:
1-LCD ve PIC çalışıyor ekranda "GPS Proje" ve  "16F628A" yazıları çıkıyor,
2-Ayrıca baudrate 16572 ile de denedim
3-GPS cihazının USB çıkışını PC' ye bağlayınca datayı gayet güzel alıyorum

DEFINE __16F628A
DEFINE __16F628A,XT_OSC,
DEFINE __16F628A,WDT_ON
DEFINE __16F628A,PROTECT_OFF
DEFINE __16F628A,MCLR_OFF
DEFINE LCD_DREG PORTB 'LCD data bacakları PortB de bağlı
DEFINE LCD_DBIT 4 'LCD data bacakları 4. bitten başlıyor                       
DEFINE LCD_EREG PORTB 'LCD Enable Bacağı PortB de bağlı
DEFINE LCD_EBIT 3 'LCD Enable Bacağı 3. bite bağlı
DEFINE LCD_RWREG PORTB 'LCD RW Bacağı PortB de bağlı
DEFINE LCD_RWBIT 2 'LCD RW Bacağı 2. bite bağlı
DEFINE LCD_RSREG PORTB 'LCD RS Bacağı PortB de bağlı
DEFINE LCD_RSBIT 1 'LCD RS bacağı 1. Bite bağlı
DEFINE LCD_BITS 4 'LCD 4 bit olarak bağlı
DEFINE LCD_LINES 2 'LCD 2 sıra olarak çalışıyor.
DEFINE OSC 4
CMCON = 7

baudGPS CON 188
GPSin VAR PORTA.0
GELEN1 var byte
GELEN2 var byte
GELEN3 var byte
GELEN4 var byte
TRISA=%00000001 'A.0 portu çıkış olarak ayarlandı
TRISB=0
PORTA=0
PORTB=0 
LCDOUT $FE, 1, "GPS Proje" 
LCDOUT $FE, $c0, "16F628A"
pause 800
GPS:
SerIn2 GPSin,baudGPS,[wait("$GPRMC"),skip 1,DEC1 GELEN1,DEC1 GELEN2,DEC1 GELEN3,DEC1 GELEN4]
LCDOut $FE, 1,"SAAT:",DEC1 GELEN1,DEC1 GELEN2,":",DEC1 GELEN3,DEC1 GELEN4
PAUSE 1000
GOTO GPS
END

Mucit23

#1
USB olduğuna eminmisin. Yanlışın olmalı. Bu tür modüller genellikle Rs232 ile haberleşir. Yani senin Datayı Usart ile alman gerekir. Eğer geçketen USB ile haberleşiyorsa ve USBdata hattından RS232 deki gibi ver gelmesini bekliyorsan tamamen yanlış yoldasın demektir. Bu durumda 628 ile okuman mümkün değildir.

Elindeki modül nasıl birşey datasheet felan eklede bakalım?
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Bülent

Deneme yaptığım GPS modül değil, el tipi GPS, PC bağlantı kablosu ise USB.

     

Önce USB data çıkışını D+:yeşil direkt 628' in RA0' bacağına vermiştim. Fakat sonra benimde  "USART-628 desteklememe durumu" aklıma geldi. Araya bir transistör koyup uydurmak istedim ama o da olmadı. Belki daha ciddi bir USB-RS232 dönüştürücü 628 ile durumu kurtarır mı acaba ?
Mesela böyle bir şey ??

http://antrak.org.tr/index.php?option=com_content&view=article&id=430:basit-rs232-seviye-dntrc&catid=52:ubat&Itemid=85

Mucit23

Komple yanlış yoldasın!

Dünyanın en kaliteli USB_Rs232 dönüştürücüsünü kullansan yine çalıştıramazsın sebebleri şöyle;

Elindeki Cihaz Slave olarak çalışır. Başka bir USB cihazıyla iletişim kurabilmesi için USB Host Desteği olması lazımdırki bu tür cihazlarda bu özellik bulunmaz. Yani Sadece bilgisayar ile bağlantı kurabilir.  Oda Bağlantıyı bilgisayar başlatır veya durdurur. Senin Cihazın sadece bilgisayardan emir bekler emirlere uyar.

USB Rs232 dönüştürücüde bu şekilde çalışır. Bu yüzden eğer illa kordinat bilgilerini alıp pice gönderip birşeyler yaptırmak istersen Arada bir bilgisayar olmak zorunda.

Ayrıca Elindeki GPS cihazının PC programı var. Yani USB iletişimi Sadece kendi pc programıyla çalışacak şekilde yapılmış. usb ve bu program dışında cihazdaki verileri bilgisayara aktaramazsın.

Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Bülent

Tamam anlıyorum, yanıt için tşk.ler. Aslında fikir; aşağıdaki linkteki arkadaş yapmış, gayet de güzel çalıştırmış. Ama şimdi anlaşılıyor ki; onun kullandığı GPS cihaz çıkışı RS232 imiş, herhalde  >:(

http://antrak.org.tr/index.php?option=com_content&view=article&id=584:pic-uygulamalar-44&catid=29:aralk24&Itemid=28


Bülent

Bu konuyu benim daha iyi anlamaya ve biraz daha yardıma ihtiyacım var, şöyleki;

1-"Mucit23" demiş ki;
"Datayı Usart ile alman gerekir. Eğer gerçekten USB ile haberleşiyorsa ve USBdata hattından RS232 deki gibi veri gelmesini bekliyorsan tamamen yanlış yoldasın demektir. Bu durumda 628 ile okuman mümkün değildir."

2-"ETE" Hoca 7. Derste demiş ki;
"diğer bir komut HSERIN komutu olup yalnızca Hardware Serial Port'u (USART) olan Pic'ler için kullanılabilir. Bu port PIC16F628 , PIC16F876, PIC16F877 gibi pic lerde bulunmakta 16F84/A da bulunmamaktadır. Dolayısıyla bu komutu kullanabilmemiz için öncelikle kullandıgımız Pic'in bu porta sahip olup olmadıgını ögrenmemiz gerekecektir.

O halde, yukarıda yazdığım kodlarda "serin2" yerine  "hserin" komutunu kullanarak 16F628 PIC ile
bu iş halledilebilir diye düşünüyorum, halledilemiyorsa da sebebi nedir ?

ete

USB ile RS232 bir birinden farklı haberleşme protokolleridir.  Bu nedenle USB için üretilmiş bir aleti RS232 den haberleştiremezsin.  Yada tersini de yapamazsın. Serin, Hserin gibi komutlar tamamen RS232 komutlarıdır. 
RS232 yi USB üzerinden kullanmaya imkan tanıyan çeviriciler var. Bu çeviriciler her iki tarafta normal seri haberleşme komutları kullanılarak yapılabilmektedir. Bunun için her iki tarafta bir COM port kullanılır. USB çıkışlı tarafta ise yalnızca USB portu olacağı için orada sanal bir COM port oluşturulur.  Şimdi senin alet USB den çalıştığına göre çevirici ile kullanabilmen için alet üzerinde bir sanal port oluşturman gerekir. Bunu ancak bir PC de yapabilirsin. Bu şekilde spesifik bir işe yönelik üretilmiş aletlerde yapamacağın için sen RS232 protokolünü kullanamazsın. Zaten mantıklı düşünürsen daha iyi anlamanı sağlayacak ip uçları var elinde. Haberleşme kablon USB kablosu. Sen RS232 komutu kullanmak istiyorsun olabilirmi böyle bir şey? Tabiiki olamaz. Çevirici kullansan bile her iki uçta birer tane çevirici kullanman gerekir üstelik aletin üzerinde birde sanal Com port oluşturulması gerekir ki buda imkansız bir şeydir.
Yapabileceğin tek şey, USB haberleşmesini sular seller gibi öğrenirsin. Buna uygun bir denetleyici (18F serisinden bir denetleyici) seçersin ve paşa paşa haberleşirsin aletinle.

Ete

Mucit23

18f ile de olmaz hocam. Bizim kullandığımız piclerde sadece Usb device özelliği vardır. Dolayısıyla Usb hattında Iki adet slave cihazın olması Usb protokolünde bir anlam ifade etmez işleri yönetecek ve yürütecek bir master lazım.

Senin aygıtın ile usb ile haberleşebilmek için Usb OTG desteği olan mcu lar kullanılmalıdır. Osb OTG  desteği olan mcu lar hem usb host hemde usb device gibi çalışır. Örneğin şimdilerde kullandığımız Cep telefonlarının çoğu Usb Otg desteği bulunur. Yani bilgisayara bagladığımızda Usb device  gibi çalışır. Usb protokolünün yönetimi bilgisayarın elindedir. Fakat aynı telefona bir usb flash bellek, Mouse veya usb klavye taktığınız anda Telefon Usb host moduna geçip yönetici olur. Bağlanan aygıtları yönetir.

Bukadar teknik bilgiden sonra ufak bir tavsiyem olacak. Elindeki cihazla uğraşmayı bırak. Bir tane gps modülü alıp paşa paşa Rs232 ile haberleş.

Usb kafayı sıyırtacak kadar karmaşık bir iletişim protokolüdür. Bu bahsettiğim usb host haberleşmesini yapabilmek ileri düzey program bilgisi gerektirir. Basic le de olmaz.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Bülent

Ve nihayet mutlu son  :), yukarıda görülen Magellan Explorist El GPS' inin USB ucunundaki datayı doğruca (arada 2 x BC108) PIC 16F628' e vererek istediğim sonuç oldu.



PIC' lerle daha şurasında bir ay önce tanışan birisi olarak yoğun bir öğrenme süreci oldu ve elbette yaşadığım deneyimleri ETEForum' da paylaşıp yazacağım.


Mucit23

#9
Sen usb den seri olarak data okuduğuna eminmisin? Elindeki ihaz nasıl birşey. USB konnektörünü sadece konnektör olarakmı kullanıyor.

O işlemciye nası bir kod yazdın çok merak ediyorum?
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

F®T

Usb yok.muhtemelen uart haberlemesi.transistorlerde rs232 haberlesmesi icin
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ELZEMEFE

yaa ben yanlış  görmüyorum deil mi  . o resimde de usb den o şekilde veri alındıysa...  orda başka bir şey  olmalı .. !!!

F®T

#12
fotografın tamamına bakmak lazım .sanki kamera şakası gibi duruyor. ;D Bülent hocam bu konu ile ilgili biraz daha bilgilendirirsen yada program cihaz bağlantısı gibi bilgileri verirsen herkesin konuyu anlaması açısından iyi olacak diye düşünüyorum.....
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

halilgaliç

dikkatimi ceken ayrı bi nokta usb nin D- ve D+ kullanmadan direkt vcc ve d- kullanılmış.

ete

Peki ekranda ne gösteriyor??????
Bence gaza gelmeyin. Senaryolar üretmeyin. En iyisi yapan açıklasın. Bakalım mantıklı bir açıklama gelecekmidir.

Ete

Powered by EzPortal