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

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

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

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

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

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

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

 

ویژگی شیلد GSM سیم کارت 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

 

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

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

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

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

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

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

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

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

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

 

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

byte CallStatus(void)

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

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

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

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

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

void Call(char *number_string)

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

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

call.Call("+989136987121");

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

void Call(int sim_position)

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

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

call.call(1);
void HangUp(void)

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

void PickUp(void)

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

 

پروژه با GSM Sim900a

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

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

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

 

اتصالات GSM Sim900a

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

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

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

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

 

کدهای پروژه

 

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

 

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

 

 

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

 

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

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

 

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

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

 

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

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

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

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

۴۴ دیدگاه

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

    • درود
      راه اندازی ماژول شما کار پیچیده ای نداره

      فقط کافیست پین های rx و tx را به آردوینو متصل کنید و توابعی که در این پست آموزش داده شده استفاده کنید

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

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

    • سلام

      بله تمام کد ها کامل هستن و همینتطور هم که مشاهده میکنید به درستی جواب دادن. بادریت را چک کنید و همچنین سریال مانیتور نرم افزاری را بر روی newline قرار دهید

  • با سلام و تشکر فراوان اگر امکانش باشه اموزش ماژول SIM808 رو که دارای gps هستش رو هم فراهم کنین

  • سلام

    مدتی است برای راه اندازی ماژول 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.
    با عرض سلام و خسته نباشید وتشکر ویژه از شما بابت پاسخ گویی به سوالات .
    کد قبلی رو که دادیت این خطا رو میده
    این کد رو کجای برنامه باید بزارم ؟
    ومشکلش چیه ؟
    لطفا راهنمایی کنید

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

  • سلام، به غیر از پایه tx و rx و هم گراند کردن به پایه دیگه ای هم برای اتصال شیلد به برد آردوینو نیازه ؟!؟!؟
    شیلد هم روی برد نمیشینه با سیم میخوام برای اتصال استفاده کنم.

  • ببخشید اگه اطلاعاتی راجع به ارسال دیتا با SIM900یا همون برنامه ی WEB SERVER دارین ممنون میشم راهنمایی کنید

  • سلام ممنون میشم اگه اطلاعاتی راجع به ارسال دیتا یا همون برنامه WEB SERVER دارین راهنماییم کنین .من APN را وارد میکنم اما وصل نمیشم

  • سلام چند تا سوال دارم ممنون میشم راهنماییم کنید
    یه عدد تاچ سوییچ به پین شماره ۲ آردوینو به صورت پول آپ متصل شده است
    تاچ سوییچ چی هست؟! پول آپ یعنی چی؟
    ماژول GSM Sim900
    من این ماژول دارم آیا باید لحیم کنم طبق گفته شما؟

    • با سلام و تشکر از شما
      همانظور که در متن آموزش توضیح داده شده است، میکروسوئیچ را بین پایه ۲ آردوینو و پایه ۵ ولت متصل میکنید.
      اگر از شیلد Sim900 استفاده میکنید، میتوانید از پین‌هدرهای روی آن اتصالات را برقرار کنید.

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

        • با سلام
          برای این منظور بایستی کد نویسی انجام شود. از بخش نظرات امکان رسیدگی ندارد. در صورت تمایل میتوانید درخواستتان را از طریق پرتال پشتیبانی دانشجو کیت پیگیری کنید.

  • سلام میخواستم بدونم جریان مصرفی این برد در حالت عادی چقدر است؟
    چون یه جا دیدم نوشته ۲ آمپر یعنی یه باتری ۴۰۰۰ میلی آمپلی را ظرف دو ساعت تخلیه میکند؟

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

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