GSM modülü, GSM (Global System for Mobile Communications) teknolojisine dayanan birçok iletişim cihazında kullanılmaktadır. Bir bilgisayar kullanarak GSM şebekesi ile etkileşim kurmak için kullanılır. GSM modülü yalnızca AT komutlarını anlar ve buna göre yanıt verebilir. En temel komut "AT" dir, GSM düzgün yanıt veriyorsa o zaman iyi çalışıyor, aksi takdirde "HATA" ile yanıt veriyor. Bir aramayı cevaplamak için ATA, bir aramayı çevirmek için ATD, mesajı okumak için AT + CMGR, sms göndermek için AT + CMGS vb. Gibi çeşitli AT komutları vardır.), "AT + CMGS \ r" gibi. Bu komutları kullanarak GSM modülünü kullanabiliriz.
8051 ile GSM Arayüzü
PC kullanmak yerine, GSM modülünden yanıt almak için GSM modülü ve LCD ile etkileşime girmek için mikrodenetleyicileri kullanabiliriz. Yani GSM'yi bir 8051 mikro denetleyici (AT89S52) ile arayüzleyeceğiz. GSM ile 8051 arasında bağlantı kurmak çok kolay, sadece mikrodenetleyiciden AT komutları göndermemiz ve GSM'den yanıt almamız ve LCD'de görüntülememiz gerekiyor. GSM ile iletişim kurmak için mikro denetleyicinin seri portunu kullanabiliriz, yani PIN 10 (RXD) ve 11 (TXD) kullanmak demektir.
Öncelikle LCD'yi 8051'e bağlamamız gerekiyor, bunu buradan öğrenebilirsiniz: 8051 Mikrodenetleyici ile LCD Arabirimi. O zaman GSM modülünü 8051'e bağlamamız gerekiyor, şimdi burada biraz dikkat etmemiz gerekiyor. Öncelikle GSM modülünüzün TTL mantığında çalışıp çalışmadığını veya sadece RS232 ile çalışıp çalışmadığını kontrol etmeniz gerekir. Temel olarak, modülünüzde RX ve TX (GND ile) Pinleri varsa, TTL mantığında çalışabilir. Ve eğer herhangi bir RX, TX pini yoksa ve sadece bir RS232 bağlantı noktasına (9'lu seri bağlantı noktası) sahipse, mikro denetleyiciye seri bağlantı noktası bağlamak için MAX232 IC kullanmanız gerekir. Temelde MAX232Seri verileri TTL mantığına dönüştürmek için kullanılır çünkü Mikroişlemci yalnızca TTL mantığında çalışabilir. Ancak GSM modülünde RX, TX pinleri varsa, MAX232 veya herhangi bir seri dönüştürücü kullanmanıza gerek yoktur, GSM'in RX'ini 8051'in TX (PIN 11) ve GSM'in TX'sini 8051'in RX (PIN 10) 'a doğrudan bağlayabilirsiniz. Bizim durumumuzda SIM900A modülünü kullandım ve RX, TX pinlerine sahip olduğundan MAX232 kullanmadım.
AT89S52 mikro denetleyici ile GSM arabirimi için Devre Şeması yukarıdaki şekilde gösterilmektedir. Şimdi bağlantıdan sonra, GSM'e AT komutları göndermek ve cevabını LCD'de almak için sadece program yazmamız gerekiyor. Yukarıda açıklandığı gibi birçok AT komutu vardır, ancak bu makalenin kapsamımız sadece GSM'yi 8051 ile arabirim haline getirmektir, bu nedenle sadece “AT” komutunu ve ardından “\ r” (onaltılık olarak 0D) göndereceğiz. Bu bize "Tamam" cevabını verecektir. Ancak bu programı GSM'nin tüm olanaklarını kullanacak şekilde genişletebilirsiniz.
Kod açıklaması
LCD ile ilgili tüm işlevlerin yanı sıra, burada Seri bağlantı noktası ve zamanlayıcı modu kaydını (TMOD) kullandık. 8051 proje bölümümüzü inceleyerek LCD fonksiyonları ve diğer kodlar hakkında bilgi edinebilirsiniz, burada seri haberleşme ile ilgili kod fonksiyonlarını açıklıyorum:
GSM_init () işlevi:
Bu işlev, mikro denetleyici için Baud hızını ayarlamak için kullanılır. Baudrate, iletilen veya alınan Bit / saniyeden başka bir şey değildir. Ve 8051 baud hızını GSM modülünün Baud hızı yani 9600 ile eşleştirmemiz gerekiyor. Mod 2'de (8-bit otomatik yeniden yükleme modu) Zamanlayıcı 1'i TMOD kaydını 0X20'ye ve Zamanlayıcı 1'in Yüksek baytına ayarlayarak kullandık. 9600 baud hızını elde etmek için (TH1) ila 0XFD. Ayrıca SCON kaydı seri iletişim modunu ayarlamak için kullanılır, Mod1'i (8-bit UART) alma etkinken kullandık.
GSM_write İşlevi:
SBUF (seri tampon özel fonksiyon kaydı) seri iletişim için kullanılır, seri cihaza herhangi bir baytı göndermek istediğimizde, bu baytı SBUF kaydına koyarız, tam bayt gönderildiğinde TI biti donanım tarafından ayarlanır. Bir sonraki baytı göndermek için onu sıfırlamamız gerekiyor. Baytın başarıyla gönderildiğini gösteren bir bayraktır. TI, SCON yazmacının ikinci bitidir. Bu işlevi kullanarak "AT" gönderdik.
GSM_read işlevi:
Göndermeyle aynı, harici aygıttan herhangi bir bayt aldığımızda, bayt SBUF kaydına koyulursa, sadece okumamız gerekir. Ve tam bayt alındığında RI biti donanım tarafından ayarlanır. Bir sonraki baytı almak için onu sıfırlamamız gerekiyor. RI, SCON kaydının ilk bitidir. Bu işlevi kullanarak "Tamam" yanıtını okuduk.