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

ایجاد تماس صوتی با sim900a شیلد آردوینو Arduino

آموزش ایجاد تماس با شیلد Sim800C آردوینو - دیجی اسپارک
نوشته شده توسط علیرضا قربانی

آموزش ایجاد تماس با شیلد sim900a آردوینو Arduino

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

ماژول sim900a یکی از معروف‌ترین ماژول‌های gsm/gprs با هسته پردازشی بسیار قوی AMR926EJ-S می‌باشد. توسط این ماژول میتوان عملیات برقرای تماس،ارسال و دریافت اس‌ام‌اس ، ارسال فکس و هچنین نبادل اطلاعات با اینترنت را انجام داد.از طریق کنترل این ماژول می توانید در هر جای کره زمین که امواج موبایل موجود می باشد دستگاه های خود را کنترل و به تبادل اطلاعات بپردازید.در ادامه این مطلب با مرجع تخصصی آردوینو ،دیجی اسپارک همراه باشید.

شیلد sim900a با تمامی آردوینوهای استانداز سازگار بوده و می‌توان آن راه بر روی آردوینوهای استتاندار قرار داد. این شیلد را می‌توان به وسیله‌ی‌ پروتکل سریال به آردوینو متصل نمود و  توسط دستورات AT Command  کنترل نمود.

نمایی از شیلد sim900a

 

ویژگی شیلد sim900a

  •          پشتیبانی از دو باند ۹۰۰ و ۱۸۰۰ مگاهرتز
  •          GPRS  کلاس ۸/۱۰
  •          ایستگاه موبایل  GPRS  کلاس B
  •          مطابق با GSM phase 2/2+
  •          دارای جک اسپیکر و میکروفون
  •          کنترل از طریق AT Command
  •          جریان مصرفی بسیار پایین در حدود ۱٫۵ میلی‌آمپر در حالت خواب
  •          کد کننده‌های صدا Half rate (HR) ,Full rate (FR) ,Enhanced Full rate (EFR)
  •          عمل کرد هندس فری AMR ,Half rate (HR),Full rate (FR)
  • ۱۲ عدد  GPIO  به همراه ۲عدد pwm و ۱ عدد

 

قطعات به کار برده شده شیلد sim900a

aaaa

  • Power select –انتخاب تغذیه ماژول که از ولتاژ آردوینو استفاده کند یا ولتاژ خارجی
  • Power jack – جک تغدیه اتصال به ۴٫۸ الی ۵ ولت
  • Antenna interface – اتصال به آنتن خارجی
  • Serial port select – تنظیم استفاده از پورت سریال نرم‌افزاری یا سخت افزاری
  • Hardware Serial – D0/D1 of Arduino/Seeeduino (منظور همان ارتباط سریال معمولی است که به وسیله پین شماره ۰ و ۱ انجام می‌شود.)
  • Software serial – D7/D8 of Arduino/Seeeduino only (منظور ارتباط سریالی است که به وسیله سایر پین‌های دیجیتال آردوینو انجام می‌شود)
  • Status LED – هنگام روشن بودن بودن ماژول این چراغ روشن می‌شود
  • Net light – هنگامی که ماژول به اینترنت متصل شود این چراغ روشن می‌شود
  • UART of SIM900 – UART پین‌های
  • Microphone – میکروفون
  • Speaker اسپیکر-
  • GPIO,PWM and ADC of SIM900 – GPIO,PWM and ADC pins breakout of SIM900
  • Power key – سوئیچ تغذیه

 

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

آردوینو Uno
شیلد sim900a (خرید از فروشگاه)

پین‌هدر نری

LED

 

آماده‌سازی شیلد sim900a

در ابتدا پین‌هدر را بر روی شیلد sim900a آردوینو لحیم کنید و سپس شیلد را بر روی آردوینو Uno قرار دهید.

نمایی از شیلد sim900a قرار گرفته بر روی آردوینو Uno

در هنگامی که شما  shield sim900a را خریداری می‌کنید ، جامپر مربوط به  تنظیم سریال سخت افزاری یا نرم‌افزاری همانند حالت زیر می‌باشد:

آموزش ماژول sim900a آردوینو

اکنون میابست جامپر را جدا کرده و در وضعیت زیر قرار دهید:

آموزش ماژول sim900a آردوینو

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

دانلود کتابخانه shiled GSM sim900a arduino

 

معرفی توابع برای برقراری و دریافت تماس

به وسیله‌ی این تابع وضعیت تماس را دریافت می‌کنیم. این تابع مقادیر زیر را بر می‌گرداند:

CALL_NONE: تماسی دریافت نشده است

CALL_INCOM_VOICE: تماسی به شماره خط شما گرفته شده است

CALL_ACTIVE_VOICE: یک تماس فعال دارید

CALL_NO_RESPONSE : تماس گرفته شده پاسخ نمی‌هد

به وسیله‌ی این تابع می‌توان با شماره‌ی موردنظری که به جای number_string قرار می‌گیرد ، تماس می‌گیرد.

مثال:   در این مثال با شماره +۹۸۹۱۳۶۹۸۷۱۲۱ تماس می‌گیرد.

این تابع یک اورلود دیگری به شکل تابع زیر دارد:

که به وسیله‌ی آن می‌توانید با شماره‌ی ذخیره شده در حافظه سیم‌کارت تماس بگیرید. به جای sim_position عددی بین ۱ الی ۲۰ قرار می‌گیرد.

مثال: در این مثال به شماره‌ی ذخیره شده در خانه‌ شماره‌ی ۱ سیم‌کارت تماس می‌گیرد.

به وسیله‌ی این تابع تماس‌ دریافتی یا تماس فعال  قطع می‌شود.

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

 

پروژه

در این پروژه  با استفاده از دو تاچ سویچ عملیات برقراری تماس و دریافت تماس را انجام می‌دهیم.

تذکر: در این پروژه برای تشخیص فشرده شدن کلید‌ها از کتابخانه دیبانسنگ  استفاده شده است که آموزش آن را در لینک زیر می‌توانید مشاهده کنید.

آموزش دیبانسینگ در آردوینو

 

اتصالات

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

یک عدد LED به پین شماره ۱۳ متصل شده است.در هنگامی که تماس تبفنی را با شماره مورد نظر برقرار کنیم این LED روشن می‌شود.

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

یک عدد بازر به پین شماره ۴  متصل شده است که در هنگامی تماسی دریافت شود ‌، این بازر به صدا در می‌آید.

 

کدهای پروژه

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

 

آموزش ماژول sim900a آردوینو

 

پس ازفشرده شدن کلید باید LED بر روی شیلد روشن شود.

آموزش ماژول sim900a آردوینو

 

پس از عملیات فوق حدود یک دقیقه زمان می‌برد که شیلد sim900 فعال شود  .در صورتی که مراحل را به درستی انجام داده باشید ، بر روی سریال مانیتور عبارت زیر را مشاهده می‌کنید:

آموزش ماژول sim900a آردوینو

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

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

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

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

۲۷ دیدگاه

  • درود بر شما دوست عزیز
    سپاس از اینکه خیلی زود وبا حوصله جواب سئوالها رو میدید.
    من ماژول (sim900A) دارم اما شیلد نیست دوطرف آنهم ۱۴تا پین هدر داره ولی روش نصب اونرو روی آردوینو نمیدونم خواستم شکل اونرو براتون بفرستم که ممکن نیست تو سایت آپلود کنم خواهشمندم درصورت امکان آموزش لازم رو قرار بدید .
    با آرزوی شادی و شاد کامی شما.

  • با سلام
    بنده از gsm sim900a استفاده میکنم ، شیلد نیست ،
    پین ۷ را به tx و ۸ را به rx متصل کردم،
    عینا کد که در همین پست هست را ریختم و بدون ارور ریخته شده،ولی هیچ کاری انجام نمیدهد،gsm انتن دارد چون زنگ میخورد و اما با توجه به بررسی که انجام دادم در اجرا به شرط (gsm.begin(9600)که میرسد میماند و نوشته ready or idle نمیاد در سریال
    راه حل چیست؟
    ایا این کد پروژه که گذاشتید کامل هست؟

    ببخشید که طولانی شد ، متشکر از پاسخ گویی سریعتون

  • سلام

    مدتی است برای راه اندازی ماژول sim800l با آردوینو due دچار مشکل شده ام و هیچ کتابخانه و حتی کدی برای سینک کردن این دو وجود ندارد ، لطفا در صورت امکان روش و آموزش راه اندازی این ماژول با آردوینو due را قرار دهید.

    با سپاس فراوان

  • سلام خسته نباشید می خواستم بدونم که ایا میشه با استفاده از یکی از شیلد های GSM با یک پیامک خاصی که برا ی سیم کارتی که روی GSM نصب هستش یک لامپ رو خاموش و یا روشن کرد با کیت اردینو مگا۲۵۶۰؟
    ممنون

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

    • با سلام
      همانطور که در پست دیگر پاسخ این سوال داده شد؛ با توجه به قوانین حریم خصوصی چنین موضوعی امکان پذیر نمیباشد.

  • با سلام و تشکر فراوان
    من یه شیلد sim ۹۰۰ دارم و این کارها و کد هایی که دادیت رو امتحان کردم جواب گرفتم
    ولی من میخوام با ارسال یک پیام به شیلد( مثال on )یک رله رو روشن یا با ارسال( off)یک رله رو خاموش کنم
    چطور باید این کار رو انجام بدم با استفاده از چه دستوراتی میتونم این کارو انجام بدم
    اگه امکانش هست کمکم کنید من مبتدی هستم
    این پروژه رو واسه دانشگاه احتیاج دارم و کد هایی زیادی رو تست کردم ولی نتیجه نگرفتم

    • با سلام
      ضمن تشکر از توجه شما، برای این منظور از کدهای زیر استفاده کنید:

      void ProcessSms( String sms ){

      if( sms.indexOf(“on”) >= 0 ){
      digitalWrite( relay, HIGH );
      }

      if( sms.indexOf(“off”) >= 0 ){
      digitalWrite( relay, LOW );
      }

  • Arduino: 1.6.12 (Windows 8.1), Board: “Arduino/Genuino Uno”

    GSM_GPRSLibrary_SMS:68: error: stray ‘\223’ in program

    if( sms.indexOf(“on”) >= 0 ){

    ^

    GSM_GPRSLibrary_SMS:68: error: stray ‘\224’ in program

    GSM_GPRSLibrary_SMS:72: error: stray ‘\223’ in program

    if( sms.indexOf(“off”) >= 0 ){

    ^

    GSM_GPRSLibrary_SMS:72: error: stray ‘\224’ in program

    C:\Users\Mehrdad1\AppData\Local\Temp\arduino_modified_sketch_259388\GSM_GPRSLibrary_SMS.ino: In function ‘void setup()’:

    C:\Users\Mehrdad1\AppData\Local\Temp\arduino_modified_sketch_259388\GSM_GPRSLibrary_SMS.ino:53:50: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if (sms.SendSMS(“09389817833”, “Arduino SMS”))

    ^

    C:\Users\Mehrdad1\AppData\Local\Temp\arduino_modified_sketch_259388\GSM_GPRSLibrary_SMS.ino:53:50: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    C:\Users\Mehrdad1\AppData\Local\Temp\arduino_modified_sketch_259388\GSM_GPRSLibrary_SMS.ino: In function ‘void loop()’:

    GSM_GPRSLibrary_SMS:66: error: a function-definition is not allowed here before ‘{‘ token

    {void ProcessSms( String sms ){

    ^

    GSM_GPRSLibrary_SMS:100: error: expected ‘}’ at end of input

    };

    ^

    exit status 1
    stray ‘\223’ in program

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    با عرض سلام و خسته نباشید وتشکر ویژه از شما بابت پاسخ گویی به سوالات .
    کد قبلی رو که دادیت این خطا رو میده
    این کد رو کجای برنامه باید بزارم ؟
    ومشکلش چیه ؟
    لطفا راهنمایی کنید

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