آردوینو آموزش آردوینو پروژه های آردوینو

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

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

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

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

آردوینو UNO

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

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

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

بررسی شیلد sim800c

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

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

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

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

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

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

sim800c -jumper-arduino

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

هم‌اکنون شیلد sim800c را بر روی آردوینو UNO خود قرار دهید.

sim800c-آردوینو

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

اکنون شیلد شما آماه شده است و میتوانیم کد نویسی را شروع کنیم.

ابتدا کتابخانه‌ای که توسط تیم فنی دانشجوکیت آماده شده است را از لینک زیر دانلود کنید و توسط آموزش زیر آن را  به نرم‌افزار آردوینو خود اضافه کنید.

دانلود کتابخانه شیلد Sim800c برای آردوینو

آموزش نصب کتابخانه در نرم‌افزار آردوینو

این کتابخانه از پین ۷ و ۸ آردوینو به منظور برقراری ارتباط سریال نرم‌افزار با آردوینو استفاده می‌کند. همچنین از پین ۶ آردوینو به منظور ریست شیلد استفاده می‌شود . که می‌توانید با اتصال پین ۶ به یک کلید و GND ، امکان ریست کردن را به شیلد sim800c خود اضافه کنید.

معرفی توابع و کلاس‌های مربوط به ارسال اس ام اس SMS

در ابتدای کار قبل از هر کاری میبایست کتابخانه GSM را به برنامه خود فراخوانی کنیم:

این کتابخانه پایه و  در برگیرنده‌ی تمامی کلاس‌ها و توابعی می‌باشد که برای راه‌اندازی یک ماژول یا شیلد GSM مورد نیاز است.شیلد sim800c دارای یک عدد مودم داخلی می‌باشد که به وسیله‌ی پورت  سریال و  AT command ها می‌توان آن را به سامانه‌ی جهانی ارتباطات همراه متصل نمود. این کتابخانه دستورات و کدنویسی‌های سطح پایین بین سیم کارت و مودم داخلی sim800 را از بین می‌برد و کدنویسی پیشرفته و سطح بالا را در اختیار شما قرار می‌دهد.کتابخانه GSM از ارتباط سریال نرم‌افزاری با  پین‌های شماره ۷ و ۸ آردوینو به منظور برقرای ارتباط بین شیلد (مودم ) و آردوینو استفاده می‌کند.

ممکن است سیم‌کارت شما دارای پین باشد (pin number) برای این منظور یک Preprocessor به نام PINNUMBER معرفی می‌کنیم و اگر سیم‌کارت دارای پین بود ،  شماره پین آن را داخل کوتیشن می‌نویسم و اگر هم دارای شماره پین نبود داخل کوتیشن چیزی نمی‌نویسیم و داخل آن را خالی میزاریم:

برای دسترسی به توابع  راه‌انداز شیلد sim800c و ارسال sms  باید از دو کلاس GSM و GSM_SMS دو آبجکت با نام‌های دلخواه بسازیم( ما از gsmAccess برای کلاس مربوط به راه‌اندازی شیلد و از نام sms  برای کلاس مربوط به GSM_SMS استفاده می‌کنیم).

یک آرایه از جنس char به اندازه‌ی ۱۳خانه به منظور نگه‌داری شماره‌‌ای که sms را ارسال می‌کند تعریف می‌کنیم( علت استفاده از سایز ۱۳به این منظور است که قرمت استاندار شماره‌ی کشور ایران دارای ۱۳ کاراکتر است مانند: ۹۸۹۱۳۶۹۸۷۱۲۱+) :

در Setup برنامه به منظور نمایش داده‌ها و وضعیت ماژول پورت سریال را باز می‌کنیم.

سپس یک متغیر از جنس  boolean به نام notConnected به منظور قرار دادن وضعیت اتصال درست شیلد به آردوینو ایجاد می‌کنیم و مقدار پیش‌فرض آن را برابر true  قرار می‌دهیم.تا زمانی که اتصال بین مودم و آردوینو به درستی برقرار نشده باشد این متغیر دارای مقدار true است و پس از برقراری اربتاط و شناختن سیم کارت و مودم  توسط آردوینو مقدار آن را به false تغییر می‌دهیم:

اکنون با فراخوانی gsmAccess.begin()   و با وارد کردن PINNUMBER به عنوان آرگمان ورودی به شکل gsmAccess.begin(PINNUMBER) به شبکه متصل می‌شویم.

تابع begin پس از فراخوانی مقادیر ERROR, IDLE, CONNECTING, GSM_READY, GPRS_READY, TRANSPARENT_CONNECTED  را برمی‌گرداند.برای اصولی تر شدن کد نویسی و جلوگیری از خطاهای احتمالی درون برنامه تابع gsmAccess.begin(PINNUMBER) را درون یک while  می‌نویسیم و مرتبا ارتباط بین مودم و آردوینو را  تا زمانی که تابع begin مقدار GSM_READY را برنگردانده باشد چک می‌کنیم:

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

اکنون کدنویسی ما در  setup برنامه  به پایان رسیده و باید به سراغ کد نویسی درون  loop بریم.

در loop برنامه یک متغیر از جنس char به منظور نگه‌داری موقت کاراکتر‌ها از sms دریافتی تعریف می‌کنیم.سپس به وسیله‌ی تابع available() چک می‌کنیم که پیامک جدیدی ( پیام خوانده نشده درون سیم ‌کارت ) وجود دارد یا نه :

اگر sms جدیدی وجود داشته باشد به وسیله صدا کردن sms.remoteNumber(remoteNumber, 20) شماره‌ی شخصی که اس ام اس را ارسال کرده است دریافت می‌کینم و در آرایه remoteNumber ذخیره می‌کنیم. آرگمان remoteNumber آرایه‌ای از جنس char می‌باشد که در ابتدای برنامه به سایز 13تعریف کردیم.سپس آن را بر روی سریال مانیتور نرم‌افزار نمایش می‌دهیم:

برای خواندن متن پیام ارسالی از  تابع sms.read()  استفاده می‌کنیم. به این صورت که تا زمانی که متن موجود باشد ، کاراکترها تک تک خوانده می‌شود و درون متغیری از جنس char به نام c که در ابتدای برنامه تعریف کردیم ذخیره می‌شود و سپس بر روی سریال مانیتور نرم‌افزار آردوینو نمایش داده می‌شود.

هنگامی که پیام به صورت کامل دریافت و بر روی سریال مانیتور نرم افزار آردوینو نمایش داده شد به وسیله‌ی تابع sms.flush() تمام پیا‌های موجود در حافظه‌ی سیم‌کارت را حذف می‌کنیم.

تذکر:ظرفیت ذخیره‌ی پیامک در سیم٬کارت مختلف بین ۱۰ الی ۴۰۰ عدد متغیر است پس باید توجه داشته باشیم که از پر شدن حافظه سیم‌کارت جلوگیری کنیم.

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

sim800c آردوینو

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

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

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

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

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

 

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

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

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

۴ دیدگاه

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