• Merhaba arkadaşlar.Arduinonun GSM kütüphanesini kullanarak bize mesaj gönderen telefon numarasını kaydedip bir diziye aktarmak mümkün müdür ? nasıl yapabiliriz bilgisi olanlar yardımcı olursa sevinirim.
  • Mümkündür,

    Bunun için öncelikle gelen verileri düzgün birşekilde alabilmen gerekir.

    Daha sonra aldığın verileri anlamlı hale getirebilmen gerekir ( GSM modül sana yalnızca telefon numarasını söylemez ekstra birsürü bilgi gönderir. sen içerisinden telefon numarası kısmını ayırtetmen gerekir. )

    Buraya kadar gelebilirsen bu ayrıştırdığın datayı bir diziye atmak işin en kolay kısmı olur
  • Nasıl yapacağım konusunda bilgi var mı peki :)
  • gsm modulun adı ve yanına arduıno yazarak merak ettıgınız kodları google dan aradınız mı ve bunları denedınız mı deneyıp te olmayan kodunuz varsa onu buraya koymayı deneyın olmayan yerı ve hata kodunu da koyun. hazır kodumuz yok olan koddakı hataları bulabılırız belkı hekes ıcın daha ogretıcı olur
  • http://gsmkontrol.blogspot.com.tr/
    Bu gsm shield i kullanıyorum.Arduinonun GSM kütüphanesiyle uyumlu.Mesaj attırmayı başardım kütüphaneyi kullanarak ama bana mesaj atan numarayı nasıl kaydedeceğimi bulamadım.AT komutlarıyla yada Gsm kütüphanesinin fonksiyonlarıyla yapmak mümkün müdür ? Araştırdım am
    ncak bişe bulamadım.Belki sizlerden bilenleriniz vardır.
  • #define pin_numarasi " "
    GSM gsmAccess;
    GSM_SMS sms;

    char gelen[20]; // gelen adında 20 karakterli dizi oluşturuldu.
    String gelen_numara;

    if( sms.available() )
    {
    sms.remoteNumber(gelen,20); // sms gönderen tel. numarası öğreniliyor ve gelen
    // değişkeninin içine kaydediliyor.
    gelen_numara = gelen; // tel. numarası string türüne çevriliyor.

    Serial.println( gelen_numara );
    }
  • başka sorularında varsa yardımcı olmaya çalışırım. Bitirme ödevimi gsm shield ile yapmıştım. Öğrenmek için baya araştırma yaptım. Ayrıca gsm shieldide aynı siteden aldım bende
  • arkadaslar arduino ile qectell M95 GSM Modül uzerinden dtmf ile role kontrol etmek istiyorm. ve role durumunu bana msj atsın istiyorum. asagıdakı kolarla bunu basarabildim fakat bazen programda sanki bir aksaklık oluyor ve resetleniyor. program tekrar baslayınca modudulun on / off butonuna basmış oluyor ve modulu kapatıyor. tekrar kendiliginden resetlenirse acıyor. sanki turkcell hat ile çok sık yapıyor digero peratoprlerde daha az gibi geldi bana. acaba program akısında hatalı mı yazdım bilmiyorum . kod sralamaları ile ilgili hatam olabilir. yardımcı olursanız sevinirim. simdiden tesekkurler. . kodlar aşagıdadır. . bastakı inculude ler programda doğru şekilde yazılı. burada kopyala yapıstırda hatalı çıkıyor.

    #include SoftwareSerial
    #include eeprom

    SoftwareSerial gsm(2, 3);/*
    2(Rx) -> Tx
    3(Tx) -> Rx
    */

    #define BEKLE 3

    String smsMetni = "";

    char gelen;

    int kayitAdresi , kaydedilecekVeri;

    int okunacakAdres, okunanVeri;

    int ring = 6 ; //telefon çalma ucu//

    int pwr = 7 ; //gsm modul açma çıkısı//

    int arama ;// arama isimli değisken//


    const int STQ = 5; // DTMF Module STQ //
    const int Q4 = 8; // DTMF Module Q4 //
    const int Q3 = 9; // DTMF Module Q3 //
    const int Q2 = 10; // DTMF Module Q2 //
    const int Q1 = 11; // DTMF Module Q1 //
    const int cks = 12; // ROLE Cıkısı //
    const int buz = 13; // Buzzer cıkısı //
    int sayi = 0;

    boolean first_flag = false;


    /*=========================================================================================================
    setup() : Pin Tanımlamaları yapılıyor.
    ========================================================================================================== */
    void setup() {

    //Setup the INPUT pins on the Arduino
    pinMode(STQ, INPUT);
    pinMode(Q4, INPUT);
    pinMode(Q3, INPUT);
    pinMode(Q2, INPUT);
    pinMode(Q1, INPUT);

    pinMode(cks, OUTPUT);
    digitalWrite (cks, LOW);

    pinMode(buz, OUTPUT);
    digitalWrite (buz, LOW);

    pinMode(ring, INPUT);
    pinMode(pwr, OUTPUT);

    digitalWrite (pwr, HIGH);
    delay(1000);
    digitalWrite (pwr, LOW);
    delay(3000);

    gsm.begin(9600); //* Yeni oluşturduğumuz haberleşme portunu açıyoruz */
    delay(3000);
    gsm.println("AT+CMGF=1");// sms modu text olarak seçilir/
    delay(150);
    gsm.println("AT+CMGD=1,4");// tüm sms leri siler /
    delay(1000);
    SMSgonder("Elektirik Geldi ve Sistem Basladi");
    gsm.flush();
    delay(150);

    /* EEPROMa kaydedilmiş verileri okuyalım */
    okunacakAdres = 10; // 10 adresini okuyacağız
    okunanVeri = EEPROM.read(okunacakAdres ); /* EEPROMun 10 adresindeki veri okunanVeri değişkenine aktarılıyor. */
    delay(10);

    if (okunanVeri == 50){
    digitalWrite (cks, HIGH);
    }
    else {
    digitalWrite (cks, LOW);

    }

    }

    /*=========================================================================================================
    döngü() :
    ========================================================================================================== */
    void loop()
    {
    if ((digitalRead(STQ) == HIGH)&&!first_flag )
    {
    first_flag =true;
    int temp1 = digitalRead(Q1);
    int temp2 = digitalRead(Q2);
    int temp3 = digitalRead(Q3);
    int temp4 = digitalRead(Q4);
    sayi = (temp1 + (temp2 * 2) + (temp3 * 4) + (temp4 * 8));

    if (sayi == 11){

    digitalWrite (cks, HIGH);
    digitalWrite (buz, HIGH);
    delay(1000);
    digitalWrite (buz, LOW);
    delay(500);
    digitalWrite (buz, HIGH);
    delay(1000);
    digitalWrite (buz, LOW);
    smsMetni = "POMPA CALISTIRILDI";
    delay(10);
    SMSgonder(smsMetni);

    kayitAdresi = 10; /* Verinin yazılacağı EEPROM adresi */
    kaydedilecekVeri = 50; /* EEPROMA kaydedilecek veri */
    EEPROM.update(kayitAdresi, kaydedilecekVeri); /* EEPROMun 10 adresine 50 verisi yazdırıldı. */
    delay(10);

    }

    else if (sayi == 12){

    digitalWrite (cks, LOW);
    digitalWrite (buz, HIGH);
    delay(2000);
    digitalWrite (buz, LOW);
    smsMetni = "POMPA DURDURULDU";
    SMSgonder(smsMetni);
    kayitAdresi = 10; /* Verinin yazılacağı EEPROM adresi */
    kaydedilecekVeri = 20; /* EEPROMA kaydedilecek veri */
    EEPROM.update(kayitAdresi, kaydedilecekVeri); /* EEPROMun 10 adresine 50 verisi yazdırıldı. */
    delay(10);

    }
    }
    else first_flag=false;
    delay(100);



    {
    voice();
    delay(1);
    }

    }

    /*=========================================================================================================
    Arama cevaplama
    ========================================================================================================== */

    void voice() {
    arama=digitalRead (ring); /* arama adlı değiskeni oku*/
    if (arama==LOW) {
    delay(2000);
    gsm.println("AT+CMGD=1,4");
    delay(1000);
    gsm.println("ATA");
    delay(100);
    }
    }



    void SMSgonder(String mesaj) {
    gsm.print("AT+CMGF=1\r");
    delay(120);
    gsm.println("AT+CMGS=\"+905437662285\"");
    delay(120);
    gsm.println(mesaj);
    delay(120);
    gsm.println((char)26);
    delay(120);
    gsm.println();
    delay(120);
    gsm.println("AT+CMGD=1,4");
    delay(120);
    gsm.println("AT+CMGF=1");
    delay(200);
    smsMetni = "";
    delay(13000);

    gsm.print("AT+CMGF=1\r");
    delay(120);
    gsm.println("AT+CMGS=\"+905427310367\"");
    delay(120);
    gsm.println(mesaj);
    delay(120);
    gsm.println((char)26);
    delay(120);
    gsm.println();
    delay(120);
    gsm.println("AT+CMGD=1,4");
    delay(120);
    gsm.println("AT+CMGF=1");
    delay(200);
    smsMetni = "";
    delay(3000);

    }

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.