آردوینو آموزش آردوینو سیم کارت GSM - GPRS پروژه های آردوینو

آموزش دریافت sms با شیلد سیم کارت sim800c آردوینو Arduino

شیلد sim800c دریافت sms
نوشته شده توسط علیرضا قربانی

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

 


بررسی شیلد سیم کارت sim800c


شیلد Sim800c  یک شیلد GSM/GPRS با قابلیت پشتیبانی از ۴ کانال ۸۵۰/۹۰۰/۱۸۰۰/۱۹۰۰ MHz  برای ارسال دیتا ، SMS,MMS  و برقرای تماس صوتی می‌باشد. این ماژول مخابراتی را می‌توان به عنوان یک تلفن همراه هوشمند در نظر گرفت که کاربران به وسیله‌ی آن می‌توانند دیتا را به درستی ارسال و دریافت کنند. این ماژول قابلیت پشتیبانی از تمام اپراتورهای مخابراتی را دارا می‌باشد.ارتباط سریال در سطح TTL  قابلیت راه‌اندازی این ماژول را با آردوینو و سایر سیستم‌های ۵ , ۳٫۳ , ۲٫۸۵  ولت DC  را امکان‌پذیر می‌کند. به وسیله تغییر وضعیت جامپر (D1 D0)  می‌توان ماژول را در وضعیت ارتباط سریال سخت افزاری و یا با تغییر جامپر (D8 D7)   می‌توان ماژول را در وضعیت ارتباط سریال نرم‌افزاری قرار داد. این شیلد قابلیت بروز شدن فریم ور  را توسط پورت USB  و پورت سریال دارا می‌باشد.از ویژگی‌های این شیلد می‌توان به موراد زیر اشاره نمود:

  • پشتیبانی از چهار باند ۸۵۰/۹۰۰/۱۸۰۰/۱۹۰۰ مگاهرتز
  • پروتکل ارتباطی سریال (UART)
  • کنترل از طریق AT Command و لایبرری
  • دارای جک هدست
  • اسلات سیم‌کارت میکرو
  • تغذیه ۵ ولت DC
  • جربان مصرفی حداکثر ۲ آمپر
  • دمای کاری منفی ۴۰ الی ۸۵ درجه سانتی‌گراد

 


آماده سازی شیلد sim800c آردوینو


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

sim800c -jumper-arduino

وضعیت جامپر به منظور قرار دادن شیلد Sim800C در وضعیت سریال نرم‌افزاری

هم‌اکنون شیلد سیم کارت sim800c GSM Module را بر روی برد آردوینو UNO قرار دهید.

 

sim800c-آردوینو

قرار گرفتن شیلد Sim800C برد روی برد آردوینو Arduino

اکنون شیلد شما آماه شده است و میتوانیم کد نویسی را شروع کنیم. ابتدا کتابخانه‌ای که توسط تیم فنی دانشجوکیت آماده شده است را از لینک زیر دانلود کنید و توسط آموزش زیر آن را  به نرم‌افزار آردوینو خود اضافه کنید. دانلود کتابخانه شیلد 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 به پایان رسید.اکنون کد‌های  قرار گرفته در پایان این صفحه را بر روی آردوینو خود آپلود کنید و سپس تمام عملیات زیر را به ترتیب انجام دهید.بعد از آپلود کدها بر روی آردینو ، کلید نمایش داده شده در تصویر زیر را به مدت ۵ ثانیه نگه دارید.

sim800c آردوینو

کلید فعال سازی شیلد sim800c

بعد از فشردن کلید نشان داده در تصویر فوق ،  باید LED نشان داده در تصویر زیر روشن شود.

شیلد sim800c آردوینو

شیلد sim800c آردوینو

اکنون سریال مانیتور نرم افزار را باز کنید و  یک دقیقه صبر کنید تا مودم با آردوینو ارتباط برقرار کند و  GSM initialize و Waiting for messages بر روی سریال مانیتور نمایش داده شود ، سپس پیامک خود را ارسال کنید. به کدهای زیر توجه کنید.

 

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

 

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

 


سخت افزار مورد نیاز


آردوینو UNO

شیلد sim800c (خرید از فروشگاه)

منبع تغذیه یا آداپتور ۵ولت

سیم‌کارت میکرو

 

 

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

 

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

 

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

علیرضا قربانی

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

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

۲۱ دیدگاه

  • سلام برای راه اندازی 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) یکیه یا باید تغییراتی بدم

  • سلام لطفا برای ارسال پیامک در مد pdu یه تابع بنویسید ممنون میشم چون جدیدا سیم کارت ها ی ایرانسل بعضی هاشون فقط در مد pdu اگه براشون ارسال بشه پیامک رو دریافت میکنند؟؟؟؟؟؟؟؟؟؟؟؟

  • سلام ممنون بابت آموزش مفیدتون.
    این برنامه برای آردوینو UNO کار میکنه و برای Arduino 2560 جوابگو نیست. چحوری میتونم این مساله رو حل کنم.
    کجا دسترسی به پایه هاش رو تعریف کردین؟ ممنون