سیم کارت GSM - GPRS

تغییر مد SMS در ماژول‌های GSM توسط دستورات AT

gsm-gprs-at-command-for-sms-CMGF-Digispark
نوشته شده توسط اروند طباطبایی

ماژول سیم کارت یا همان GSM به عنوان یکی از راهکارهای مورد استفاده در پروژه‌ها می‌باشند. کنترل یک Gateway یا وسایل برقی از طریق SMS یا دریافت وضعیت سیستم از طریق SMS بسیار کاربردی هستند. همانطور که پیش از این هم اشاره کرده‌ایم در پروژه‌های اینترنت اشیا صرفا نیاز به اینترنت از الزامات نمی‌باشد. بلکه هدف جمع آوری داده‌های سنسورها می‌باشد. طبیعتا SMS در چنین شرایطی انتخاب مناسبی نخواهد بود. ولی برای دریافت وضعیت سیستم در یک پروژه هوشمند ساده، یک راهکار منطقی خواهد بود. مشکلات گسترده‌ای در این راستا گریبان کاربران را می‌گیرد. در این پروژه روش شناسایی SMS را با ماژول سیم کارت GSM توضیح خواهم داد. تفاوت بین PDU و Text Mode را کاملا بیان خواهم کرد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


دستورات AT در ماژول GSM


عبارت AT مختصر شده واژه ATtention به معنی توجه و دقت کردن می‌باشد. تاجایی که بنده اطلاع دارم، دستورات AT مربوط به مودم‌ها می‌باشند. ولی از آنجایی که استاندارد یکسان است، برای ماژول سیم کارت یا ماژول GSM/GPRS هم کارایی دارند. ولی دستورات AT دیگری به صورت انحصاری برای ماژول GSM طراحی شده‌اند. تا مواردی از جمله SMS را پوشش بدهند. به عنوان مثال دستور AT+CMGS به معنی ارسال SMS می‌باشد. یا دستور AT+CMSS به معنی ارسال SMS از حافظه می‌باشد. دستور AT+CMGL که در آموزش راه اندازی ماژول Sim800L بخش سوم کنترل وسایل برقی با SMS از آن استفاده کرده‌ام، به معنی لیست کردن SMSها و دستور AT+CMGR برای خواندن SMS می‌باشد. در ادامه برخی از اقدامات مهمی که توسط دستورات AT در ماژول GSM قابل اجرا هستند را معرفی می‌کنم.

 

دستورات جهت دریافت اطلاعات عمومی ماژول GSM

از جمله نام سازنده از دستور AT+CGMI یا مشخصات ماژول از دستور AT+CGMM استفاده می‌شود. دریافت اطلاعات دیگری از جمله شماره IMEI که یک مشخصات بین المللی است، از دستور AT+CGSN استفاده می‌کنیم. ورژن نرم افزاری از دستور AT+CGMR و یا دریافت IMSI از دستور AT+CIMI استفاده می‌شود.

 

دریافت تنظیمات حال حاضر ماژول GSM

دریافت فعالیت‌های ماژول از دستور AT+CPAS و یا مشخصات شبکه اتصالی از دستور AT+CREG استفاده می‌کنیم. برای شناسایی قدرت باند رادیویی از دستور AT+CSQ و دستور دیگری برای دریافت میزان شارژ باتری AT+CBC می‌باشد.

 

دستورات کلی برای حالت SMS ماژول GSM

ارسال SMS از دستورات AT+CMGS و  AT+CMSS استفاده می‌کنیم. خواندن SMS از دستورات AT+CMGR و AT+CMGL و یا پاک کردن یک SMS از دستور AT+CMGD استفاده می‌شود. دستور دیگری برای اطلاع از دریافت SMS جدید به صورت AT+CNMI می‌باشد.

 


تنظیمات حالت SMS در ماژول GSM


دریافت دستورات جهت اعمال تغییرات یا مدیریت روی وسایل برقی به دو صورت امکان پذیر است. دستورات ارسالی بایستی به صورت متنی یا عددی باشند. برای این منظور بایستی در هر کدام از این حالت‌ها، ماژول را برای دریافت SMS به حالت عددی یا حروف تنظیم کنیم. دستور  AT+CMGF برای این منظور می‌باشد. امکان تغییر مد کاری ماژول توسط این دستور فراهم خواهد شد. اما پیش از اقدام به تغییر لازم به ذکر است که این دستور فقط یک حالت را قبول می‌کند. حالت ۰ یا حالت ۱ که در حالت ۰ برای دریافت عددی و حالت ۱ آمادگی ماژول برای دریافت پیامک متنی خواهد بود. به دو نمونه زیر توجه کنید.

AT+CMGF=1

OK

در این جا ماژول به حالت دریافت پیامک متنی تغییر مد داده است.

AT+CMGF=0

OK

در اینجا ماژول به حالت دریافت پیامک عددی تغییر مد داده است.

به حالت دوم که برای دریافت پیامک عددی است، حالت PDU هم گفته می‌شود. عبارت PDU مخفف protocol description unit می‌باشد.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

هرچه می آموزم میبینم که خیلی کم آموختم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۹ دیدگاه

  • درودفراوان
    من یک ماژول سیم کارت A6 خریدم ولی متاسفانه نتوانستم هنوز باهاش ارتباط برقرار کنم. اموزشی یا فیلمی در این مورد هست؟

  • با سلام
    مهندس وقتی من پیامک رو ازsim 808 ارسال میکنم روی گوشی های ساده درست نمایش داده میشه اما روی اندروید مینویسه ((محتوی پشتیبانی نشده)) لطفا راهنمایی کنید

  • سلام یه سوالی داشتم
    برای ماژول sim800l بهتر هست از کتابخانه خودش استفاده کنیم؟ یا اینکه همین دستورات at بهتر هستند؟

  • سلام
    با عرض ادب و خسته نباشید به همه دوستان، یک مشکلی داشتم اگر راهنمایی کنید خیلی ممنون میشم.
    من میخوام دستور اتصال به شبکه را به ماژول SIM800L ارسال کنم. برای این کار از برد آردوینو CH340
    و هدر فایل Softwareserial استفاده میکنم. اکثر دستورات از قبیل
    #include
    ;(SoftwareSerial SIM800(10, 11
    Serial.begin(9600);
    SIM800.begin(9600);
    ……
    ;(“?SIM800.println(“AT+CREG
    ;(“SIM800.println(“AT+COPS=0
    اجرا میکنم و نتیجه را هم OK می دهد.و نتایج درست برمی گرداند. ولی
    الان میخوام این دستور را اجرا کنم: “AT+COPS=2,2,”43211.
    به این صورت ;(“SIM800.println(“AT+COPS =2,2,43211 استفاده کردم نتیجه سریال خطای ۶۰۴ می دهد یعنی دستور درست نیست!!!؟
    به این صورت (“SIM800.println(“AT+COPS =2,2”,”43211 استفاده کردم کامپایلر خطا می دهد!!؟
    ممنون میشم اگر نحوه درست ارسال کردن دستور “AT+COPS=2,2,”43211 را توسط این توابع بیان کنید.

    • با عرض سلام و احترام
      دستور فوق را به صورت زیر، میبایست وارد نمایید:
      (“”\SIM800.println(“AT+COPS =2,2,\”43211

  • سلام مهندس وقتتون بخیر.مهندس در مورد دستورات at commandسوال داشتم واین هستش که دستور at+csmp=17,167,0,0 به چه منظوری استفاده میشود وگاهی عدد ۱۷تغییر میکند ممنون میشوم توضیح دهید.

    • عرض احترام حضور شما کاربر گرامی
      این دستور مربوط به تنظیمات اضافه برای ارسال پیامک، نظیر delivery پیام است، تفاوت بین عدد ۱۷ و ۱۶ در این دستور آنست که در عدد ۱۷ به جای ۱۶، پیام ارسالی به کاربر در شبکه یک روز اعتبار دارد، به عبارت دیگر، در صورتیکه از ماژول به شماره ای پیامی ارسال کنید و به هر دلیل آن پیام به دست گیرنده نرسد، تا یک روز بعد این پیام در شبکه همچنان تلاش می کند به کاربر ارسال شود.

  • سلام.
    من میخوام فقط یک پیامک مشخص رو پاک کنم. از دستور AT+CMGD به چه صورت باید استفاده کنم؟

    • سلام، اگر کل پیام هرا می خواهید پاک کنید، از دستور زیر استفاده کنید:
      AT+CMGD=1,4
      اگر این پیام، مثلا در خانه شماره ۱ حافظه ذخیره شده، از دستور زیر استفاده نمایید.
      AT+CMGD=1

  • سلام خسته نباشید من از ماژول sim 808 استفاده میکنم وقتی که می‌خوام حالت پیامک رو به متنی تبدیل کنم نمیشه میشه راهنماییم کنید با آردینو uno هم کار میکنم

    • با سلام
      دستور AT+CNMI برای تنظیم پیکربندی دریافت پیامک به شما کمک می‌کند. اما دارای یک اشتباه در دستور شما است. دستور “AT+CNMI=1,2” برای تنظیم ماژول به حالت دریافت پیامک تنظیم می‌شود. در دستور شما “=۱۷,۱۶۷,۰,۰” نیز اشتباه است. برای دریافت همه پیام‌ها به صورت بهینه می‌توانید از “AT+CNMI=1,1” استفاده کنید.

      دستور AT+CMGS برای ارسال پیامک استفاده می‌شود. شما باید شماره مقصد را به جای “۰۹۳۰۰۰۰۰۰۰۰” قرار دهید. همچنین باید متن پیامک خود را نیز وارد کنید. برای ارسال یک پیامک به شماره مقصد “۰۹۱۲۳۴۵۶۷۸۹” و متن “سلام” می‌توانید از دستور زیر استفاده کنید:
      AT+CMGS=”09123456789″
      > سلام
      پس از وارد کردن متن پیامک، باید عبارت Ctrl+Z (به عنوان یک برجسته) را وارد کنید تا پیامک ارسال شود.

  • سلام
    من با ماژول A9G کار میکنم و همه چیز فعلا خوب است
    GPS به خوبی کار میکند و پیام و زنگ خوری هم خوب
    ولی برای AGPS به مشکل خورده ام
    کسی میتواند کمک کند
    ممنون
    کد استفاده شده این است
    Init… +CIEV: “Charging”,94% +CREG: 2

    +CREG: 1

    A9/A9G V02.02.20190915R Ai_Thinker_Co._Ltd. READY

    AT+CGATT=1 +CGATT:1 OK

    AT+CGDCONT=1,”IP”,”mtnirancell” OK

    AT+CGACT=1,1 OK

    AT+CSTT=”mtnirancell”,””,”” OK

    AT+CIPMUX=1 +CME ERROR: 53

    AT+AGPS=1 +CME ERROR: 50 failure, pelease check your network!

      • سلام
        در این ماژول بعد از استفاده از دستور AT+AGPS=1 با اشکال (چک کردن شبکه) روبرو میشوم
        علت این اشکال و راه حل بر طرف سازی چیست؟ قبلا از شما تشکر لازم را دارم که پاسخ دادید
        ممنون
        AT+AGPS=1
        CME ERROR: 50 +
        failure, pelease check your network

        • با سلام
          وضعیت چراغ ماژول چطور است؟همچنین پاسخ دستورهای زیر را هم ارسال کنید.
          ۱- تست کیفیت سیگنال
          AT+CSQ
          ۲- تست میزان جریان منبع تغذیه
          AT+CBC
          ۳- تست رجیستری سیم کارت
          AT+CREG?