نمایش نتایج: از 1 به 10 از 107
Like Tree36 لایک

موضوع: کد دریافت و ارسال sms بوسیله sim800L

Hybrid View

  1. #1
    Member
    تاریخ عضویت
    Feb 2016
    نوشته ها
    41
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    کد کامل sim800l

    کد:
    #include <softwareserial.h>
    softwareserial sim900(2, 3);
    #define gsmreset 5
    
    
    
    
    void setup() {
      serial.begin(9600); // for serial monitor
      sim900.begin(9600); // for gsm shield
      gsmpower();
      gsmconfig();
    }
    
    
    void loop() {
      commanddetect();
      smsprocess();
    }
    //*********************************************************************************
    void gsmconfig() {
      pinmode(gsmreset, output);
      sendcommand("at+cmgf=1\r", 100); // set sms mode to text
      sendcommand("at+cnmi=2,2,0,0,0\r", 100);
      sendcommand("at+cfun=1", 2000);
      sendcommand("at+creg?", 1000);
      serial.println("the end of config process");
      serial.println("ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms");
    }
    //**********************************************************************************
    void showsms() {
      char incoming_char = 0;
      if (sim900.available() > 0)
      {
        incoming_char = sim900.read(); //get the character from the cellular serial port.
        Serial.print(incoming_char); //print the incoming character to the terminal.
      }
    }
    //***********************************************************************************
    void smsprocess() {
      char incoming_char = 0;
      if (sim900.available() > 0)
      {
        incoming_char = sim900.read();
        if (incoming_char == 'h')
        {
          delay(10);
          serial.print("horaaaaaaaaaaaaaaaaaaay");
        }
      }
    }
    //***********************************************************************************
    void gsmpower() {
      serial.println("turning gsm on");
      digitalwrite(gsmreset, high);
      delay(10);
      digitalwrite(gsmreset, low);
      delay(100);
      digitalwrite(gsmreset, high);
      delay(7000);
      serial.println("config process...");
    }
    
    
    //**********************************************************************************
    
    
    void sendcommand(string cmd, int t)
    {
      sim900.println(cmd);
      delay(t);
      readserial();
    }
    
    
    //**************************************************************************************
    void readserial() {
      while (sim900.available())
        serial.write(sim900.read());
    }
    
    
    //***********************************************************************************
    
    
    void dialnumber(string number) {
      serial.println("dialing...");
      sendcommand("atd" + number + ";", 100);
      serial.println("end of dial process");
      delay(2000);
      serial.println("ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms");
    }
    //************************************************************************************
    void ensms()
    {
      serial.println("sending sms");
      sendcommand("at+cscs=\"ira\"", 200);
      sendcommand("at+cmgf=1", 200);
      sendcommand("at+csmp=17,167,0,0", 200);
      sendcommand("at+cmgs=\"09331424592\"", 500);
      sendcommand("salam\r\n aftabrayaneh !\x1a", 0);
      serial.println("end of english sms process");
      delay(2000);
      serial.println("ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms");
    }
    //****************************************************************************************
    void farsisms()
    {
      serial.println("sending sms");
      sendcommand("at+cscs=\"hex\"", 100);
      sendcommand("at+cmgf=1", 100);
      sendcommand("at+csmp=17,167,0,8", 100);
      sendcommand("at+cmgs=\"+09331424592\"", 500);
      sendcommand("0633064406270645060c002006220641062a0627062800200631062706cc062706460647\x1a", 0);
      serial.println("end of persian sms process");
      delay(2000);
      serial.println("ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms");
    }
    //*******************************************************************************************
    void commanddetect() {
      if (serial.available() > 0)
      {
        char data = serial.read();
        switch (data)
        {
          case 'd' : Dialnumber("09331424592");
            break;
    
    
          case 'e' : Ensms();
            break;
    
    
          case 'f' : Farsisms();
            break;
        }
      }
    }
    مهندس جان سلام دستتون درد نکنه با این کد تونستم شماره بگیرم و اس ام اس انگلیسی ارسال کنم ولی دریافت اس ام باز هم جواب نداد. کد رو که مرور میکمردم متوجه شدم که تو تابع دریافت اس ام اس از هیچ at کامندی استفاده نشده . دلیل خاصی داره؟

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط hamed82 نمایش پست ها
    مهندس جان سلام دستتون درد نکنه با این کد تونستم شماره بگیرم و اس ام اس انگلیسی ارسال کنم ولی دریافت اس ام باز هم جواب نداد. کد رو که مرور میکمردم متوجه شدم که تو تابع دریافت اس ام اس از هیچ at کامندی استفاده نشده . دلیل خاصی داره؟

    بله چون کامندهای کانفیگ توی یه تابع دیگه نوشته شده

  3. #3
    Member
    تاریخ عضویت
    Feb 2016
    نوشته ها
    41
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    بله چون کامندهای کانفیگ توی یه تابع دیگه نوشته شده
    بله دوست عزیز متوجه شدم تو این چند روز که غیبت داشتین. اخرش اینکه با کمک اقای تنها تونستیم دریافت اس ام اس رو راه بندازیم و با استفاده از همون کد شمارو تغییر دادم که دریافت دستور از این طریق هم میسر باشه.
    مخلص کلام اینکه از هردو نفر بابت حمایت و همکاری و همفکری سپاسگزارم. محبتتون به هیچ وجه فراموش نخواهد شد.

  4. #4
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط hamed82 نمایش پست ها
    بله دوست عزیز متوجه شدم تو این چند روز که غیبت داشتین. اخرش اینکه با کمک اقای تنها تونستیم دریافت اس ام اس رو راه بندازیم و با استفاده از همون کد شمارو تغییر دادم که دریافت دستور از این طریق هم میسر باشه.
    مخلص کلام اینکه از هردو نفر بابت حمایت و همکاری و همفکری سپاسگزارم. محبتتون به هیچ وجه فراموش نخواهد شد.
    کد دریافت sms من فقط نمایش رد کنسول بود و پردازش نداشت.
    موفق باشید

  5. #5
    Junior Member
    تاریخ عضویت
    Mar 2016
    نوشته ها
    29
    با سلام
    من تونستم روی بادریت 115200 جواب OK بگیرم اما نمیتونم تماس بگیرم یا اس ام اس بدم
    زنگ هم که میزنه به سیمکارت زنگ میخوره ولی روی سریال فقط مینویسه Ringing
    میشه راهنمایی کنید که چطور میتونم تماس بگیرم یا اس ام اس بفرستم؟ ممنون

  6. #6
    Senior Member
    تاریخ عضویت
    Oct 2014
    محل سکونت
    ایران
    نوشته ها
    178
    با این دستور می توانید زنگ بزنید:

    Atd09199999999;
    کافیه با دستور ارسال سریال واسه ماژول بفرستی

    نقل قول نوشته اصلی توسط mohammad pc نمایش پست ها
    با سلام
    من تونستم روی بادریت 115200 جواب ok بگیرم اما نمیتونم تماس بگیرم یا اس ام اس بدم
    زنگ هم که میزنه به سیمکارت زنگ میخوره ولی روی سریال فقط مینویسه ringing
    میشه راهنمایی کنید که چطور میتونم تماس بگیرم یا اس ام اس بفرستم؟ ممنون
    لایک کردن
    درود بر کسانی که دعا دارند و ادعا ندارند
    نیایش دارند و نمایش ندارند
    حیا دارند و ریا ندارند
    رسم دارند و اسم ندارند…

  7. #7
    Junior Member
    تاریخ عضویت
    Mar 2016
    نوشته ها
    29
    نقل قول نوشته اصلی توسط tanha71 نمایش پست ها
    با این دستور می توانید زنگ بزنید:

    Atd09199999999;
    کافیه با دستور ارسال سریال واسه ماژول بفرستی
    خیلی ممنون تونستم تماس بگیرم اما برای ارسال اس ام اس چه دستوری رو باید به سریال بفرستم؟
    بازم ممنون
    لایک کردن

  8. #8
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط mohammad pc نمایش پست ها
    با سلام
    من تونستم روی بادریت 115200 جواب OK بگیرم اما نمیتونم تماس بگیرم یا اس ام اس بدم
    زنگ هم که میزنه به سیمکارت زنگ میخوره ولی روی سریال فقط مینویسه Ringing
    میشه راهنمایی کنید که چطور میتونم تماس بگیرم یا اس ام اس بفرستم؟ ممنون

    سلام از کدهای صفحه قبل من استفاده کن

    کد رو آپلود کن و پین های softwareserial رو هم رعایت کن

    توی توابع مربوط به زنگ و اس ام اس شماره مطلوب خودت رو قرار بده .
    لایک کردن

  9. #9
    Junior Member
    تاریخ عضویت
    Feb 2017
    نوشته ها
    3

    sim800l.println("AT+CLIP=1");// enable caller id این. اضافه کن

    نقل قول نوشته اصلی توسط mohammad pc نمایش پست ها
    با سلام
    من تونستم روی بادریت 115200 جواب OK بگیرم اما نمیتونم تماس بگیرم یا اس ام اس بدم
    زنگ هم که میزنه به سیمکارت زنگ میخوره ولی روی سریال فقط مینویسه Ringing
    میشه راهنمایی کنید که چطور میتونم تماس بگیرم یا اس ام اس بفرستم؟ ممنون
    sim800l.println("AT+CLIP=1");// enable caller id این. اضافه کن

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO