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

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

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

در سری آموزش‌های قبلی شیلد sim800c آردوینو Arduino به آموزش اسکن شبکه، ارسال و دریافت پیامک پرداختیم که می توانید در لینک‌های زیر به تفکیک مشاهده کنید.

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

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

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

در این پست به آموزش برقراری تماس صوتی خواهیم پرداخت پس در ادامه آموزش با مرجع تخصصی آردوینو، دیجی اسپارک همراه باشید

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

آردوینو UNO

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

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

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

خصوصیات شیلد sim800c آردوینو

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

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

آموزش توابع مربوط به بر قراری تماس  صوتی شیلد sim800c

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

*توجه داشته باشید در صورتی کتابخانه‌ دیگیری به نام GSM درون پوشه‌ی libraries نرم‌افزار آردینو وجود داشت حتما آن را حذف کنید و بعد از آن اقدام به نصب این کتابخانه کنید.

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

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

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

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

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

ممکن است سیم‌کارت شما دارای پین باشد (pin number) برای این منظور یک Preprocessor به نام

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

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

تعدادی متغیر برای ذخیره شماره‌ای که قصد داریم با آن تماس برقرار کنیم را تعریف می‌کنیم:

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

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

boolean notConnected = true;

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

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

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

در loop برنامه چک میکنیم اگر داده‌ای در بافر سریال وجود داشته باشد آن را دریافت کنیم و درون متغیری به نام inChar ذخیره کنیم.

حال باید کدی بنویسیم که در صورتی که ENTER فشرده شد ، برنامه تشخیص دهد که کاربر کامل شماره را وارد کرده است و باید  وارد مرحله‌ی بعدی شود.

هنگامی که شما دکمه ENTER را فشار می‌دهید ، کاراکتر  ‘n’ ارسال می‌شود.پس باید برنامه را به گونه‌ای بنویسیم که پس از ارسال ‘n’ ،برنامه از حلقه دریافت شماره  یا متن پیام خارج شود و وارد مرحله‌ی بعدی شود،  پس کد زیر را می‌نویسیم:

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

شماره‌ای که قصد تماس با آن را داریم در متغیری از جنس String به نام remoteNumber ذخیره میشود.برای برقرای تماس باید از تابع voiceCall()  که ورودی آن شماره‌ی مورد نظر می‌باشد که باید حتما به صورت آرایه‌ای جنس char باشد.بنابراین باید remoteNumber که از جنس String می‌باشد به آرایه‌ای از جنس char تبدیل شود برای این منظور از تابعی به نام toCharArray استفاده می‌کنیم.

تابع vcs.voiceCall()  پس از فراخوانی در صورتی که اتصالات به درستی برقرار شده باشد مدار ۱ را برمی‌گرداند.

ما می‌توانیم با استفاده از تابع getvoiceCallStatus()  وضعیت تماس فعلی را بدست بیاوریم.  این تابع پس از فراخوانی مقادیر  IDLE_CALL, CALLING, RECEIVINGCALL, TALKING را برمی‌گرداند.ما قصد داریم هنگامی که تماس برقرار است با زدن دکمه‌ی enter به تماس خاتمه بخشیم .بنابر این یک حلقه بی‌نهایتی می‌نویسیم که درصورتی که کاراکتر ‘n’ دریافت نشده باشد و تماس برقرار می‌باشد ادامه پیدا کند  و در صورتی که یکی از این دو مورد نقض شد ، تماس پایان یابد.

هنگامی که تماس تکمیل شد متغیری که درون آن شماره تلفن ذخیره میشد را پاک می‌کنیم و دوباره پیام Enter phone number to call را برای وارد کردن دوباره‌ی شماره بر روی سریال مانیتور نرم‌افزار نمایش می‌دهیم.

اگر شماره تلفن وارد شده بیشتر از ۲۰ عدد کاراکتر بود ، مقدار شماره تلفن قبلی از بین می‌رود و دوباره  شماره تلفن از شخص گرفته می‌شود:

هنگامی که درر حال خواندن بافر سریال می‌باشیم ، اگر کاراکتر دریافتی برابر enter نبود ( ‘n’)  ، آن را به متغیر remoteNumber اضافه می‌کنیم و در نهایت loop برنامه را می‌بندیم.

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

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

sim800c آردوینو

کلید فعال سازی شیلد sim800c آردوینو

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

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

اکنون سریال مانیتور نرم افزار را باز کنید و آن را بر روی Newline تنظیم کنید. سپس منتظر بمانید نا بر روی سریال مانیتور عبارت Enter a mobile number نمایش داده شود.شماره را وراد کنید و enter را بزنید. بعد از وارد کردن شماره عبارت Calling to نمایش داده می‌شود و بدین معنی است که تماس در حال انجام است. کمی منتظر بمانید تا گوشی شما صه صدا در آید. بعد از برقراری تماس اگر کلید enter را فشار دهید ، تماس شما قطع می‌شود . و در صورت قطع شدن تماس چه از طرف شما و چه از طرف مقابل ، پیام Call Finished  بر روی سریال مانیتور نرم افزار نمایش داده می‌شود.

کد نویسی:

 

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

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

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

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

۵ دیدگاه

  • باسلام
    ممنون بابت آموزشهایی که در سایتتون قرارمیدید.
    لطفا اگر امکانش هست، آموزش کامل کار با ماژول جی پی اس NEO-6M را هم در سایت قرار بدید. با تشکر

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

    • با سلام
      ضمن تشکر از توجه شما، لینک دانلود اصلاح شد. به صفحه محصول در دانشجو کیت هدایت میشوید و از آنجا انتهای صفحه لینک دانلود قرار دارد.