مشکل ارسال پیامک ایرانسل با sim800l

10 ماه قبل
506 بازدید

0

سلام. وقتی سیمکارت ایرانسل داخل ماژول sim800l میکذاریم پیامک دریافت میکند اما پیامک ارسال نمیکند! چند سیمکارت و چند ماژول را هم امتحان کردیم همین مشکل را دارد اما همراه اول و رایتل مشکلی ندارند، سیمکارتها را در گوشی هم که می اندازیم مشکلی ندارند و پیامک ارسال میکنند آنتن دهی کامل هم دارد، چطور باید مشکل ایرانسل را برطرف کنیم؟ کد و دستوراتی برای ایرانسل باید اضافه کنیم.

.

.

.

کدهایی مه برای ارسال پیامک استفاده میکنیم(البته امکان دارد چون از خفظنوشتم اشکالاتی داشته باشه اما با اندکی تفاوت همین است و با همراه اول و رایتل هم کار میکند.

 

sim800lSerial.println("AT+CMGF=1");

  delay(500)

  while (Serial.available())

  

    sim800lSerial.write(Serial.read())

  

  while(sim800lSerial.available())

  

    Serial.write(sim800lSerial.read())

  

  sim800lSerial.println(شماره همراه);

  delay(500)

  while (Serial.available())

  

    sim800lSerial.write(Serial.read())

  } ;{ ; };{ };{ ;

 

در ابندای برنامه هم برای اتصال به شبکه از دستوراتی شبیه زیر استفاده کردیم.

 

sim800lSerial.println("AT+CMGF=1");

    delay(2000);  

    sim800lSerial.println("AT+CNMI=1,2,0,0,0"); 

 

 

 

 

09 مرداد 02 در 03:06
راحله
1

لطف میکنید لیست کد هایی که برای ارسال پیام استفاده میکنید را ذکر کنید.  – محمد دمیرچی 02-05-09 در 03:17

سوال را ویرایش کردم و کدهایی که استفاده کردیم را نوشتیم، البته چون در کلاس نبودن و به کدها دسترسی ندارم شاید اندک اسشکالاتی داشته باشد اما همینهاست. ممنون از پیگیری و پاسخدهی سریع جناب مهندس دمیرچی  – راحله 02-05-09 در 05:13

افزودن دیدگاه

1 پاسخ ثبت شده است
0

با سلام

این مواردی که نوشته اید یک مقدار مبهم می باشد.

به صورت کلی شما میخواهید پیام را به صورت زبان فارسی یا اینگلیسی ارسال کنید. به 2 حالت text و pdu دسته بندی می شود که در ابتدا تنظیمات ماژول باید دستور.

AT+CMGF=0 برای txt

یا 

AT+CMGF=1 برای pdu

تنظیم کنید.

سپس برای ارسال پیام دستور 

+CMGS="+98شماره تلفن"

را ارسال میکنید.

در اینجا برای شما علامت < در سریال مانیتور نمایش داده می شود. که منتظر پیام شما می باشد.

با توجه به نوع تنظیمات خود متن پیام را ارسال میکنید (در صورتی که pdu باشد باید متن را کد گذاری کنید و سپس ارسال کنید)

پس آن نیز از کلید ترکیبی ctrl+z در سریال مانیتور های قابل پشتیبانی مانند putty یا کارکتر  در سریال مانیتور ai-thinker استفاده میکنید.

تمام این موارد بالا در شرایطی می باشد که از مبدل usb-ttl برای این موضوع استفاده کنید. در صورتی که از آردوینو استفاده میکنید.

پس از آماده سازی ماژول در حالت txt از فانکشن زیر برای ارسال پیام استفاده کنید.

توجه داشته باشید Serial2 مربوط به ماژول gsm می باشد و بر روی esp32 کد نوشته شده است و با توجه به اسم سریال مانیتور خود این مقدار را عوض کنید.

int cunter = 0;
String checker ;
bool GSM::sendMessage(String number, String value)
{
sendAgin1:
    Serial.println("Message to :" + number + "\t-" + value);
    Serial2.flush();
    delay(10);
    Serial2.println("AT+CMGS=\"+98" + number + "\"");
    delay(5);
    while (true)
    {
        cunter++;
        if (Serial2.available())
        {
            checker = Serial2.readStringUntil('\n');
            checker.trim();
            Serial.println(checker);

            if (checker.startsWith("+CME ERROR: 58"))
            {
                Serial.println("Error on send line");
                goto sendAgin1;
            }

            if (checker.startsWith(">"))
            {
                Serial2.println(value);

                delay(10);
                Serial2.write(26);
                while (true)
                {
                    if (Serial2.available())
                    {
                        checker = Serial2.readStringUntil('\n');
                        Serial.println(checker);
                        if (checker.startsWith("OK"))
                        {
                            delay(100);
                            serialRead("AT+CMGD=1,4", "OK");
                            Serial2.readStringUntil('\n');
                            Serial2.readStringUntil('\n');
                            return true;
                        }
                        else if (checker.startsWith("+CMS ERROR: "))
                        {
                            return false;
                        }
                    }
                }
            }
        }
        Serial.print(',');
        delay(50);
        if (cunter == 500)
        {
            cunter = 0;
            goto sendAgin1;
        }
    }
}
09 مرداد 02 در 07:42
محمد دمیرچی
3730

سپاس از برنامه بسیار کامل و حرفه ای شما. در اینترنت گشتیم برای رفع مشکل ارسال پیامک ایرانسل گفته بودند این at+csmp=17,167,0,0 را باید ارسال کنید، این کد را در برنامه اضافه کردیم مشکل سیمکارتهای ایرانسل حل شد اما متوجه نشدیم دلیلش چه بود و این کد چه تاثیری در رفع مشکل ارسال پیامک ایرانسل با ماژول داشت، اگر امکان داره بفرمایید ارتباط این کد با رفع مشکل در چی بوده؟  – راحله 02-05-09 در 10:08

این کد برای تنظیم شرایط دریافت و ارسال پیام می باشد.به صورت دیفالت باید درست باشد و نیازی به تغییر داشته باشد.  – محمد دمیرچی 02-05-09 در 10:21

https://m2msupport.net/m2msupport/sms-send-sms-in-other-languages/  – محمد دمیرچی 02-05-09 در 10:23

بله برای رایتل و همراه اول نیاز نیست و بدون مشکل کار میکند اما نمیدونم چرا تا این کد را اضافه نکنیم سیمکارتهای ایرانسل پیامک ارسال نمیکنند! هرچه هم در ارتباط با این کد مطالعه کردیم دلیلی برای حل مشکل ارسال پیامک ایرانسل و این کد نیافتیم و اینکه چرا ایرانسل این مشکل را دارد و با این کد حل می شود پیدا نکردیم که بتوانیم در گزارش پروژه برای استاد بنویسیم):  – راحله 02-05-09 در 10:57

AT+CSMP=17,167,0,16 زمان اعتبار پیامک در شبکه را تعیین می کند(24 ساعت) AT+CSMP=1,167,0,8 فرمت پیامک ارسالی را به یونیکد تغییر می دهد.(مناسب برای ارسال متون فارسی).در صورت عدم استفاده از این دستور مد ارسال ASCII خواهد بود که فقط کارکترهای لاتین را ساپورت میکند.  – بابک حسن پور 02-05-09 در 11:28

ممنون از توضیحاتتون اما ارتباط این با حل شدن مشکل ارسال پیامک با ایرانسل در چیست؟ ضمنا پیامک های ما هم لاتین هستند  – راحله 02-05-09 در 12:06

این دستور شامل موارد زیر است: ۱۷ مد ارسال و گزارش دریافت پیامک رو مشخص میکنه ۱۶۷ زمان حیات پیامک رو در شبکه مشخص میکنه 0 to 143 (TP-VP + 1) x 5 minutes (i.e. 5 minutes intervals up to 12 hours) 144 to 167 12 hours + ((TP-VP -143) x 30 minutes) 168 to 196 (TP-VP - 166) x 1 day 197 to 255 (TP-VP - 192) x 1 week کد ۰ هم نشانگر PID یا مشخصه پروتکل است در نهایت هم کد آخر نشان دهنده کدینگ پیامک هست که باید برای ۷ بیت یعنی انگلیسی عدد ۰ رو بزنید https://en.wikipedia.org/wiki/Data_Coding_Scheme https://www.etsi.org/deliver/etsi_gts/03/0340/05.03.00_60/gsmts_0340v050300p.pdf  – حجت اسماعیلی 02-05-22 در 02:23

ممنون اما متوجه ارتباطش با ایرانسل که با این کد مشکل ارسال پیامکش حل شده نمیشم  – راحله 02-05-24 در 07:19

افزودن دیدگاه


انجمن کافه‌ربات © 1400