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

کنترل فرمان صوتی بر اساس ماژول تشخیص صدا FZ0475.

همانطور که از عنوان پیداست، این مقاله بر روی تشخیص اعداد در میکروکنترلر تمرکز دارد. من می خواهم فوراً رزرو کنم که این مقاله کد منبع را ارائه نمی دهد، در مورد فناوری یا الگوریتم تشخیص بحث نمی کند، فقط می گویم که از ایده های یک رویکرد سیستماتیک استفاده می شود. برخی از آنها در مقالات ما (و اینجا) توضیح داده شده است. این به این دلیل است که رویکرد ما برای اصالت تلاش می کند، اما نیازمند روشن شدن برخی مسائل است.ممکن است کسی بگوید: "مقاله دیگری در مورد برنامه نویسی میکروکنترلرها." به هیچ وجه، جستجو برای پروژه های مشابه، به جز این، هیچ نتیجه روشنی به همراه نداشت ویدئو. از بحث های موجود در انجمن ها یک چیز واضح است: ایده گرفتن دستگاه مشابه(دوربین + میکروکنترلر = نتیجه تشخیص خروجی، نه فقط یک عکس گرفته شده) برای بسیاری از افراد آمد، اما بدون اجرا ماند. و شناسایی، طبق همه حساب ها، به منابع محاسباتی زیادی نیاز دارد و میکروکنترلرها برای این کار مناسب نیستند، به ویژه در مورد آردوینو اظهاراتی وجود داشت که این به طور کلی غیرممکن است. اگر علاقه مند هستید، لطفا گربه را ببینید.

برای جلوگیری از هرگونه سوال واضح، بیایید به آنها پاسخ دهیم:

  • نه، این یک سرویس تشخیص تصویر نیست.
  • نه، این OpenCV نیست
  • نه، اینها شبکه های عصبی نیستند
  • بله تشخیص توسط میکروکنترلر انجام می شود!

اندیشه

به طور خلاصه، همه چیز با میل به امتحان کردن و آزمایش ایده هایم در تشخیص تصویر شروع شد. در طول بحث به این نتیجه رسیدیم که با قدرت محاسباتی کم می توانیم این مشکل را حل کنیم. به دلایل واضح، جزئیات این بحث ها را شرح نمی دهیم.

نصب و راه اندازی

بنابراین، وظیفه تعیین شده است، اجرا لازم است. بدون انحراف از اصول از قبل تعیین شده
آنچه در دست داریم را می گیریم و یک زن و شوهر در دست بودند آردوینو اونو، ماوس نوری قدیمی و درایو سی دی. به هر حال، شما از سنسور برای چه استفاده می کنید؟ موس نوریبه‌عنوان دوربینی برای به‌دست‌آوردن یک تصویر، چیزی که مدت‌ها پیش خوانده بودیم و در واقع بقیه مطالب «موس» به ما انگیزه داده بود. تنها کاری که باید انجام می‌دادیم این بود که حسگر و کل دسته آن را برای سهولت در استفاده از لحیم خارج کنیم و همچنین لنز را به آن بچسبانیم که با دقت از درایو سی‌دی "درآوریم". این برای افزایش فاصله سوژه تا دوربین ضروری بود وگرنه اعداد سایز ما جا نمی شد و فقط قسمت کوچکی نمایان می شد. به هر حال، ما سعی کردیم اپتیک را از دوربین وب در جلوی لنز از درایو سی دی وصل کنیم، اما به نوعی جواب نداد.


بیشتر



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


بیشتر




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


بیشتر




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


در سمت چپ یک تصویر خاکستری به دست آمده از نشانگر است (ما چنین تصویری را از سنسور دریافت می کنیم)، در سمت راست باینریزه شده است.


بیشتر



نمای کلی نصب مونتاژ شده



گزینه نصب زود هنگام





بلوک تشخیص


نقش مهمی در نصب ما توسط واحد به اصطلاح شناسایی (در تصویر بالا) ایفا می کند. همانطور که می بینید، از یک Arduino Uno و یک فرستنده وای فای معروف تشکیل شده است ESP8266. بگذارید توضیح بدهم، ما به یک فرستنده وای فای نیاز داریم تا بتوانیم نتیجه تشخیص را روی تبلت ببینیم. برنامه روی تبلت درخواستی ارسال می کند، آردوینو پس از دریافت درخواست، تصویر را از حسگر ماوس "گرفته" و سپس آن را باینریزه می کند. پس از باینری‌سازی، شناسایی اتفاق می‌افتد و پس از تکمیل آن، یک پاسخ تولید می‌شود. در پاسخ، ما نتیجه تشخیص و 41 بایت را برای ساختن یک تصویر باینریزه بر روی صفحه تبلت ارسال می کنیم، به اصطلاح، برای وضوح.

اگر به گذشته نگاه کنید، آردوینو عملکرد خوبی دارد: کار با دوربین، تشخیص و کار با esp8266. چیزی که نمی‌توانست روی کار تأثیر بگذارد این بود که باید با کمبود حافظه دست و پنجه نرم می‌کردیم. هرگز فکر نمی کردم که مجبور شوم هر بایت حافظه را بازیابی کنم.

نمایش فرآیند شناسایی

به جای نتیجه گیری

همین. هنوز کار زیادی در پیش است. و اولین کار: تشخیص اعداد (رشته های اعداد) گرفته شده توسط دوربین "انسان" (و نه "سنسور ماوس") و انتقال فناوری توسعه یافته به ESP8266 و کاهش شدت مبارزه برای هر بایت حافظه.

ما خوشحال خواهیم شد که به سوالات شما پاسخ دهیم.

در این آموزش آردوینو نحوه استفاده را به شما نشان خواهیم داد اپلیکیشن موبایلبرای اندروید و ماژول بلوتوث HC-05 برای کنترل صدارهبری.

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

  • آردوینو UNO
  • ماژول بلوتوث HC-05
  • تخته نان
  • سیم ها
  • مقاومت 330 اهم
  • دیودهای ساطع نور (LED)

مرحله 2: اتصال ماژول بلوتوث HC-05

ماژول استاندارد بلوتوث HC-05 دارای شش پین است. با این حال، در این پروژه ما فقط از 4 استفاده خواهیم کرد.

ما از پین VCC، پین GND، پین TXD و پین RXD استفاده خواهیم کرد. پین VCC ماژول بلوتوث به +3.3 ولت از آردوینو متصل است. پایه GND ماژول به آردوینو GND (زمین) متصل است. پین TX ماژول بلوتوث به پین ​​دیجیتال 0 (RXD) و پایه RXD به پین ​​دیجیتال 1 (TXD) متصل است.

مرحله 3: اتصال LED ها

مرحله بعدی در ایجاد LED ها است صدا کنترل می شود، اتصال LED ها به آردوینو از طریق برد برد است.

ابتدا وصل شوید پایان کوتاه LED به زمین. سپس انتهای بلند هر LED را به یک مقاومت 330 اهم وصل کنید. در نهایت مقاومت جریان ال ای دی ها را به پین ​​های دیجیتال آردوینو وصل کنید.

در این پروژه ما یک LED را به آن وصل می کنیم خروجی دیجیتال 2، دیگری به خروجی دیجیتال 3، و آخرین LED به خروجی دیجیتال 4.

مرحله 4: قدرت

برای این پروژه می‌توانیم از طریق هر منبع تغذیه +5 ولتی، برق آردوینو را تامین کنیم، شما می‌توانید از پورت USB رایانه خود برای تغذیه آردوینو استفاده کنید، اما در این پروژه از باتری قابل حمل 5 ولت استفاده می‌کنیم. قبل از اتصال منبع تغذیه به آردوینو، مطمئن شوید که GND آردوینو به زمین برد برد متصل است.

مرحله 5: کد

کد پروژه ما در زیر آمده است.

مرحله 6: استفاده از اپلیکیشن موبایل

می توانید با دانلود برنامه اندروید - BT Voice Control برای آردوینو (BT Voice Control) پروژه خود را آزمایش کنید برای آردوینو) توسط SimpleLabsIN ایجاد شده است.

پس از اینکه برنامه را دانلود و بر روی گوشی خود نصب کردید، روشن کنید مبتنی بر اندرویدروی نوار منو در سمت راست کلیک کنید گوشه بالاو "Connect Robot" را انتخاب کنید. در پنجره جدیدی که ظاهر می شود، ماژول بلوتوث HC-05 را انتخاب کرده و وصل کنید.

حالا وقتی باهاش ​​حرف میزنی دستورات خاصاز کد به دستگاه شما از طریق برنامه، LED های خاصی باید روشن و خاموش شوند. به کدی که در آن دستورات نشان داده شده است نگاه دقیق تری بیندازید و کد خود را اضافه کنید. به عنوان مثال، به جای "*switch on red" می توانید به سادگی "red" را مشخص کنید. به این ترتیب دستورات سریع تر، کوتاه تر و واضح تر خواهند بود.

مرحله 7: نتیجه نهایی

نتیجه نهایی را می توانید در ویدیوی زیر مشاهده کنید.

ما برای شما پروژه های موفق آرزو می کنیم! فراموش نکنید که نظرات خود را در مورد پروژه در ما بنویسید

آیا به یاد دارید که چند سال پیش (و شاید هم اکنون) ایده کنترل نور اتاق با کف زدن چگونه رایج بود؟ اما، خیلی راحت است، شما در رختخواب دراز کشیده اید، خیلی تنبل هستید که بلند شوید و چراغ را با یک کف دست خاموش کنید، یا ما به خانه می رویم، تاریک است، زمان زیادی طول می کشد تا سوئیچ را پیدا کنید، و سپس از همان آستانه یک یا دو کف زدن به گوش می رسد و چراغ از قبل روشن است. به نظر من این مفهوم هنوز هم مرتبط است، اما می توان آن را برای موارد بیشتری اعمال کرد تکنولوژی بالادر مقایسه با 5 سال، 10 سال پیش. اکنون با مبلغ نسبتاً کمی می توانید چندین قسمت را خریداری کرده و طرح را بر روی آن برنامه ریزی کنید توابع مشابه، در مورد چه چیزی صحبت خواهیم کردزیر

امروز ما به یک ماژول طراحی شده برای تشخیص دستورات صوتی (از جمله فقط صداها در یک فرمان صوتی ضبط شده) نگاه خواهیم کرد - ماژول تشخیص صدا V3.1 (V3)یا نام رمزگذاری FZ0475 که اغلب با آن مواجه می‌شوید.

بسته تحویل شامل خود ماژول است ( تخته مدار چاپیخیلی کیفیت خوب)، یک میکروفون روی یک پایه انعطاف پذیر با کانکتور جک 3.5 میلی متری و کنتاکت های زاویه ای PLS با گام 2.56 میلی متر برای برد ماژول (اگر به روش دیگری به کنتاکت های ماژول متصل شوند، قابل استفاده نیستند).

امروزه انواع مختلفی از ماژول ها با عملکرد مشابه وجود دارد. تولید کنندگان مختلفو توسعه دهندگان یا اعدام ها. این ماژولتشخیص صدا، به نظر من، تعادل خاصی بین هزینه، عملکرد و راحتی دارد. ماژول EasyVR قدرتمندتر و به طور قابل توجهی گرانتر خواهد بود. ماژول‌های مبتنی بر LD3320 ارزان‌تر و ناخوشایندتر خواهند بود (حداقل ناخوشایند هستند زیرا یافتن یک توصیف معمولی برای آنها آسان نیست، اما در غیر این صورت این موضوع ذهنی است).

ویژگی های ماژول تشخیص صدا V3.1 (V3):

  • ولتاژ تغذیه - 5 ولت
  • مصرف جریان - تا 40 میلی آمپر
  • رابط - UART، GPIO
  • دقت تشخیص - 99٪ (در شرایط ایده آل)
  • برد - به میکروفون استفاده شده بستگی دارد؛ برای میکروفون استاندارد موجود در کیت، برد 0.5 - 1 متر است. حداکثر فاصلهاگر صدا به اندازه کافی بلند است، اگر صدا آرام است، باید میکروفون را به دهان خود نزدیک کنید.

ماژول یک برد کوچک کوچک است که میکروکنترلر اصلی (بلک لکه)، یک کانکتور جک 3.5 میلی متری برای اتصال میکروفون و یک میکرو مدار روی آن قرار دارد. فلش مموری، GPIO، UART و کنتاکت های برق، یک جفت LED و بقیه تجهیزات لازم برای عملکرد مدار - مقاومت ها، خازن ها، کوارتز. اندازه جمع و جور برد به شما این امکان را می دهد که به راحتی ماژول را در آن ادغام کنید تحولات خود. برای افزایش دامنه فرمان های صوتی، احتمالاً استفاده از میکروفون تقویت شده ضروری است. هنگامی که محدوده قابل قبولی به دست آمد، ماژول برای استفاده در سیستم ها مناسب است خانه هوشمند. بدون تغییر برای بهبود محدوده عملیاتی، ماژول را می توان در سیستم های کنترل دسکتاپ و همچنین در سیستم های امنیتی (کنترل دسترسی و محدودیت) استفاده کرد. با یک میکروفون استاندارد، به دلیل برد کوتاه، استفاده از ماژول تشخیص صدا به عنوان هدست و به صورت بی سیمدستورات را به کنترل کننده ای که چیزی را با استفاده از باتری و ماژول های بی سیم کنترل می کند (به عنوان مثال HC-05 یا HC-12 یا هر نوع مناسب دیگری) ارسال کنید. این ماژول قادر است بدون میکروکنترلر خارجی کار کند، زیرا سازنده استقلال عملکردی را ارائه می دهد؛ فقط باید یک بار دستورات صوتی را ضبط کنید و تنظیمات را برای آن تنظیم کنید. کار مستقلبا کمک دستگاه خارجی(کامپیوتر یا MK).

بنابراین، برای شروع کار با ماژول تشخیص صدا، باید آن را یا به یک کامپیوتر (به یک آداپتور USB-UART نیاز دارید) یا به یک میکروکنترلر (شما باید توسعه دهید) وصل کنیم. کد برنامهبرای کنترل ماژول).

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

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

برای راه اندازی و پیکربندی ماژول از یک سیستم فرمان استفاده می شود. فرم کلیقاب به شکل زیر است:

چهار دستور اول 00، 01، 02، 03 برای بررسی وضعیت ماژول و تنظیمات آن استفاده می شود. شش دستور بعدی 10، 11، 12، 13، 14، 15 برای تغییر تنظیمات ماژول از جمله کنترل پورت خروجی و تنظیمات بارگذاری خودکار استفاده می شود. سپس از سه دستور 20،21، 22 برای ضبط دستورات صوتی استفاده می شود. سه دستور بعدی 30،31،32 برای کنترل تشخیص دستورات صوتی استفاده می شود. دستورات 0A، 0D، FF تنها زمانی استفاده می شوند که داده ها توسط خود ماژول برگردانده شوند. در واقع دستورات زیادی وجود ندارد و همه اینها به همان اندازه که در نگاه اول در مستندات ماژول به نظر می رسد ترسناک نیست. بیایید به دستورات مورد نیاز برای کار با ماژول تشخیص صدا نگاه کنیم. همه دستورات موجود عملی نیستند.

قابل توجه است که ماژول می تواند بدون میکروکنترلر کنترل خارجی کار کند و همچنین می تواند به طور مستقل چیزی را با پورت های خروجی خود کنترل کند. برای انجام این کار، باید آنها را پیکربندی کنید (فرمان های 12، 13، 14).

تیم 12 - پیکربندی پورت های خروجی این دستور حالت عملکرد پورت های خروجی ماژول تشخیص صدا را پیکربندی می کند.

فرمت: | AA | 03 | 12 | حالت | 0A |

در جایی که MODE می تواند چهار مقدار داشته باشد: 0 - حالت پالس (هنگامی که یک فرمان صوتی فعال می شود، خروجی مربوط به فرمان وضعیت خود را برای زمان تعیین شده توسط فرمان 13 تغییر می دهد)، 1 - حالت سوئیچ (تغییر یا چرخش) (هر بار) یک فرمان صوتی راه اندازی می شود، خروجی مربوط به فرمان صوتی معکوس می شود)، 2 - حالت روشن (زمانی که فرمان صوتی فعال می شود، خروجی به حالت منطقی یک می رود و دیگر به حالت صفر منطقی نمی رود، تنظیم مجدد انجام شده توسط فرمان 14)، 3 - حالت خاموش (شبیه به حالت روشن، فقط برعکس، هنگامی که فرمان صوتی فعال می شود، خروجی به حالت صفر منطقی می رود).

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

تیم 13 - تنظیم مدت زمان پالس حالت مربوطه.

فرمت: | AA | 03 | 13 | سطح | 0A |

جایی که LEVEL مقداری از 00 تا 0F (مرتبط با مدت زمان 10 میلی ثانیه تا 1 ثانیه) می گیرد.

مرحله مدت زمان
0x00 10 میلی ثانیه
0x01 15 میلی ثانیه
0x02 20 میلی‌ثانیه
0x03 25 میلی‌ثانیه
0x04 30 میلی‌ثانیه
0x05 35 میلی‌ثانیه
0x06 40 میلی‌ثانیه
0x07 45 میلی‌ثانیه
0x08 50 میلی‌ثانیه
0x09 75 میلی‌ثانیه
0x0A 100 میلی‌ثانیه
0x0B 200 میلی‌ثانیه
0x0C 300 میلی‌ثانیه
0x0D 400 میلی‌ثانیه
0x0E 500 میلی‌ثانیه
0x0F 1 ثانیه

تیم 14 - خروجی پورت ها را به حالت بازنشانی کنید توسط حالت ها داده می شودروشن یا خاموش.

فرمت: | AA| 03 | 14 | FF | 0A | - تنظیم مجدد تمام پورت های خروجی

| AA| 03+n | 14 | IO0 | ... | یون | 0A | - پورت های خروجی انتخاب شده را بازنشانی کنید

در جایی که n تعداد پین هایی است که به طور انتخابی بازنشانی می شوند، IO0...IOn فهرستی از این پین ها در قاب ارسال داده است.

در مرحله بعد، برای اینکه دستورات صوتی اجرا شوند، باید در ماژول ضبط شوند (آموزش ماژول). در اینجا یک محدودیت وجود دارد. تنها هفت فرمان را می توان در یک زمان تشخیص داد، اگرچه بسیاری دیگر را می توان ضبط کرد. به منظور گسترش دامنه دستورات صوتی که تشخیص داده خواهد شد، از یک سیستم گروه بندی (فرمان 32) استفاده می شود که توسط پورت های ورودی ماژول کنترل می شود. با تنظیم پیکربندی سیگنال روی این پین ها، گروهی از دستورات را انتخاب می کنید که شناسایی شوند. این به دلیل عملکرد محدود کنترل کننده صدای ماژول است.

تیم 20 - ضبط یک یا چند فرمان صوتی

فرمت: | AA| 03+n | 20 | R0 | ... | Rn | 0A |

جایی که n تعداد دستورات صوتی ضبط شده است (اگر یک دستور n=0 ضبط شود، دو دستور n=1 و غیره مطابق با فرمت کلی ارسال دستورات طول - طول)، R0...Rn تعداد دستورات صوتی (AA 03 20 03 0A - فرمان ضبط سومین فرمان صوتی).

تیم 21 - یک فرمان صوتی را ضبط کنید و یک امضا برای آن تنظیم کنید.

فرمت: | AA| 03+SIGLEN | 21 | ثبت | SIG | 0A |

در جایی که RECORD شماره فرمان صوتی است، SIG امضا است (می‌تواند از چندین بایت تشکیل شده باشد، به طوری که در صورت لزوم هر بایت می‌تواند با کدگذاری حروف الفبا مطابقت داشته باشد)، SIGLEN تعداد بایت‌هایی است که امضا را تشکیل می‌دهند.

تیم 22 - یک امضا برای فرمان صوتی انتخاب شده اضافه یا حذف کنید.

فرمت: | AA | 03+SIGLEN | 22 | ثبت | SIG | 0A | - اضافه کردن امضا

| AA | 03 | 22 | ثبت | 0A | - حذف امضا

هنگام ضبط دستورات صوتی، باید توسط سیگنال های LED هدایت شوید. پس از وارد کردن فرمانی که فرآیند ضبط را شروع می کند، LED زرد (نارنجی) به سرعت شروع به چشمک زدن می کند. به محض روشن شدن LED قرمز، باید یک فرمان صوتی را به میکروفون بگویید. در صورت موفقیت آمیز بودن، LED زرد (نارنجی) روشن می شود و دوباره قرمز می شود - باید فرمان صوتی را تأیید کنید و دوباره آن را بگویید. در صورت موفقیت آمیز بودن، هر دو LED روشن می شوند - فرمان صوتی ذخیره شده است.

هنگامی که دستورات صوتی در ماژول ضبط می شوند، تا زمانی که این دستورات در "Recognizer" ماژول قرار نگیرند، هیچ اتفاقی نمی افتد. برای این کار باید از دستور 30 ​​استفاده کنید. پس از اجرای این دستور، ماژول شروع به منتظر ماندن برای مطابقت فرمان صوتی با نمونه های ذخیره شده می کند. تنها هفت فرمان را می توان در یک زمان تشخیص داد. در این حالت، LED زرد (نارنجی) روی برد ماژول به آرامی چشمک می زند.

تیم 30 - سوابق را در Recognizer ماژول بارگذاری کنید.

فرمت: | AA| 2+n | 30 | R0 | ... | Rn | 0A |

فرمت پاسخ به شرح زیر است: | AA | 07 | 0D | 00 | GRPM | R | RI | سیگلن | SIG | 0A |

جایی که GRPM اطلاعات مربوط به گروهی است که فرمان به آن تعلق دارد (در صورت استفاده)، R فرمان صوتی شناسایی شده است (با استفاده از این داده ها می توانید دستورات را از یکدیگر تشخیص دهید اگر از امضا استفاده نمی شود)، RI شاخص فرمان در شناساگر است. SIGLEN طول امضا بر حسب بایت است، SIG - امضا (در صورت استفاده).

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

تیم 15 - تنظیم شناساگر برای شروع خودکار در هنگام روشن شدن.

فرمت: | AA| 03 | 15 | 00 | 0A | - غیر فعال کردن عملکرد autorun

| AA| 03+n | 15 | BITMAP | R0 | ... | Rn | 0A | - تنظیم عملکرد autorun

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

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

با استفاده از ماژول های بی سیم، می توانید ماژول تشخیص صدا را به هر دستگاهی که لازم است متصل کنید. به عنوان مثال، اجازه دهید آن را به یک میکروکنترلر متصل کنیم، که LED ها را بر اساس داده های دریافتی در مورد تشخیص دستورات صوتی کنترل می کند. ماژول های بی سیماجازه دهید داده ها در دو جهت منتقل شوند، بنابراین در صورت لزوم می توانید کدی را برای میکروکنترلر بنویسید تا ماژول صوتی را مقداردهی اولیه کند و دستورات صوتی را ضبط کند. در مورد ما، تحت کنترل رایانه شخصی، چندین فرمان صوتی قبلاً در ماژول ضبط شده است و تشخیص برای شروع خودکار هنگام روشن شدن برق پیکربندی شده است، بنابراین برای میکروکنترلر ما فقط دریافت داده و کنترل LED را با توجه به این داده ها ثبت می کنیم. میکروکنترلر STM32F103C8T6 از USART1 برای دریافت داده ها و پین های PB10...PB15 که به عنوان خروجی پیکربندی شده است، استفاده می کند که LED ها را کنترل می کند. منبعدر ضمیمه های انتهای مقاله قرار دارد.

کمی در مورد نتایج

تشخیص صدا کاملاً دقیق نیست. بستگی به دستورات انتخاب شده و صدای کاربر دارد. در طول تست چندین نکته منفی پیدا کردم. هنگام آموزش دستورات ماژول، دستورات صوتی "یک" و "دو" انتخاب شدند. دستور "دو" همیشه به وضوح عبور می کرد، اما دستور "یک" اغلب به عنوان یک دستور "دو" شناسایی می شد و کد فرمان دوم بر این اساس اجرا می شد. علاوه بر این، هنگام تلاش برای دادن دستورات صوتی به زبان انگلیسی (و آنها در ماژول صوتی ضبط نمی شدند)، دستور "یک" تقریباً همیشه به عنوان "دو" تعریف می شد. شاید همه چیز در مورد تلفظ، لحن و سایر جنبه های صدای انسان باشد که در الگوریتم برای رمزگذاری ماژول صوتی دستورات گفتاری تعبیه شده است. با این حال، این اسرار تولید کنندگان دسترسی آزادنده. علاوه بر این، کیفیت تشخیص تحت تأثیر شرایط نویز خارجی - سر و صدای خیابان، صدای فن، صداهای تصادفی و غیره قرار دارد. سازنده توجه را به این واقعیت جلب می کند که سطح بالادقت تشخیص در شرایط ایده آل صورت می گیرد. ایده استفاده از میکروفون با آمپلی‌فایر، البته دامنه عملکرد دستگاه را افزایش می‌دهد، اما احتمال خطا را نیز افزایش می‌دهد، زیرا تقویت صدا باعث افزایش نویز نیز می‌شود.

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

فهرست عناصر رادیویی

تعیین تایپ کنید فرقه تعداد توجه داشته باشیدخرید کنیددفترچه یادداشت من
IC1 MK STM32

STM32F103C8

1 به دفترچه یادداشت
VR1 تنظیم کننده خطی

AMS1117-3.3

1 به دفترچه یادداشت
MOD1، MOD3 ماژول بی سیمHC-122 به دفترچه یادداشت
MOD2 ماژول تشخیص صداVR3.11 به دفترچه یادداشت
Z1 کوارتز8 مگاهرتز1

در این پروژه من یک آشکارساز چهره و یک سیستم ردیابی را ترکیب کردم.

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

کتابخانه OpenCV ( متن باز Computer Vision Library) قابل دانلود است. این کتابخانه چند پلتفرمی است و در حال حاضر برای سیستم عامل های زیر وجود دارد: ویندوز، لینوکس، اندروید، سیستم عامل مک و حتی iOS. این کتابخانه پردازش تصویر را در زمان واقعی ارائه می دهد. با C/C++ نوشته شده است.

که این پروژهمخلوطی از نرم و تصمیمات سخت. تصویر بر روی کامپیوتر پردازش می شود و سروو با استفاده از یک کنترلر کنترل می شود.

بنابراین آنچه من برای پروژه استفاده کردم:

نرم افزار:

اهن:

کامپیوتر با ویندوز 7 SP1

Arduino Uno یا سازگار + PSU

2 سروو

وب کم USB

پس بزن بریم.

مرحله 1: نرم افزار را نصب کنید

1) اگر سیستم عامل ویندوز دارید، فایل OpenCV-2.3.1-win-superpack.exe (یا بیشتر) را دانلود کنید نسخه بعدی) و کتابخانه را نصب کنید.

2) دانلود و نصب کنید مایکروسافت ویژوال C++ 2010 Express. اگر 64 بیتی دارید نسخه ویندوز، سپس شما نیز باید دانلود کنید Windows SDK(اما ممکن است برای نسخه 64 مشکلاتی وجود داشته باشد؛ من نتوانستم OpenCV را تحت ویندوز 7 x64 کار کنم).

روند راه اندازی OpenCV برای Visual C++ را در وب سایت رسمی بخوانید.

مرحله 2. نصب دوربین و سرووها

من طراحی را "بادوام" نکردم، زیرا پس از رسیدن به هدف نهایی، همه چیز را برای پروژه بعدی جدا می کنم.

من وب کم را به سروموتور محور X وصل کردم و آن را به نوبه خود به سروموتور محور Y وصل کردم و کل این ساختار را در یک گیره "دست سوم" محکم کردم.

مرحله 3: اتصال

اتصال سروموتورها:

پین زرد از سروو محور X به پایه 9 متصل می شود کنترلر آردوینو

پین زرد از سروو محور Y به پایه 10 کنترلر آردوینو متصل است

پین قرمز Vcc از سروو به پایه 5 ولت متصل می شود

پین سیاه رنگ GND از سروو به پایه GND کنترلر آردوینو متصل می شود

اتصال وب کم:

وب کم از طریق به کامپیوتر متصل می شود رابط USB. برنامه C++ وب کم را با شماره پورت USB آن شناسایی می کند. ممکن است لازم باشد پورت را در برنامه مشخص کنید.

اتصال کنترلر آردوینو UNO:

این کنترلر همچنین از طریق یک رابط USB به کامپیوتر متصل می شود. یک پورت COM مجازی در سیستم ظاهر می شود که باید به کد برنامه در C++ اضافه شود.

دانلود فایل های پروژه

مقاله اصلی در زبان انگلیسی(ترجمه A.V. Koltykov برای وب سایت cxem.net)

بهترین مقالات در این زمینه