آموزش AVRپروژه AVR

ارسال و دریافت SMS با میکروکنترلر AVR و ماژول Sim900

سلام. آموزش پروژه ارسال و دریافت اس ام اس SMS با ماژول Sim900 و میکروکنترلر AVR را در کدویژن آماده کردیم. ما در این پروژه متن SMS را روی ال سی دی کاراکتری نمایش میدهیم.

پروژه دریافت و ارسال اس ام اس با ماژول GSM SIM 900

استفاده از ماژول های GSM پروژه هایی که به کنترل از راه دور نیاز دارند بسیار جالب است. این ماژول ها میتوانند کلیه کار هایی را انجام دهند که تلفن های ساده میتوانند. از جمله برقراری تماس ، ارسال و دریافت پیام کوتاه ، اتصال به اینترنت و … . همانطور که گفته شد ماژول های GSM توانایی برقراری تماس را دارند پس ما میتوانیم با اتصال یک میکروفن و بلندگو یک تلفن همراه کامل بسازیم. در این پروژه AVR ما به طور کامل با فرستادن و دریافت اس ام اس SMS توسط میکروکنترلر AVR و ماژول sim900 آشنا میشویم.

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

قطعات مورد نیاز پروژه

  1. میکروکنترلر AVR Atmega16L
  2. ماژول GSM Sim900
  3. ال سی دی کاراکتری 16*2
  4. دکمه
  5. مقاومت 10 کیلو اهم
  6. پتانسیومتر 10 کیلو اهم
  7. منبع تغذیه 12 ولت
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

همچنین ما از نرم افزار کدویژن برای نوشتن کد و همچنین از نرم افزار SinaProg برای بارگذاری کد روی میکروکنترلر AVR توسط پروگرامر USBasp استفاده خواهیم کرد.

قبل از شروع به کار با پروژه ما باید با ماژول GSM SIM 900 آشنا شویم.

ماژول GSM سیم 900

ماژول GSM سیم 900 SIM900

ماژول های gsm مثل SIM900 بدون استفاده از میکروکنترلر ها، در حالت فرمان AT قابل استفاده هستند. همانطور که در بالا نشان داده شده است، ماژول GSM دارای آداپتور USART است که میتواند با استفاده از ماژول MAX232 به طور مستقیم به کامپیوتر متصل شود یا میتوان از پین های Tx و Rx برای اتصال آن به میکروکنترلر استفاده کنیم. همچنین میتوان از پین های دیگر آن مانند MIC+و MIC- و SP+ و SP- و … برای اتصال به میکروفن و بلندگو استفاده کرد. همچنین این ماژول توسط میتواند توسط یک آداپتور 12 ولت DC تغذیه شود.

سیم کارت خود را در شکاف ماژول قرار دهید و آن را روشن کنید خواهید دید  که چراغ روشن میشود، حالا 1 دقیقه صبر کنید، چراغ باید هر سه ثانیه یک بار چشمک بزند که یعنی ماژول شما با موفقیت با سیمکارت و شبکه ارتباط برقرار کرده است.

آموزش کامل کار با ماژول SIM900 از طریق دستورات AT

ماژول GSM SIM900 میتواند از طریق ارتباط سریال اربتاط برقرار کند و زبانی که میتواند درک کند AT Command یا فرمان AT است. هرچه که بخواهید از ماژول GSM بدهید یا بگیرید را میتوانید از دستور AT استفاده کنید.

ما مهم ترین دستورات AT که در دیتاشیت ماژول سیم 900 موجود است را در لیست زیر برای شما آماده کرده ایم.

دستور AT پاسخ ماژول
AT+CPIN? چک کردن کیفیت سیگنال
AT+COPS? اطلاع از نام سرویس دهنده مثلا ایرانسل یا غیره
ATD98XXXXXXXX; تماس با یک شماره خاص
AT+CNUM پیدا کردن شماره سیم کارت
ATA پاسخ دادن به تماس ورودی
ATH قطع کردن تماس فعلی
AT+COLP نمایش شماره تماس ورودی
AT+VTS=(number) DTMF ارسال شماره
AT+CMGR AT+CMGR=1 خواندن پیام جایگاه اول
AT+CMGD=1 پاک کردن پیام در جایگاه اول
AT+CMGDA=”DEL ALL” پاک کردن تمامی پیام های سیم کارت
AT+CMGL=”ALL” خواندن تمامی پیام های سیم کارت
AT+CMGF=1 تنظیم حالت اس ام اس در حالت متن
AT+CMGS = “+98 935837XXXX” >متن اس ام اس <Ctrl+z> ارسال اس ام اس به یک شماره خاص پس از < متن دلخواه را وارد کنید و سپس کلید کنترل + زد را بزنید.
AT+CGATT? چک کردن اتصال اینترنت سیم کارت
AT+CIPSHUT قطع ارتباط با اینترنت
AT+CSTT = “APN”,”username”,”Pass” اتصال به اینترنت با استفاده از ای پی ان و پسورد که میتوانید از سرویس دهنده سیم کارت بگیرید.
AT+CIICR چک کردن دیتاپک سیم کارن
AT+CIFSR دریافت آی پی سیم کارت
AT+CIPSTART = “TCP”,”SERVER IP”,”PORT” TCP IP connection تنظیم
AT+CIPSEND ارسال دیتا به سرور

در این پروژه AVR ما از دستور AT + CMGF و AT + CMGS استفاده خواهیم کرد.

استفاده از مانیتور سریال آردوینو برای خواندن SMS

اگر از ماژول GSM با آردوینو استفاده کنید میتوانید از دستور CMT+ برای مشاهده شماره تلفن و پیام متنی در مانیتور سریال استفاده کنید. پیام متنی همانطور که در تصویر نشان داده شده است در خط دوم آماده است.

استفاده از مانیتور سریال آردوینو برای خواندن SMS

همچنین پروژه ساخت موبایل با آردوینو را ببینید.

ایجاد پروژه ارسال و دریافت اس ام اس با AVR

در کدویژن در قسمت میکروکنترلر Atmega16L را انتخاب کنید.  در قسمت USART گزینه Receiver و Transmitter را تیک بزنید. پروژه را Build کنید.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

برای این پروژه ما از نرم افزار SinaProg  استفاده میکنیم.

اتصالت کابل FRC با پروگرامر

اتصالات پروگرامر با میکروکنترلر Atmega16 را مطابق زیر انجام دهید.

  1. پین 1 از FRC مادگی کانکتور  -> پین 6 MOSI از Atmega16
  2. پین 2  متصل میشود به Vcc از atmega16  پین 10
  3. پین 5 متصل میشود به Reset از atmega16  پین 9
  4. پین 7 متصل میشود به SCK از atmega16 پین 8
  5. پین 9 متصل میشود به MISO از atmega16  پین 7
  6. پین 8 متصل میشود به GND از atmega16 پین 11

در قسمت HEX File، فایل هگز را انختاب کنید و سپس میکروکنترلر Atmega16 را انتخاب کنید سپس روی Program بزنید.

آپلود کد در Atmega16 با sinaprog

موارد موجود در فایل : فایل سورس کامل ، شماتیک کامل

4.1 (17 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

27 نظر

  1. سلام خسته نباشید شماره تلفن گیرنده پیغام call meدر کدام قسمت از کد نوشته میشه؟مچکر

  2. با سلاام خسته نباشید کد استخراج شماره موبایل از پیام دریافتی چیست ؟

    1. سلام عزیز
      باید از تابع strtok() استفاده کنید

  3. سلام مهندس باید کدوم یک از این قطعات رو خریداری کنم دستگاه جوجه کشی دستی دارم که میخوام با تموم شدن بطری آبی که دارم و با یدونه سنسور سطح ابی که بذارم به من پیامک هشدار ارسال کنه ممنون میشم راهنمایی کنید!!؟

    1. سلام عزیز
      برای اینکار آردوینو مناسب تر هست، میتونید دوره آردوینو رو مشاهده کنید تا برنامه نویسی آردوینو رو یاد بگیرید

  4. سلام ای کد ها برای ماژول sim 800L هم کاربرد دارن و اینکه این کد ها در برنامه کدویژن قابل اجرا هستن؟
    باتشکر

    1. سلام جناب. مدار پروژه ساده هست اگر کمی با پروتئوس آشنایی داشته باشید میتونید طراحی کنید.

    2. سلام
      هیچی بلد نیستم
      ترم آخرم مهندسی IT این آزمایش هفته دیگه باید ارایه کنم برای نمره و با پروتیوس شبه سازی کنم
      لطفا اگر مقدور کمکم کنید . اگر براتون زحمتی نداره واگرا براتون ساده هست فایل شبیه ساز شد رو هم ارایه بفرمایید
      با تشکر

    3. سلام مجدد
      ماژول gsm sim 900 رو پیدا کردم
      ال سی دی رو هم پیدا کردم
      مقاومت و پتانسیومتر 10 کیلو اهم رو سرچ کردم ولی کلی ماژول در نتیجه سرچ بود با جزئیات خیلی زیاد نمی دونم کدوم رو برای شبه سازی انتخاب کنم
      و در نهایت اینها رو به هم دیگه وصل کنم تا نتیجه شبه سازی در شما تیک کار کنه
      لطفا کمکم کنید

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

  5. اینا رو گفتین پیدا نکردم
    میشه کمک کنید
    در کدویژن در قسمت میکروکنترلر Atmega16L را انتخاب کنید. در قسمت USART گزینه Receiver و Transmitter را تیک بزنید. پروژه را Build کنید.

  6. سلام وقت بخیر
    توی در قسمت ارسال دستورات ارسال ‘r/’ از طریق یوزارت طبق دستور
    (‘UDR=(‘/r برای چی هست ؟

    1. سلام. /r برای پایان دادن به رشته داده هست.

    2. ممنون . برای دریافت sms شرط میزاریم اگر خروجی تابع received_value () برابر کارکتر C یا M بود توی متغییر b بریزم . c وm و … چی هستن ؟
      و چرا شرط حلقه while اول اینه که خروجی تابع received_value مخالف + بودن هست ؟
      یا حلقه ی اخر مخالف 0x0a

    3. دستور CMT برای نشان دادن اس ام اس مثلا روی سریال مانیتور استفاده میشه.
      while (b!='+') بررسی میکنه که دستور CMT حضور داره یا نه. اگر حاضر باشه حلقه دوم شروع میشه و میره به خط بعدی.
      0x0a هم برای منتظر ماندن برای خط بعدی هست و اگر بی معنی باشه لوپ به صورت بی انتها اجرا میشه.

    4. پس این دستورات برای اردینو هست .
      اگر از اردینو استفاده نکنم میتونم این دستورات رو حذف کنم ؟
      اینجا
      }(++for(b=0;b<3;b
      ;()c= received_value
      msg[b]=c
      چرا فقط سه مقدار دریافت می کنیم و درون ارایه میزاریم ؟

    5. نمیدونم بررسی کنید که بدون اونها کار میکنه یا نه. سعی میکنم بزودی این پروژه رو بروزرسانی کنم و کدش رو آموزش بدم. متاسفانه جواب سوال آخر رو نمیدونم.

  7. خواهش میکنم
    پیغام ریسو اس ام اس نمایش داده میشه .
    قسمت های دیگه درست کار میکنه عین همین فیلمی که بارگذاری کردید هست پیام کال می هم ارسال میکنه
    ولی پیام ارسالی از موبایل نمایش نمیده
    من کد هگز با پروگرمر eca بار گذاری میکنم

    1. من کمی متن آموزش پروژه رو بروزرسانی کردم قسمت UASRT رو انجام بدید. من دلیل این مشکل رو متوجه نمیشم پیام هایی که ارسال میکنید به زبان انگلیسی هستند؟ و چ اعداد چ حروف نمایش داده نمیشن؟

    2. بله انگیسی هست هم اعداد هم حروف
      انجام میدیم
      مرسی

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

    1. سلام. در حالت دریافت اس ام اس تنظیم میکنید؟

    2. بله
      اس ام اس ارسال میکنه ولی دریافت نمیکنه
      یا این که دریافت میکنه نمایش نمیده

    3. در سریال مانیتور مشاهده میشه؟

    4. من از sim 800 c
      استفاده میکنم
      سریال مانتیتور بلد نیستم
      جور دیگه امکانش هست راهنمایی بفرمایید

    5. ببخشید من فکر کردم پروژه با آردوینوئه که گفتم سریال مانیتور. در ال سی دی هیچ چیزی نشون داده نمیشه یا فقط پیام دریافت شده ؟ پیام رو با چه زبانی ارسال میکنید و چطور کد را در میکروکنترلر بارگذاری کردید ؟

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *