Arduino ile SIM800C Arayan Numarayı Çekme
Sim800C / L modülü ile gerçekleştireceğiniz projelerinizde kullanabileceğiniz bu örnekte, modüle bir arama geldiğinde arayan numarayı çekeceğiz.bu kodları diger sim odülleri ilede kulana bilirsiniz sim800c simcom ürettigi en stabil modüldür modüllerin çalışmasında en etken ve yapılan genel hata beslemedir bunlara dikakt edelim.Not: daha önceki konularda belirttigim gibi sim modüllet 3,7 - 4,2V 2Amper beslemeye sahip olmalıdır sim modulün besleme ve kablolaması dogru ve kaliteli kablolarla data iletim saglandıgında bu cihazınızı stabl bir şekilde projelerinizde kullana bilirsiniz..
Bağlantılar:
Modül Beslemesini VCC pininden 5v-12v aralığında ya da lityum port girişinden 3.4v- 4.4v yapabilirsiniz.
Modül TX---->Arduino Uno D10
Modül RX---->Arduino Uno D11
Modül GND---> Arduino GND
modül pwrkey pin tetiklemeyi unutmayın
/*
Bu örnekte sim800C ye gelen bir arama olduğunda arama yapan numara çekilecektir.
Modüle bir arama geldiğinde Modülden Gelen Bilgi
"
RING
+CLIP: "+905468422222",145,"",0,"",0
"
şeklindedir.
Arayan Numaranın burada +905468422222 olduğu görülüyor.
Numarayı çekmek için gelen verileri karakter karakter okutacağız.
"+90........" şeklinde olan numaranın önce ilk karakteri '+' işaretini ardından 9 ve 0 ı okuyarak kalan
10 tane karakteri kodlarla alacaz ve arayanNo değişkenine kaydedecez.
+90 karakterlerini bulduktan sonra bir bool değişen kontrolüyle numaranın geriye kalan kısmını almış olacaz
Yorum satırlarını okuyarak kodları daha iyi anlayabilirsiniz.
*/
#include <SoftwareSerial.h>
SoftwareSerial gsm(10, 11); //SIM800C Tx & Rx uçları sırayla Arduino'nun dijital #10 & #11
String arayanNo="+90"; //Arama yapan numaranın kaydedileceği String değişken. Ekleme yapılarak kaydedilecek.
String veri=""; //Arama geldiğinde GSM den gelen bütün karakterleri kaydedeceğimiz değişken.
bool numaraBaslangic=false; // '+90' karakteri bulunduğunda kullanılacak.
void setup()
{
Serial.begin(9600); //Seri haberleşme başlatma
gsm.begin(9600); //Gsm modülü başlatma
Serial.println("Başlatılıyor....");
delay(1000);
gsm.println("AT"); //GSM modül testi.
goster();
gsm.println("AT+CSQ"); //Sinyal Kalitesi AT komutu aralık 0-31
goster();
gsm.println("AT+CCID"); //Simkartın takılı ve modülün algıladığından emin olun. Simkart ID sini verecektir.
goster();
gsm.println("AT+CREG?"); //Simkartınızın ağda kayıtlı olup olmadığını kontrol edebilirsiniz.
goster();
gsm.println("AT+CBC"); // Gsm modülü beslediğiniz bataryanın doluluk oranını görebilirsiniz. (Kalan pil yüzdesi, voltaj bilgisi)
goster();
}
void loop()
{
arayanNumara();
}
void arayanNumara()
{
int say=10;/////////Arayan numaranın kalan 10 karakteri için sayaç değişkeni
char gelen; // okutulacak karakterler için.
while(gsm.available())
{
////////////////////1. işlem sırası işlem sırasını takip et.
gelen=gsm.read(); //Modül okuma işlemi
veri+=gelen; //Okunan her karakter veri değişkenine ekleniyor modülden gelen bütün karakterleri görebilirsiniz.
delay(13);
//////////////////////////
/////////////////////////////3. işlem sırası
if(numaraBaslangic==true)
{
if(say>0)
{
arayanNo+=gelen; //yukarda okunan karakterler aynı zamanda arayanNo değişkenine de ekleniyor.
say--; //sayac azaltılıyor. 0 olana kadar ekleme yapılacak.
}
else //sayac 0 olduğunda
{
numaraBaslangic=false; //ekleme işlemi bittiğinde değerler sıfırlanıyor.
say=10;
}
}
//////////////////////////3.
////////////////////////////////////////////// 2. işlem sırası
////////////////////////////////////////////// Burada '+90' okuma işlemi yapılıyor.
if(gelen=='+')
{
if(gsm.available())
{
gelen=gsm.read();
if(gelen=='9')
{
if(gsm.available())
{
gelen=gsm.read();
if(gelen=='0')
{
/////// '+90' bulundu.
numaraBaslangic=true; // Burdan itibaren gelecek olan karakterleri arayanNo
değişkenine eklemek için kontrol değişkeni. 3. işlem sırası yukarda
}
}
}
}
}
//////////////////////////////////////////////////////
////////////////////////////////////////////////////// 2.
}
/////////////////////////////////////////////////// 4. işlem sırası
//////////////////////////////////////////////////////// Örnek kullanım
//Serial.println(veri); 2. ve 3. blokları yorum satırı yaparak modülden okunan bütün verileri görebilirsiniz.
//Serial.println(arayanNo); // Arama yokken ekranda +90 göreceksiniz.
delay(100);
if(arayanNo.indexOf("+905468422222")!=-1) //arayanNo değişkeninin içinde "+905468422222" var ise
{
Serial.println("Hiber Bilişim arıyor");
arayanNo="+90"; //sıfırlama işlemi
}
////////////////////////////////////////////////
////////////////////////////////////////////////
}
void goster()
{
delay(500);
while (Serial.available())
{
gsm.write(Serial.read());//Seri monitörden gelen bilgiyi Modül'e yazma
}
while(gsm.available())
{
Serial.write(gsm.read());//Modülden gelen bilgiyi Seri monitöre yazma
}
}
Ünal KURTGÖZ (Yazar)
Hayal gücü bilgiden kıymetlidir.
Makaleleri
16
Makale Okunması
89174
Yorumunuz Gönder