صفحه 9 از 11 نخستنخست ... 7891011 آخرینآخرین
نمایش نتایج: از 81 به 90 از 107
Like Tree36 لایک

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

  1. #81
    Member
    تاریخ عضویت
    Jan 2016
    محل سکونت
    ایران
    نوشته ها
    85
    سلام خدمت دوستان و اساتید گرامی

    من این ماژول رو راه اندازی کردم و همه چیزش میزونه at میفرستم ok میده و زنگ میزنم RING مینویسه.

    برای ارسال SMS و دریافت SMS
    توی AT command هایی که توی PDF هست در مورد دریافت و ارسال SMS یه سری کامنت بود که دقیق متوجه نشدم که چه جوری باید ازش استفاده کنم. و از کد های موجود تو انجمن هم کمک گرفتم اما نه میتونم SMS بفرستم و نمیتونم بگیرم و نمیدونم دقیقا چه طوری باید این کار رو انجام بدم.
    دوستان اگه کسیat command های مخصوص ارسال و دریافت SMS رو توضیح بده متشکر میشم.
    فقط میخوام بتونم به زبان انگلیسی پیام بفرستم و پیام دریافت کنم و بخونم.
    ویرایش توسط cjmj : 08-29-2016 در ساعت 12:38 AM

  2. #82
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط cjmj نمایش پست ها
    سلام خدمت دوستان و اساتید گرامی

    من این ماژول رو راه اندازی کردم و همه چیزش میزونه at میفرستم ok میده و زنگ میزنم RING مینویسه.

    برای ارسال SMS و دریافت SMS
    توی AT command هایی که توی PDF هست در مورد دریافت و ارسال SMS یه سری کامنت بود که دقیق متوجه نشدم که چه جوری باید ازش استفاده کنم. و از کد های موجود تو انجمن هم کمک گرفتم اما نه میتونم SMS بفرستم و نمیتونم بگیرم و نمیدونم دقیقا چه طوری باید این کار رو انجام بدم.
    دوستان اگه کسیat command های مخصوص ارسال و دریافت SMS رو توضیح بده متشکر میشم.
    فقط میخوام بتونم به زبان انگلیسی پیام بفرستم و پیام دریافت کنم و بخونم.
    من خودم این کد رو برای ارسال sms استفاده می کنم

    کد:
    #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();
      ensms();
    }
    
    
    void loop() {
    
    
    }
    //*********************************************************************************
    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");
    }
    کافیه شما به جای اون شماره دمویی که من گذاشتم شماره خودتون رو جایگزین کنید.
    لایک کردن

  3. #83
    Junior Member
    تاریخ عضویت
    Jan 2015
    نوشته ها
    8
    با سلام خدمت دوستان عزیز
    من چند روز پیش ماژول sim800 قرمزه رو خریدم اول این که هرزگاهی کار میکنه یعنی بعضی وقتا سیگنال داره بعضی وقتا نداره بعدشم به همه دستورات atcommand جواب میده جز اونی که من میخوام
    زنگ میزنه ولی وقتی دستور AT+CMGS رو میزنم ERROR رو بر میگردونه(شاید بالای 10 نمونه کد رو تست کردم ) حالا نمیدونم مشکل از منه یا از این ماژوله
    این زنگیم که میگن میزنه با مبدل بهش atcommand میدم وقتی به آردوینو وصلش میکنم همینم اروره dialtone میده و زنگ نمیزنه(!!!!)
    ممنون میشم دوستانی که استفاده کردن راهنمایی کنن
    ویرایش توسط masoud0711 : 08-29-2016 در ساعت 11:54 AM دلیل: کاملتر شدن

  4. #84
    Junior Member
    تاریخ عضویت
    Aug 2016
    نوشته ها
    1

    مشکل sim800l

    با سلام و عرض خسته نباشید.
    من ماژول SIM800L رو تهیه کردم و با استفاده از یه کد ساده دستورات At رو بهش ارسال میکنم. At==>OK و کامندهای مربوط به بدست آوردن IMEI و.. که خیلی راحت و درست جواب میده. ولی کامندهای مربوط به بررسی نام اپراتور شبکه و از این دست با ERROR مواجه میشم و وقتی تماس میگیرم با شماره اعلام میشه که شماره خاموش هستش. آنتن فنری شکل موجود در بسته رو به نقطه NET لحیم کردم. و بر روی LED موجود در بور با 7 چشمک و یه مکث 3 ثانیه ای و بازهم 7 چشمک مواجه میشم.
    عکسهای مربوطه رو هم ضمیمه کردم به پستم. کسی میتونه راهنمایی کنه لطفا؟

    این هم خروجی های At بر روی سریال مانیتور:
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 1.jpg
مشاهده: 246
حجم: 84.6 کیلو بایتبرای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 2.jpg
مشاهده: 240
حجم: 63.6 کیلو بایت

  5. #85
    Junior Member
    تاریخ عضویت
    Jan 2015
    نوشته ها
    8
    منم با آردوینو همین مشکل رو دارم ولی وقتی با مبدل بهش دستور میدم همه کارا رو میکنه(البته بعضی وقتا آنتن نداره)
    حالا اساتید بیان نظر بدن من میگم شاید مشکل از سریال نرم افزاریه

  6. #86
    Member
    تاریخ عضویت
    Jan 2016
    محل سکونت
    ایران
    نوشته ها
    85
    نقل قول نوشته اصلی توسط masoud0711 نمایش پست ها
    منم با آردوینو همین مشکل رو دارم ولی وقتی با مبدل بهش دستور میدم همه کارا رو میکنه(البته بعضی وقتا آنتن نداره)
    حالا اساتید بیان نظر بدن من میگم شاید مشکل از سریال نرم افزاریه
    سلام
    دوستان به آنتن فنری اطمینان نکنید. آنتن pcb رو که سوکت هم داره رو وصل کنید. چون منم وقتی آنتن pcb رو میکنم ماژول دیگه آنتن نداره. مثل اینکه آنتن فنری واسه یه فرکانس خاصی هست. ولی آنتن pcb ، آنتن اصلیش هست که حتما باید وصل باشه.

  7. #87
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط masoud0711 نمایش پست ها
    با سلام خدمت دوستان عزیز
    من چند روز پیش ماژول sim800 قرمزه رو خریدم اول این که هرزگاهی کار میکنه یعنی بعضی وقتا سیگنال داره بعضی وقتا نداره بعدشم به همه دستورات atcommand جواب میده جز اونی که من میخوام
    زنگ میزنه ولی وقتی دستور AT+CMGS رو میزنم ERROR رو بر میگردونه(شاید بالای 10 نمونه کد رو تست کردم ) حالا نمیدونم مشکل از منه یا از این ماژوله
    این زنگیم که میگن میزنه با مبدل بهش atcommand میدم وقتی به آردوینو وصلش میکنم همینم اروره dialtone میده و زنگ نمیزنه(!!!!)
    ممنون میشم دوستانی که استفاده کردن راهنمایی کنن
    سلام
    برای زنگ زدن از کدی که من چند تا تاپیک قبل تر گذاشتم استفاده کنید.
    کد:
    #include <SoftwareSerial.h>
    SoftwareSerial SIM800(D2, D1 , 128);
    #define GSMReset D3
    
    
    void setup() {
      Serial.begin(9600); // for serial monitor
      SIM800.begin(9600); // for GSM shield
      gsmPower();
      gsmConfig();
      dialNumber() ;
    }
    
    
    void loop() {
      commandDetect();
    }
    //*********************************************************************************
    void gsmConfig() {
      sendCommand("ATZ", 100);
      sendCommand("AT+CMGD=1,4", 200);
      sendCommand("AT+CMGF=1\r", 100); // set SMS mode to text
      sendCommand("AT+CFUN=1", 2000);
      sendCommand("AT+CREG?", 1000);
      dtmfActive();
      anwerCall();
      Serial.println("The end of Config process");
      Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube  ");
    }
    //**********************************************************************************
    void showSms() {
      char incoming_char = 0;
      if ( SIM800.available() > 0)
      {
        incoming_char =  SIM800.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 ( SIM800.available() > 0)
      {
    
    
        incoming_char =  SIM800.read();
        if (incoming_char == 'A')
        {
          delay(10);
          incoming_char =  SIM800.read();
          if (incoming_char == 'd')
          {
            delay(10);
            Serial.print("horaaaaaaaaaaaaaaaaaaay");
          }
        }
      }
    }
    //***********************************************************************************
    void gsmPower() {
      pinMode(GSMReset, OUTPUT);
      Serial.println("Turning GSM ON");
      digitalWrite(GSMReset, HIGH);
     // delay(1100);
      //digitalWrite(GSMReset, LOW);
     // delay(4000);
      Serial.println("Start config process...");
    }
    
    
    //**********************************************************************************
    
    
    void sendCommand(String cmd, int t)
    {
      SIM800.println(cmd);
      readSerial();
      delay(t);
    }
    
    
    //**************************************************************************************
    void readSerial( ) {
      while (SIM800.available())
      {
        Serial.write(SIM800.read());
      }
    }
    
    
    //***********************************************************************************
    
    
    void dialNumber() {
      Serial.println("Dialing...");
      sendCommand("ATD09177102643;", 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 \n 'h' for HttpRequest \n 's' for Send2Pachube  ");
    }
    //************************************************************************************
    void ensms()
    {
      Serial.println("Sending SMS");
      sendCommand("AT+CSCS=\"GSM\"", 200);
      sendCommand("AT+CMGF=1", 200);
      sendCommand("AT+CSMP=17,167,0,0", 200);
      sendCommand("AT+CMGS=\"09177102643\"", 500);
      sendCommand("Salam\n manam !\x1A", 500);
      Serial.println("Englisg SMS Sent");
      Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube  ");
    }
    
    
    //****************************************************************************************
    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=\"09177102643\"", 500);
      sendCommand("0633064406270645060C002006220641062A0627062800200631062706CC062706460647\x1A", 0);
      Serial.println("Persian SMS Sent");
      Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube  ");
    }
    //*******************************************************************************************
    void commandDetect() {
    
    
      if (Serial.available() > 0)
      {
        char data = Serial.read();
        switch (data)
        {
          case 'd' :
            dialNumber();
            break;
    
    
          case 'e' : ensms();
            break;
    
    
          case 'f' : farsisms();
            break;
    
    
          case 'h':
            SubmitHttpRequest();
            break;
    
    
          case 's':
            Send2Pachube();
            break;
        }
      }
    }
    
    
    //******************************************************************************************************
    void SubmitHttpRequest()
    {
      sendCommand("AT+CSQ", 100);
      sendCommand("AT+CGATT?", 100);
      sendCommand("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"", 1000); //setting the SAPBR, the connection type is using gprs
      sendCommand("AT+SAPBR=3,1,\"APN\",\"CMNET\"", 4000); //setting the APN, the second need you fill in your local apn server
      sendCommand("AT+SAPBR=1,1", 2000); //setting the SAPBR, for detail you can refer to the AT command mamual
      sendCommand("AT+HTTPINIT", 2000); //init the HTTP request
      sendCommand("AT+HTTPPARA=\"URL\",\"www.google.com.hk\"", 1000); // setting the httppara, the second parameter is the website you want to access
      sendCommand("AT+HTTPACTION=0", 10000); //submit the request
      sendCommand("AT+HTTPREAD", 300); // read the data from the website you access
      sendCommand("", 100);
      delay(2000);
      Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube  ");
    }
    
    
    //*************************************************************************************************************************
    ///send2Pachube()///
    ///this function is to send the sensor data to the pachube, you can see the new value in the pachube after execute this function///
    void Send2Pachube()
    {
      sendCommand("AT+CGATT?", 1000);
      sendCommand("AT+CSTT=\"CMNET\"", 1000); //start task and setting the APN,
      sendCommand("AT+CIICR", 3000); //bring up wireless connection
      sendCommand("AT+CIFSR", 2000); //get local IP adress
      sendCommand("AT+CIPSPRT=0", 3000);
      sendCommand("AT+CIPSTART=\"tcp\",\"api.cosm.com\",\"8081\"", 2000); //start up the connection
      sendCommand("AT+CIPSEND", 4000); //begin send data to remote server
    
    
      String humidity = "1031";//these 4 line code are imitate the real sensor data, because the demo did't add other sensor, so using 4 string variable to replace.
      String moisture = "1242";//you can replace these four variable to the real sensor data in your project
      String temperature = "30";//
      String barometer = "60.56";//
      sendCommand("{\"method\": \"put\",\"resource\": \"/feeds/42742/\",\"params\"", 500); //here is the feed you apply from pachube
      sendCommand(": {},\"headers\": {\"X-PachubeApiKey\":", 500); //in here, you should replace your pachubeapikey
      sendCommand(" \"_cXwr5LE8qW4a296O-cDwOUvfddFer5pGmaRigPsiO0", 500); //pachubeapikey
      sendCommand("jEB9OjK-W6vej56j9ItaSlIac-hgbQjxExuveD95yc8BttXc", 500); //pachubeapikey
      sendCommand("Z7_seZqLVjeCOmNbEXUva45t6FL8AxOcuNSsQS\"},\"body\":", 500);
      sendCommand(" {\"version\": \"1.0.0\",\"datastreams\": ", 500);
      sendCommand("[{\"id\": \"01\",\"current_value\": \"" + barometer + "\"},", 500);
      sendCommand("{\"id\": \"02\",\"current_value\": \"" + humidity + "\"},", 500);
      sendCommand("{\"id\": \"03\",\"current_value\": \"" + moisture + "\"},", 500);
      sendCommand("{\"id\": \"04\",\"current_value\": \"" + temperature + "\"}]},\"token\": \"lee\"}", 500);
      SIM800.println(); ((char)26); //sending
      delay(5000);
      SIM800.println();
      sendCommand("AT+CIPCLOSE", 100); //close the connection
      delay(2000);
      Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube  ");
    
    
    }
    
    
    //******************************************************************************************************************
    void dtmfActive() {
      sendCommand("AT+DDET=1", 200);
    }
    
    
    
    
    //***************************************************************
    void anwerCall() {
      sendCommand("ATS0=3", 200);
    }
    
    
    void blinkd16(){
      pinMode(16,OUTPUT);
      digitalWrite(16,HIGH);
      delay(100);
      digitalWrite(16,LOW);
        delay(100);
      }
    شما لازمه توی این کد 3 تا تغییر انجام بدید

    1. تغییر شماره پینهای سریال نرم افزاری به پینهایی که دارید تو آردوینو استفاده می کنید.
    2. تغییر شماره پین GSMReset
    3. اضافه کردن شماره خودتون به جای شماره تو تابع dialNumber

  8. #88
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط masoud0711 نمایش پست ها
    منم با آردوینو همین مشکل رو دارم ولی وقتی با مبدل بهش دستور میدم همه کارا رو میکنه(البته بعضی وقتا آنتن نداره)
    حالا اساتید بیان نظر بدن من میگم شاید مشکل از سریال نرم افزاریه

    شما باید آخر هر کامندی که تو آردوینو میفرستید یه r/ بزارید که براش حکم اینتر رو داشته باشه .

  9. #89
    Junior Member
    تاریخ عضویت
    Mar 2016
    نوشته ها
    29
    نقل قول نوشته اصلی توسط solxsado نمایش پست ها
    String Buffer;
    String number;
    String text;

    if (Serial.available()) {
    Buffer = Serial.readString();

    if (Buffer.indexOf("+CMT") != -1){
    Buffer.replace("+CMT: \"+98", "");
    number = Buffer.substring(2, 12);
    text = Buffer.substring(41, 51);
    }
    }
    متشکر اما من نتونستم با این کد جواب بگیرم
    بعد از دریافت اس ام اس داخل مقادیر text و number چیزی قرار نمیگیره
    فک کنم اصلا if اول اجرا پذیرفته و نمیشه(Serial.available)

  10. #90
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط mohammad pc نمایش پست ها
    متشکر اما من نتونستم با این کد جواب بگیرم
    بعد از دریافت اس ام اس داخل مقادیر text و number چیزی قرار نمیگیره
    فک کنم اصلا if اول اجرا پذیرفته و نمیشه(Serial.available)
    می تونید کد این تاپیک رو مطالعه کنید:

    Receiving SMS using GSM and controlling LED using Arduino - Electrical Engineering Stack Exchange

    میاد یه پیام دریافت می کنه و بر اساس کامند اون تصمیم میگیره چند تا LED رو خاموش و روشن کنه
    لایک کردن

صفحه 9 از 11 نخستنخست ... 7891011 آخرینآخرین

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

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

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

SEO by vBSEO