خانه / SIM800 / ارسال sms فارسی با sim800

ارسال sms فارسی با sim800

ارسال sms فارسی با sim800 در مد text

ماژول های GSM تولید شده توسط شرکت SIMCOM که از جمله پرکاربردترین آنها می توان به ماژول های سری SIM900 و SIM800 اشاره کرد ، دارای قابلیت ارسال و دریافت SMS ، قابلیت تماس گرفتن و دریافت تماس و اتصال به اینترنت از طریق GPRS را دارند . لازم به ذکر است که ماژول های سری SIM900 دیگر تولید نمی شوند و ماژول های سری SIM800 که نسخه بهبود یافته تر است جایگزین ماژول SIM900 شده است .

در این پست می خواهیم به بررسی ارسال پیامک توسط ماژول sim800 بپردازیم . به طور کلی sms یا پیامک ها به دو روش قابل ارسال می باشند . روش اول ارسال پیامک در mode text  می باشد ، در روش mode text که روش بسیار ساده ای می باشد ، متن پیامک شامل کاراکترهای استاندارد اسکی که شامل تمامی حروف انگلیسی و اعداد و علامتها می باشد و بر روی همه دستگاه ها قابل شناسایی و نمایش هستند .

ارسال SMS در MODE TEXT :

قبل از ارسال پیامک ابتدا باید بررسی نمایید که ماژول gsm شما از mode text برای ارسال پیامک پشتیبانی می کند یا نه ، برای بررسی توسط دستور at+command  زیر عمل می کنیم . با اجرای این فرمان زیر اگر در جواب OK برگردانده شود یعنی ماژول GSM شما توسط mode text پشتیبانی می شود .

در حالت mode text برخی پارامترهای اضافی برای ارسال پیام وجود دارد که می توانند تنظیم شوند. با استفاده از دستور زیر ما می توانیم مقادیر فعلی را بخوانیم:

پارامتر اول که مقدار ۱ را دارد ، شامل یک بایت است که هر بیت آن ترکیبی از چند عملیات است .

bit 7RPReply path, not used in text mode
bit 6UDHIUser Data Header Information
bit 5SRRSet this bit to request a delivery report
bit 3,4VPFValidity Period, set b4=1 if a VP value is present
bit 2RDReject Duplicates, do not return a message ID when a message with the same destination and ID is still pending
bit 0,1MTIMessage Type Indicatorb1=0 & b0=0 -> SMS-DELIVERb1=0 & b0=1 -> SMS-SUBMIT

بیت ۰  همیشه در هنگام ارسال پیام ها (SMS-SUBMIT) باید فعال تنظیم  شود. بنابراین مقدار اول باید ۱ یا بالاتر باشد. پارامتر دوم دوره اعتبار پیام را تعیین می کند. این مقدار به صورت زیر کدگذاری می شود:

۰ – ۱۴۳VP + 1) x 5 minutes)
۱۴۴ – ۱۶۷۱۲ Hours + ((VP-143) x 30 minutes)
۱۶۸ – ۱۹۶VP-166) x 1 day)
۱۹۷ – ۲۵۵VP-192) x 1 week)

پارامتر سوم شامل PID (شناسه پروتکل) است. این پارامتر فقط برای پیام های پیشرفته استفاده می شود. پارامتر چهارم شامل (DCS (Scheme Coding Data است. این پارامتر برای انتخاب characteret / messagetype استفاده می شود. هنگام تنظیم پارامتر DCS به ‘۰’ استاندارد متن به صورت کاراکتر اسکی ۷ بیتی ارسال می شود . هنگام تنظیم این پارامتر به ‘۱۶’ پیام به عنوان یک پیام فلش ارسال می شود.

برای ارسال یک پیام با مدت اعتبار ۱ روز، پارامترها باید به این صورت تنظیم شوند ، بیت ۰ و ۴ از فیلد اول باید فعال شود، بنابراین مقدار اول به ۱+۱۶=۱۷ تبدیل خواهد شد . برای تنظیم این پارامترها، دستور زیر را به مودم ارسال کنید:

ارسال SMS با ماژول sim800

بعد از تنظیمات اولیه ، برای ارسال  SMS، دستور زیر را تایپ کنید :

شماره تلفن بالا را با شماره تلفن همراه خودتان جایگزین کنید. مودم با < پاسخ می دهد و منتظر متن پیام می ماند . اکنون می توانید متن پیام را تایپ کنید و پیام را با استفاده از کلید ترکیبی <CTRL> – <Z> ارسال کنید:

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

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

ارسال SMS در MODE PDU

روش دوم برای ارسال پیامک روشی به نام PDU  می باشد . این روش دیگر از کاراکترهای استاندارد اسکی جهت نوشتن متن پیام استفاده نمی کند ، در این روش تمامی اطلاعات یک SMS به صورت کد HEX می باشد . این  روش متن SMS طی عملیاتی فشرده سازی و کدگذاری شده و ارسال می شود . سمت گیرنده SMS نیز بعد از دریافت SMS  باید متن پیام را رمز گشایی کند تا قابل نمایش باشد .

برای ارسال متن هایی غیر از کاراکترهای استاندارد اسکی ، مثلا ارسال متن به زبان فارسی یا هر زبانی غیر از انگلیسی از روش PDU استفاده میکنیم . زیرا هر حرف فارسی طبق استانداردی به نام UNICODE کدی معادل HEX دارد و برای ارسال مقادیر HEX باید از روش PDU  استفاده شود .

روش ارسال SMS در MODE PDU  و طریقه کدگذاری و کدگشایی SMS در MODE PDU  را در پستی جداگانه مفصلا توضیح خواهیم داد .

طبق قولی که داده بودم یک پست جداگانه درباره ارسال و دریافت sms در مد pdu  در سایت قرار دادم . در صورتی که وقت کنم حتما یه سورس کد هم قرار می دهم .

ارسال sms فارسی  در MODE TEXT

در مدل های جدید ماژول های شرکت SIMCOM مثل ماژول های سری SIM800 قابلیتی وجود دارد که  قادر به ارسال پیام های یونیکد یا UCS2 بدون رمزگذاری PDU هستند. شما می توانید پیام های Unicode را تنها با تبدیل داده یونیکد به یک رشته HEX ارسال کنید . برای بررسی اینکه آیا ماژول شما از این حالت پشتیبانی می کند، دستور زیر را تایپ کنید:

این دستورات کد های پشتیبانی شده توسط ماژول GSM را نمایش می دهد.

اگر پاسخ دریافتی از ماژول حاوی “HEX” یا “UCS2” باشد، یونیکد پشتیبانی می شود. در این مثال ما مودم را بر روی حالت “HEX” تنظیم می کنیم:

در مرحله بعد ما باید DCS صحیح (Schedule Data Coding) را برای پیام های Unicode مشخص کنیم که ۰x08 است. ما می توانیم این مقدار را با تغییر پارامتر چهارم دستور AT + CSMP به ‘۸’ تنظیم کنیم:

بعد از تنظیمات اولیه ، برای ارسال  SMS، دستور زیر را تایپ کنید :

شماره تلفن بالا را با شماره تلفن همراه خودتان جایگزین کنید. مودم با < پاسخ می دهد و منتظر متن پیام می ماند . اکنون به بخش مهم کار رسیده ایم . در این قسمت باید متن SMS فارسی را به معادل کد HEX حروف فارسی تبدیل کنیم  .

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

ارسال sms فارسی با sim800
ارسال sms فارسی با sim800

در این مثال ما می خواهیم کلمه فارسی سلام را توسط SMS ارسال کنیم ، بنابراین نیاز است معادل کد HEX آن را از جدول بالا استخراج کرد . معادل کد هگز کلمه سلام برابر است با “۰۶۳۳۰۶۴۴۰۶۲۷۰۶۴۵” .

در تصویر زیر نحوه تنظیمات و ارسال SMS فارسی را مشاهده می کنید :

ارسال sms فارسی با ماژول sim800 در mode text
ارسال sms فارسی با ماژول sim800 در mode text

نمونه کد ارسال sms فارسی با ماژول sim800 در mode text توسط بسکام :

ارسال sms فارسی با ماژول sim800 با بسکام
ارسال sms فارسی با ماژول sim800 با بسکام

 

48 دیدگاه

  1. سلام
    ظاهرا سایت تازه راه اندازی شده.
    اما به شخصه خلی لذت بردم.
    هم UI هم آموزش، کامل و عالی بود.
    امیدوارم روز به روز موفق تر باشید.
    ما هم سعی میکنیم ساپورت کنیم.
    سپاسگزارم.

    • سلام ، سپاسگزارم از شما ، سایت تازه راه اندازی شده و در جهت بهبود سایت و محتوای آن در تلاش هستیم .

  2. درود

    آیا شما با sim800
    ایمیل زده اید ؟

    • سلام
      بله ، در آینده آموزش های دیگری از ماژول sim800 مثل ارسال email ، بروزرسانی ساعت rtc توسط شبکه ، ارتباط با سرور توسط gprs ، بر روی سایت قرار خواهیم داد . میتوانید با عضویت در خبر نامه یا دنبال کردن ما در شبکه های اجتماعی ، از مطالب جدید ما با خبر شوید .
      تشکر فراوان

  3. AT+SAPBR=3,1,”CONTYPE”,”GPRS”

    OK
    AT+SAPBR=3,1,”APN”,”CMNET”

    OK
    AT+SAPBR=3,1,”USER”,””

    OK
    AT+SAPBR=3,1,”PWD”,””

    OK
    AT+SAPBR=1,1

    OK
    AT+EMAILCID=1

    OK
    AT+EMAILTO=30

    OK
    AT+SMTPSRV=”smtp.gmail.com”,465

    OK
    AT+SMTPAUTH=1,”myemail”,”my pass”

    OK
    AT+SMTPFROM=”myemail@gmail.com”,”myemail”

    OK
    AT+SMTPRCPT=0,0,”myemail@gmail.com”,””

    OK
    AT+SMTPRCPT=1,0,”myemail@outlook.com”,””

    OK
    AT+SMTPSUB=”test Email”

    OK
    // “me test send to email gprs sim800c\r\n” = 36 char body
    AT+SMTPBODY=36

    DOWNLOAD

    OK
    AT+SMTPSEND

    OK
    AT+SAPBR=0,1

    +SMTPSEND: 61

    OK

  4. ببخشید
    شماره ها و سیمیکلون ها پس و پیش شده !

  5. مقدار apn اپراتوری که استفاده میکنید باید قرار دهید .

  6. درود بر شما

    با تمام این روشها نشد
    AT+SAPBR=3,1,”APN”,”CMNET”
    Ok

    AT+SAPBR=3,1,”APN”,”www”
    Ok

    AT+SAPBR=3,1,”APN”,”Mtnirancell”
    Ok

    AT+SAPBR=3,1,”APN”,”mtnirancell”
    Ok

    هر بار با یکی ست شده.
    تماما مثل بالا بوده

    • سلام برشما
      به زودی آموزش ارسال ایمیل در پستی جداگانه در سایت قرار میگیرد ، سوالات مربوط را آنجا ادامه دهید ، شرکت های ارائه دهنده ایمیل برای مدتی است که از رمزنگاری ssl بر روی سرویس خود استفاده میکنند ، بنابراین ماژولی که شما استفاده می کنید باید قابلیت ssl داشته باشد ، برای فعال سازی از دستور AT+EMAILSSL=1 استفاده نمائید .

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

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

    • سلام دوست عزیز
      همین روشی که در این پست توضیح داده شده ، روش یونیکد می باشد که در مد تکس انجام شده ، روش دیگری نیز برای ارسال به نام pdu وجود دارد که در پستی جداگانه توضیح داده خواهد شد .

  9. سلام اگر امکان دارد یک مثال درباره دریافت پیامک و جست و جو در پیام با زبان c قرار بدهید

    • سلام
      یه آموزش خوب برای دریافت و تحلیل sms وجود داخل وبلاگ به آدرس avr-city.mihanblog.ir با بسکام وجود داره ، اگر وقت داشته باشم یه آموزش تهیه می کنم که زبان سی هم داشته باشه .

  10. امیربهادر

    سلام و خسته نباشید.تشکر بابت مطالب خوبتون.من ماژول رو رو حالت تکست مود ست میکنم ریسپانس ok هم میده ماژول بعد رو GSM هم ست کردمش بازم رسپانش ok داد بعد که با دستور CMGS پیامک رو میفرستم بین کاراکتر ها حرف @ میاد.مثلا hello رو اینطوری فرستاده @h@e@l@l@o@. ممنون میشم راهنمایی کنین!

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

  11. حمیدرضا

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

    ممنون میشم راهنمایی کنید

    • سلام
      برای اینکه بتوان کاراکترهای انگلیسی را همراه با حروف فارسی ارسال کنید ، باید از معادل یونیکد کاراکترهای انگلیسی استفاده نمائید ، که بصورت کد چهار رقمی می باشد . دو رقم صفر قبل از هر کدام از کد هگز کاراکتر انگلیسی قرار دهید .

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

    • سلام
      باید معادل یونیکد متغییر را ارسال کنید ، برای مثال اگر متغییر شما عدد ۲۵ باشد باید مقدار ۰۰۳۲۰۰۳۵ را ارسال نمائید .

  13. سلام این کدهارو برای sim800l هم میتونم استفاده کنم؟

    • سلام
      این کدها را برای تمامی مدل های سری sim800 می توانید بکار ببرید .

  14. علی عطاران

    باسلام من این مثال شمارا در مانیتور سریال آردوینو بکار بردم تمام مراحل تا ارسال پیامک درست پیش میره ولی کلید ترکیبی CTRL+Zرا میزنم دیگه هیچی بر نمیگردونه ممنون میشم راهنمایی کنین.

    • سلام
      اگر در ترمینال سریال آردوینو قسمتی برای ارسال کد هگز یا دسیمال وجود دارد ، معادل کلید ترکیبی control+z را ارسال نمائید .
      کد معادل بر مبنای هگز برابر ۱A و بر مبنای دسیمال ۲۶ می باشد .

  15. سلام. ممنون از مطالب بسیار مفیدتون. یک سوال. یک پیام وقتی در حالت تکست مود ارسال شود در سمت گیرنده چطور می توان متوجه شد که پیام دریافتی به صورت هگز هست یا جی اس ام؟

  16. سلام.
    برای پیامک دریافتی که بصورت textmode ارسال شده چطور باید متوجه شد که کاراکترها به صورت hex ارسال شده اند یا به صورت gsm
    ؟

    • سلام
      توسط تنظیمات سمت گیرنده تعیین میکنیم که پیامک به صورت hex یا gsm نمایش داده شود , اگر تنظیمات گیرنده بر روی hex باشد تمامی حروف فارسی و انگلیسی بصورت هگز خواهد بود و شما باید توسط برنامه نویسی عمل پردازش و دیکد را انجام دهید .

  17. سلام . من وقتی control+z را می زنم باز علامت < ظاهر میشه و پیام ارسال نمیشه
    ضمنا ماژول sms دریافت میکنه ولی ارسال نمیکنه
    ممنون اگه راهنمایی کنید

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

  18. مهدی زواری

    بسیار عالی و جالب، تشکر

    • سلام
      امیدوارم مطالب مفید باشند . اظهار لطف شما به ما انگیزه مضاعف می دهد . تشکر

  19. سلام و تشکر.

  20. سلام ادمین جان
    بسیار ممنون از مطلب مفیدتون

  21. با سلام و خسته نباشید و ممنون از سایت خوبتون .
    من همه ی مراحل رو درست رفتم و به هیچ ارروی بر نحوردم اما وقتی Ctrl+z میزنم بعد چندثانیه ارور میده.
    مشکلش کجاست؟
    بعد اینکه مقدار انتن دهی در قسمت AT+CASQ باید حداقل چند باشه؟
    ممنون

    • سلام ، ممنون
      نرم افزاری که استفاده می کنید اگر قابلیت ارسال کنترل زد را بصورت مستقیم ندارد باید معادل هگز آن 1A را ارسال کنید . کیفیت سیگنال شما باید بالاتر از عدد 10 باشد . همچنین باید اتصال به شبکه توسط فرمان at+creg? چک شود .

  22. سید علی شاهرخی

    سلام .

    خواستم بپرسم اگر به جای CNTR-Z اینتر بزنیم کار نمیکنه دستور ؟

  23. سلام سایتی میشناسید که متن فارسی رو به معادل hex ان تبدیل کند ؟

    • سلام
      سایت مخصوص تبدیل متن فارسی به یونیکد برای صفحات وب زیاد هست . عبارت تبدیل متن فارسی به یونیکد را در گوگل جستجو کنید .

  24. محمد رضا حاصلی

    سلام وقت بخیر
    اگر بخواهم از طریق میکرو ARM با استفاده از ماژول SMS پیام ارسال کنم بعد از اینکه توسط AT+CMGS شماره را وارد کردم و ریسپانسی که میده OK حالا چجوری و با چه دستوری باید پیام مورد نظرم را بنویسم؟

    • سلام
      ابتدا دستور “********09″=AT+CMGS را به ماژول ارسال کنید سپس منتظر دریافت کاراکتر < بمانید . سپس متن پیام خود را بنویسید و برای ارسال معادل کد کنترل زد که 26 دسیمال است را ارسال کنید .

  25. سايت بسيار خوبيست و userfriendly است لطفا طرز اس ام اس فرستادن با سيم ٨٠٠ (از نظر سخت افزاري -كيبورد كجاست؟)را نيز آموزش دهيد متشكرم

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

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

  27. سلام من با نرم افزار آردینو ارسال کامند میکنم به جای سریال پورت . همه چی خوب پیش میره ولی قسمت آخر ctrlz چکار کنم . عملی انجام نمیشه؟

    • سلام
      تا حالا تو سریال مانیتور اردوینو تست نکردم . فعلا امکان تست ندارم . معادل کنترل زد کد هگز 1a یا 26 دسیمال می باشد . از ترمینال هایی که قابلیت ارسال کد به صورت هگز هم دارند استفاده کنید مثل herculs یا sscom32

  28. سلام
    این کامندهارو باید کجا بزنیم؟؟

  29. سلام و درود بابت مطالب با ارزشتون تشکر میکنم.
    سه تا سوال داشتم از جدول at+csmp اگه منو راهنمایی کنید ممنون میشم:
    1- بیت 4 که مشخصه کارش چیه بیت ۳ کارش چیه؟
    2- بیت 1 و 0 که گفتید فرق بین sms-deliver و sms-submit چیه؟
    3- کار بیت 2 رو درست متوجه نشدم.

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

نشانی ایمیل شما منتشر نخواهد شد.