- Gerekli malzemeler
- Kullanılan Yazılım
- GSM Modülü
- AT komutlarını kullanarak GSM modülü ile iletişim kurma
- ATMega16 GSM Modülü Arayüz Devre Şeması
- CodeVision kullanarak ATmega16 için Proje Oluşturma
- Kod ve Açıklama
- Projeyi Oluşturun
- Kodu Atmega16'ya yükleyin
GSM modülleri, özellikle projemiz uzaktan erişim gerektirdiğinde kullanımı ilginçtir. Bu modüller, normal cep telefonumuzun yapabileceği, arama yapma / alma, SMS gönderme / alma, GPRS kullanarak internete bağlanma vb. Gibi tüm işlemleri yapabilir. Ayrıca bu modüle normal bir mikrofon ve hoparlör bağlayabilir ve telefonunuzla sohbet edebilirsiniz. mobil aramalar. Bu, bir Mikroişlemci ile arayüz oluşturulabilirse birçok yaratıcı projeye kapı açacaktır. Bu nedenle, bu eğitimde , GSM modülünü (SIM900A) AVR mikro denetleyici ATmega16 ile nasıl Arabirim yapabileceğimizi öğreneceğiz ve GSM Modülünü kullanarak mesaj gönderip alarak göstereceğiz.
Gerekli malzemeler
- Atmega16
- GSM modülü (SIM900 veya diğerleri)
- LCD ekran
- Basma düğmeleri
- 10k direnç, Potansiyometre
- Bağlantı telleri
- 12V Adaptör
- USBasp programcısı
- 10 pinli FRC kablosu
Kullanılan Yazılım
Biz kullanacağız CodeVisionAVR bizim kodu ve yazma için yazılım SinaProg USBASP programcı kullanarak Atmega16 bizim kodunu yüklemek için yazılım.
Bu yazılımları verilen bağlantılardan indirebilirsiniz:
CodeVisionAVR:
SinaProg:
Şemalara ve kodlara geçmeden önce GSM modülü ve işleyişi hakkında bilgi ediniyoruz.
GSM Modülü
GSM modülü, AT komut modu kullanılarak herhangi bir mikrodenetleyici olmadan da kullanılabilir. Yukarıda gösterildiği gibi, GSM modülü, bir MAX232 modülü kullanılarak bilgisayara doğrudan arayüzlenebilen bir USART adaptörüyle birlikte gelir veya Tx ve Rx pinleri onu bir Mikroişlemciye bağlamak için kullanılabilir. Ayrıca mikrofon veya Hoparlörün bağlanabileceği MIC +, MIC-, SP +, SP- vb. Gibi diğer pinleri de fark edebilirsiniz. Modül, normal bir DC varil jakı üzerinden 12V adaptörle çalıştırılabilir.
SIM kartınızı modülün yuvasına takın ve açın, bir güç LED'inin Yandığını fark etmelisiniz. Şimdi bir dakika kadar bekleyin ve her 3 saniyede bir yanıp sönen kırmızı (veya başka bir renkte) LED görmelisiniz. Bu, Modülünüzün SIM kartınızla bağlantı kurabileceği anlamına gelir. Artık modülünüzü Telefon veya herhangi bir Mikrodenetleyici ile bağlamaya devam edebilirsiniz.
GSM modülünü kullanarak birçok harika proje oluşturabilirsiniz:
- GSM ve Arduino kullanan Kablosuz Bildirim Panosu
- Arduino ve GSM Modülünü kullanan Otomatik Çağrı Cevaplama Makinesi
- Arduino kullanarak GSM Tabanlı Ev Otomasyonu
- PIR Sensörü ve GSM Tabanlı Güvenlik Sistemi
Ayrıca buradan GSM ile ilgili tüm projeleri kontrol edin.
AT komutlarını kullanarak GSM modülü ile iletişim kurma
Tahmin edebileceğiniz gibi, GSM modülü Seri iletişim yoluyla iletişim kurabilir ve yalnızca bir dili anlayabilir, bu da " AT komutları " dır. GSM modülüne söylemek veya sormak isteyebileceğiniz her ne olursa olsun, yalnızca AT komutları aracılığıyla olmalıdır. Örneğin, modülünüzün aktif olup olmadığını bilmek istiyorsanız. "AT" gibi bir komut istemelisiniz (göndermelisiniz) ve modülünüz "Tamam" yanıtını verecektir.
Bu AT komutları veri sayfasında iyi bir şekilde açıklanmıştır ve burada resmi veri sayfasında bulunabilir. Tamam! Tamam! 271 sayfalık bir veri sayfasıdır ve bunları okumak günler sürebilir. Bu yüzden, bunu yakında kurup çalıştırmanız için aşağıda bazı en önemli AT komutlarını verdim.
AT |
Onay için Tamam ile Yanıtlar |
+ CPIN'de? |
Sinyal Kalitesini Kontrol Edin |
+ COPS AT? |
Servis sağlayıcı adını bulun |
ATD96XXXXXXXX; |
Belirli bir numaraya çağrı, noktalı virgülle biter |
AT + CNUM |
SIM kartın numarasını bulun (bazı SIM'ler için çalışmayabilir) |
ATA |
Gelen Aramayı Cevaplama |
ATH |
Mevcut Gelen aramayı sonlandırın |
AT + COLP |
Gelen çağrı numarasını göster |
AT + VTS = (sayı) |
DTMF numarasını gönderin. (Numara) için mobil klavyenizdeki herhangi bir numarayı kullanabilirsiniz |
AT + CMGR |
AT + CMGR = 1 ilk pozisyonda mesajı okur |
AT + CMGD = 1 |
İlk pozisyondaki mesajı sil |
AT + CMGDA = ”TÜMÜNÜ SİL” |
Tüm mesajları SIM'den sil |
AT + CMGL = ”TÜMÜ” |
SIM'den gelen tüm mesajları okuyun |
AT + CMGF = 1 |
SMS yapılandırmasını ayarlayın. "1" yalnızca metin modu içindir |
AT + CMGS = "+91 968837XXXX" > CircuitDigest Metni
|
Burada 968837XXXX belirli bir numaraya SMS gönderir. “>” Gördüğünüzde metni girmeye başlayın. Metni göndermek için Ctrl + Z tuşlarına basın. |
AT + CGATT? |
SIM kartta internet bağlantısını kontrol etmek için |
AT + CIPSHUT |
TCP bağlantısını kapatmak, internetten bağlantıyı kesmek anlamına gelir |
AT + CSTT = "APN", "kullanıcı adı", "Geçiş" |
APN ve Geçiş anahtarınızla GPRS'e bağlanın. Ağ Sağlayıcısından edinilebilir. |
AT + CIICR |
SIM kartta veri paketi olup olmadığını kontrol edin |
AT + CIFSR |
SIM ağının IP'sini alın |
AT + CIPSTART = "TCP", "SUNUCU IP", "PORT" |
TCP IP bağlantısı kurmak için kullanılır |
+ CIPSEND'TE |
Bu komut, sunucuya veri göndermek için kullanılır |
Burada mesaj göndermek için AT + CMGF ve AT + CMGS komutlarını kullanacağız.
Arduino ile GSM modülünü kullandıysanız, mesaj alırken cep telefonu numarasını ve metin mesajını seri monitörde görüntülemek için + CMT: komutunu kullanabilirsiniz. Metin mesajı resimde gösterildiği gibi ikinci satıra gelir.
Mesajın mevcut olup olmadığını kontrol etmek için bu + CMT: komutunu tarayacağız.
ATMega16 GSM Modülü Arayüz Devre Şeması
Bağlantılar aşağıdaki gibi olacaktır
- GSM modülünün Tx ve Rx'i sırasıyla Atmega16'nın Rx (Pin14) ve Tx (Pin15) 'üne.
- PD5 (Pin19) ve PD6 (Pin20) Düğmeleri.
- LCD bağlantıları:
- RS - PA 0
- R / W - PA1
- EN - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
CodeVision kullanarak ATmega16 için Proje Oluşturma
CodeVisionAVR ve SinaProg yazılımlarını kurduktan sonra , proje oluşturmak ve kod yazmak için aşağıdaki adımları izleyin:
Zaten yüklendi
1. Adım. CodeVision'ı açın Dosya -> Yeni -> Proje'ye tıklayın . Onay Diyalog kutusu görünecektir. Evet'e tıklayın
Adım 2. CodeWizard açılacaktır. İlk seçeneğe, yani AT90'a tıklayın ve Tamam'a tıklayın.
Adım 3: - Mikrodenetleyici çipinizi seçin, burada gösterildiği gibi Atmega16L alacağız.
Adım 4: - USART'a tıklayın. Alıcı ve Vericiyi üzerine tıklayarak seçin. Aşağıda gösterildiği gibi:
Adım 5: - Alfanümerik LCD'ye tıklayın ve Alfanümerik LCD desteğini etkinleştir'i seçin.
Adım 6: - tıklayın Programı -> Kaydet ve Çık, üret . Şimdi işimizin yarısından fazlası tamamlandı
Adım 7: - Masaüstünde Yeni bir klasör oluşturun, böylece dosyalarımız klasörde kalır, aksi takdirde tüm masaüstü penceresine dağılmış oluruz. Klasörünüzü istediğiniz gibi adlandırın ve program dosyalarını kaydetmek için aynı adı kullanmanızı öneririm.
Dosyaları kaydetmek için birbiri ardına üç diyalog kutusu olacak.
İlkini kaydettikten sonra görünecek diğer iki diyalog kutusu için de aynısını yapın.
Şimdi, çalışma alanınız böyle görünüyor.
İşimizin çoğu Sihirbazın yardımıyla tamamlandı. Şimdi sadece GSM için kod yazmamız gerekiyor.
Kod ve Açıklama
Tüm başlık dosyaları proje oluşturulduktan sonra otomatik olarak eklenir, sadece delay.h başlık dosyasını eklemeniz ve tüm değişkenleri bildirmeniz gerekir. Bu eğitimin sonunda kodun tamamı verilmiştir.
#Dahil etmek
UDR yazmacından veri almak için bir işlev yapın. Bu işlev alınan verileri döndürür.
işaretsiz karakter alındı_değer (void) { while (! (UCSRA & (1 <
Biri mesaj göndermek ve diğeri almak için olmak üzere iki if ifadesi oluşturduğumuz while döngüsüne gelin. Gönder düğmesi ATmega'nın PIND6'sına bağlıdır ve PIND5 ile mesaj alma düğmesi.
PIND6'ya (Gönder Düğmesi) ilk basıldığında, eğer ifade çalıştırılacak ve mesaj gönderilecek tüm komutlar tek tek çalıştırılacaktır.
while (1) { // lcd_clear (); lcd_putsf ("Gönder-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Alma-> buttn 2"); eğer (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Mesaj Gönderiliyor…"); için (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; gecikme_ms (100); } UDR = ('\ r'); gecikme_ms (500); için (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; gecikme_ms (100); } …..
Mesaj al butonuna basılırsa, (b! = '+') Döngüsü CMT komutunun mevcut olup olmadığını kontrol edecektir. Varsa, ikinci while döngüsü yürütülür ve komutun ikinci satırına gider ve mesajı LCD'de tek tek yazdırır.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Mesaj Alınıyor…"); b = alınan_değer (); while (b! = '+') { b = alınan_değer (); } b = alınan_değer (); eğer (b == 'C') { b = alınan_değer (); … ..
Bu döngü, programı ikinci komut satırına götürür ve mesajı dizide depolar.
while (b! = 0x0a) { b = alınan_değer (); } for (b = 0; b <3; b ++) { c = alınan_değer (); msg = c; } .. ..
Bu for döngüsü, mesajı LCD'de görüntülemek içindir.
için (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // PRINT IN lcd delay_ms (10); }
Demo Video ile eksiksiz kod aşağıda verilmiştir, şimdi projemizi oluşturmamız gerekiyor.
Projeyi Oluşturun
Gösterilen proje simgesini tıklayın.
Projeyi oluşturduktan sonra, Debug-> Exe klasöründe, projenizi kaydetmek için daha önce yaptığınız klasörde bulunan bir HEX dosyası oluşturulur . Sinaprog yazılımını kullanarak Atmega16'ya yüklemek için bu HEX dosyasını kullanacağız.
Kodu Atmega16'ya yükleyin
Atmega16'yı programlamak için devrelerinizi verilen şemaya göre bağlayın. FRC kablosunun bir tarafını USBASP programlayıcısına bağlayın ve diğer tarafı aşağıda açıklandığı gibi mikrodenetleyicinin SPI pinlerine bağlanacaktır:
- FRC dişi konnektörün Pin1'i -> Pin 6, Atmega16'nın MOSI'si
- Atmega16'nın Vcc'sine bağlı Pin 2, yani Pin 10
- Atmega16 yani Pin 9'un Sıfırlanmasına bağlı Pin 5
- Atmega16'nın SCK'sına bağlı Pin 7, yani Pin 8
- Atmega16'nın MISO'suna bağlı Pin 9, yani Pin 7
- Atmega16'nın GND'sine bağlı Pin 8 yani Pin 11
Yukarıda oluşturulan Hex dosyasını Sinaprog'u kullanarak yükleyeceğiz, bu yüzden açın ve Cihaz açılır menüsünden Atmega16'yı seçin. Gösterildiği gibi Debug-> Exe klasöründen HEX dosyasını seçin.
Şimdi, Program'a tıklayın ve kodunuz ATmega16 Mikroişlemciye yazılacaktır.
İşlemi tamamladınız ve Mikrodenetleyiciniz programlandı. GSM ve ATmega16 mikrodenetleyiciden mesaj göndermek ve almak için sadece düğmelere basın.
Tam kod ve tanıtım videosu aşağıda verilmiştir.