Arduino GSM kütüphanesini kullanan oldumu?

Başlatan Mucit23, 29 Ağustos 2016, 00:57:19

Mucit23

Selamlar
Elimde Quectel M95 GSM modülü var. Arduino nun GSM kütüphanesi ile bu modülü çalıştırmaya uğraşıyorum. Modül ile seri port üzerinden AT komutlarıyla haberleşiyorum arama felan yapabiliyorum. Ama şu GSM kütüphanesini bir türlü çalıştıramadım. Sözde uyumlu olması gerekiyor hatta kartın üreticisi Arduinonun GSM örneklerini vermiş.

En basitinden Mesaj göndermek için aşağıdaki örnek uygulama var.
/*
 SMS sender

 This sketch, for the Arduino GSM shield,sends an SMS message
 you enter in the serial monitor. Connect your Arduino with the
 GSM shield and SIM card, open the serial monitor, and wait for
 the "READY" message to appear in the monitor. Next, type a
 message to send and press "return". Make sure the serial
 monitor is set to send a newline when you press return.

 Circuit:
 * GSM shield
 * SIM card that can send SMS

 created 25 Feb 2012
 by Tom Igoe

 This example is in the public domain.

 http://www.arduino.cc/en/Tutorial/GSMExamplesSendSMS

 */

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

#define PINNUMBER ""

// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

void setup()
{
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  Serial.println("SMS Messages Sender");

  // connection state
  boolean notConnected = true;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while (notConnected)
  {
    if (gsmAccess.begin(PINNUMBER) == GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("GSM initialized");
}

void loop()
{

  Serial.print("Enter a mobile number: ");
  char remoteNum[20];  // telephone number to send sms
  readSerial(remoteNum);
  Serial.println(remoteNum);

  // sms text
  Serial.print("Now, enter SMS content: ");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);

  // send the message
  sms.beginSMS(remoteNum);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nCOMPLETE!\n");
}

/*
  Read input serial
 */
int readSerial(char result[])
{
  int i = 0;
  while (1)
  {
    while (Serial.available() > 0)
    {
      char inChar = Serial.read();
      if (inChar == '\n')
      {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if (inChar != '\r')
      {
        result[i] = inChar;
        i++;
      }
    }
  }
}


Program setup kısmında if (gsmAccess.begin(PINNUMBER) == GSM_READY) satırında takılıp kalıyor. Haberleşme pinlerinde de sıkıntı yok. Debug moduna alıyorum modülü debug modunda  yukarıdaki programdan aşağıdaki gibi cevaplar geliyor.
AT%13%
0 9>AT%13%%13%%10%OK%13%%10%
AT+CGREG?%13%
9 40>AT+CGREG?%13%%13%%10%+CGREG: 0,2%13%%10%%13%%10%OK%13%%10%
AT+CGREG?%13%
40 71>AT+CGREG?%13%%13%%10%+CGREG: 0,2%13%%10%%13%%10%OK%13%%10%
AT+CGREG?%13%
71 102>AT+CGREG?%13%%13%%10%+CGREG: 0,2%13%%10%%13%%10%OK%13%%10%
AT+CGREG?%13%
102 5>AT+CGREG?%13%%13%%10%+CGREG: 0,2%13%%10%%13%%10%OK%13%%10%
AT+CGREG?%13%
5 36>AT+CGREG?%13%%13%%10%+CGREG: 0,2%13%%10%%13%%10%OK%13%%10%


Şebeke ile ilgili olduğunu düşündüm ama arduino olmadan seri port aracılığıyla AT komutarından arama vs yapabiliyorum. Şebeke problemi olsa yine yapmaz.

Sizce neden böyle birşey olur fikri olan var mı?

striger

pinnumber yazan yere sim kartın 4 haneli pin ni yazıyorsun degil mi

Mucit23


striger

header dan fonksiyona bakmak lazim da, pin yoksa .begin() seklinde bos bırakalıyodur muhtemelen

kantirici

#4
kütüphanede o kısmı kapatıp denesen. Belli ki kütüphanenin istediği cevap gelmiyor.

Mucit23

Bilmiyorumki kapalı kütüphane sonuçta gidip kodları karıştırmak gerekiyor.

Ulan Arduino'yu sırf kod yazmamak için kullanıyorum, Orada bile işlerim rast gitmiyor. İlla AT komuıtlarıyla teker teker boğuşacam yani...

erdcan

Merhabalar, gsm modülünü gsm kütüphanesi ile çalıştırırken, gsm.begin() fonksiyonu, pinnumber ile belirttiğiniz arduino pinini belirli  bir süre HIGH seviyesine çeker ardından Low seviyesine düşürür. Böylece GSM modülünüz açılır. Uygulama örnekleri için http://maker.robotistan.com/download/Quectel-GSM-Shield-Kullanim-Kilavuzu.pdf bakabilirsiniz. pinnumber ile bir arduino pini belirtmeniz gerekmekte. Sonucu paylaşırsanız diğer arkadaşlara da yardımcı olur. Kolay gelsin

Mucit23

Modem açılıyor. Ellede açıyorum farketmiyor. Fakat modem açıldığı zaman GSM Shield üzerindeki NET ledi yanıp sönmeye başlıyor. Fakat yinede gsm.begin kısmında takılıyor. Debug modunda açarsam eğer. AT%13% hatası alıyorum. Modemden aşağıdaki gibi cevaplar geliyor.

0 9>AT%13%%13%%10%OK%13%%10%

9 40>AT+CGREG?%13%%13%%10%+CGREG: 0,3%13%%10%%13%%10%OK%13%%10%

40 71>AT+CGREG?%13%%13%%10%+CGREG: 0,3%13%%10%%13%%10%OK%13%%10%

71 102>AT+CGREG?%13%%13%%10%+CGREG: 0,3%13%%10%%13%%10%OK%13%%10%

102 5>AT+CGREG?%13%%13%%10%+CGREG: 0,3%13%%10%%13%%10%OK%13%%10%

5 36>AT+CGREG?%13%%13%%10%+CGREG: 0,3%13%%10%%13%%10%OK%13%%10%

36 67>AT+CGREG?%13%%13%%10%+CGREG: 0,3%13%%10%%13%%10%OK%13%%10%

67 98>AT+CGREG?%13%%13%%10%+CGREG: 0,3%13%%10%%13%%10%OK%13%%10%

98 1>AT+CGREG?%13%%13%%10%+CGREG: 0,3%13%%10%%13%%10%OK%13%%10%

Şebeke ile ilgili bir problemmi var diye düşünüp modemin hiç enerjisini kesmeden yani modem açıkken Seri port aracığılıyla AT+CREG sorgulaması yapıyorum ve CREG=0,1 şeklinde cevap alıyorum yani modem açıldıktan sonra şebekeye bağlanmış oluyor.



striger

senin yaptıgın AT+CREG sorgusuna karsılık gelen CREG=0,1 olumlu sebekeye baglandıgını gosteriyor ama kullandıgın kutuphane AT+CGREG? ile gprs sorgusu da yapıyor ve gelen yanıt +CGREG: 0,3 (Registration denied) ok alana kadarda surekli tekrarlıyor sanırım, terminalden AT+CGREG? ile sorgularsan da gelen yanıt aynı olucaktır, gprs ayarlarını yapana kadar da olumlu yanıt gelmeyecektir herhalde

Mucit23

#9
Evet bu sorunu aşmak için hatta internet vs olması gerekiyormu?

Ben kendim AT komutlarıyla haberleşerek SMS gönderme gibi işlemleri de yapıyorum. Ama onlarda şebekeye bağlı olmak yetiyor sanırım.

Kendim AT komutlarıyla AT+CGREG? sorgulaması yaptığımda +CGREG: 0,0 cevabı geliyor.

Arduino Kütüphanesinde GPRS olmadan bağlantı kurmak mümkünmü? Ben GPRS istemiyorum Basit işler yapacağım zaten.

mesaj birleştirme:: 30 Ağustos 2016, 10:49:44

Bunun internetle bir ilgisi olmaması lazım. İnternet açık olan kendi hattımda deniyorum AT komutlarıyla AT+CGREG? Sorgulamasında +CGREG: 0,1 cevabı geliyor. Yani kendi hattımda GPRS'e de bağlanıyor.

mesaj birleştirme:: 30 Ağustos 2016, 12:32:03

Ekleme şuan bağlantı kurulmaya başlandı. HW reset atıldıktan sonra epeyce bir beklemek gerekiyor anladığım kadarıyla.

Mucit23

Selamlar

Arduinodaki GSM kütüphanesinde şöyle bir sıkıntım var. Modül ilk açıldığı zaman GPRS bağlantısını bekliyor. Buda herzaman  gerçekleşmiyor. Arduino'da denediğimde başarılı bir bağlantı oranı ancak %20'lerde.

Sorun dediğim gibi GPRS bağlantısından kaynaklanıyor.
Ben modülü Seri porttan bilgisayara bağlayıp denediğimde Şebeke bağlantısının müsait olduğunu ancak gprs bağlantısının herzaman gerçekleşmediğini görüyorum. Normalde herzaman +CREG:0,1 cevabı geliyor ama gprs de sıkıntı var.

Normal şebeke bağlantısı bildiğim kadarıyla sms göndermeye yetiyor. Bu durumda init aşaması için gprs bağlantısını nasıl kapatabilirim? Gerek yok gprs'e

muratcura35

bendede aynı sorunlar var sayılır. pc üzerinden arama  cevaplama msj okuma yapıyorum. fakat bi türlü sms gönderemedim. dah arduno ile denemeye geçemedim bile.  bilgi sahibi olan varsa yardım lütfen ??

ahmbay

#12
datadan sonra <CR>  chr(13)  sonra text datasi daha sonrada ESC karakteri ile bitirdiginize emin olun, sorun bu yuzden kaynaklaniyordur %99.9 ;)

(+CMGF=1): +CMGS=<da>[, <toda>]<CR> text is entered <ctrl-Z/ESC>