در پست قبلی نحوهی راهاندازی شیلد sim800c را برسی کردیم و مثال جست و جوی شبکه را بر روی آردوینو آپلود کردیم. در این قسمت قصد داریم دریافت sms و توابع مربوط به این کار را به شما آموزش دهیم. در ادامهی آموزش با مرجع تخصصی آردوینو ، دیجی اسپارک همراه باشید.
بررسی شیلد سیم کارت sim800c
شیلد Sim800c یک شیلد GSM/GPRS با قابلیت پشتیبانی از ۴ کانال ۸۵۰/۹۰۰/۱۸۰۰/۱۹۰۰ MHz برای ارسال دیتا ، SMS,MMS و برقرای تماس صوتی میباشد. این ماژول مخابراتی را میتوان به عنوان یک تلفن همراه هوشمند در نظر گرفت که کاربران به وسیلهی آن میتوانند دیتا را به درستی ارسال و دریافت کنند. این ماژول قابلیت پشتیبانی از تمام اپراتورهای مخابراتی را دارا میباشد.ارتباط سریال در سطح TTL قابلیت راهاندازی این ماژول را با آردوینو و سایر سیستمهای ۵ , ۳٫۳ , ۲٫۸۵ ولت DC را امکانپذیر میکند. به وسیله تغییر وضعیت جامپر (D1 D0) میتوان ماژول را در وضعیت ارتباط سریال سخت افزاری و یا با تغییر جامپر (D8 D7) میتوان ماژول را در وضعیت ارتباط سریال نرمافزاری قرار داد. این شیلد قابلیت بروز شدن فریم ور را توسط پورت USB و پورت سریال دارا میباشد.از ویژگیهای این شیلد میتوان به موراد زیر اشاره نمود:
- پشتیبانی از چهار باند ۸۵۰/۹۰۰/۱۸۰۰/۱۹۰۰ مگاهرتز
- پروتکل ارتباطی سریال (UART)
- کنترل از طریق AT Command و لایبرری
- دارای جک هدست
- اسلات سیمکارت میکرو
- تغذیه ۵ ولت DC
- جربان مصرفی حداکثر ۲ آمپر
- دمای کاری منفی ۴۰ الی ۸۵ درجه سانتیگراد
آماده سازی شیلد sim800c آردوینو
ابتدا سیمکارت میکروی خود را مطابق تصویر زیر درون اسلات شیلد قرار دهید و آن را به داخل فشار دهید تا صدای تیک کوچکی شنیده شود.اگر سم کارت شما از نوع میکرو نمیباشد ، میتوانید از آموزش زیر به منظور تبدیل سیمکارت معمولی به سیمکارت میکرو استفاده کنید. آموزش تبدیل دستی سیم کارت معمولی به میکرو سیم کارت این شیلد سیم کارت قابلیت راهاندازی در دوحالت سریال سخت افزاری و سریال نرمافزاری دارا میباشد.کتابخانهای که توسط تیم توسعه دانشجوکیت برای شما دوستان آماده شده است ، از سریال نرمافزاری برای راهاندازی این شیلد استفاده میکند برای این منظور توسط جامپر همانند شکل زیر ، شیلد را بر روی سریال نرم افزاری قرار میدهیم.
هماکنون شیلد سیم کارت sim800c GSM Module را بر روی برد آردوینو UNO قرار دهید.
اکنون شیلد شما آماه شده است و میتوانیم کد نویسی را شروع کنیم. ابتدا کتابخانهای که توسط تیم فنی دانشجوکیت آماده شده است را از لینک زیر دانلود کنید و توسط آموزش زیر آن را به نرمافزار آردوینو خود اضافه کنید. دانلود کتابخانه شیلد Sim800c برای آردوینو همچنین اگر شیوه نصب کتابخانه را نمیدانید؛ از آموزش نصب کتابخانه در نرمافزار آردوینو استفاده کنید. این کتابخانه از پین ۷ و ۸ آردوینو به منظور برقراری ارتباط سریال نرمافزار با آردوینو استفاده میکند. همچنین از پین ۶ آردوینو به منظور ریست شیلد استفاده میشود . که میتوانید با اتصال پین ۶ به یک کلید و GND ، امکان ریست کردن را به شیلد sim800c خود اضافه کنید.
معرفی توابع ارسال اس ام اس SMS
در ابتدای کار قبل از هر کاری میبایست کتابخانه GSM را به برنامه خود فراخوانی کنیم:
#include <GSM.h>
این کتابخانه پایه و در برگیرندهی تمامی کلاسها و توابعی میباشد که برای راهاندازی یک ماژول یا شیلد GSM مورد نیاز است.شیلد sim800c دارای یک عدد مودم داخلی میباشد که به وسیلهی پورت سریال و AT command ها میتوان آن را به سامانهی جهانی ارتباطات همراه متصل نمود. این کتابخانه دستورات و کدنویسیهای سطح پایین بین سیم کارت و مودم داخلی sim800 را از بین میبرد و کدنویسی پیشرفته و سطح بالا را در اختیار شما قرار میدهد.کتابخانه GSM از ارتباط سریال نرمافزاری با پینهای شماره ۷ و ۸ آردوینو به منظور برقرای ارتباط بین شیلد (مودم ) و آردوینو استفاده میکند.
ممکن است سیمکارت شما دارای پین باشد (pin number) برای این منظور یک Preprocessor به نام PINNUMBER معرفی میکنیم و اگر سیمکارت دارای پین بود ، شماره پین آن را داخل کوتیشن مینویسم و اگر هم دارای شماره پین نبود داخل کوتیشن چیزی نمینویسیم و داخل آن را خالی میزاریم:
#define PINNUMBER ""
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
برای خواندن متن پیام ارسالی از تابع sms.read() استفاده میکنیم. به این صورت که تا زمانی که متن موجود باشد ، کاراکترها تک تک خوانده میشود و درون متغیری از جنس char به نام c که در ابتدای برنامه تعریف کردیم ذخیره میشود و سپس بر روی سریال مانیتور نرمافزار آردوینو نمایش داده میشود.
while (c = sms.read()) { Serial.print(c); }
هنگامی که پیام به صورت کامل دریافت و بر روی سریال مانیتور نرم افزار آردوینو نمایش داده شد به وسیلهی تابع sms.flush() تمام پیاهای موجود در حافظهی سیمکارت را حذف میکنیم.
Serial.println("nEND OF MESSAGE"); sms.flush(); Serial.println("MESSAGE DELETED"); }
تذکر:ظرفیت ذخیرهی پیامک در سیم٬کارت مختلف بین ۱۰ الی ۴۰۰ عدد متغیر است پس باید توجه داشته باشیم که از پر شدن حافظه سیمکارت جلوگیری کنیم. آموزش توابع مربوط به دریافت sms به پایان رسید.اکنون کدهای قرار گرفته در پایان این صفحه را بر روی آردوینو خود آپلود کنید و سپس تمام عملیات زیر را به ترتیب انجام دهید.بعد از آپلود کدها بر روی آردینو ، کلید نمایش داده شده در تصویر زیر را به مدت ۵ ثانیه نگه دارید.
بعد از فشردن کلید نشان داده در تصویر فوق ، باید LED نشان داده در تصویر زیر روشن شود.
اکنون سریال مانیتور نرم افزار را باز کنید و یک دقیقه صبر کنید تا مودم با آردوینو ارتباط برقرار کند و GSM initialize و Waiting for messages بر روی سریال مانیتور نمایش داده شود ، سپس پیامک خود را ارسال کنید. به کدهای زیر توجه کنید.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
سخت افزار مورد نیاز
شیلد sim800c (خرید از فروشگاه)
سیمکارت میکرو
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
[…] دو پست قبلی sim800c به آموزش توابع دریافت sms و همچنین اسکن شبکه پرداختیم .در این پست میخواهیم به […]
سلام وقت بخیر.
مطلب مفیدی بود جناب مهندس قربانی.
سلام
خیلی ممنون از لطفتون 🙂
سلام برای راه اندازی sim800c لطفا راهنمایی کنید. کدوم پایه ها باید به اردوینو uno وصل بشن و چه کتابخانه ای باید اضافه بشه؟ باتشکر.عکش مربوط به sim800c رو ضمیمه کردم چون ماژول های sim800c زیاد بودند و با هم فرق می کردند.
http://s9.picofile.com/file/8296035226/%DB%B2%DB%B0%DB%B1%DB%B7%DB%B0%DB%B5%DB%B2%DB%B7_%DB%B0%DB%B8%DB%B2%DB%B0%DB%B4%DB%B7.jpg
با سلام و خسته نباشید خدمت اساتید
من طبق توضیحاتی که فرموده بودین اقدام به دریافت اس ام اس نمودم اما با یه مشکل مواجه شدم که نمایش اس ام اس با کد pdu می باشم می خواستم ببینم من چطور می توانم به صورت تکست دریافت کنم.
با سلام
ضمن تشکر از توجه شما، در کتابخانه اطلاعی ندارم دستوری برای انجام این کار وجود دارد یا خیر. ولی براى تغییر مد ازpdu به text میتوانید از AT زیر استفاده کنید
AT+CMGF=۱
با سلام
من اقدام به دریافت اس ام اس با SIM800 و کتابخانه GSM.H دقیقا با همین مثال بالا کردم ولی موقع دریافت شماره ارسال کننده را صحیح نشان می دهد ولی متن اس ام اس دریافتی را خالی نشان میدهد ولی وقتی اس ام اس از سوی ایرانسل باشد متن را نشان میدهد منتها یک سری کد هگز میباشد که حدس میزنم PDU باشد لطفا مرا راهنمایی کنید.
با تشکر
با سلام
همانند پاسخ قبلى عمل کنید.
با سلام
من قصد داشتم با استفاده از این شیلد و کتابخانه gsm.h اردینو و مثال webserver , webclient اقدام به راه اندازی شبکه نمایم ایا این مثال ها در این شیلد تست شده تا اقدام به خرید این ماژول نمایم.
با تشکر
سلام مجدد
کتابخانههای آردوینو اوپن سورس هستند و به طور معمول با اکثر بردها سازگاری دارند، در اکثر موارد با استفاده از کتابخانه و تغییراتی کوچک در کدها امکان راه اندازی بردها وجود دارد. ولی به صورت قطعی نمیتوان پاسخ داد.
امکان تست برای شما وجود ندارد چون می ترسم بعد از خرید نتوانم استفاده نمایم
با سلام
خیر، فقط همین آموزشهای دیجی اسپارک تست شده هستند. موارد بیش تر از این بر عهده کاربران است.
سلام
کارهایی که گفتید رو مرحله به مرحله انجام میدم
اما آردوینو از while اولیه بیرون نمیاد
با سلام
وضعیت جامپرها چطور است؟
بسیار عالی. حتی در فرودگاه با کلی شلوغی تونستم با متنتون اطلاعات لازمو بگیرم. ممنون
با سلام
ضمن تشکر از توجه شما، از اینکه نظرتان را با ما و جامعه دیجی اسپارک در میان میگذارید، سپاسگذارم.
سلام روز بخیر
ممنون از مطالبتون
من قبلا برنامه ای رو با sim800l نوشتم، الان میخوام از این ماژول sim800c بخرم و بجاش استفاده کنم،آیا دستوراتش (atcommand) یکیه یا باید تغییراتی بدم
با سلام
ضمن تشکر ازتوجه شما، در این خصوص دستورات AT یکسان هستند ولی اینکه همان برنامه با همان کتابخانه روی یک ماژول دیگر کار دهد، تضمین شده نمیباشد.
سلام لطفا برای ارسال پیامک در مد pdu یه تابع بنویسید ممنون میشم چون جدیدا سیم کارت ها ی ایرانسل بعضی هاشون فقط در مد pdu اگه براشون ارسال بشه پیامک رو دریافت میکنند؟؟؟؟؟؟؟؟؟؟؟؟
با سلام
در این خصوص هنوز اطلاعاتی از دیگر کاربران ارسال نشده است. درصورتی که تقاضا داشته باشد، حتما بررسی خواهیم کرد.
سلام ممنون بابت آموزش مفیدتون.
این برنامه برای آردوینو UNO کار میکنه و برای Arduino 2560 جوابگو نیست. چحوری میتونم این مساله رو حل کنم.
کجا دسترسی به پایه هاش رو تعریف کردین؟ ممنون
با سلام
در این آموزش از کتابخانه GSM استفاده شده است. برای این منظور به فایل کتابخانه مراجعه کنید.