! GSM Modül İle İnternet Uygulamaları !

Başlatan MrDarK, 30 Haziran 2012, 16:14:44

MrDarK

Merhabalar saygıdeğer PicProje Ailesi ;

Bütün bir yıl çalışıp, kafamda yapmaya çalıştığım tez'imin internet ile ilgili kısımlarının detaylarını sizlerinde isteğiyle açmaya paylaşmaya karar verdim. Belirtmek isterim ki kullandığım modül Telit GL865 Dual GPRS özellikli bir modüldür. Tezi aldıktan 4 ay sonra hazırladığım ilk durum raporu konusunu okumak için lütfen tıklayınız..

Öncelikle internet tabanlı uygulamalar yapabilmek için bir sim kartına bir modüle ve haberleşme yapabilmek için bilgisayar veya PIC veya herhangi bir mikrokontroller'a ihtiyacımız var. Bunlara sahip olduğumuzu varsayıyorum. İnternete bağlanmak isteyen her bir donanımın IP adresi olmak zorundadır. İlk amacımız bize hizmet veren sağlayıcıdan (Provider) IP almaktır. Lakin IP almadan önce telit GL865 modülü kullananlar için bir uyarı yapayım, bu bilgiyi hiçbir şekilde kendi hazırladıkları datasheetler içinde göremedim. Round Solutions forumlarını alt üst ederken çok saçma bir yerde karşıma çıkıp öğrendiğim Hardware Flow kontrolü OFF yapmak.

Kod olarak AT&K0 komutunu işletim internet uygulamalarını yapmadan önce taşma kontrolünü kapatmalıyız yoksa modül donup kalıyor. Herneyse kaldığımız yerden devam edelim :)

IP almak telit modülle çok kolay. AT#GPRS=1 komutunu işlettiğinizde modül size cevap olarak IP=............ gibi bir ip vererek internet bağlantısını kuruyor. Burdan sonra biraz ethernet network bilgisi gerekiyor. Aslında windows altında hep yaptığımız ama teknik olarak alt yapısını araştırmamış birisi olarak bu konular bana baya yabancı geldi. Ama parçaları birleştirdiğimizde herşey yerine oturuyor :)

IP aldıktan sonra bağlanmak istediğimiz internet sayfasına SOKET DIAL işlemi yapıyoruz. Yani aslında www.google.com yazdığımızda bilgisayarımız google server'ının 80 numaralı portuna bağlantı yapma isteği gönderir. Eğer google sunucusu bize onay verirse CONNECTED diye bilgi gönderir. Soket Dial işleminin At komutu ise şu şekildedir.

Komut :    AT#SKTD=0,80,"www.google.com"
Gelen Cevap : CONNECT

İşte bu cevabı aldıktan sonra benim için herşey kapkara olmuştu. eee şimdi ne yapıcaz ne oldu yani connect oldu da dedim ve başladım biraz daha araştırma yapmaya. Bu aşama'dan sonra iş elektronik bilgiden çıkıp HTTP bilmeye dayandı. HTTP (The HyperText Transfer Protocol) nedir peki ? HTTP Nedir ?

Anladım ki bu aşamadan sonra bir web tarayıcısı (Chrome , opera , firefox) gibi çalışma yapmak gerek. Yanisi aslında biz adres sayfasına google.com yazdığımızda bu tarayıcılar bizim yerimize google server'ına bağlanıp 80 numaralı portuna bağlanıp Ana sayfasını çağırıyormuş :) Dedim tamam bende yapayım bu işlemi (: HTTP içine girelim birazda , HTTP 'nin basit ve temel bazı istek birimleri vardır. GET , POST gibi detayları HTTP'yi araştırdığınızda göreceksiniz. Evet gelelim tekrar tarayıcıya google.com yazdığımız zaman aslında arka planda olanları incelemeye devam etmeye. google.com yazdığımızda bilgisayar ile sunucu arasında bağlantı sağlanır ve sunucuya şu kodlar gider ....

GET /index.html HTTP/1.1
Host:http://www.google.com
Connection: keep-alive


Bu komutu işledikten sonra google kendi html sayfasını bizim pc veya mikrokontroller'ımıza yollar hani normal bir sayfanın kaynağını görüntüle dediğinizde karşınıza gelen kodlar var ya o şekilde gönderir. Ve Google sayfasının içeriğini görmüş oluruz.

Peki şimdi herkesin kafasında oluşan soru işaretlerine gelelim, internete veri nasıl gönderilir ?

çok ilginç ama bu işin en basit yöntemi link üzerinden data transfer işlemi. Örnek vermek gerekirse ;

GET /gps/index.php?xKoor=40.986094&yKoor=29.053924 HTTP/1.1
Host: http://www.masterdizayn.com


şeklinde yazdığımda index.php içinde yazdığımız kod adres satırındaki xKoor='dan sonraki kısmı bir not defterine kaydedecek fonksiyonu server üzerinde işliyor. Aynı şekilde y koordinatıda istediğimiz işlemi yapıyor. Yani adres satırına yazdığımız bu koordinatlar server üzerinde bir not defteri oluşturarak içine gönderdiğimiz bilgiyi işliyor.

Link üzerine yazılmış olan koordinatları php ile nasıl kayıt ederim ? Sorusunun cevabı ise aşşağıdaki kodda. Sormadığım için ismini veremeyeceğim arkadaşım olurda bir gün bu konuyu okursan bu konuda bana olan yardımın ve desteğin için çok teşekkür ederim öncelikle. Affına sığınarakta bu giriş niteliğindeki bilgiyi paylaşıyorum.

<?php 
$x = $_GET["xKoor"];
$y = $_GET["yKoor"];
if(file_exists("x.txt")&&file_exists("y.txt")){
$dosya = fopen ('x.txt' , 'w') or die ("Dosya açılamadı!"); 
fwrite ($dosya,$x) ;
$dosya = fopen ('y.txt' , 'w') or die ("Dosya açılamadı!"); 
fwrite ($dosya,$y) ;
}
else{
touch ("x.txt") or die ("Dosya Yaratılamadı!") ; 
$dosya = fopen ('x.txt' , 'w') or die ("Dosya açılamadı!"); 
fwrite ($dosya,$x) ;
touch ("y.txt") or die ("Dosya Yaratılamadı!") ; 
$dosya = fopen ('y.txt' , 'w') or die ("Dosya açılamadı!"); 
fwrite ($dosya,$y) ;
}

?>






Aynı işlem yine Telit'in Datasheetlerinde FTP ile de yapılıyor. tek fark eden işlem connect olduktan sonra FTP komutlarını işliyorsunuz. Ben açıkçası fazla zamanım kalmadığı için Link üzerinden veri transferi işlemini yaptım. Zaten bu şekilde yapabilen FTP ilede çok rahat yapar :)

Gelelim internetteki bilgileri okumaya. Nasıl google.com'un index sayfasının kodlarını alabildiysek, kullanıcıya daha önceden bir formu doldurtup formun sonuclarını bir sayfada toparlayıp modülü o sayfayı GET edecek şekilde yönlendirdiğimizde o sayfanın içeriğini çekiyor. Ordan sonra elinize gelen dataları ayrıştırdığınızda istediğiniz bilgileri elde edebiliyorsunuz.

Sanırım giriş için baya uzun bir konu oldu bu. Şunu söylemeliyim ki keşke ben bu teze başlarken böyle bir konu var olsaydı :) Herşey ne kadar kolay olurdu benim için. Neyse vatanımıza hayırlı olsun. Bu işlerle uğraşmak isteyenlerin yolunu açmak nasip olursa bana ne mutlu (:

Saygı ve Sevgilerimle Efendim
Picproje Eğitim Gönüllüleri ~ MrDarK


kantirici

Teşekkürler güzel bir başlangıç yazısı olmuş.Bir kaç örnekle zenginleştirebilrseniz konuyu çok daha iyi olacak.

frederic

Erdemli duruşunuz ve paylaşımcılığınız için sizi tebrik ederim,bende bu modülden edinip yazılarınız sayesin de bu konuda çalışmalar yapacağım.

LukeSkywalker


MrDarK

Güzel yorumlarınız için teşekkür ederim arkadaşlar. Bundan sonraki projem bilmiyorum ne zaman yapmaya karar verip çalışmaya koyulabilirim ama ;

Bu gsm modüle bir kamera takıp , çektiğim resimleri internet sitesine yükleyip. Uzaktan görüntü işleme yapmak istiyorum. :)
Picproje Eğitim Gönüllüleri ~ MrDarK

LukeSkywalker

Şimdi siz bu verileri direk işlemciden uart kullanarak modüle mi gönderdiniz yoksa modül üzerindeki python yorumlayıcıyı mı kullandınız?

bymrz

@MrDark,

Ben o okulu niyeyse hiç özlemiyorum :) Son zamanlarda nefret etmiştim hatta... Evlendim 3 yaşında çocuğum var... Hala diplomayı almaya bile gitmedim... Onların olsun :)

MrDarK

Alıntı yapılan: alone_lover - 01 Temmuz 2012, 02:40:13
@MrDark,

Ben o okulu niyeyse hiç özlemiyorum :) Son zamanlarda nefret etmiştim hatta... Evlendim 3 yaşında çocuğum var... Hala diplomayı almaya bile gitmedim... Onların olsun :)

Hocam zaten okulu özleyeceğim dememin anlamı, öğrenciliğimi özleyecek olmam :) Ben genelde okulu ofis labratuar olarak kullanıyordum yoksa evet özlenecek bir ortam değil dediğiniz gibi :)

Maytere ; bilgilerimin phyton dili için yeterli seviyede olmadığından haberleşmeyi uart ile yaptım, hocamdan eğer yaptığım projeyi alabilirsem phyton ile uygulayıp hiçbir şekilde mikrokontroler'da kullanmayı düşünmüyorum.
Picproje Eğitim Gönüllüleri ~ MrDarK

tekin126

:)projen için tebrık ederım amaa yanlış anlamazsın umarım okulun için yazdığın bence yanlış o okul size yaptığın projede ufuk açtı meslek için yol gosterdı enazından başka branş okuduysan haklısın  elektronik ve haberleşme konusunda okul bıtırdıysen ben haklıyım:)

MrDarK

Alıntı yapılan: tekin126 - 01 Temmuz 2012, 12:50:56
:)projen için tebrık ederım amaa yanlış anlamazsın umarım okulun için yazdığın bence yanlış o okul size yaptığın projede ufuk açtı meslek için yol gosterdı enazından başka branş okuduysan haklısın  elektronik ve haberleşme konusunda okul bıtırdıysen ben haklıyım:)

Evet bu konuda sizi haklı buluyorum. Sanırım bana teknik olarak bazı hocalarım dışında bişey katmasada ufkumu açtığı konusunda katılabilirim :) Projeler sayesinde kendime olan güvenimde arttı. Ama bunların hepsini kendim ve arkadaşlarımın destekleriyle gerekse picprojenin desteğiyle yaptım ama üniversitenin değil. Zaten kendi bitirme tezimin konusunu hocama ben kendim yazdırdım. Hocam şöyle bir konu açta yapayım diye :) Neyse bu konuda tartışıp konu dışına çıkmak istemiyorum aslında. İstekler doğrultusunda niyetli arkadaşların önünü açmak istediğim için bu giriş seviyesindeki bilgileri paylaştım. Boşverelim bu gereksiz konuları, son sözümde öğrencilik günlerimi mezun olduğum ilk gün özledim :D
Picproje Eğitim Gönüllüleri ~ MrDarK

LukeSkywalker

Şimdi hocam, yukarıda vermiş olduğunuz kodları
<?php 
$x = $_GET["xKoor"];
$y = $_GET["yKoor"];
if(file_exists("x.txt")&&file_exists("y.txt")){
$dosya = fopen ('x.txt' , 'w') or die ("Dosya açılamadı!"); 
fwrite ($dosya,$x) ;
$dosya = fopen ('y.txt' , 'w') or die ("Dosya açılamadı!"); 
fwrite ($dosya,$y) ;
}
else{
touch ("x.txt") or die ("Dosya Yaratılamadı!") ; 
$dosya = fopen ('x.txt' , 'w') or die ("Dosya açılamadı!"); 
fwrite ($dosya,$x) ;
touch ("y.txt") or die ("Dosya Yaratılamadı!") ; 
$dosya = fopen ('y.txt' , 'w') or die ("Dosya açılamadı!"); 
fwrite ($dosya,$y) ;
}

?>

PIC'in içerisine gömdünüz değil mi? Bunları da PIc GSM modüle aktardı uart ile. Modülde web sayfasına aktardı öyle mi?

MrDarK

Alıntı yapılan: maytere - 01 Temmuz 2012, 16:46:19
Şimdi hocam, yukarıda vermiş olduğunuz kodları

PIC'in içerisine gömdünüz değil mi? Bunları da PIc GSM modüle aktardı uart ile. Modülde web sayfasına aktardı öyle mi?

Yok hocam olur mu öyle şey, zaten dikkat ettiysen bu bir php kodu. Bunu koda gömmenin bir anlamı yok. Konuyu sanırım dikkatli okumadın, oysa herşeyi sırasıyla anlatmıştım. Bu kodlar PHP kodları bunları kendi host'unuza yükleyeceksiniz. Hani örnekte vermişim GET /index.php?..... giden bir kod var xkoor ve ykoor bilgilerini hosta kaydetmek için gerekli olan php kodu. Yani index.php adında bir sayfa yapıcaksın içindede bu kod olacak. Picle alakası yok burada. Hostuna yüklemen gereken internet sayfası bu.
Picproje Eğitim Gönüllüleri ~ MrDarK

LukeSkywalker

O zaman biz şu kodları modüle PIC vasıtası ile göndereceğiz, doğru muyum?
GET /gps/index.php?xKoor=40.986094&yKoor=29.053924 HTTP/1.1
Host: http://www.masterdizayn.com

MrDarK

Doğrudur, tabiki ben bu işlemi kendi siteme kurduğum dosyalarla yaptım. Oradaki bilgiler senin sitenin bilgileri olmalı, onun dışında dediklerin doğru bu şekilde bir işlem yapmak gerekiyor.
Picproje Eğitim Gönüllüleri ~ MrDarK