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ı?
pinnumber yazan yere sim kartın 4 haneli pin ni yazıyorsun degil mi
Simde pin numarası yok ki.
header dan fonksiyona bakmak lazim da, pin yoksa .begin() seklinde bos bırakalıyodur muhtemelen
kütüphanede o kısmı kapatıp denesen. Belli ki kütüphanenin istediği cevap gelmiyor.
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...
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 (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
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.
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
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.
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
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 ??
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>