Bu proje için Arduino'nun yanı sıra ihtiyaç duyacağımız bir başka fiziksel donanım GPS modül. Şu an piyasada bir çok GPS modül bulunmakta, bu modullerden bazılarının eksileri ve artıları buradaki yazıda çok net bir biçimde anlatılmış. Vakti olan kişilerin yazıyı okuması çok faydalı olur. Benim bu proje için kullandığım modül ise PMB-648 GPS SiRF Internal Antenna. Şu anki fiyatı 39.99$. Ürünü Türkiye'de bulmak çok zor olduğu gibi kendi sitesinden sipariş verdiğiniz vakit fahiş fiyatlarda kargo bedeli alıyorlar. Ben Almanya'daki bir yakınım aracılığı ile ürünü alıp, cihazı kuzenim ile getirttim. Modül ile ilgili gerekli tüm bilgileri sitesinde bulabilirsiniz. Yazımı çok fazla uzatıp sizleri sıkmadan projeyi anlatmaya koyuluyorum.
Projede 4 ana faktör var. Bunlardan ilki konum, hız, zaman... gibi bilgilerin alındığı uydu, bu bilgileri almak için kullandığımız GPS modül, modülün aldığı bu bilgileri işleyen Arduino ve bu bilgilerin işlendiktan sonra aktarıldığı laptop, bilgisayar ya da navigasyon gibi platformlar.
Aşağıdaki görseller sırası ile GPS modülün bağlantı kablolarının ne işe yaradığını ve Arduino ile nasıl bağlanması gerektiğini gösteriyor. Sizde bağlantınızı bu görsellere göre yapabilirsiniz. Modüldeki kabloları basitçe açıklarsak. Siyah kablo topraklama(GROUND), kırmızı kablo volt(VCC), sarı kablo ise datanın aktığı kablodur.
Bağlantılarımızı yukarıdaki şekle göre yaptıktan sonra Arduino'yu USB aracılığı ile bilgisayarımıza bağlıyoruz. Şimdi yapacağımız işlem ise, Arduino ile GPS Modül arasındaki fiziksel bağlantıyı Arduino IDE kullanarak yazılım tarafı içinde gerçekleştirmek. Yapacağımız bu işlem sonrasında Arduino, Uydudan GPS modül aracılığı ile alınan bilgilere erişebilecek ve biz bu bilgileri Arduino IDE aracılığı ile görebileceğiz. Buradaki linkten kullandığınız platforma uygun Arduino IDE'yi indirebilirsiniz. (Bu arada ufak bir not düşeyim. Eğer Arduino IDE bilgisayarınızda yüklü değilse, yükledikten sonra Arduino'yu USB ile bilgisayarınıza bağlayın. Yüklemeden önce yapacağınız bağlantının hiç bir faydası olmayacaktır.) Ben 32-Bit Linux üzerinde çalıştığım için bu linkten indirme işlemini gerçekleştirdim. Arduino IDE'yi indirip çalıştırdıktan sonra karşınıza aşağıdaki gibi bir resim çıkacak.
Öncelikle buradan gps.ino dosyasını indirin. Yukarıdaki menuden sırası ile "File > Open" seçeneğini seçebilir ya da menunun altındaki ikonlardan "Open" ikonuna tıklayabilirsiniz, çıkan pencereden gps.ino dosyasını seçin. Seçtiğiniz dosyayı yukarıdaki menuden sırası ile "File > Upload" seçeneği ile ya da menunun altındaki ikonlardan "Upload" ikonuna tıklayarak Arduino'ya yollamış olursunuz. Şayet herhangi bir hata ile karşılaşırsanız, IDE size karşılaştığınız hata ile ilgili detaylı bilgi verecektir.
Buradaki kodu anlatmaya geçmeden önce GPS modülünden gelen "NMEA 0183" datası ile ilgili ufak bir bilgi vereyim. NMEA (National Marine Electronics Association) kısaca, içerisinde GPS modül bulunduran bir çok cihazda kullanılan seri ASCII haberleşme protokolüdür. Birçok çeşidi vardır. Bunlar;
$GPBOD - Bearing, origin to destination
$GPBWC - Bearing and distance to waypoint, great circle
$GPGGA - Global Positioning System Fix Data
$GPGLL - Geographic position, latitude / longitude
$GPGSA - GPS DOP and active satellites
$GPGSV - GPS Satellites in view
$GPHDT - Heading, True
$GPR00 - List of waypoints in currently active route
$GPRMA - Recommended minimum specific Loran-C data
$GPRMB - Recommended minimum navigation info
$GPRMC - Recommended minimum specific GPS/Transit data
$GPRTE - Routes
$GPTRF - Transit Fix Data
$GPSTN - Multiple Data ID
$GPVBW - Dual Ground / Water Speed
$GPVTG - Track made good and ground speed
$GPWPL - Waypoint location
$GPXTE - Cross-track error, Measured
$GPZDA - Date & Time
Bizim kullanacağımız tip $GPRMC (Recommended minimum specific GPS/Transit data) tipindeki data olacak. Yukarıdaki verilerin yapısı ile ilgili tüm bilgileri bu linkteki ve bu linkteki sitelerden alabilirsiniz. Yukarıdaki sitelerde de bulunan, veriyi ve bize ne anlam ifade ettiğini açıklayan ufak bir örneği sizlerle paylaşıyorum.$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
Where:
RMC Recommended Minimum sentence C
123519 Fix taken at 12:35:19 UTC
A Status A=active or V=Void.
4807.038,N Latitude 48 deg 07.038' N
01131.000,E Longitude 11 deg 31.000' E
022.4 Speed over the ground in knots
084.4 Track angle in degrees True
230394 Date - 23rd of March 1994
003.1,W Magnetic Variation
*6A The checksum data, always begins with *
Yukarıdaki veri, GPS modül tarafından uydudan alınan örnek bir RMC verisi. Verinin içeriğinde sırasıyla ait olduğu tip, verinin alındığı zaman dilimi, veriyi alan GPS modülünün aktif olup olmadığı, Longitude, Latitude, Hız(knot cinsinden(1 knot = 0.514444444 m/s)), takip açısı, verinin alındığı tarih, manyetik sapma ve verinin doğrulunun kontrolü için gerekli hemen hemen tüm network uygulamalarında bulunan checksum vardır. Projenin QT ayağıda olduğu için, tamamını bu yazıda anlatmayı planlamıyorum. Bir sonraki kısımda Arduino için yazdığımız kodu açıklayıp projenin QT ayağına değinmeyi planlıyorum. Bir sonraki yazıya kadar şimdilik herkese iyi günler diliyorum.
Merhaba, gps modülünün bağlantısı hakkında bir sorum olacaktı;
ReplyDeleteResimde görünen bacakları anladım. Fakat diğer bacaklar, anten vs. bunların bağlantısı yapılmayacakmı yoksa resimde gösterme ihtiyacımı duymadınız?
İyi günler.
Selam Arif, diğer bağlantıları yapmana gerek yok. Bu şekilde uydudan NMEA datasını çekebiliyorsun.
DeleteGÜZEL YAZI İÇİN TEŞEKKÜRLER
ReplyDeleteBen teşekkür ederim yardımcı olduysa ne mutlu.
DeleteMerhaba,
ReplyDeleteBu projeye benzer bir proje yapmaya çalışıyorum, benim yapacağım proje aracı verilen koordinatlara hareket ettirmek. Bunu ardunio ve gps modul ile sağlamayı düşünüyorum. Ardunio Uno'ya uygun hangi gps modulunu kullanmalıyım, aracı hareket ettirmek için ekstra neler kullanmam gerek (step motor, servo motor hangisini kullanabilirim)?
Şimdiden teşekkürler. İyi günler.
Merhaba, yukarıda anlattığım modül benim işimi görmüştü. Hem ucuz hem de Arduino ile uyumlu çalışıyor. Tavsiye ederim. Tabii senin gereksinimlerin doğrultusunda daha farklı modüllerde kullanabilirsin ama sanırım bu işini görür. Çalışan bir araç yapmak için ise internette çok fazla kaynak var. Bunlara göz atabilirsin. Başka bir yazıda belki bununla ilgili bir şeyler yazarım.
DeleteMerhaba bitirme projemiz bu konuya benzer,aracın gitmek istediği konumu c# üzerinden koordinatlar belirlenip arduinoya aktarıp aracın o konuma gitmesini sağlamak. Sizinle iletişime geçme gibi bir imkanım olabilirmi acaba ?Şimdiden teşekkürler.
Deleteiyi günler elektronik bilgim biraz zayıf özellikle seri haberleşmelerde. biraz kendimce araştırdım. gps modulunden arduinoya akan bilgiyi okuduğum zaman ilk okuyuşta ne görürüm değer olarak?
ReplyDeleteyani sormak istediğim nmea0183 formatındaki o yazıları tek okuyuşta hepsini mi görürüm? karakter karakter mi? sayı mı binary mi? yardımcı olabilirseniz çok memnun olurum. arduino ile bir gps modulunden alacağım konum,zaman, sürat değerleri başka bir sisteme aktarmak istiyorum?
Teşekkürler.
Merhaba yanlış hatırlamıyorsam, Arduino bu veriyi byte byte alıyordu fakat benim yazdığım gps.ino dosyasını kullanırsanız "Serial Monitor" bölümünde output olarak mesajı bütün olarak görebilirsiniz. "Serial Monitor" kısmına yazdırdığınız outputu başka bir program aracılığı ile string olarak alabilirsiniz. Mesela ben bu veriyi alıp QT üzerinde kullanmıştım. QT'ye de bu veri byte olarak geliyor ama bu veriyi stringe çevirebilirsiniz. High level dillerde conversion daha kolay oluyor. Tabi bunun için USB portunu okumanız gerekiyor.(Arduino'yu bilgisayarınıza USB ile bağladığınızı düşünüyorum) Bunun için QT'de serial port için bir kütüphane kullanmanız gerekebilir.
DeleteHocam merhaba! gps.ino dosyasının linki kırık. Güncellerseniz çok memnun olurum. Teşekkürler
ReplyDeleteLink talebiniz üzerine düzenlendi tekrar dener misiniz?
DeleteMerhaba hocam bende de Almanyadan aldigim Navilock 552ETTLmarka GPS modul var. Bir türlü serialmonitorden dogru verileri göremedim.
ReplyDeleteÌÌ8øÌÌÎÌÌÌÌ þþø þÌ þ ( Böyle veriler )
sizin programinizida yükledim ama serialmonitorden hicbirsey göremedim.
Yardimci olabilirseniz cok seviniriim.
Selam, bağlantıları doğru yaptığınıza emin misiniz? Ayrıca GPS modülden gelen verilerin tipi nedir? Marka farklı olduğu için belki gönderdiği veri tipi byte'tan farklı bir şeydir. Benim yazdığım program byte tipindeki veriyi alıp Serial Monitor'e bastırmaktadır.
Deletebu sorun sanırım iletişim hızıyla alakalı.
Deleteiyi günler ben arduino ile araç takip sistemi yapmak istiyorum burdaki veriyi nasıl bilgisayara veya telefona çekebilirim yardımcı olabilirmisiniz
ReplyDeleteAslında bu konu 3.yazının konusuydu. Fakat şu andaki programımın yoğunluğu nedeni ile yazamadım. Arduino'dan alınan veriyi, C++'daki SerialPort kütüphanesinin yardımı ile bilgisayara yollamak mümkün. Tabii Arduino'nun USB aracılığı ile bilgisayara bağlı olduğunu düşünüyorum. Bir diğer alternatif Arduino'ya takacağınız Wireless Shield ve xBee Card ile de atabilirsiniz. Ancak 2.yolu hiç denemedim.
DeleteMerhaba Hocam
ReplyDeleteBenimde GPS ile ilgili bir projem var.Ama benim GPS den yapmasını istediğim şey konum bulma değil.Arduino veya herhangi bir araçla küçük bigiler gönderip bu bilgileri aynen başka bir GPS modülü ile geri almak istiyorum.İşin kötüsüde öğrenciyim bu koduda bilgim yok ama emek sarfediyorum.Ayrıca imkanlarımda kısıtlı.Bana bu konuda detaylı bilgi lazım.Hsyn14.1996@gmail.com.Bana ulaşırsanız sevinirim.Haa bu arada adım hüseyin
Selam Hüseyin, öncelikle ufak bir kavram kargaşasını giderelim. GPS modülü mesaj alıp vermek mümkün değil, bu modül uydulardan aldığı bilgi ile konum bilgilendirmesi yapabilir. Senin dediğin işlem, karşılıklı wireless shield'i olup internete bağlanabilen 2 Arduino arasında yapılabilir. Ya da GSM modül aracılığı ile birbirine mesaj atan 2 Arduino arasında yapılabilir. Ancak bu ikinci ile ilgili pek fazla bilgim yok. Bana kalırsa önce Arduino başlangıç seti al ve üzerinde yavaş yavaş çalışmaya başla. Ardından yapmak istediğin proje ile ilgili internetten detaylı bilgiler edin. Ve yavaş yavaş parçalarını tedarik etmeye başla. Zira biraz pahalıya mal olabilir. Çünkü yapmak istediğin proje kolay gibi gözükse de aslında çok komplike bir çalışma. Ve değişik parçalar gerektirecektir. Bir anda tüm parçaları alıp bu karmaşıklığın içinde boğulmaktansa, yavaş yavaş küçük adımlarla gitmek daha yararlı olacaktır.
Deleteburdaki devrenin arduino kodlarını alabilirmiyim ? size zahmet yardımcı olursanız çok sevinirim :)
ReplyDeleteKodu yazıda paylaşmıştım, burada tekrar vereyim linkini.
DeleteLINK -> https://dl.dropboxusercontent.com/u/9452929/BLOG/LIBRARY/gps/gps.ino
Taner kardeşim cok buyuk sıkıntıdayım arduino ile basım cok buyuk dertte bi proje aldık tez icin ama altından kalkamadık bana ulasmalısın cok acil 4 kişinin hayatını kurtarırsın 05356766262 ogulcanataman@hotmail.com
DeleteYunus Unsal, öncelikle tanımadığın birsinden yardım istediğinde şu takındığın üslubu değiştirmelisin!
DeleteMerhaba Taner bey; Sabit bölgedeki Antenden, hareket halindeki bir anteni otomatik takip etmek istiyorum ( line of sight) bu konuyla ilgili yorumlarınızı ve/veya paylaşabileceğiniz bir doküman var mı acaba?
ReplyDeleteMehmet bey, maalesef bu konu ile ilgili bilgim yok. Fakat eğer siz bir şeyler bulursanız burada paylaşırsanız sevinirim. İyi çalışmalar.
DeleteMerhaba,projemde arduinodan sensörlerle aldığım veriyi web sitesine göndermek ve oradada bir kıyas yapıp tekrar arduinoya komut vermek istiyorum.Sizce bunu nasıl yaparım?
ReplyDeleteMerhaba Hatice, Arduino için Wireless kartı alıp, onu Arduino'ya bağlamalısın. Ardından internete bağlanıp sensörlerden aldığın veriyi internet aracılığı ile web sitesine yollamalısın. Burada basit bir php kodunada bağlanabilirsin ya da telnet ile herhangi bir servera da request yapabilirsin. Bu sana kalmış bir şey. Ardından bu siteden gelecek olan respınse'u alıp Arduino'da işleyebilirsin.
DeleteMesela şu linketeki videoda xBee ile yapılmış bir kablosuz iletişim örneği var.
LINK --> http://www.jeremyblum.com/2011/02/27/arduino-tutorial-9-wireless-communication/
Teşekkür ederim.
ReplyDeletemerhaba tamer bey,
ReplyDeletebu gps modülü internet olmadan mı çalışıyor, yani offline mı çalışıyor. Bazı yazılarda okuduğum kadarıyla internet olmadan gps modüllerin bazılarının çalışmayacağını söylüyor.
İnternet gerektiren bir gps modülü için nasıl bir bağlantı şeması yapmalıyım. bilgi verebilirsen çok memnun olurum
Merhaba, benim kullandığım modül internet olmadan off-line çalışıyor. Dediğiniz şekilde çalışan modül hiç görmedim. Ancak aldığınız bu bilgileri haritaya bastırmak isterseniz (ki kullanacağınız harita Google Map ise) internet gerekebilir. Zira haritayı internetten çekmelisiniz. Ancak hali hazırda kendi harita datanız var ise bunun üzerinde off-line gösterim yapabilirsiniz.
DeleteTaner bey merhabakar, biz gps modülü ile kendi tasarladığımız bir kartı birleştireceğiz. Yapmasını beklediğimiz şey, uydudan aldığı lokasyon bilgisini sunucuya iletebilmesi. Bunu gene gps modülü ile yapabilir mi? Yok ayrı gsm modülü alıp data hat üzerinden mi haberleşmek gerekiyor.
ReplyDeleteDirek sunucu ile haberleşebilen, bir gps modülü var mıdır?
Yani eskiden hatırlıyorum, internet yayını bir ara uydu üzerinden de yapılıyordu, yani aslında bir uydudan bir sunucuya veri getirebilir diye düşünüyorum, böylece uydudan gps modülüne giden veri direk olarak sunucu tarafına yönlendirilebilir mi?
hocam merhababiz bir c#ile uzaktan araba kontrolü projemiz var bu projede gps kullanıcaz sizden yardım istesek hangi gps modülünü almamız lazım sizin konuda belirttiğiniz gps mödülünü bulamadım yardımcı olur musunuz
ReplyDeleteBenim kullandığım modülü yurt dışından getirtmiştim. Ama aynı giriş/çıkışlara sahip herhangi bir modül işinizi görür.
Deletemerhaba kullanmış olduğunuz gps mödülünü türkiyede nereden temin edebilirim bulamadım yardımcı olur musunuz
ReplyDeleteMerhaba Fuat,
DeleteBen yurt dışından almıştım. Ama Türkiye'de değişik modellerde modüller mevcut. Onlara bakabilirsin.
yardımcı olabilir misiniz ben hangi modeli ve hangi modülü kullanıcağımı bilmiyorum pcden uzaktan araba kontrolü projemiz var ve bu araca gps takmamızı istedi hocamız bir zahmet işime yariyacak gps modülünün internetten bakıp bir link atabilir misiniz bu konuda hiç bir bilgim yok o yüzden sizden yardım istiyorum rica ediyorum
Deletehttps://www.sparkfun.com/tutorials/169 Bu sitede bulunan herhangi bir modül işinizi görür. Sadece bağlantı yapacağınız pinlere dikkat etmeniz gerekiyor.
DeleteMerhaba, benim projem Arduino ile çalışan, kullanıcı tarafından çizilen bir alan içerisinde sürekli dolaşan bir denizaltı. Hangi shield, sensör vs. kullanmalıyım ? Fazla bilgim yok yardımcı olursanız sevinirim...
ReplyDeletehocam ben arduino gps modulunu aldım bunu haritada otomatik nasıl izleyebilirim yardımcı olursanız sevinirim
ReplyDeleteHocam öncelikle bütün bu paylaşımlarınızdan dolayı sağolun benim bir projem var tübitak bazında yardımcı olursanız sevinirim biz arkadaşlarla quadrocopter yapıyoruz bu yapacağımız projeyi kontrol etmek için koordinatları gpsle verip öyle yapmak istiyoruz nasıl yapabiliriz tam olarak hangi yazılımı ve hangi elamanları kullanmamız gerekir yardımcı olun lütfen şimdiden teşekkürler hocam.
ReplyDeleteMerhabalar, bende bu sızın yaptıgınız projeye benzer bır proje yapıcam bu yaptıklarınıza ek olarakta bır uzaktan kumandalı aracı bır konum baska bır konuma gondermeye calıscam fakat gbs hakkında hıcbır bılgım yok ve sızın bu projede kullandıgınız modul benım ısımı gorurmu acaba..? Yardımcı olabılırmısınız acaba ….?
ReplyDeleteTaner Bey Merhabalar.
ReplyDeleteArduino projelerinde kullanmak için gps modülünde sim kart şart mı , değil galiba Sizin kullandığınız modelde göremiyorum ? Sim kartsız olanlarla arasında ne gibi bir fark var hız , kapalı-açık alan , hassasiyet gibi mi acaba ?Şimdiden teşekkür ederim değerli paylaşımlarınız için.
Hayır şart değil. SIM kart ekstra telefon ile iletişim kurmanızı sağlar. Hız ve hassasiyet konusunda bir değişiklik olacağını sanmıyorum. Bunlar modülün iç devre ve anten kısmı ile alakalı.
Deletemeraba öncelıkle ben bi proje üzerınde çalışıyorumda gps ile drone yani (insansız hava aracını kontrol etmek istıyorum bunun için nasıl bı program kullanmalıyım yukarda yazdıgınız program işimi görürmü yardımcı olursanız sevınırım
ReplyDeleteöncelikle merhaba ben bir proje üstunde çalışıyorum ünüversıte öğrencısıyım gps ile ar drone kontrol etmek istıyorum bunun içim bana hangı program gereklı yazaılım da gereklımı yardımcı olursanız sevınırım
ReplyDeleteÖncelikle yukarıdaki uygulamanın Arduino ve basit bir GPS modülü için yazıldığını hatırlatayım. AR Drone çok daha komplike bir ürün. Çok fazla inceleme fırsatım olmadı. Ama kendi GPS modülü olduğunu hatırlıyorum. Plug-in şeklinde yerleştirileceği ile ilgili bir şeyler hatırlıyorum. Şayet kullandığı mikroişlemci Arduino tabanlı ise kendi GPS modülünüzüde customize şekilde yerleştirebilirsiniz. Ama dediğim gibi AR Drone ile ilgili bir çalışmam olmadı daha önce. Fakat böyle bir ürünün GPS modülsüz olduğunu düşünmüyrum. Kendine ait bir Software Development Kit'i de mevcuttur büyük ihtimalle.
DeleteBen arduino ile gps sistemini yapıp araca yerleştirmeyi düşünüyorum .. şu kısımda takıldım sistem aracta iken ben evden nasıl izleyebilirim aracı ?
DeleteMerhaba hocam benimde mezun olmak için bitirmem gereken proje hemen hemen aynı yapmam gereken bir yerden bir yere gidildiğinde gidilen yol arduino ile sd karta alınıp bilgisayara takıldığında harita üzerinde göstermek. Bunu nasıl yapabilirim
ReplyDeleteMerhaba üniversite bitirme projem yapmış olduğunuz projenin aynısı. Acaba bana yardımcı olma şansınız var mı ?
ReplyDeleteHocam, gps ten aldigim bu bilgiyi geri nasil beslerim? Kopeklere taksam nerede oldugunu nasil tespit edebilirim?
ReplyDeleteselam aleykum ya abi ben bir proje yapacam ama nasıl olacak bilmiyorum sizden istediğim bir çok alıcıyı numaralandıracam ve bir verici ile hepsini numaraları üzerinden kontrol etmek istiyorum bana yardımcı olur musun nasıl olacak tahminim gps ile olacağı ama nasıl yapılacak bilmiyorum
ReplyDeleteHocam gpsden alınan koordinat verileri arduinoya aktarıldıktan sonra nrf24l01 ile başka bir arduinoya gönderilebilicek bir veri tipinde midir yani alınan veriler kablosuz olarak bu modülden başka bi arduinoya aktarılabilir mi?
ReplyDeleteselamlar taner hocam ben bu projeyi yapmak istiyorum canli olarak izleyebiliyormuyuz ve de yazilim kodunun linki kirik bu konuda yardimci olursaniz sevinirim tesekkurler
ReplyDelete