راه اندازی بخش پیامک SIM800L

ماژول SIM800L:

برد SIM800L یک ماژول تلفن همراه کوچک است که امکان انتقال دیتا از طریق GPRS ، ارسال و دریافت پیام کوتاه و برقراری و دریافت تماس صوتی را فراهم می آورد. هزینه کم و راه اندازی آسان ماژول با پشتیبانی از دستورات SIMCOM ، این امکان را فراهم می کند تا بتوانید در مواقعی که نیاز به ارتباطات از راه دور می باشند از این ماژول بهره گرفته و پروژه های خود را انجام دهید. ماژول SIM800L  از طریق پایه های RX , TX  (پورت سریال ) با میکروکنترلر ارتباط برقرار می کند لذا تمامی دستورات SETTING و دریافت  و  ارسال تماس و پیام از این پورت صورت خواهد گرفت.

ولتاژ تغذیه ماژول SIM800L:

ولتاژ تغذیه این ماژول از ۳٫۸ تا ۴٫۲ ولت می باشد باید توجه داشته باشید که اعمال ولتاژ بیشتر از ۴٫۲ ولت در طولانی مدت به ماژول آسیب خواهد رسانید لذا ولتاژ تغذیه ماژول را بر روی ۴٫۲ ولت ثابت کنید ، همچنین توجه داشته باشید این ماژول در مواقع ارسال اس ام اس و برقراری و در یافت تماس های صوتی نیاز به آمپراز لحظه ای بالا می باشد لذا منبع تغذیه شما باید بتواند آمپر لازم برای راه اندازی و پایدار بودن ماژل در طولانی مدت را فراهم کند ، یکی از بهترین رگولاتور های جریان بالا رگولاتور LM2596 میباشد که شما می توانید ماژول آماده آن را را تهیه کرده و ولتاژ خروجی آن را بر روی ۴٫۲ ولت تنظیم نمایید ماژول LM2596 جریادهی مناسبی تا سه آمپر دارد و برای ماژول SIM800L مناسب خواهد بود عکس ماژول LM2596 را در زیر مشاهده می کنید.

نکته:

برای پایداری بیشتر ماژول می توانید در خروجی این ماژول از دو عدد خازن ظرفیت بالا مثلا ۴۷۰۰ میکرو فاراد ۲۵ ولت استفاده کنید.

در صورتی که تغذیه ماژول SIM800L با تغذیه میکرو کنترلر جدا باشد سعی کنید ولتاژ تغذیه میکروکنترلر را نیز برابر با تغذیه ماژول قرار دهید در غیر این صورت ولتاژ پایه TX میکرو کنترلر که به پایه RX ماژول وصل می شود را با تقسیم مقاومتی کاهش داده و اجازه ندهید در حین تبادل اطلاعات ولتاژ بیشتر از ۴٫۲ ولت شود.

آنچه که برای ارسال و دریافت پیام توسط میکرو کنترلر نیاز است:

برای اینکه بتوانید با استفاده از میکروکنترلر توسط ماژول پیام ارسال و دریافت کنید باید قبل از اینکار ماژول را پیکره بندی کنید

انچه که قبل از پیکره بندی ماژول باید بدانید:

ماژول پیام را می تواند در دو حالت دریافت کند و به شما نمایش دهد

حالت اول حالت کد شده پیام هست که به محض دریافت پیام باید آن را باز کنید و سپس کد گشایی میکنید تا پیام خالص را از آن استخراج کنید در این حالت که به مد PDU معروف است در هنگام ارسال پیام باید مجددا پیام را کد گذاری کرده و سپس اقدام به ارسال آن کنید اگر که قصد فرستادن پیام یا کاراکتر های فارسی را ندارید از این حالت استفاده نکنید در غیر این صورت برای ارسال پیام های فارسی و یا متشکل از حروف فارسی و انگلیسی حتما باید از این حالت یعنی مد PDU استفاده کنید

حالت دوم حالت متنی پیام است یعنی به محض دریافت پیام آن را باز می کنید و بدون اینکه کار خاصی انجام دهید به محتوای پیام خالص دست میابید در این حالت فقط می توانید حروف انگلیسی را ارسال کنید و اگر پیامی هم غیر پیام انگلیسی دریافت کنید با کد های معادل حروف فارسی یا هر زبان دیگری مواجه خواهید شد که باید دنبال کد اسکی معادل با آن حروف بگردید تا پیام اصلی نمایان شود.

نکته ای که در ارسال و دریافت پیام می تواند برای شما مفید باشد:

اگر پیام فارسی ارسال می کنید حتما باید از حالت یک یعنی مد PDU استفاده کنید و بعد از ارسال کامل پیام می توانید حالت دوم TEXT MODE را فعال کنید تا در صورتی که پیامی دریافت شود بدون کد نویسی اضافی و دیکد کردن پیام سریع بتوانید به محتوای پیام دسترسی داشته باشید و وقت خود را با نوشتن تابع های دیکد پیام از دست ندهید.

نکته:

اگر قصد دارید که بدون میکرو کنترلر با ماژول ارتباط برقرار کنید نیاز به تهیه ماژول TTL به RS232 دارید:

این ماژول را تهیه کرده و پایه TX ماژول RS232 به پایه TX ماژول SIM800L و پایه RX ماژول RS232 را به پایه RX ماژول SIM800L متصل کنید توجه داشته باشید که برای جلوگیری از آسیب رسیدن به پایه RX ماژول حتما از تقسیم مقاومتی برای این پایه بهره بگیرید تصویر زیر بیانگر چگونگی انجام این موضوع است:

ترمینال ادیتور:

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

دستورات مهم بخش پیامک SIM800

 

دستور AT:

این دستور تست آماده به کار بودن ماژول و همینطور تشخیص سرعت یا باود ریت میزبان می باشد

دستور ATE0:

وقتی دستوری تایپ می کنید به محض تایپ ، همان کاراکتر در نرم افزار سریال نمایش داده می شود این بدان معنیست که ماژول کاراکتر را به محض تایپ ، دریافت کرده و یک نسخه از حرف یا کاراکتر دریافت شده را به میزبان برمی گرداند ، برای همین است که ما دستور تایپ شده خودمان را مشاهده می کنیم در صورتی که با میکروکنترلر قصد راه اندازی ماژول را داشته باشید باید این قابلیت را غیر فعال کنید ، دستور ATE0 این قابلیت را غیر فعال می کند بعد از غیر فعال شدن این حالت ، (حالت اکو)  مِن بعد هر چه در پورت سریال تایپ کنید برگشت داده نشده و دستورات تایپ شده را مشاهده نخواهید کرد و تنها جواب است که فرستاده خواهد شد.

دستور ATE1:

این دستور حالت اکو یا همان حالت برگرداندن کاراکتر را فعال می کنید با فعال کردن این گزینه ، هر آنچه تایپ می کنید باید در محیط ترمینال مشاهده کنید.

دستور AT+CNMI:

AT+CNMI=0,0,0,0,0:

این دستور حالت دریافت پیام را غیر فعال می کند بدین صورت که بعد از این دستور هیچ پیامی توسط سیم کارت دریافت نخواهد شد.

در مواقعی که نیاز هست تا در یک بازه زمانی خاص ، ماژول هیچ گونه پیامی دریافت نکند از این دستور استفاده کرده و بخش دریافت پیامک را غیر فعال می کنیم.

AT+CNMI=2,1,0,0,0:

این دستور بر خلاف دستور قبلی حالت دریافت پیام را فعال می کند.

دریافت پیام و ارسال محل ذخیره پیام:

AT+CNMI=2,2,0,0,0:

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

دریافت و ذخیره پیام:

AT+CNMI=0,1,0,0,0:

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

دریافت تاییده پیام:

AT+CNMI=2,1,0,1,0:

اندیس چهارم در کد بالا حالت تایید دریافت پیام را مشخص می کند اگر پیامی را ارسال کنید به محض دریافت از طرف گیرنده یک کد تایید دریافت ، به فرستنده برگشت داده می شود:

خط هفدهم و هجدهم دریافت موفقیت آمیز پیام توسط گیرنده را نشان می دهد.

دستور AT+CUSD=0:

این دستور حالت کد های دستوری سیم کارت را غیر فعال می کند به طوری که اگر شما با دستورات USSD مقدار شارژ سیم کارت را بخوانید جوابی دریافت نخواهید کرد 

اگر از میکرو کنترلر برای راه اندازی ماژول استفاده می کنید لازم است حتما حالت کد های دستوری را غیر فعال کرده و فقط در مواقع لزوم اقدام به فعالسازی آن کنید توصیه می گردد که  بعد از اجرای دستور ، کد های دستوری را غیر فعال کنید.

دستور AT+CUSD=1:

اگر حالت کدهای دستوری سیم کارت را فعال کنید به عنوان مثال (برای سیم کارت ایرانسل) می توانید با شماره گیری *۱۴۱*۱# مقدار شارژ یا اعتبار سیم کارت را بخوانید:

دستور AT+CCID:

این دستور شماره سریال سیم کارت را برمی گرداند با استفاده از این دستور می توانیم چک کنیم که سیم کارت به ماژول متصل شده یا خیر اگر سیم کارت به ماژول متصل شود شماره سریال را بر میگرداند و اگر متصل نباشد ERROR بر می گرداند

 :AT+CREG دستور

این دستور وضعیت اتصال به شبکه سیم کارت را نشان می دهد اگر جواب برابر با CREG: 0,1 و یا CREG: 0,5 باشد سیم کارت به شبکه وصل شده و آماده است در غیر این صورت اگر سیم کارت به شبکه متصل نشود حتما مطمئن شوید که پین کد سیم کارت غیر فعال باشد در ادامه آموزش می توانید نحوه ی غیر فعال کردن پین کد را مشاهده کنید.

اما جواب هایی که برای at+creg? ممکن است برگشت داده شود در زیر مشاهده می کنید:

۱:سیم کارت به شبکه متصل نیست و ماژول جستجویی برای پیدا کردن شبکه انجام نمی دهد

۲:سیم کارت به شبکه داخلی وصل شده است

۳:سیم کارت به شبکه متصل نبوده و در حال جستجوی اپراتورهای شبکه است

۴:هیچ شبکه ای یافت نشد

۵:سیم کارت به شبکه متصل شده و رومینگ فعال است

 :AT+CREG=?دستور

با ین دستور مینیمم و ماکزیمم عددی که برای CREG قابل قبول است را بدست می آوریم

بنابراین ما می توانیم CREG را از مقدار صفر تا دو مقدار دهی کنیم

اگر CREG با مقدار ۰ پیکره بندی شود URC کد (unsolicited result code) غیر فعال می شود

با غیر فعال شدن URC کد که در حالت عادی هم غیر فعال است در صورت قطع شبکه مقدار CREG برگردانده نخواهد شد

اگر CREG با مقدار ۱ پیکره بندی شود URC کد فعال شده و در صورت تغییرات شبکه مقدار CREG برگردانده می شود:

با فعال کردن URC اگر تغییراتی در شبکه رخ دهد به عنوان مثال اگر سیم کارت از شبکه قطع شده و در حال جستجوی شبکه باشد تغییر در CREG ایجاد شده و مقدار CREG برگردانده می شود

خط ششم کد ، مقدار ۲ برای CREG  را نشان می دهد

مقدار ۲ در بالا گفته شد که سیم کارت به شبکه متصل نبوده ولی در حال جستجو و تلاش برای برقراری ارتباط با شبکه است

اگر CREG با عدد ۲ مقدار دهی شود علاوه بر وضعیت وصل به شبکه ، کد منطقه و Cell ID را برمیگرداند که می توان با انجام محاسباتی ، مکان تقریبی سیم کارت را بدون وصل شدن به اینترنت بدست آورد.

دستور AT+CPIN:

این دستور فعال یا غیر فعال بودن پین کد سیم کارت را بر می گرداند

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

راه اول و آسان غیر فعال کردن پین کد استفاده از یک موبایل هست که پین کد سیم کارت را قبل از قرار دادن در ماژول غیر فعال می کنید راه دوم استفاده از کد های دستوری هست که در برنامه نویسی بعضی ا پروژه های حساس نیاز هست که ابتدا فعال یا غیر فعال بودن پین کد چک شود و اگر فعال بود باید از طریق کد غیر فعال گردد:

در خط هشتم برای اندیس دوم مقدار صفر (AT+CLCK=”SC”,0,”1234″) پین کد را غیر فعال و مقدار یک (AT+CLCK=”SC”,1,”1234″) پین کد را فعال می کند بنابراین در کد بالا از مقدار صفر برای غیر فعال کردن پین کد استفاده شده است.

دستور AT+CSQ:

این دستور قدرت انتن یا کیفیت سیگنال شبکه را نشان می دهد

خط دوم قدرت انتن دهی را برابر با ۱۹ نشان می دهد

قدرت انتن باید عددی بین ۲ تا ۳۰ باشد هر چه این عدد به مقدار ۳۰ نزدیکتر باشد قدرت انتن دهی بیشتر خواهد بود

کیفیت انتن را در زیر مشاهده می کنید (اعداد منفی بر حسب dB):

دستور AT+CMGF:

اگر AT+CMGF را برابر با صفر قرار دهید مد PDU را فعال کردید و اگر AT+CMGF را برابر با یک قرار دهید حالت متنی فعال می گردد (درباره مد PDU و حالت متنی پیام در ابتدا توضیح مختصری داده شده است)

دستور AT+CLIP:

دستور AT+CLIP اگر با مقدار صفر پیکره بندی شود در هنگام تماس دریافتی ، شماره تلفن تماس گیرنده نشان داده نخواهد شد:

و اگر با مقدار یک پیکره بندی شود شماره تلفن تماس گیرنده قابل رویت خواهد بود:

دستور AT+CMGL:

اگر حالت دریافت پیام بر روی حالت متنی باشد(AT+CMGF=1):

این دستور پیام های دریافتی خوانده شده و خوانده نشده و فرستاده شده و پیام های ارسال شده ناموفق و یا تمامی این پیام ها را لیست می کند

اگر حالت دریافت پیام بر روی حالت PDU باشد(AT+CMGF=0):

در این حالت به جای عبارات “REC UNREAD”,”REC READ”,”STO UNSENT”,”STO SENT”,”ALL” اندیس آن فرستاده می شود برای REC UNREAD اندیس ۰ و برای REC READ  اندیس ۱ و برای ALL اندیس ۴ فرستاده می شود برای مثال اگر بخواهید پیام های خوانده شده را در حالت PDU بخوانید باید کد زیر رو بفرستید:

دستور AT+CMGR:

با استفاده از این دستور می توانید پیام های دریافتی را که در حافظه ذخیره شدند بخوانید:

AT+CMGDA:

با استفاده از این دستور می توانید پیام های خوانده شده ، خوانده نشده ، ارسال شده ، ارسال های ناموفق ،جعبه دریافت،و یا تمامی پیام ها را یکجا پاک کنید:

در کد زیر حالت متنی قبلا فعال شده است (AT+CMGF=1)

اگر بخواهیم تمامی پیام های خوانده شده را پاک کنیم به صورت زیر عمل می کنیم:

AT+CSCA:

این دستور شماره مرکز پیام را برمی گرداند:

AT+CSPN:

این دستور نام اپراتور سرویس دهنده را بر می گرداند:

AT+CFUN:

این دستور بخش رادیویی ماژول را قطع و وصل می کند که در نتیجه سیم کارت از شبکه خارج می شود برای وصل مجدد باید مجددا مقدار CFUN را به حالت قبلی برگردانید

از این دستور در بیشتر مواقع می توان به عنوان ریست نرم افزاری ماژول استفاده کرد

دستور AT&W:

گاهی مواقع با ریست شدن ماژول یا قطع و وصل شدن شبکه تنظیمات ریست شده و نیاز به تنظیم مجدد دارند که این در هر لحظه امکان پذیر نیست برای رفع این مشکل تنظیماتی که مهم هستند باید ذخیره شوند به طور مثال اگر می خواهید که مازول همیشه در حالت pdu کار کند حتی با ریستارت شدن مقدار خود را از دست ندهد بعد از تنظیم حالت PDU با استفاده از دستور AT&W آن را ذخیره کنید:

دستور AT&F:

با استفاده از این دستور می توانید تنظیمات ماژول را به تنظیمات کارخانه بازنشانی کنید

برای آشنایی بیشتر با دستورات SIMcom  سری SIM800 می توانید به جعبه دانلود مراجعه کرده و فایل حاوی pdf (به زبان انگلیسی) را دانلود کنید.

نحوه ی ارسال پیام در ماژول SIM800L:

۱- قبل از هر کاری سیم کارت را به ماژل وصل کنید

۲- اتصالات RX , TX ماژول را به پایه های TX , RXمیکرو کنترلر مورد نظر وصل کنید

۳- ماژول را در حالت مد pdu قرار دهید

۴- به این صفحه مراجعه کرده و جمله ای که قصد ارسال آن را دارید در کادر بنویسید سپس شماره مرکز پیام و شماره دریافت کننده را وارد کنید

نکته:شماره مرکز پیام برای اپراتور ایرانسل در تاریخ کنونی شماره ۹۸۹۳۵۰۰۰۱۴۰۰+ می باشد که باید این شماره را در قسمت شماره مرکز پیام وارد کنید ، توجه داشته باشید که شماره را با + وارد کنید

۵- سایز کلمه را بر روی ۱۶ قرار داده  و بر روی دکمه تبدیل کلیک کنید و کد دریافتی را کپی کرده و در پروژه خود استفاده کنید

نمونه کد ارسالی به زبان C :

خط اول:

با ارسال دستور AT اقدام به شناساندن باود ریت میکروکنترلر به ماژول سیم کارت کردیم

خط سوم:

حالت اکو غیر فعال شده است

خط پنجم:

حالت کاری ماژول بر روی مد PDU تنظیم شده است

خط هفتم:

طول پیام با دستور AT+CMGS فرستاده شده است

خط هشتم:

حالت کد شده پیام فرستاده شده است

توجه داشته باشید که بعد از ارسال هر دستور برای ثبت دستور باید کد هگز ۰x0D فرستاده شود r\ معادل همان کد هگز ۰x0D می باشد و همینطور برای ثبت و ارسال پیام هم بعد از ارسال متن کد شده باید کد ۰x1A فرستاده شود در کد بالا n\ همان معادل کد ۰x1A می باشد.

تهیه و تنظیم: تیم mculibrary.ir

  • دستورات AT_COMMAND برای سری SIM800
  • زبان: انگلیسی
  • حجم: 3.14 مگا بایت
mast3r

علاقه مند به طراحی سیستم های میکروکنترلری و الکترونیک دیجیتال و مدارات منطقی دیجیتال ، برنامه نویسی اپلیکیشن های اندروید مرتبط با سخت افزار... برنامه نویسی کلیه میکرو کنترلر های سری avr و pic و stm32 و stm8 و ...

نوشته‌های مرتبط

قوانین ارسال دیدگاه

  • دیدگاه های فینگلیش تایید نخواهند شد.
  • دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
  • از درج دیدگاه های تکراری پرهیز نمایید.
  • در هنگام درج نظر از به کار بردن کلمات نامتعارف خودداری کنید.
دیدگاه‌ها

*
*

2 + 4 =

    بهزاد پاسخ

    سلام و تشکر از سایت خوب و مطلب عالی که تهیه کردین .
    میخواستم بدونم برای تبدیل فرمت PDU به متن هم سایتی سراغ دارین؟. توی ترمینال متنی که با AT+CMGR میخونم غیر قابل خوندنه . ممنون میشم اگر سراغ دارید معرفی کنید

      mast3r پاسخ

      سلام و عرض ادب و تشکر از توجه شما
      می توانید به اینجا مراجعه کنید

    امیررضا پاسخ

    سلام خیلی ممنون
    خیلی مختصر و مفید و جامع کمک کردین.
    ممنون از شما

      Massive پاسخ

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

    مهدی قدیری پاسخ

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

      mast3r پاسخ

      خواهش می کنم دوست عزیز
      وظیفه هست
      موفق و موید باشید...

question