Bazı belirli uygulamalarda, mikrodenetleyici tabanlı sistemlerin kontrolünü kullanıcının arama yaparak veya mesajlar yollayarak sağlayabileceği bir GSM şebekesi ile bağlantılı olması gerekir. Bir sistem veya cihaz ile GSM bağlantısı kullanmanın avantajı herhangi başka kablosuz bağlantılarla karşılaştırıldığında şudur; kullanıcı da cihaz da hücresel kapsama alanında oldugu sürece, kullanıcı ne kadar uzaklıkta olursa olsun sistemi sorunsuz şekilde kablosuz kontrol edebilir.

Cep telefonları, içerisine yerleştirilmiş GSM modülleri sayesinde arama yapmayı, sms almayı – göndermeyi ve hatta GPRS ağına bağlanmayı sağlayan işlemciye sahiptir. Mikrodenetleyici tabanlı sistemlerle seri iletişim yapabileceğimiz mevcut GSM modülleri bulunmaktadır. İletişim kurma, GSM modülüyle birlikte AT komutları göndererek veya alarak sağlanır. Bir GSM modülüne nasıl arayüz oluşturulacağı ve 16 * 2 LCD ekranda nasıl SMS okunacağı ve görüntüleneceği bu projede anlatılmıştır.
Herhangi bir AVR mikrodenetleyici tabanlı kart standart Arduino şemasını takip eder ve Arduino bootloader, Arduino kartıyla arama yapmaya yardımcı olur. Arduino ve Arduino IDE açık kaynak (open source) donanıma sahiptir ve Arduino için herkes oradaki kütüphanelere katkıda bulunabilir. Tüm arduino kartları,  Arduino IDE ile uyumlu olmalıdır.(Arduino IDE = Arduino kartlarını programlamak için kullanılan program)

 

01

Açıklamalar :
Bu proje çalışmasında Arduino pro-mini tabanlı kart ve windows için IDE 1.0.3 sürümü açıklanmıştır. Bu kartın avantajı boyutunun çok küçük oluşudur; bazı konnektör türleri bizim ihtiyaçlarımıza göre kartın çevresine lehimlenmiş olmalıdır. Yani,  çok kullanışlı bir karttır ve diğer tipik kartlara göre çok daha az yer kaplar.
Arduino pro-mini kartı ve Arduino IDE resmi aşağıda gösterilmiştir:

02

03

Arduino pro-mini kartı devre sistemine sahip olmadığı zamandan bu yana seri port veya bilgisayarın USB portu ile arayüz oluşturup bilgisayar ile bağlanabilmek için harici bir USB/TTL dönüştürücü kartı gerekir. Bu donanım Arduino kartını programlamaya ve bilgisayarın USB portu ile seri haberleşmeye yardımcı olur.

04
Okuyucunun Arduino’ya başladığı ve burada tartışılan her şeyi denediği varsayılmıştır.
Bu projede kullanılan GSM modülü RS232 seri haberleşme portu kullanarak diğer aygıtlarla iletişim kuran SIM900 tabanlı modüldür. 9V güç kaynağıyla çalışır ve görüntüsü aşağıda verilmiştir:

05
GSM modülü seri haberleşme portu kullanarak Arduino kartı ile bağlanmıştır. Modül RS232 portuna sahip olduğu ve Arduino pro-mini TTL mantık seviyeleri kullanarak iletişim kurabildiği zamandan bu yana, Max232 IC, RS232 ve TTL mantık seviyeleri arasında çift yönlü dönüşüm yapar.
Arduino kartın pimleri MAX232 aracılığıyla GSM modülünün pimlerine bağlanır. Arduino’nun Tx pimi GSM modülünün Rx pimine, Arduino’nun Rx pimi GSM modülünün Tx pimine bağlanır.
Arduino’da yazılan kod AT komutları kullanarak GSM modülü ile iletişim kurabilir. Arduino kütüphanesi tarafından sağlanan seri haberleşme fonksiyonlarını kullanarak modülden AT komutları gönderir veya alır. Serial.begin () gibi fonksiyonlar seri portun verilen belirli bir baud hızı ile başlatılmasına , Serial.write () seri porta veri göndermeye, Serial.available () ve Serial.read () fonksiyonları bu projede kullanılan seri porttan gelen verileri okumaya yardımcı olur.
GSM modülleri “AT” komutu aldığında “OK” yanıtını verir; modül ile mikrodenetleyici arasındaki iletişimi kontrol etmenin en iyi yolu budur.
+ CMGF – Bu komut SMS modunu ayarlamak için kullanılır. Komuta 1 veya 0 atanarak metin veya PDU modu seçilebilir.

Sözdizisi : AT+CMGF=<mode>
0: PDU modu için
1: Metin modu için
Örneğin : AT+CMGF=1
+CNMI- komutunu ele alalım. Bu AT komutu yeni SMS geldiğini belirtmek için kullanılır.Ayrıca GSM / GPRS modem veya cep telefonundan alınan SMS mesajlarını seri porta doğrudan göndermek, onları mesaj kutusuna kaydetmek ve daha sonra seri port üzerinden bir ileti göndererek ana aygıta bildirmesini ayarlamak için kullanılır.
Sözdizisi : AT+CNMI=<mode>
Örneğin, bu projede alınan mesaj dizisini cihazın seri portuna göndermek için yazılmış kod aşağıdaki komutta gösterilmiştir;
AT+CNMI=2,2,0,0,0
Bir SMS alındığında, GSM modülü Arduino kartına mesaj ile ilgili pek çok ayrıntıdan oluşan uzun bir dize ve de orijinal metni gönderir. Bu şekilde yazılan kod seri port üzerinden herhangi bir karakter alınana kadar bekler ve alınmaya başladığında dördüncü ‘ ” ’ oluşumunu kontrol eder sonra karakterlerin geri kalanı doğrudan 16 * 2 LCD’ye yazılır. Alınan dizedeki dördüncü ‘ “ ’ den sonra gelen karakterler orijinal metin olacaktır ve karakterlerin geri kalanı göz ardı edilecektir.Bu şekilde kullanılan kod aşağıdadır;

 do
    {
        while ( !Serial.available() );   
    } while ( '"' != Serial.read() );
  
    do
    {
        while ( !Serial.available() );   
    } while ( '"' != Serial.read() );
 
    do
    {
        while ( !Serial.available() );   
    } while ( '"' != Serial.read() );
   
    do
    {
        while ( !Serial.available() );   
    } while ( '"' != Serial.read() );

16 * 2 LCD’ye yazılan SMS metni, <LiquidCrystal.h> kütüphanesinden fonksiyonlar kullanarak Arduino kartıyla harici bir LCD modüle arayüz oluşturmak için kullanılır.Daha önceki projelerimizde LCD’yi bağlamak için kullanılan fonkiyonları anlatmıştık. ‘Arduino’ya nasıl başlanır’ projesinde açıklandığı gibi Arduino kartına aynı komutları gönderen bir kodu doğrulayabilir ve yükleyebilirsiniz. GSM modülünün en az 2 dakika açık kaldığından emin olduğunuzda Arduino kartı komutları göndermeye başlar bu yüzden GSM, takılı SIM karta uyan hücresel ağ ile iletişim kurabilir.

Devre Şeması :

06

İlgili Video :