آموزش آردوینوپروژه های آردوینو

کنترل وسایل با تشخیص صدا آردوینو (خانه هوشمند با گفتار)

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

پروژه خانه هوشمند با تشخیص صدا آردوینو

فن آوری تشخیص گفتار در هوشمند سازی بسیار مفید است که نه تنها به شما امکان کنترل دستگاه ها را می دهد بلکه امنیت بیشتری به پروژه شما میده. جدا از کنترل کردن وسایل با صدا، این فناوری برای افراد دارای محدودیت بسیار مفید است. در این پروژه ما قصد داریم با استفاده از استودیوی Edge Impulse، از سه دستور NOISE، LIGHT ON، LIGHT OFF استفاده کنیم. این پروژه به عنوان پروژه خانه هوشمند بسیار جذاب محسوب میشود.

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

پروژه های دیگر ما مربوط به صدا و آردوینو :

برای یادگیری آردوینو (برنامه نویسی، ساخت ربات، ارتباط با اندروید) روی دوره آموزش آردوینو کلیک کنید.
برای یادگیری کامل الکترونیک روی دوره آموزش الکترونیک کلیک کنید.

مدار پروژه کنترل وسایل با تشخیص صدا آردوینو

شماتیک مدار برای تشخیص صدا با استفاده از آردوینو در زیر آورده شده است. در Fritzing برای Arduino 33 BLE کتابخانه ای در دسترس نبود ، بنابراین من از آردوینو نانو استفاده کردم زیرا هر دو دارای ظاهری یکسان هستند.

پروژه خانه هوشمند با تشخیص صدا Arduino

پایه مثبت LED به پین ​​دیجیتال 5 از Arduino 33 BLE متصل شده است و پایه منفی به پین ​​GND آردوینو متصل شده است.

قطعات مورد نیاز

  1. برد آردوینو 33 BLE Sense
  2. LED
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

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

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

ما یک مجموعه داده با سه کلاس “LED ON” ، “LED OFF” و “NOISE” ایجاد خواهیم کرد. برای ایجاد یک مجموعه داده ، یک حساب Edge Impulse ایجاد کنید (ورود به سایت Edge Impulse) ، حساب خود را تأیید کنید و سپس یک پروژه جدید شروع کنید. می توانید نمونه ها را با استفاده از موبایل ، برد Arduino یا وارد کردن داده ها وارد کنید. آسانترین راه بارگیری نمونه ها به حساب کاربری شما استفاده از تلفن همراه شما است. برای این کار موبایل خود را به Edge Impulse وصل کنید.

برای اتصال تلفن همراه روی “Devices” کلیک کرده و سپس روی “Connect a New Device” کلیک کنید.

ایجاد مجموعه داده برای تشخیص گفتار Arduino

اکنون در پنجره بعدی روی “Use your Mobile Phone” کلیک کرده و یک کد QR ظاهر می شود. کد QR را با تلفن همراه خود اسکن کرده یا URL داده شده را وارد کنید.

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

این کار تلفن شما را به استودیوی Edge Impulse متصل می کند.

استودیوی Edge Impulse

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

با اتصال تلفن خود به استودیوی Edge Impulse ، اکنون می توانید نمونه های خود را بارگیری کنید. برای بارگیری نمونه ها روی “Data acquisition” کلیک کنید. اکنون در صفحه Data acquisition نام برچسب را وارد کنید ، میکروفون را به عنوان یک سنسور انتخاب کرده و طول نمونه را وارد کنید. روی “Start sampling” کلیک کنید ، دستگاه شما یک نمونه 2 ثانیه ای را ضبط می کند. در شرایط مختلف میتوانید 10 تا 12 نمونه صوتی را ضبط کنید.

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

پس از بارگذاری نمونه ها، برچسب تغییر را تنظیم کرده و نمونه ها را برای کلاس “light off” و “light off” تنظیم کنید.

کار با دستورات صوتی آردوینو

در مراحل بعدی ، داده های تست را جمع آوری خواهیم کرد. داده های آزمون باید حداقل 30٪ از داده های آموزش باشد ، بنابراین 4 نمونه از “Noise” و 4 تا 5 نمونه را برای “LIGHT ON” و “LIGHT OFF” وارد کنید.

مدل آموزش فرمان های صوتی

به صفحه “Create impulse” بروید. تنظیمات پیش فرض اندازه ویندوز 1000 ms را به 1200 ms و 500 ms را به 50ms افزایش یابد.

اکنون در صفحه “Create impulse” روی “Add a processing block” کلیک کنید. در پنجره بعدی بلوک Audio MFCC را انتخاب کنید. پس از آن بر روی “Add a learning block” کلیک کنید و بلوک Neural Network Keras را انتخاب کنید. سپس بر روی “Save Impulse” کلیک کنید.

مدل آموزش فرمان های صوتی

در مرحله بعد به صفحه MFCC بروید و سپس روی “Generate Features” کلیک کنید. این بلوک MFCC را برای همه پنجره های صوتی ما تولید می کند.

صفحه MFCC

پس از آن به صفحه NN Classifier بروید و بر روی سه نقطه در گوشه سمت راست بالای «Neural Network settings» کلیک کنید و « Switch to Keras (expert) mode» را انتخاب کنید.

Switch to Keras (expert) mode

کد زیر را جایگزین کنید و “Minimum confidence rating” را به 0.70 تغییر دهید. سپس بر روی دکمه “Start training” کلیک کنید. این کار آموزش مدل شما را آغاز می کند.

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.constraints import MaxNorm
# model architecture
model = Sequential()
model.add(InputLayer(input_shape=(X_train.shape[1], ), name='x_input'))
model.add(Reshape((int(X_train.shape[1] / 13), 13, 1), input_shape=(X_train.shape[1], )))
model.add(Conv2D(10, kernel_size=5, activation='relu', padding='same', kernel_constraint=MaxNorm(3)))
model.add(AveragePooling2D(pool_size=2, padding='same'))
model.add(Conv2D(5, kernel_size=5, activation='relu', padding='same', kernel_constraint=MaxNorm(3)))
model.add(AveragePooling2D(pool_size=2, padding='same'))
model.add(Flatten())
model.add(Dense(classes, activation='softmax', name='y_pred', kernel_constraint=MaxNorm(3)))
# this controls the learning rate
opt = Adam(lr=0.005, beta_1=0.9, beta_2=0.999)
# train the neural network
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
model.fit(X_train, Y_train, batch_size=32, epochs=9, validation_data=(X_test, Y_test), verbose=2)

پس از آموزش مدل ، عملکرد آموزش (مطابقت صدای شما) را نشان می دهد. برای من، دقت 81.1٪ بود که عملکرد ایده آل نیست اما می توانیم با آن پیش برویم. با ایجاد یک مجموعه داده گسترده می توانید عملکرد مدل خود را افزایش دهید.

راه اندازی سیستم تشخیص صوت با Arduino

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

Live Classification

برای آزمایش داده ها با تلفن خود ، “Switch to Classification Mode” را از طریق تلفن خود انتخاب کنید.

کنترل وسایل AC با صدا

حال برای بارگیری مدل به عنوان کتابخانه Arduino، به صفحه “Deployment” بروید و “Arduino Library” را انتخاب کنید. اکنون به پایین بروید و بر روی “Build” کلیک کنید تا مراحل شروع شود. این کار یک کتابخانه Arduino برای پروژه شما ایجاد می کند.

ایجاد فرمان های صوتی برای کنترل وسایل

اکنون کتابخانه را در Arduino IDE خود اضافه کنید. برای نصب کتابخانه، Arduino IDE را باز کرده و Sketch > Include Library > Add.ZIP library بروید.

سپس با رفتن به File > Examples > Your project name – Edge Impulse > nano_ble33_sense_microphone یک نمونه بارگیری کنید.

کد تشخیص صدا با آردوینو

کد کامل پروژه در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا بعضی از قسمت های کد را توضیح میدهیم. برای کنترل LED باید تمام احتمالات فرمان را در سه متغیر مختلف ذخیره کنیم تا بتوانیم عبارات شرطی را بر روی آنها قرار دهیم. بنابراین با توجه به کد جدید اگر احتمال “Light On” بیشتر از 0.50 باشد ، LED را روشن می کند و اگر احتمال فرمان “Light Off” بیشتر از 0.50 باشد ، چراغ را خاموش می کند.

for (size_t ix = 2; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
    noise = result.classification[ix].value;
    Serial.println("Noise: ");
    Serial.println(noise);
    } 
    for (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix--) {
    lightoff = result.classification[ix].value;
    Serial.println("Light Off: ");
    Serial.print(lightoff);
    }
    lighton = 1- (noise +lightoff);
    Serial.println("Light ON: ");
    Serial.print(lighton);
    if (lighton > 0.50){
      digitalWrite(led, HIGH);
    }
    if (lightoff > 0.50){
      digitalWrite(led, LOW);
    }

پس از ایجاد تغییرات ، کد را در Arduino خود بارگذاری کنید. مانیتور سریال را با نرخ 115200 baud باز کنید.

کد برای تشخیص صدای آردوینو

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

موارد موجود در فایل : شماتیک کامل مدار ، سورس کامل

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

برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید.

برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام آیرنکس عضو شوید.

تصویر از محمد رحیمی

محمد رحیمی

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

7 نظر

  1. سلام و خسته نباشید. من میخوام چراغ ها پذیرایی یک خانه هنگام گفتن کلمه on روشن و هنگام گفتن کلمه off چراغ ها خاموش باشه و از برد Leonardo-R3 استفاده میخوام بکنم میشه یه توضیح بدید یا اگه آموزش خاص دیگه داره لینکش رو قرار بدید.خیلی ممنون

  2. سلام من مسیر رو کامل رفتم ولی هنگام کامپایل کردن ارور زیر رو به من میده
    Arduino: 1.8.13 (Windows 8.1), Board: “Arduino Nano, ATmega328P”
    nano_ble33_sense_microphone:3:10: fatal error: PDM.h: No such file or directory
    #include
    ^~~~~~~
    compilation terminated.
    exit status 1
    PDM.h: No such file or directory
    Board at COM3 is not available
    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    منظور ارور pdm رو متوجه نمیشم و ممنون میشم راهنمایی کنید

    1. سلام جناب، باید کتابخانه PDM.h رو نصب کنید.

  3. سلام.خسته نباشید.چطور می شه این پروژه رو با اردوینوی معمولی انجام داد؟ ممنون می شم جواب بدین.با تشکر

    1. سلام جناب، باید خودتون تست کنید به احتمال زیاد مشکلی پیش نمیاد

  4. با سلام
    وقتتون بخیر
    من برای یک پروژه نیاز دارم تا از پردازش صوت و ارتباط اون با آردوینو استفاده کنم.
    برای استفاده از میکروفون شما چه پیشنهادی رو به من میدید؟(به جز voice recognition module)
    ممنون

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

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