27 Kasım 2014 Perşembe

Arduino ile Telefon Yapma ( GSM GPRS Shield Arduino )


Bu çalışmamızda GSM GSPRS shieldın arduino ile nasıl kullanılacağını, bağlantıların nasıl yapılacağını ve kodun nasıl yazılacağını inceleyeceğiz. GSM GPRS shieldlar AT komutları ile çalışmaktadır. Haberleşme modüllerine göre farklı AT komutları ile farklı işlemler yapılabilir.

Bu çalışmada SIM900 GSM GPRS shieldı kullanılmıştır.SIM 900 haberleşme modülünü kullanan bu sheild sayesinde bir telefonun yaptığı temel görevler yerine getirilebilmektedir. Örneğin arduino ile bir numara aranabilmekte, mesaj atılabilmekte ve internete girilebilmektedir.

GSM GPRS shield ile arduino bağlantısı oldukça basittir. Shield üzerindeki Tx, Rx pinleri sırasıyla arduinonun Rx, Tx pinlerine bağlanır. Haberleşme bu şekilde sağlanmış olur. Ancak birçok GSM GPRS shield 5V üzeri gerilimle ve 200mA - 1.5 A arası çalışma akımı ile çalışabilmektedir. Bu yüzden harici bir kaynaktann beslenmelidir. Bu kaynak ile arduino da aynı zamanda beslenebilir. Ancak arduinonun ve sheildın aynı kaynakla beslenmediği durumlarda groundlar birleştirilir.

arduino gsp/gprs code

Arduino GSM GPRS baglantısı



GSM GPRS Shield                Arduino

RX                                           TX
TX                                           RX
GROUND                            GROUND

Çalışma videosunu buradan izleyebilirsiniz: http://www.youtube.com/watch?v=BfiY58e4OQM&feature=youtu.be

Arduino ile bir telefonun aranması ; 



#include <SoftwareSerial.h> 
 
SoftwareSerial  Sim900Serial(2, 3); // sim900 gprs shield 
//rx-tx sırasıyla 2 ve 3 e takılır
 
void setup()
{
  Sim900Serial.begin(115200);               // GPRS baud rate  
  delay(2000);
  Sim900Serial.println("AT+IPR=19200");  // bu değer tüm gprs 
  //shieldlarında aynı değildir manuellerden bakılmalıdır
  delay(500);
  Sim900Serial.begin(19200);            // bu değer tüm gprs 
  //shieldlarında aynı değildir manuellerden bakılmalıdır   
  delay(1000); 
}
void loop()
{
  Sim900Serial.println("ATD05425420000;"); // aranmasını istediğiniz 
  //numara girlir. ATD komutu sim900'ün AT komut manueli incelendiğinde 
  //arama için kullanıldığı görülür
  //Örnek: Sim900Serial.println("ATD05425420000;"); vodafone müşteri 
  //hizmetlerinin numarası
  while(1);
}


Arduino ile bir telefona mesaj atılması ; 


#include <SoftwareSerial.h>
SoftwareSerial Sim900Serial(2, 3);
void setup()
{
  Sim900Serial.begin(115200);               // GPRS baud rate  
  delay(500);
  Sim900Serial.println("AT+IPR=19200");
  delay(500);
  Sim900Serial.begin(19200);               // GPRS baud rate , Tüm shieldlarda aynı değildir 
  delay(1000);
  Serial.begin(9600);               // bilgisayar seri port baud rate
 Serial.println("SMS gondermek icin g tusuna basiniz: "); 
}
void loop()
{   
   if (Serial.available())
    switch(Serial.read())
   {
     case 'g':
       SendTextMessage();
       break;
    } 
   if (Sim900Serial.available())
    Serial.write(Sim900Serial.read());
}
void SendTextMessage()
{
  Sim900Serial.print("AT+CMGF=1\r");    //SMS text halde gönderilir. Bu komutun ne iş yaptığı sim900 AT komut manuelinden bakılır
  delay(100);
  Sim900Serial.println("AT + CMGS = \"05425420000\"");//mesajın gönderileceği numara
  delay(100);
  Sim900Serial.println("golmuhendis.blogspot.com.tr");//gönderilecek mesaj
  delay(100);
  Sim900Serial.println((char)26);
  delay(100);
  Sim900Serial.println();
}