نمایش نتایج: از 1 به 5 از 5
Like Tree4 لایک
  • 3 Post By hesam.time
  • 1 Post By spark

موضوع: دریافت تماس صوتی

  1. #1
    Senior Member
    تاریخ عضویت
    Mar 2013
    محل سکونت
    Iran
    نوشته ها
    138

    Lightbulb دریافت تماس صوتی

    این طرح، یک تماس صوتی از یک آردینو متصل به یک GSM shield را دریافت می کند. به محض اتصال، شماره تماس را نشان داده و گوشی را نگه می دارد. شما برای شنیدن و ارسال صوت نیاز به اتصال یک بلندگو و میکروفون دارید.
    سخت افزار موردنیاز
    برد آردینو
    Arduino + Telefonica GSM/GPRS Shield
    میکروفون و بلندگو متصل به GSM shield
    سیم کارت
    مدار
    gsmshield_arduinouno-1-.jpg
    تصویری از GSM shield آردینو بر روی آردینو UNO
    ابتدا، کتابخانه GSM را وارد کنید.
    کد:
    #include <GSM.h>
    سیم کارت ممکن است دارای یک PIN number باشد که قفل عملکرد آن را باز می کند. برای سیم کارت خود یک PIN تعیین کنید. اگر اگر سیم کارتتان PIN ندارد؛ شما می توانید آن را خالی رها کنید.
    کد:
    #define PINNUMBER ""
    نمونه های اولیه از کلاس هایی که شما می خواهید استفاده کنید. شما به کلاس GSM و GSMVoiceCall نیاز خواهید داشت.
    کد:
    GSM gsmAccess; GSMVoiceCall vcs;
    یک آرایه کاراکتری برای ذخیره شماره دریافتی بسازید:
    کد:
    char numtel[20];
    در setup ، یک اتصال سریال به کامپیوتر باز کنید شما از این برای ارسال شماره تلفن به آردینو استفاده خواهید کرد. بعد از باز کردن اتصال ، یک پیام به مانیتور سریال بفرستید که نشان می دهد طرح شروع شده است.
    کد:
    void setup(){ Serial.begin(9600); Serial.println("Receive Voice Call");
    یک متغیر محلی برای پی گیری وضعیت اتصال ایجاد کنید. شما از این برای نگهداری طرح از شروع تا اینکه SIM به شبکه متصل شود ؛استفاده خواهید کرد.
    کد:
    boolean notConnected = true;
    با فراخوانی ()gsmAccess.begin به شبکه متصل شوید.آن پین های سیم کارت را به عنوان یک شناسه می پذیرد. با قرار دادن آن داخل یک حلقه ی ()while شما می توانید وضعیت اتصال به شبکه را به طور دائم چک کنید. وقتی مودم متصل می شود، gsmAccess() ، GSM_READY را باز میگرداند. از این به عنوان پرچم برای تنظیم متغیر notConnected به true یا false استفاده کنید. به محض اتصال ، باقیمانده setup اجرا خواهد شد.
    کد:
    while(notConnected) { if(gsmAccess.begin(PINNUMBER)==GSM_READY) notConnected = false; else { Serial.println("Not connected"); delay(1000); } }
    در loop ، با استفاده از جمله switch روند برنامه را کنترل کنید. وضعیت آن را ()getvoiceCallStatusوقتی که تماس گرفته شد؛ برمی گرداند.
    کد:
    void loop() { switch (vcs.getvoiceCallStatus()) {
    اگر getvoiceCallStatus() ، RECEIVINGCALL را برگرداند، (یعنی) کسی با شما تماس گرفته است. با استفاده از ()retrieveCallingNumber شماره دریافتی را در آرایه numtelکه (قبلا) ساختید؛ ذخیره کنید و آن را در مانیتور سریال چاپ کنید.
    با استفاده از ()answerCall ، تماس صوتی با تماس گیرنده آغاز کنید.
    کد:
    case RECEIVINGCALL: Serial.println("RECEIVING CALL"); vcs.retrieveCallingNumber(numtel, 20); Serial.print("Number:"); Serial.println(numtel); vcs.answerCall(); break;
    به محض آنکه به تماس پاسخ دادید؛ getvoiceCallStatus() ، TALKING را برمی گرداند. این طرح برای بکار انداختن ()hangCall و پایان دادن اتصال ، منتظر کاراکتر خط جدید خواهد ماند.
    عبارت switch را ببندید.
    کد:
    case TALKING: Serial.println("TALKING. Enter line to interrupt."); while(Serial.read()!='\n') delay(100); vcs.hangCall(); Serial.println("HANG. Waiting Call."); break; }
    یک تاخیر کوچکی قبل از ادامه loop اضافه کنید.
    کد:
    delay(1000); }
    هنگامی که کد آپلود شد، مانیتور سریال را باز کنید و مطمئن شوید که مانیتور سریال فقط به فرستادن کاراکتر خط جدید برای بازگشت تنظیم شده است.
    کد:
    #include <GSM.h> // PIN شماره #define PINNUMBER "" // دادن مقدار اولیه به کتاب خانه نمونه GSM gsmAccess; // برای فعال سازی اشکال زدایی 'true' قرار دادن پارامتر GSMVoiceCall vcs; char numtel[20]; // بافر برای تماس های ورودی void setup() { // مقداردهی اولیه ارتباط سریال Serial.begin(9600); Serial.println("Receive Voice Call"); // وضعیت اتصال boolean notConnected = true; // GSM shield شروع به کار // در نقل قول عبور کنید begin() اگر سیمکارت شما پین دارد، از آن مانند یک پارامتر از while(notConnected) { if(gsmAccess.begin(PINNUMBER)==GSM_READY) notConnected = false; else { Serial.println("Not connected"); delay(1000); } } // مطمئن شوید که مودم از دریافت درست رویدادها اطلاع می دهد. vcs.hangCall(); Serial.println("Waiting Call"); } void loop() { // را چک کنید voice call وضعیت switch (vcs.getvoiceCallStatus()) { case IDLE_CALL: // هیچ چیز اتفاق نیافتاده break; case CALLING: // این (امر) هرگز نباید اتفاق بیافتد چون ما تماسی برقرار نکردیم Serial.println("CALLING"); break; case RECEIVINGCALL: // بله یکی با ما تماس گرفته است Serial.println("RECEIVING CALL"); // بزیابی شماره تماس vcs.retrieveCallingNumber(numtel, 20); // چاپ شماره تماس Serial.print("Number:"); Serial.println(numtel); //پاسخ به تماس، برقراری تماس vcs.answerCall(); break; case TALKING: //در این مورد تماس برقرار خواهد شد Serial.println("TALKING. Enter line to interrupt."); while(Serial.read()!='\n') delay(100); vcs.hangCall(); Serial.println("HANG. Waiting Call."); break; } delay(1000); }
    لینک سایت:Arduino - GSMExamplesReceiveVoiceCall
    ویرایش توسط hesam.time : 04-03-2013 در ساعت 08:35 AM

  2. #2
    Junior Member
    تاریخ عضویت
    Apr 2013
    نوشته ها
    5
    سلام مقاله جالبی بود واقعا استفاده کردم

  3. #3
    Senior Member
    تاریخ عضویت
    Mar 2013
    محل سکونت
    Iran
    نوشته ها
    138
    خواهش می کنم مهندس، قابل شما رو نداره

  4. #4
    Junior Member
    تاریخ عضویت
    Apr 2013
    نوشته ها
    2
    سلام
    اینTelefonica GSM/GPRS Shield دقیقا چیه؟؟

  5. #5
    مدیر اصلی
    تاریخ عضویت
    Aug 2012
    محل سکونت
    ایران
    نوشته ها
    440
    نقل قول نوشته اصلی توسط Amyta نمایش پست ها
    سلام
    اینTelefonica GSM/GPRS Shield دقیقا چیه؟؟
    شیلد رسمی آردوینو برای ارتباط تلفنی از طریق سیم کارت تلفن همراه
    البته شما می تونید از سایر ماژول ها و شیلد های موجود هم استفاده کنید، به عنوان مثال ماژول ها سریال Simcom موجود در بازار هم در صورت پشتیبانی از ارتباط TTL بدون تغییر و فقط با متصل نمودن به پورت سریال آردوینو ، قابل استفاده هستند
    لایک کردن

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO