آردوینو arduino, آموزش, پروژه آردوینو, توصیه شده, مقاله

ساخت ربات سخنگو با آردوینو و کتابخانه گفتار

ربات سخنگو سیسوگ

به نام خداوند جان آفرین، حکیم سخن در زبان آفرین.

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

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

 

در مورد روش‌های متداول تولید صدا در مدار، قبلاً در ابتدای مقاله “اجرای ملودی موسیقی به وسیله آردوینو و بازر (Buzzer)”  سیسوگ بحث شده است. با استفاده از کتابخانه‌ای که قرار است در این آموزش معرفی شود، شما می‌توانید از طریق واحدهای تایمر/کانتر داخلی میکروکنترلر و ایجاد فرکانس‌های PWM، حروف، کلمات، عبارات و اعداد انگلیسی از پیش تعریف شده را اجرا نمایید. اضافه کردن کلمات دیگر، همچنین تبدیل و تغییر آن برای زبان فارسی خیلی ارزش ندارد و برای این کار، بهتر است از مقاله نامبرده استفاده کنید. این کتابخانه با فریمورک آردوینو نوشته شده است. همان‌طور که پیش از این هم به آن اشاره شد، آردوینو صرفاً یک برد الکترونیکی نیست، بلکه یک فریمورک است که شما به وسیله آن قادر خواهید بود تا به جز بردهای آردوینو، برای تراشه‌های AVR و خیلی از بردهای الکترونیکی دیگر نیز کد بنویسید. اما با این حال، کدهای نوشته شده به زبان ++C هستند و شما می‌توانید با دانش برنامه نویسی خود، به راحتی آن را برای زبان C نیز ترجمه کنید.

 

دانلود و نصب کتابخانه گفتار آردوینو

از طریق منوی

Sketch -> Include Libary -> Manage Libaries…

و یا با استفاده از کلید ترکیبی Ctrl+Shift+I قسمت مدیریت کتابخانه‌ (لایبری)های آردوینو را باز کنید.

مدیریت کتابخانه ها در آردوینو

سپس در کادر جستجو، عبارت Talkie را وارد نمایید تا از طریق جستجوی اینترنتی، کتابخانه را پیدا کند. پس از یافتن تاکی، بر روی دکمه install

کلیک کنید تا فرآیند دانلود و نصب کتابخانه گفتار انجام شود.

جستجو و اضافه کردنکتابخانه گفتار آردوینو

 

آپلود کد بر روی آردوینو

حال یک اسکچ جدید باز کرده و کد زیر را در آن پیست کنید. در این برنامه آردوینو از طریق پایه‌ی A0، مقدار ولتاژ ورودی (صفر تا پنج ولت) را اندازه گرفته و سپس مقدار آن را از طریق پایه‌ی شماره 3 پخش می‌نماید.

در این برنامه ابتدا مقدار ولتاژ از پایه‌ی A0 خوانده شده و سپس با استفاده از توابع کتابخانه گفتار، مقدار ولتاژ از طریق پایه شماره 3 آردوینو پخش می‌شود. همچنین مقدار ولتاژ از طریق پورت سریال هم قابل مشاهده است.

تابع sayNumber از کتابخانه گفتار، یک مقدار عددی را به عنوان ورودی دریافت کرده و آن را به‌صورت گفتاری پخش می‌نماید.

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

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

https://github.com/ArminJo/Talkie/tree/master/src

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

Vocab_

هستند را باز کنید، می‌توانید لیستی از کلمات از قبل تعریف شده را ببینید و با اضافه کردن فایل هدر (header) مورد نظر به برنامه خود، از آن کلمات استفاده کنید.

همچنین کتابخانه گفتار، مثال‌های زیادی نیز برای اجرا دارد که می‌توانید آن‌ها را از منو زیر در آردوینو اجرا کنید:

File -> Examples -> Talkie

 

فیلتر و تقویت خروجی

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

 

مدار فیلتر و تقویت صورت از ورودی pwm

 

صدای ضبط شده از عملکرد مدار

امیدوارم این آموزش نیز برای شما مفید باشد.

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

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

29 دیدگاه در “ساخت ربات سخنگو با آردوینو و کتابخانه گفتار

  1. متین گفت:

    سلام.
    ببخشید من سه چهار بار مدار تقویت کننده رو بستم ولی کار نمی کنه اما بدون تقویت کنده کار می کنه. یه سوال اینکه اون vcc برای کانکتور شماره 3 چه می خوره؟ اخه به هیج جا وصل نیست.
    با تشکر

    1. Digi Boy گفت:

      درود بر شما.
      هر جا در مدار که برچسب VCC وجود دارد، بهم دیگر متصل هستند.

  2. شروین گفت:

    سلام.لطفا می شه بگین خازن های مدار باید چند ولت باشن؟

    1. Digi Boy گفت:

      درود بر شما، ولتاژ خازن، حداکثر ولتاژی است که می‌تواند آن خازن تحمل کند. از آنجایی که حداکثر ولتاژ این مدار 5 ولت می‌باشد، فکر می‌کنم اکثر خازن‌های موجود معمولاً تحمل بیشتر ازین مقدار را داشته باشند.
      اگر دوست داشتید، این پروژه رو هم بسازید و نتیجه اش رو هم بگید.
      ممنون.
      https://8bi.ir/51qdy

  3. تسلا گفت:

    سلام.ببخشید چطور می شه کاری کرد که مثلا اگه یه سنسور جسمی رو تشخیص داد مثلا یه حرفی زده بشه؟ ممنون

    1. Digi Boy گفت:

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

  4. شهریار گفت:

    سلام.ببخشید توی این مدار از بلند گو استفاده نمی شه؟ بعد اینکه این کانکتور به کجا وصل می شن؟ باتشکر

    1. Digi Boy گفت:

      درود بر شما.
      توی متن، اگر دقت کنید نوشته شده که:
      “مقدار ولتاژ از طریق پایه شماره 3 آردوینو پخش می‌شود.”
      یعنی اینکه آردوینو صدا رو روی این پایه تولید می کنه، اما شما بهتره این خروجی رو از یه فیلتر هم رد کنید و به یک تقویت کننده هم بدید که مدارش رسم شده. شماره 3 که VCC هست و برق مداره، باید به +5 ولت متصل بشه. شماره دو هم به پایه شماره 3 آردوینو و کانکتور شماره 1 هم به زمین.
      فکر می‌کنم به کمک یک بازر و بدون نیاز به این مدار هم بتونید صدا رو بشنوید، اما تست نکردم. احتمالاً این مطلب بنده هم به دردتون بخوره:
      https://8bi.ir/51qdy

  5. متین گفت:

    سلام.ببخشید اون jp توی شماتیک چی هستن؟ با تشکر

    1. Zeus . گفت:

      سلام دوست عزیز
      کانکتور هستند برای وصل کردن اتصالات خارجی است

  6. شهریار گفت:

    سلام.ببخشید توی شماتیمک،jp چی هست؟ با تشکر

    1. Digi Boy گفت:

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

  7. سبحان گفت:

    سلام .اون ایف های اول برنامه که قبل از ووید ستاپ اومده بود برا چی بود؟؟

    1. Digi Boy گفت:

      درود بر شما.
      از اونجایی که داخل کتابخونه صدای تعدادی از اعداد انگلیسی پایه‌ای به‌صورت از پیش ضبط شده وجود داره، برنامه سعی میکنه تا بقیه اعداد را با کمک ترکیبی از اون ها به سازه. مثلاً برای اینکه بتونه عدد 1003 رو بگه، میاد یکبار هزار رو میگه، یک بار 3 رو و بقیه صداهایی که لازمه بینش گفته بشه رو هم پخش میکنه. چون عملاً نمیشه گفتار تمام اعداد رو داخل حافظه کم آردوینو ضبط کرد. برای همین، قبل از تابع setup، اومده یک تابعی به نام sayNumber تعریف کرده.
      ورودی این تابع یه عدد بزرگه که به کمک اون ایف ها داخل تابع به اعداد ریزتر برای اجرا تبدیل می‌شن. داخل برنامه اصلی، وقتی که می‌خواهیم عددی رو دستگاه بخونه، این تابع رو صدا می‌زنیم.🙂

  8. علیرضا گفت:

    سلام نیاز به بلنگو دارد

  9. مهدی احمدی گفت:

    سلام
    برای فارسی گویی چطور باید عمل کنیم؟

    ممنون

    1. Digi Boy گفت:

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

  10. mahdi گفت:

    سلام
    میتونید کامل بگید که برای استفاده از صدا های دیگه در برنامه باید چیکار کنم و کد رو کجا قرار بدم.

    مثلا میخوام همین صدا رو در برنامه استفاده کنم:

    extern const uint8_t sp4_OFF[] PROGMEM={0x69,0xFB}

    1. Digi Boy گفت:

      شما هر کجا که میخواهید تابع پخش صدا رو صدا بزنید، میتونید این آرایه رو تعریف بکنید. اما بهتره در خطوط اولیه برنامه (قبل از setup آردوینو) باشه. اگه قصد دارید صدا های زیای رو تعریف کنید، یک فایل جدید بسازید و اون رو داخل برنامتون صدا بزنید. ولی توصیه میکنم از این لایبری فقط برای همان عبارات از پیش تعریف شده استفاده کنید، چون اضافه کردن صدا به این لایبری خیلی سخت هست. لینک زیر رو هم ببینید:
      https://github.com/going-digital/Talkie/issues/4
      به نظر من برای صدا های دیگه، از آرایه WAV استفاده کنید.

  11. دهقان گفت:

    بنام خدا
    سلام بر همگی
    برنامه ها و کتابخانه هایی که برای نرم افزار آردینو می‌گذارید. برای vs code نیز اجرا کنید.
    ممنون میشم.

    1. Digi Boy گفت:

      درود بر شما. اگه آموزش بعدی روی آردوینو بود، حتما در محیط VSCODE اون رو اجرا می‌کنم.

  12. Mr.Ahmad گفت:

    خیلی عالی بود مرسی
    واقعا خسته نباشید

    1. Digi Boy گفت:

      درود بر شما. خوشحال هستم که مقاله برای شما مفید بوده.

  13. محمد صادق گفت:

    بسیار عالی
    واقعا مطالبتون جذاب و بروز هست

    1. Digi Boy گفت:

      درود بر شما.
      سپاس گزارم.

  14. کامبیز گفت:

    خیلی جالب بود ممنون

    1. Digi Boy گفت:

      خواهش می‌کنم.

  15. مسعود گفت:

    چه کارایی که ازین آردوینو بر نمیاد!