برد Nodemcu برد هوش مصنوعی Sipeed

پروژه کنترل برد Nodemcu با فرمان صوتی از طریق برد Maixduino و اینترنت

control-nodemcu-via-voice-command-with-maixduino-over-internet-digispark
نوشته شده توسط معین صابری

تصور صحبت با ماشین ها، اگرچه تا دهه ها پیش عجیب به نظر می رسید اما امروزه به لطف فناوری هوش مصنوعی عملی و امکان پذیر شده است. فناوری هوش مصنوعی امروزه در کاربردهای تجاری، علمی و پزشکی مورد استفاده قرار می گیرد. سیستم های پلاک خوان، قفل های با قابلیت تشخیص چهره و… همگی نمونه ای از عملکرد این فناوری به شمار می روند. جهت توسعه پروژه های هوش مصنوعی، بردهای مختلفی توسعه یافته اند. یکی از بردهایی که اخیرا توجه ما را به خود جلب کرده، برد هوش مصنوعی Maixduino است. این برد که از پردازنده ۶۴ بیتی نسل پنجم RISC بهره می برد، قادر به اجرای الگوریتم های شبکه های عصبی است. پیشتر در سلسله آموزشی، راه اندازی و کار با این برد را در این لینک بررسی کرده ایم. در این آموزش قصد داریم تا به طراحی یک سیستم تشخیص و اجرای فرمان صوتی آنلاین بپردازیم. در ادامه این آموزش با مرجع تخصصی برد هوش مصنوعی Sipeed به زبان فارسی، دیجی اسپارک همراه باشید.

 


ساز و کار پروژه ارسال آنلاین فرمان صوتی


در ابتدای آموزش، بهتر است راجع به ساز و کار پروژه بیشتر دانسته و سپس پروژه را ادامه دهیم. در این پروژه قرار است تا با گفتن عبارتی در مقابل برد Maixduino، از راه دور و  طریق اینترنت وضعیت LED های متصل به برد NODEMCU را کنترل کنیم. به عبارت دیگر با گفتن کلمات  Green، Blue و یا Red، LED متناظر و متصل به برد NodeMcu روشن شود.

فرمان صوتی با برد مایکسدوینو پردازش صوت - دیجی اسپارک

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

 


برد Maixduino در پردازش صوت


همانطور که پیشتر هم گفته شد، در این پروژه قصد پردازش صوت و ارسال آنلاین صدای پردازش شده را به برد دیگری از طریق اینترنت داریم. جهت پردازش صوت، نیاز به یک پردازنده قدرتمند، به طور جدی احساس می شود. به همین منظور، برد Maixduino را انتخاب می کنیم. برد Maixduino از پردازنده K210 بهره می برد. این پردازنده ۶۴ بیتی از نسل RISCV با توان اجرای الگوریتم های شبکه های عصبی است. در کنار این، این برد دارای دوربین جهت دریافت و پردازش تصویر است. این برد می تواند تصاویر را با فناوری MobileNet پردازش نماید.

برد Maixduino در پردازش صوت - دیجی اسپارک

برد Maixduino ظاهری شبیه به برد آردوینو UNO دارد. همچنین این برد با دستورات آردوینو قابل برنامه نویسی است. بدین ترتیب بدون نیاز به یادگیری زبان برنامه نویسی جدید، می تواند به دنیای بی انتهای علم هوش مصنوعی، وارد شوید. نکته حائز اهمیت اینست که روی برد Maixduino از یک پردازنده ESP32 بهره گرفته شده است. جدای از قدرت پردازشی فوق العاده ESP32، این پردازنده می تواند به اینترنت متصل شده و به تبادل داده در سطح وب بپردازد. در این پروژه به کمک همین قابلیت، ابتدا صدا توسط پردازنده هوش مصنوعی K210 تشخیص داده می شود. سپس متن معادل صدا از پردازنده K210 از طریق رابط سریالی که بین این پردازنده و ESP32 برقرار است، به ESP32 ارسال می شود. پردازنده ESP32 پس از دریافت داده، به سرور متن معادل کلمه تشخیص داده شده را ارسال می کند. در طرف دیگر، سرور با دریافت کلمه، آن را ذخیره کرده تا به برد NODEMCU تحویل دهد. برد NodeMcu با قابلیت اتصال به اینترنت، داده را دریافت کرده و بسته به کلمه دریافت شده، LED معادل آن، یعنی سبز، قرمز یا آبی را روشن می کند. در قسمت بعد با این برد بیشتر آشنا می شویم. اما جهت آشنایی بیشتر با پردازنده ESP32، مطالعه سلسه آموزش های آن با کلیک بر روی این لینک، پیشنهاد می گردد.

 


برد NodeMcu


اگر بخواهیم وارد دنیای اینترنت اشیا و به خصوص سخت افزارهای آن شویم، برد NodeMcu بی شک یکی از مهم ترین بردهای پردازشی این حوزه خواهد بود. برد NodeMcu که از هسته پردازشی ESP8266-12E بهره می برد، یک برد با قابلیت ایجاد شبکه وای فای و اتصال به نقطه دسترسی ها و مودم هاست. به عبارت دیگر این برد هم می تواند مانند یک مودم، اتصال سایر دستگاه ها به خود را شامل شود و یا اینکه همانند یک تلفن همراه، به مودم ها متصل شد و به شبکه جهانی اینترنت دسترسی داشته باشد. علاوه بر این، این برد همانند پردازنده ESP32 می تواند برنامه هایی با دستورات آردوینو را اجرا نماید.

برد Nodemcu و برد Maixduino در پردازش صوت - دیجی اسپارک

در این پروژه برد NodeMcu با به اینترنت متصل می شود. سپس با برقراری ارتباط با سرور، وضعیت آخزین کلمه تشخیص داده شده را می خواند. با خواندن این کلمه، به LED معادل با کلمه تشخیص داده شده، فرمان روشن شدن ارسال خواهد کرد. برای سرور، ما از یک سرور لینوکسی با زبان برنامه نویسی PHP استفاده کرده ایم. در سمت سرور با دستورات PHP، داده ها را از برد Maixduino دریافت و در یک فایل ذخیره می کنیم. حال، هرگاه که برد NodeMcu به سرور درخواست ارسال کند، کلمه تشخیص داده شده را به کمک دستورات PHP به NodeMcu ارسال می کنیم. در قسمت های بعدی کدهای پروژه را مشاهده خواهید کرد. اما پیش از آن شماتیک پروژه را بررسی خواهیم نمود.

 


شماتیک و اتصالات پروژه


در این پروژه بخش برد Maixduino تنها کافیست که از طریق کابل USB به رایانه متصل گردد. در سمت NodeMcu نیز، کافیست ۳ LED به ترتیب آبی، قرمز و سبز به پایه های D1، D2 و D3 متصل گردد. تصویر زیر را دقت کنید.

پروژه کنترل برد Nodemcu با فرمان صوتی برد Maixduino - دیجی اسپارک

 

 پس از بررسی شماتیک، نوبت به کدهای پروژه می رسد. کدهای این پروژه در سه قسمت اصلی برد Maixduino، NodeMcu و سرور تقسیم بندی می گردد.

 


کدهای پروژه بخش Maixduino


در این قسمت به کدهای بخش برد Maixduino  می پردازیم. کدهای زیر مربوط به واحد K210 است.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

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

 

پس از این قسمت در پروژه فرمان صوتی، می بایست فایل مدل های صوتی را به پروژه اضافه کنید. به این منظور ابتدا  کدهای زیر را در یک فایل با نام voice_model.h ذخیره کنید. پس از ذخیره، روی منوی sketch کلیک کنید. پس از آن با انتخاب گزینه Add File، فایل الگوهای صوتی را انتخاب کنید.