QUECTEL M95 GSM/GPRS MODÜL KART TASARIMI VE ÇALIŞTIRILMASI

     Merhaba arkadaşlar. 30 iş günü olan stajımı AR-GE bölümünde tamamladım. Bu yazımda sizlere staj süresince çalışmış olduğum proje hakkında bilgi paylaşımında bulunacağım. Projedeki amacım, modülün Arduino ile programlandıktan sonra, sms göndermesi ve çağrı iletmesi gibi fonksiyonların yapılabildiği bir kart tasarlamak. İlk olarak GSM ve GPRS nedir ondan bahsedelim.

GSM ve GPRS nedir?

GSM, (Global System for Mobile Communications), cep telefonlarında kullanılan bir iletişim protokolüdür. GSM ilk defa 1990 yılında tanımlanmış ve 1991 yılında kullanılmaya başlanmıştır. 1997 Yılındaysa tüm dünya çapında 100’den fazla ülkede standart olarak kullanılmıştır. Yalnızca 2005 yılına erişildiğinde GSM kullanan abonelerin sayısı Asya’dan Avrupa’ya 200’ün üzerinde ülkede 1.6 milyar kişiye ulaşmayı başarmıştır.

GPRS, mevcut 2G cep telefonu şebekesi üzerinden paket anahtarlamalı olarak veri iletimi sağlayan teknoloji. Genellikle cep telefonları ve internet arasında, küçük veri paketlerinin alışverişi amacıyla kullanılır.

     Quectel M95 Modül, en küçük modüllerden biridir. Düşük güç tüketimi, çoklu soket algılama ve Jammer(sinyal boğucu) algılama gibi özelliklere sahiptir. Bunun yanında teknik özelliklerine de aşağıda değinelim;

  • GPRS Multi-slot Class 1~12 ayarlanabilir
  • GPRS Mobile Station Class B
  • Besleme gerilimi: 3.3~4.6V 4.0V nominal
  • Düşük güç tüketimi:  1.3mA
  • Çalışma sıcaklığı:  -40 °C ile +85 °C arası
  • Boyutlar:  19.9 × 23.6 × 2.65mm
  • Ağırlık (yaklaşık): 3gr
  • GSM 07.07 ,07.05 ve diğer gelişmiş AT komutları destekler
  • Quad-band: 850/ 900/ 1800/ 1900MHz

SERİ HABERLEŞME PROTOKOLÜ

  Projemde kullandığım M95 modülü seri haberleşme protokolü olarak UART haberleşme protokolünü kullanmaktadır ve veri taşıma hızı olarak 4800bps’den 115200bps’e kadar desteklemektedir.

UART: (Universal Asynchronous Receiver Transmitter), bilgisayar ve mikrokontroller veya mikrokontroller ve çevre birimler arasında haberleşmeyi sağlayan haberleşme protokolüdür. Asenkron olarak çalıştığı için herhangi bir “clock” ihtiyacı duymaz. Baudrate (veri taşıma hızı) çok çeşitli aralıklarda olabir genel olarak yaygın olarak kullanılan baudrate’ler 4800-9600-57600-115200bps değerindedir. Baudrate bizim verimizin saniyede ne kadarlık byte’ını taşıyacağını belirlememize yarar.

      Projede, M95 kart tasarımını KiCad ile yaparak, çalışır hale getirdim ve Arduino üzerinden arama yapma ve sms iletme gibi fonksiyonları gerçekleştirdim.   

QUECTEL M95 GSM/GPRS MODÜL DEVRESİ

Power Supply: Arduino üzerinden gelen 5V gerilim, 4V gerilime düşürülür. 4V gerilime düşürülme nedini, devredeki bazı elemanların 4V gerilime ihtiyaç duyması ve Modülün besleme geriliminin 3.3V ile 4.6V(önerilen 4V) arasında olmasıdır. MPM3830 kullanılmıştır.

Serial Interface: Çift Yönlü Gerilim Seviye Çevirici (TXB0106PWR) ile Arduino’dan gelen 3.3V>2.8V gerilime çevirilerek modüle, modüldeki 2.8V>3.3V gerilime çevirilerek Arduino’ ya iletilir.

PwrKey: (M95 GSM/GPRS Modül)Açma / Kapatma Anahtarı dizayn.

Sim Card: 6 pin Sim kart dizayn. Sim konnektör olarak 115U-A000 kullanılmıştır ve anlık voltaj dalgalanmasını engellemek için TVS diyot kullanılmıştır.

Audio: Kulaklık Arayüz dizayn.

Antenna: RF Anten dizayn.

M95 PinSocket: M95 Modül, kart üzerine oturtulacağı için Pinsocketler ile başka bir karta yol sağlanmıştır.


Şematik Tasarımın Tamamı


PCB Tasarım


PCB 3D Görünüm


Kartın Son Hali


     M95 modülü AT komutlarıyla kontrol edilebilir. Ben Arduino aracılığı ile kontrol etmeyi tercih ettim. Yazdığım programdaki AT komutlarını ise üretici firmanın paylaşmış olduğu M95 AT Commands adlı datasheet ‘den aldım.

AT komutları: “ATtention” kelimesinin kısaltması olan AT komutları bir modemi kontrol etmek amacıyla kullanılır. Tüm komutlar “AT” veya “at” ile başlar. Bu komutların çoğu modemi kontrol etmek için kullanılsa da GSM/GPRS modüllerini ve mobil telefonlarını da kontrol etmek için kullanılır.

#include <SoftwareSerial.h> //ARAMA Yapma
SoftwareSerial mySerial(3, 2);
void setup()
{
   Serial.begin(9600);
  mySerial.begin(9600);
  Serial.println("Initializing...");
  delay(1000);
  mySerial.println("AT");
  updateSerial();
  mySerial.println("ATD+90XXXXXXXXXX;");
  updateSerial();
  delay(20000);
  mySerial.println("ATH");
  updateSerial();
}
void loop()
{
}
void updateSerial()
{
  delay(500);
  while (Serial.available())
  {
    mySerial.write(Serial.read());
  }
  while(mySerial.available())
  {
    Serial.write(mySerial.read());
  }
}

#include <SoftwareSerial.h> //SMS Atma
SoftwareSerial mySerial(3, 2);
void setup()
{
  Serial.begin(9600);
  mySerial.begin(9600);
  Serial.println("Initializing...");
  delay(1000);
  mySerial.println("AT+CFUN=1");
  updateSerial();
  mySerial.println("AT");
  updateSerial();
  mySerial.println("AT+CMGF=1");
  updateSerial();
  mySerial.println("AT+CMGS=\"+90XXXXXXXXXX\"");
  updateSerial();
  mySerial.print("test");
  updateSerial();
  mySerial.write(26);
}
void loop()
{
}
void updateSerial()
{
  delay(500);
  while (Serial.available())
  {
    mySerial.write(Serial.read());
  }
  while (mySerial.available())
  {
    Serial.write(mySerial.read());
  }
}

SMS ATMA

ARAMA YAPMA

Abdulkerim OFLAZ
KONYA TEKNİK ÜNİVERSİTESİ