Arduino GSM Shield

ArduinoGSMShield_Front_450pxResmi olarak Arduino GSM Shield kullanıma sunuldu. Arduinoya bağladığınızda GPRS kullanarak internete bağlı şey(!)ler yapmak artık daha kolay ve standart yoldan sağlanmış oldu. Basit bir kaç kontrol kodu ile internete bağlanarak verileri okuyup yazabilirsiniz, hatta sesli çağrıları da cevaplayıp, sesli arama  da yapabilirsiniz.

Eklenti +5v ile çalıştığında direk arduino üzerine bindirerek kullanabileceğiniz gibi ufak değişikliklerle arduino Mega, Mega ADK ve Leonardo ile de çalışabilmekte, kötü haber ise şu anda Arduino Due desteği yok.

Kullanım için Arduino IDE 1.0.4 ve sonrasını kullanmanız gerekiyor. GSM kütüphanesi de şurada

GSMPinUse_2

İnternete bağlanmak için kullanılan program örneği şu şekilde

// include the GSM library
#include <GSM.h>

// PIN number if necessary
#define PINNUMBER “”

// APN information obrained from your network provider
#define GPRS_APN       “GPRS_APN” // replace with your GPRS APN
#define GPRS_LOGIN     “login”    // replace with your GPRS login
#define GPRS_PASSWORD  “password” // replace with your GPRS password

// initialize the library instances
GSMClient client;
GPRS gprs;
GSM gsmAccess;

// This example downloads the URL “http://arduino.cc/latest.txt”

char server[] = “arduino.cc”; // the base URL
char path[] = “/latest.txt”; // the path
int port = 80; // the port, 80 for HTTP

void setup()
{
// initialize serial communications
Serial.begin(9600);
Serial.println(“Starting Arduino web client.”);
// connection state
boolean notConnected = true;

// Start GSM shield
// pass the PIN of your SIM as a parameter of gsmAccess.begin()
while(notConnected)
{
if((gsmAccess.begin(PINNUMBER)==GSM_READY) &
(gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD)==GPRS_READY))
notConnected = false;
else
{
Serial.println(“Not connected”);
delay(1000);
}
}

Serial.println(“connecting…”);

// if you get a connection, report back via serial:
if (client.connect(server, port))
{
Serial.println(“connected”);
// Make a HTTP request:
client.print(“GET “);
client.print(path);
client.println(” HTTP/1.0″);
client.println();
}
else
{
// if you didn’t get a connection to the server:
Serial.println(“connection failed”);
}
}

void loop()
{
// if there are incoming bytes available
// from the server, read them and print them:
if (client.available())
{
char c = client.read();
Serial.print(c);
}

// if the server’s disconnected, stop the client:
if (!client.available() && !client.connected())
{
Serial.println();
Serial.println(“disconnecting.”);
client.stop();

// do nothing forevermore:
for(;;)
;
}
}

GSM Shield eklentisini ve Arduinoyu USB yerine 2A lik bir kaynaktan beslemek gerekiyor normal şartlarda 700mA çekmesine rağmen TX yaparken 2A pik akımlar çekebilmekte.

Resimleri ve içeriği Arduino.cc den aldık, ilgili sayfalar;
Arduino GSM Shield
GSM Kütüphanesi
GSM Shield kullanım

ÖNEMLİ NOT: Ürünü postayla Türkiyeye getirecekseniz bir pasaportla TK ya kayıt ettirmenz gerekli. Resmi ithalatla getirenlerden onaylı olup olmadığını sorun mutlaka…

Ömer Koman

Elektronik hakkında ilk hatırladığım şey 5-6 yaşlarımdayken babamın arkadaşı radyocunun tezgahına burnumu dayayıp lambalı radyoları tamir edişini izlemekti...

52 comments

  1. sertunc dedi ki:

    internet of things ‘in Türkçesini ilk defa gördüm, gayet oluyormuş 🙂

  2. M dedi ki:

    Anlamadığım birşey var arduino uno desteği var mı? Kendi sitesinde bahsetmiş de dediğiniz gibi due yazılmamış sanırım desteği yok. Hep soruyorlar sizde sıkılmışsınızdır ama istediğim yanıtı bulamıyorum ben arduino due almayı düşünürken bu yazıyı okuyunca vazgeçtim.Tüm başlamak için yazılarını okudum ama yetmedi. Ben wifi gsm vb. birçok shield destekleyecek ve ilerde androide de bulaşmayı düşünüyorum(PIC deneyimim var). Arduinosu shieldları derken çok para tutuyor acaba öğrenmek için uno set alıp ilerde parayamı kıysam yoksa unoya para vermeyip paraya şimdi kıyıp mega yada mega adk mı alsam? Mega adk, meganın yaptıklarını yapıyor değil mi?

  3. Ömer Koman dedi ki:

    Ogrenmek icin baslamak icin uno iyi. Tip secimini projeye gore yapmak gerekir daha fazla port lazimsa mega ama 3v. Daha fazla guc lazimsa due ama due de fazla destek yok su an acele etme. Wifi gsm ethernet isleri icin temel egitimi yalayip yutmus olmak lazim dert cok o konularda. Foruma bak millet neler cekmis gor.

  4. Ömer Koman dedi ki:

    Mega adk arduinoya usb uzerinden androidle baglanabilirlik demek yapmak istediginiz bu mu? Wifi, ethernet, gsm de kullanırken zaten bu yontemlerin ozelliklerini bilip kullanacaksiniz diye farz edin, internet, network, wifi kablosuz ağlarla ilgili desktopta hehangi bir yazılım geliştirmemişseniz gömülü elektronikte bu kavramları öğrenmek çok zor oluyor.

  5. Telit gl865 dedi ki:

    İyi günler. Bende Telitin GL865 modeli(GSM CLICK) bulunmaktadır. Bu model ile arduino ile bağlantılarını nasıl yapabilirim?
    Arduino nun Rx Tx lerini Gsm modüle bağlamam yeterli mi?

  6. Ömer Koman dedi ki:

    modülünüz 3.3v olabilir arduino uno çıkışları 5v tur modüle zarar verebilir araya arduino tx bacağına 2.2k—-gsmmodul—–3.3k—-gnd şeklinde bir bağlantı ile yaparsınız. bazı modullerın uzerinde 5v 3v dönüştürüculer olabilir varsa rx tx direk bağlayın. telitin tcp/ip stack içinde gömülüdür ama açılış ve setup komutlarını arka arkaya yollayarak modulun gprs iletişime hazı olmasını sağlamanız lazım telitin datasheetinde o komutlar ve örnekleri vardı hatırladığım kadarı ile. bağlatı kurduktan sonra istediğiniz sitenin url adresinden datapaketleri gelir ama ham datadır içinden ayıklamanız gerekir. arduino gsm kutuphanesi ile uyumlu değildir telit. uygun telit kutuphanesini bulun veya kendiniz yazın.

  7. Okan dedi ki:

    İyi günler arkadaşlar.
    Arduino GSM modülünü Türkiye’de hangi siteden temin edebilirim ?

  8. kaanceyhan dedi ki:

    http://www.gsmkontrol.com/
    adresini kontrol edebilirsiniz.

    • Ömer Koman dedi ki:

      kaanın verdiği linkteki gsm gprs shield olarak türkiyede üretilmesi iyi ve destek de var, iş görür ancak yazıda anlatılan “arduino gsm shield” değildir ve uyumlu da değildir. yukarıdaki linkteki ürünü kendi arduino kütüphanesi ile kullanmanız gerekir.

  9. BAHADDİN GÜNDÜZ dedi ki:

    iyi günler. ben bitirme projesi olarak arduinolu gaz dedektoru yapacagım hiç tecrubem yok. proje de co ve ch4 sensorleri kullanarak meydana gelecek gaz kacagı durumunda alarm verecek gerektiği zaman mail atacak ve belirlenen bir numarayı arayabilecek bir sistem yapmak istiyorum acaba .hangi tip arduionu bu ihtiyacları giderebilir. Yardımcı olabilecek varsa çok sevinirim..

  10. Nezgin dedi ki:

    merhabalar gsm shield sim900 kullanıyorum sms ile led kontrolu yapmak istiyorum ama google araştırmalarımda verim alabileceğim bi noktaya ulaşamadım referans verebileceğiniz bir site var mı acaba programlamada cok iyi değilim çünkü hiç değilse taslak bi algoritma bulabilirsem üzerinde çalısabilirim.bu arada arduino ile calısırken formdan cok faydalandım yeni baslayan biri olarak karsıma cıkan bi cok soruna cozum buldum sayılır cok teşekkürler.

  11. Nezgin dedi ki:

    açtığım ilk linkte buldum sanırım aramalarımda fazla ayrıntı kullanmısım çok teşekkür ederim 😀

  12. ender dedi ki:

    Merhabalar.
    Telit gl865-DUAL gsm shield ve arduino uno kartımla hazır örnekleri çalıştırıp arama yapabiliyorum.Ama ben aldığım sensör bilgisine göre arama yapmak istiyorum.Hazır örnekler içinden arama kodunu çekemedim saatlerce kurcalamama rağmen.

    • ceren dedi ki:

      bitirme tezim için ben telit gl865-dual ve arduino uno aldım ama bağlantı kuramadım yardımcı olursanız sevinirim

      • Ömer Koman dedi ki:

        ürünü aldığınız yerden destek istemeyi deneyin veya ilgili örnekleri bulup denemenizde fayda var.

  13. Nezgin dedi ki:

    char inchar; //Will hold the incoming character from the Serial Port.
    int led1 = 9;
    int led2 = 10;
    int led3 = 11;
    int led4 = 12;

    void setup()
    {
    // prepare the digital output pins
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    //Initialize GSM module serial port for communication.

    Serial.begin(9600);
    // delay(3000); // give time for GSM module to register on network etc.
    Serial.println(“AT+CMGF=1”); // set SMS mode to text
    //delay(200);
    Serial.println(“AT+CNMI=3,3,0,0”); // set module to send SMS data to serial out upon receipt
    delay(200);
    }

    void loop()
    {
    //If #a1b1c1d1 comes as sms, all LEDs should light up.
    if(Serial.available() >0)
    {
    inchar=Serial.read();
    if (inchar==’#’)
    {
    delay(10);
    inchar=Serial.read();

    //first led
    if (inchar==’a’)
    {
    delay(10);
    inchar=Serial.read();

    if (inchar==’0′)
    {
    digitalWrite(led1, LOW);
    }
    else if (inchar==’1′)
    {
    digitalWrite(led1, HIGH);
    }
    delay(10);

    //Second led
    inchar=Serial.read();

    if (inchar==’b’)
    {
    inchar=Serial.read();
    if (inchar==’0′)
    {
    digitalWrite(led2, LOW);
    }

    else if (inchar==’1′)
    {
    digitalWrite(led2, HIGH);
    }
    delay(10);

    // Third led
    inchar=Serial.read();
    if (inchar==’c’)
    {
    inchar=Serial.read();
    if (inchar==’0′)
    {
    digitalWrite(led3, LOW);
    }
    else if (inchar==’1′)
    {
    digitalWrite(led3, HIGH);
    }
    delay(10);

    //Fourth led

    inchar=Serial.read();
    if (inchar==’d’)
    {
    delay(10);
    inchar=Serial.read();
    if (inchar==’0′)
    {
    digitalWrite(led4, LOW);
    }
    else if (inchar==’1′)
    {
    digitalWrite(led4, HIGH);
    }
    delay(10);
    } }
    Serial.println(“AT+CMGD=1,4”); // delete all SMS
    }}}} }
    merhabalar yukarıdaki kodla led kontolü yapmam gerekiyodu devreyi kurdum kodu derledim hatasız ama yinede ledlerde bi değişiklik olmadı yardımcı olabilir misiniz

  14. Nezgin dedi ki:

    Coskun hocam merhaba
    sms ile led kontrolü çalışmasını yaptım. kafamı karıştıran bazı noktalar oldu. bu konuda yardımcı olabilirseniz cok sevinirim.
    http://www.open-electronics.org/ikea-sms-lamp-with-gsm-shield/ linkinden aldığım kod sıkıntısız calışmakta. kodu kendi algoritmamla oluşturmak istediğimdeyse sms okuma noktasında sıkıntılarım var. yani smsimi (gsm.readSMS(smsbuffer, 160, n, 20) komutuyla smsbuffera atıyorum ve diziyi
    Serial.println(smsbuffer[1]);
    Serial.println(smsbuffer[2]);
    komutuyla parçalayıp serial monitor da okuyabiliyorum.
    fakat ledin kontrolünü gerçekleştirmek için if kosulunda strcmp karşılaştırması yapmak yerine
    inchar=smsbuffer[1];
    if (inchar==’#’)
    koşulunu değerlendirmek istiyorum. Kodu doğru yazdığımı düşünüyodum fakat ledlerimde bi tepki olmadı.Sıkıntı nerden kaynaklanıyo olabilir?

  15. Nezgin dedi ki:

    😀 coşkun hocam demişimde kitap karşımda duruyo diye bilinçsizce yazmışım Ömer hocam demek istemiştim halbuki tabi farketmez herkesin onerisine acıgım biraz takıntılıyım su sorunu cozmeden rahat etmiycem cunku:)

  16. Nezgin dedi ki:

    peki teşekkür ederim o zaman:)

  17. Gunce Akkoyun dedi ki:

    GSM Shield kullanıyorum. aynı anda hem server nesnesi ile komut dinlemek hemde client nesnesi ile her saat basi perioduk veri gondermek istiyorum. nasıl yapabilirim aynı anda yapamadım ayrı ayrı yapabiliyorum

  18. Sertan dedi ki:

    Daha önce http://www.gsmkontrol.com adresinden bahsedilmiş. Bu modemleri yapan kişi ile görüştüm. Modem tasarımını arduino kütüphanesiniyle çalışacak şekilde değiştirdiğini söyledi. Alıp kullanan var mı acaba, gerçekten çalışıyor mu? Yoksa riske girip alacağım bir tane. 10 gün içinde halletmem gereken bir proje var. (Arduino uno ile kullanacağım)

  19. Gizem dedi ki:

    Merhaba
    Arduinoyla giyilebilir teknoloji konusunda bir proje geliştiriyorum. Aldığım verilere göre sistem belli bir sınırı aştığında ilgili yerlere sms bildirimi yapmam gerekiyor. Başlangıç noktam ne olmalı ve nelere sahip olmalıyım acaba?

  20. Ömer Koman dedi ki:

    baştan elektronik bilgin olduğunu program yazabildiğini farzediyoruz. turkiyede satılan gsm sheld olacak projende bunu surmek içimde bir arduinoya ihtiyacın var. uno model arduino pek giyilebilir değil zaten pil ihtiyacıda yuksek ayrıca gsm modullerde çok fazla akım çeker gonderım anlarında yaklaşık 350ma akım çeker ama anlık olarak da 2A kadar akım çekmek ister. once masa ustnde sms yollamayı çözmen lazım daha sonra bunun pillisini ve daha küçük modelini gerçekleştirmeyi de deneyebilirsin. arduinoda tecruben yoksa baştan uyum sağlamak için de bayağı zorlanacaksın…

  21. Serhat Erdoğan dedi ki:

    Merhaba hocam
    benim sorum gsm modülünde mesaj gönderirken sms ücreti oluyor mu?

  22. alican dedi ki:

    Hocam iyi günler ben
    • Arduino Mega
    • Arduino GSM Shield Eklentisi
    • SIMCOM SIM900 GSM Modül
    • DTH11 Sıcaklık Sensörü
    kullanarak belli bir sıcaklık üstüne çıktığı zaman sıcaklık sensörünün kullanıcıya mesaj atmasını istiyorum. Bitirme projem olarak bunu aldım.bu konu hakkında zamanınız varsa birkaç sorum vardı ilk olarak bu modüller kullanıcıdan uzak olacağı için arduinoya gerekli güç için ne kullanmalıyım ?
    ikincil olarak ise eksik bir modülüm varmı ?
    şimdiden teşekkür ederim hocam

    • Ömer Koman dedi ki:

      Arduino GSM Shield Eklentisi ve SIMCOM SIM900 GSM Modül aynı işi yapan moduller turkiyede simcomm shield var araştırıp alın. yurtdışından gsm modul getırmeyin imei kaydı nedeniyle kapanıyor bir daha kullanamazsınız. sıcaklık sensörü normal işinizi görür. modülün bulunduğu yerde elektrik yoksa en pratiği akü kullanmaktır 5-10A lik kuru akulerle 5-6 gün çalışması lazım. güneş alan bir yerde ise güneş paneli ile aküyü de şarj edersiniz. foruma gelin sorun bu tip modülleri kullanmış olanlardan bilgisi olanlar var…

    • SİBEL dedi ki:

      merhaba,bizde gsm shield ile duman algıladığında arama yapan bir proje yapıyoruz.ama bazı konularda eksiğimiz var bizimle iletişime geçer misiniz?
      numara:XXXXXXX

  23. Kürşat dedi ki:

    * arduino uno
    *gsm shield simm900 r
    *dc motor
    telefondan mesaj attığım da, dc motoru çalıştırıp, durdurmam gerekiyor. bununla ilgili bir kod mevcut mu?

    • Ömer Koman dedi ki:

      yazıdaki gsm shield simm900 ıcın degıl uyumlu olmayabılır. gsm projemız yok forumdan sorun yada ozellıkle sim900r ıcın projelerı araştırıp yapılmış kodları duzenleyerek amacınıza ulaşabılırsınız belkı. hazır kodların çogu ozel amaca hızmet eder bırebır uyup kullanmak cok zor olur. bu işlerde calısıp anlamaya calışmak daha verımlı olabılır

      • Kürşat dedi ki:

        teşekkürler hocam, bir de sürekli “was not declared in this scope” hatası alıyorum ne kadar çabalasam da bir sonuç alamıyorum
        Örneğin;
        #include

        void setup(){
        Serial.begin(19200);
        Serial.begin(19200);
        delay(500);
        }

        void loop(){
        if(Serial.available())
        {
        switch(Serial.read())
        {
        case’o’:
        {
        smsoku();//önceden gönderilmis mesajları oku…
        }
        break;
        case’a’:
        {
        anlikoku();//o an gelen smslerı oku…\\sartlardada kullanacagım kod bu…
        }
        break;
        case’y’:
        {
        smsyaz();
        }
        break;
        case’c’:
        {
        ara();
        }
        break;
        }
        }

        if(Serial.available())
        {
        Serial.write(Serial.read());
        }
        }

        void smsoku(){
        Serial.println(“Sms Okunuyor…”);
        Serial.print(“AT+CMGR=1\r”);//sım kart takıldıktan sonrakı gelen kacıncı sms okumak ıstıyorsan (1) yerine o yazılır…
        delay(100);
        Serial.println();
        Serial.println();
        }

        void anlikoku(){
        Serial.println(“Sms Bekleniyor…”);
        Serial.print(“AT+CNMI=1,2,0,0,0\r”);
        delay(100);
        Serial.println();
        Serial.println();
        }

        void smsyaz(){
        Serial.println(“Sms Gönderilecek…”);
        Serial.print(“AT+CMGF=1\r”);
        delay(100);
        Serial.println(“AT+CMGS = \”+905466721732\””);
        delay(100);
        Serial.println(“Merhaba Evren :)”);
        delay(100);
        Serial.print((char)26);//bu enter tusunun ASCII kod karsılıgıdır—seri porttan yazılacaksa CTRL+Z kullanıllır…
        delay(100);
        Serial.println();
        Serial.println(“Mesajınız Gönderildi…”);
        Serial.println();
        }

        void ara(){
        Serial.println(“Arama Yapılıyor…”);
        Serial.println(“+905466721732;”);
        delay(100);
        Serial.println();
        Serial.println();
        }

        Arduino:1.6.12 (Windows 7), Kart:”Arduino/Genuino Uno”

        C:\Users\K\Downloads\GSM_KOD\GSM_KOD.ino: In function ‘void loop()’:

        GSM_KOD:18: error: ‘smsoku’ was not declared in this scope

        GSM_KOD:23: error: ‘anlikoku’ was not declared in this scope

        GSM_KOD:28: error: ‘smsyaz’ was not declared in this scope

        GSM_KOD:33: error: ‘ara’ was not declared in this scope

        exit status 1
        ‘smsoku’ was not declared in this scope

        This report would have more information with
        “Show verbose output during compilation”
        option enabled in File -> Preferences.

        • Ömer Koman dedi ki:

          bazen oluyor oyle, looptan sonraki alt rutinleri loop un ustune taşı
          setup
          rutin11
          rutin2
          rutin3
          loop

          şeklinde olsun

  24. kemal dedi ki:

    hocam sms yoluyla toprak sulama sistemi yapmak istiyorum yardımcı olabilirmisiniz

    • Ömer Koman dedi ki:

      tek tek projelere yetişemiyoruz vakit de olmuyor, foruma gelin sorun projenizi anlatın neler lazım nasıl yaparsınız anlatan olacaktır.

  25. sercan dedi ki:

    Merhaba hocam, gsm sheild ile bir servera internet üzerinden veri gönderilebilir mi? Örneğin A butonuna basıldı “a” bilgisi gönderecek. Teşekkürler

  26. muhammet dedi ki:

    ardunio gsm shilt v3.0 ile buyazılım uyumlu mu?

    • Ömer Koman dedi ki:

      gsm modullerı yurtdışından getırdıysenız ımeı kayıtlı degılse 3-4 aya kalmaz kapanır. yazılım uyumlu olur mu bılemıyorum arduıno uretımı degılse uyumlu da olabılır uyumsuzda aldıgınız yerle konuşmayı deneyın.

      • muhammet dedi ki:

        proje olarak nem ölçüp telefonla etkin hale getirilebilen bir sulam sistemi yapacagim yardım edermisiniz bu arada gsm shiıt robotistandan gelecek imei kayıtlı

  27. Yunus dedi ki:

    Hocam bende GSM/GPS shiel var onunla arama yapıyorum ancak mesaj atamıyorum.Aşağıdaki hatayı veriyor:
    Sending Text…
    Text Sent.
    AT+CMGF=1
    OK
    AT+CMGS = “+905455875868”
    ERROR
    How are you
    Gördüğünüz gibi AT+CMGS komutunda hata veriyor.Ne yapmam gerekiyor.Şimdiden teşekkürler.

  28. Abdullah dedi ki:

    Merhaba,
    Otomatik yana kayar bahce kapimizi suan panodaki tuslarla acip kapatabiliyoruz. Bi gsm shield ile bu islemi yapmamiz mumkun mu ? İkinci sorum eger mumkun degilse normal bi uzaktan kumandayla 30 40 metre cekim mesafesi olmakta maximum. Bu mesafeyi 1 2 km artirmamiz icin ne yapmamiz gerekmekte ?

    • Ömer Koman dedi ki:

      gsm shield ıle (aylık faturasını odedığiniz surece) mesafe sorununuz kalmaz. en basiti sms atarak kumanda edebilirsiniz bunun maliyeti de ayrı bir konu. gprs data uzerınde yapabilmenız ıcın web uzerınden ulaşabıleceği bır sunucuya ihtiyacınız olacak cunku operatorler direk gsm modulune ulaşmanızı guvenlık nedenı ıle engellerler bunu yontemı once bır web suncuya bağlanacaksınız bu sunucuya sızın uzaktan erişecek yazılımınızda ulaşacak ve yonlendirme yapacaksınız teknık bır çok işi çözmenız veya ogrenıp anlamanız lazım.
      diğer seçenek rf ıle komut yollama meselesi var ama ben 1km data atabılenı gormedım şimdiye kadar maliyetı ucuz olur ama denemenız lazım rf sınyaller fızıkı şartlardan çok etkılenıyor ve aslında çok uzak mesafeler için değil max 300 metre mesafeye göre planlanmış bir alt yapıdır LORA furyası var bir iddiaya gore mesafeler 3-4km denıyor ama fiyatları GSM modul kadar neredeyse. foruma gelin sorun belkı bırşeyler deneyen olmuştur.

      belkı bır alternatıf arduınoyu ethernet modulle bağlarsanız ustune kuracağınız web suncu ıle kumanda etmeyı deneyebılırsınız.

E-posta adresiniz gösterilmeyecek. Gerekli alanlar * ile işaretlidir.

*



Sosyal Ağlar