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

موضوع: ایجاد تماس صوتی

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

    Lightbulb ایجاد تماس صوتی

    این طرح یک تماس صوتی از GSM shield و آردینو شما ، به یک تلفن از راه دو وارد شده از مانیتور سریال را برقرار می کند. شما برای شنیدن و ارسال صوت نیاز به اتصال یک بلندگو و میکروفون دارید.
    سخت افزار موردنیاز
    برد آردینو
    Arduino + Telefonica GSM/GPRS Shield
    میکروفون و بلندگو متصل به GSM shield
    سیم کارت
    مدار
    arduinouno.jpg
    تصویری از GSM shield آردینو بر روی آردینو UNO
    ابتدا، کتابخانه GSM را وارد کنید.
    کد:
    #include <GSM.h>
    سیم کارت ممکن است دارای یک PIN number باشد که قفل عملکرد آن را باز می کند. برای سیم کارت خود یک PIN تعیین کنید. اگر اگر سیم کارتتان PIN ندارد؛ شما می توانید آن را خالی رها کنید.
    کد:
    #define PINNUMBER ""
    نمونه های اولیه از کلاس هایی که شما می خواهید استفاده کنید. شما به کلاس GSM و GSMVoiceCall نیاز خواهید داشت.
    کد:
    GSM gsmAccess; GSMVoiceCall vcs;
    چند متغیر برای ذخیره شماره تلفنی که می خواهید تماس حاصل کنید؛ ایجاد کنید.
    کد:
    String remoteNumber = ""; char charbuffer[20];
    در setup ، یک اتصال سریال به کامپیوتر باز کنید شما از این برای ارسال شماره تلفن به آردینو استفاده خواهید کرد. بعد از باز کردن اتصال ، یک پیام به مانیتور سریال بفرستید که نشان می دهد طرح شروع شده است.
    کد:
    void setup(){ Serial.begin(9600); Serial.println("Make 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); } }
    setup با (ارسال) بعضی اطلاعات به مانیتور سریال پایان می یابد.
    کد:
    Serial.println("GSM initialized."); Serial.println("Enter phone number to call."); }
    Loop بایت های ورودی از مانیتور سریال را می پذیرد و تماس صوتی شما برقرار می شود.
    ابتدا بافر سریال را برای دیدن هر گونه اطلاعات در حال انتظار برای خواندن چک کنید. اگر وجود داشت ، آن را در متغیر محلی ذخیره کنید.
    کد:
    void loop() { while (Serial.available() > 0) { char inChar = Serial.read();
    اگر بافر یک کاراکتر خط جدید نگهداشت، چک کنید ببینید چنانچه که طول ارقام عدد وارد شده کمتر از 20 باشد. (از لحاظ تئوری ،شما هرگز قادر به شماره گیری یک شماره با رقم بیش از آن نیستید.)
    کد:
    if (inChar == '\n') { if (remoteNumber.length() < 20) {
    شماره تماس خود را در مانیتور سریال چاپ کنید.
    کد:
    Serial.print("Calling to : "); Serial.println(remoteNumber); Serial.println();
    شماره تماس در رشته ای به نام remoteNumber ذخیره خواهد شد. تابع voiceCall() نیازمند یک آرایه کراکتری است. رشته را در آرایه به نام charbuffer ،کپی کنید.
    کد:
    remoteNumber.toCharArray(charbuffer, 20);
    با قراردادن، با استفاده از ()vcs.voiceCall ، برای رسیدن شماره ای که می خواهید به آن برسید، از آن عبور کنید، ()voiceCall ،وضعیت تماس را برمیگرداند؛ یک 1 به معنی آنکه، متصل است. شما می توانید وضعیت اتصال را با()getvoiceCallStatus چک کنید.
    برای قطع تماس تان، یک کاراکتر خط جدید برای بکار انداختن ()hangCall بفرستید.
    کد:
    if(vcs.voiceCall(charbuffer)) { Serial.println("Call Established. Enter line to end"); while(Serial.read()!='\n' && (vcs.getvoiceCallStatus()==TALKING)); vcs.hangCall(); }
    هنگامی که تماس کامل شد؛ متغیری که شماره تلفن در آن ذخیره شد را پاک کنید.
    کد:
    Serial.println("Call Finished"); remoteNumber=""; Serial.println("Enter phone number to call."); }
    اگر شماره که شما در مانیتور سریال وارد کردید از بیش از 20 رقم است؛ رشته ی remoteNumber را پاک کرده و دوباره شروع کنید:
    کد:
    else { Serial.println("That's too long for a phone number. I'm forgetting it"); remoteNumber = ""; } }
    وقی که اطلاعات را از مانیتور سریال می خوانید اگر کارکتر دریافتی در خط جدید یا سرسطر نیست؛ رشته remoteNumber را افزوده و loop را نزدیک کنید.
    کد:
    else { // add the latest character to the message to send: if(inChar!='\r') remoteNumber += inChar; } }
    هنگامی که کد شما آپلود شد؛ مانیتور سریال را باز کنید، به محض آن شما پیام "Enter phone number to call" را می بینید، یک شماره تلفن تایپ کنید و “return” را فشار دهید. مطمئن شوید که مانیتور سریال فقط به فرستادن کاراکتر خط جدید برای بازگشت تنظیم شده است.
    کد:
    #include <GSM.h> // PIN شماره #define PINNUMBER "" // دادن مقدار اولیه به کتاب خانه نمونه GSM gsmAccess; // برای فعال سازی اشکال زدایی 'true' قرار دادن پارامتر GSMVoiceCall vcs; String remoteNumber = ""; // شماره که شما می خواهید تماس بگیرید. char charbuffer[20]; void setup() { // مقداردهی اولیه ارتباط سریال Serial.begin(9600); Serial.println("Make 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); } } Serial.println("GSM initialized."); Serial.println("Enter phone number to call."); } void loop() { // افزودن هر کاراکتر دریافتی به رشته: while (Serial.available() > 0) { char inChar = Serial.read(); // اگر یک خط جدید است یعنی اینکه باید تماس برقرار کنید: if (inChar == '\n') { // مطمئن شوید که شماره تلفن خیلی طولانی نباشد: if (remoteNumber.length() < 20) { // به کاربر اجازه دهید از تماس شما اطلاع یابد: Serial.print("Calling to : "); Serial.println(remoteNumber); Serial.println(); // شماره همراه را بگیرید remoteNumber.toCharArray(charbuffer, 20); // بررسی کنید که آیا دریافت پایانی تماس به دست آمده است. if(vcs.voiceCall(charbuffer)) { Serial.println("Call Established. Enter line to end"); // انتظار برای ورودی از خط while(Serial.read()!='\n' && (vcs.getvoiceCallStatus()==TALKING)); // و قطع (تماس) vcs.hangCall(); } Serial.println("Call Finished"); remoteNumber=""; Serial.println("Enter phone number to call."); } else { Serial.println("That's too long for a phone number. I'm forgetting it"); remoteNumber = ""; } } else { // افزودن آخرین کاراکتر به پیام برای ارسال: if(inChar!='\r') remoteNumber += inChar; } } }
    لینک سایت:Arduino - GSMExamplesMakeVoiceCall
    ویرایش توسط hesam.time : 04-03-2013 در ساعت 08:55 AM
    لایک کردن

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

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

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

SEO by vBSEO