فهرست مطالب:
- تدارکات
- مرحله 1: نمودار مدار
- مرحله 2: ایجاد مجموعه داده برای دستگاه تشخیص سرفه
- مرحله 3: اتصال به تلفن همراه
- مرحله 4:
- مرحله 5: آموزش مدل و اصلاح کد
- مرحله 6:
- مرحله 7: کد
تصویری: آشکارساز سرفه جیبی: 7 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:52
COVID19 در واقع یک بیماری همه گیر تاریخی است که بر جهان بسیار بد تأثیر گذاشته است و مردم در حال ساخت بسیاری از دستگاه های جدید برای مبارزه با آن هستند. ما همچنین یک دستگاه ضدعفونی کننده خودکار و تفنگ حرارتی برای غربالگری دمای بدون تماس ساخته ایم. امروز ما یک دستگاه دیگر برای کمک به مبارزه با ویروس کرونا خواهیم ساخت. این یک سیستم تشخیص سرفه است که می تواند بین سر و صدا و صدای سرفه تمایز قائل شود و می تواند به یافتن فرد مشکوک به کرونا کمک کند. برای این منظور از تکنیک های یادگیری ماشین استفاده خواهد کرد.
در این آموزش ، ما قصد داریم یک سیستم تشخیص سرفه با استفاده از Arduino 33 BLE Sense و Edge Impulse Studio بسازیم. این می تواند بین سر و صدای معمولی پس زمینه و سرفه در صدای زمان واقعی تمایز قائل شود. ما از Edge Impulse Studio برای آموزش مجموعه ای از نمونه های سرفه و سر و صدای پس زمینه و ایجاد یک مدل TInyML بسیار بهینه استفاده کردیم ، که می تواند صدای سرفه را در زمان واقعی تشخیص دهد.
تدارکات
سخت افزار
- آردوینو 33 BLE Sense
- بلوز LED
- سیم ها
نرم افزار
- استودیو Edge Impulse
- آردوینو IDE
مرحله 1: نمودار مدار
نمودار مدار برای تشخیص سرفه با استفاده از Arduino 33 BLE Sense در بالا آورده شده است. قسمت فریتینگ برای Arduino 33 BLE در دسترس نبود ، بنابراین من از آردوینو نانو استفاده کردم زیرا هر دو دارای پین کردن یکسانی هستند.
سربی مثبت LED به پین دیجیتال 4 حس Arduino 33 BLE و سرب منفی به پین GND آردوینو متصل است.
مرحله 2: ایجاد مجموعه داده برای دستگاه تشخیص سرفه
همانطور که قبلاً ذکر شد ، ما از Edge Impulse Studio برای آموزش مدل تشخیص سرفه خود استفاده می کنیم. برای این کار ، ما باید مجموعه داده ای را جمع آوری کنیم که دارای نمونه های داده ای باشد که می خواهیم در Arduino خود بتوانیم آنها را تشخیص دهیم. از آنجا که هدف تشخیص سرفه است ، باید نمونه هایی از آن و برخی نمونه های دیگر را برای سر و صدا جمع آوری کنید ، بنابراین می تواند بین سرفه و سایر صداها تمایز قائل شود. ما یک مجموعه داده با دو کلاس "سرفه" و "سر و صدا" ایجاد می کنیم. برای ایجاد یک مجموعه داده ، یک حساب Edge Impulse ایجاد کنید ، حساب خود را تأیید کنید و سپس یک پروژه جدید را شروع کنید. می توانید نمونه ها را با استفاده از تلفن همراه خود ، برد Arduino خود بارگیری کنید یا می توانید یک مجموعه داده را به حساب impulse edge خود وارد کنید. ساده ترین راه برای بارگذاری نمونه ها در حساب شما استفاده از تلفن همراه است. برای این کار ، باید تلفن همراه خود را با Edge Impulse متصل کنید. برای اتصال تلفن همراه خود ، روی "Devices" و سپس روی "Connect a New Device" کلیک کنید.
مرحله 3: اتصال به تلفن همراه
اکنون در پنجره بعدی ، روی "Use your Mobile Phone" کلیک کنید ، و یک کد QR ظاهر می شود. با استفاده از Google Lens یا سایر برنامه های اسکن کننده کد QR ، کد QR را با تلفن همراه خود اسکن کنید.
با این کار تلفن شما به استودیو Edge Impulse متصل می شود.
با اتصال تلفن خود به Edge Impulse Studio ، اکنون می توانید نمونه های خود را بارگیری کنید. برای بارگیری نمونه ها ، روی "جمع آوری داده" کلیک کنید. اکنون در صفحه جمع آوری داده ها ، نام برچسب را وارد کنید ، میکروفون را به عنوان حسگر انتخاب کنید و طول نمونه را وارد کنید. برای شروع نمونه برداری از نمونه 40 ثانیه ای ، روی "شروع نمونه برداری" کلیک کنید. به جای اینکه خود را مجبور به سرفه کنید ، می توانید از نمونه های سرفه آنلاین با طول های مختلف استفاده کنید. در مجموع 10 تا 12 نمونه سرفه با طول های مختلف ثبت کنید.
مرحله 4:
پس از بارگذاری نمونه های سرفه ، برچسب "سر و صدا" را تنظیم کرده و 10 تا 12 نمونه سر و صدا دیگر جمع آوری کنید.
این نمونه ها برای آموزش ماژول است ، در مراحل بعدی ، داده های تست را جمع آوری می کنیم. داده های آزمایش باید حداقل 30 of از داده های آموزشی باشد ، بنابراین 3 نمونه "سر و صدا" و 4 تا 5 نمونه "سرفه" را جمع آوری کنید. به جای جمع آوری داده های خود ، می توانید مجموعه داده ما را با استفاده از Edge به حساب Edge Impulse خود وارد کنید Impulse CLI Uploader. برای نصب CLI Uploader ، ابتدا Node.js را در لپ تاپ خود بارگیری و نصب کنید. پس از آن خط فرمان را باز کرده و دستور زیر را وارد کنید:
npm install -g edge-impulse-cli
اکنون مجموعه داده (Link Dataset) را بارگیری کرده و فایل را در پوشه پروژه خود استخراج کنید. خط فرمان را باز کنید و به پایگاه داده بروید و دستورات زیر را اجرا کنید:
edge-impulse-uploader --cleanedge-impulse-uploader-آموزش آموزش دسته بندی/*. json
edge-impulse-uploader-آموزش آموزش دسته/*. cbor
edge-impulse-uploader-تست تست دسته/*. json edge-impulse-uploader-تست دسته بندی test/*. cbor
مرحله 5: آموزش مدل و اصلاح کد
با آماده شدن مجموعه داده ، اکنون ما یک ضربه برای داده ها ایجاد می کنیم. برای این کار به صفحه "ایجاد انگیزه" بروید.
اکنون در صفحه "ایجاد ضربه" ، روی "افزودن بلوک پردازش" کلیک کنید. در پنجره بعدی ، بلوک Audio (MFCC) را انتخاب کنید. پس از آن بر روی "افزودن یک بلوک آموزشی" کلیک کنید و بلوک شبکه عصبی (Keras) را انتخاب کنید. سپس بر روی "Save Impulse" کلیک کنید.
در مرحله بعد ، به صفحه MFCC بروید و سپس روی "ایجاد ویژگی ها" کلیک کنید. این بلوک های MFCC را برای همه پنجره های صوتی ما ایجاد می کند.
پس از آن به صفحه "طبقه بندی NN" بروید و روی سه نقطه در گوشه سمت راست بالای "تنظیمات شبکه عصبی" کلیک کنید و "تغییر به حالت Keras (متخصص)" را انتخاب کنید.
کد زیر را جایگزین اصلی کرده و "حداقل درجه اطمینان" را به "0.70" تغییر دهید. سپس بر روی دکمه "شروع آموزش" کلیک کنید. شروع به آموزش مدل شما می کند.
import tensorflow as tffrom tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense، InputLayer، Dropout، Flatten، Reshape، BatchNormalization، Conv2D، MaxPooling2D، AveragePooling2D from tensorflow.keras.optimizers واردات Adamx MaxNorm # model model model = Sequential () model.add (InputLayer (input_shape = (X_train.shape [1]،)، name = 'x_input')) model.add (تغییر شکل ((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 (متراکم (کلاسها ، فعالسازی = 'softmax'، name = 'y_pred'، kernel_constraint = MaxNorm (3))) # این میزان یادگیری opt = Adam را کنترل می کند (lr = 0.005 ، بتا_ 1 = 0.9 ، بتا_2 = 0.999) # آموزش شبکه عصبی ، validation_data = (X_test ، Y_test) ، مفصل = 2)
مرحله 6:
پس از آموزش مدل ، عملکرد آموزش را نشان می دهد. برای من ، دقت 96.5 and و ضرر 0.10 بود که برای ادامه کار خوب است.
اکنون که مدل تشخیص سرفه ما آماده است ، ما این مدل را به عنوان کتابخانه آردوینو مستقر می کنیم. قبل از بارگیری مدل به عنوان کتابخانه ، می توانید عملکرد را با رفتن به صفحه "طبقه بندی زنده" آزمایش کنید. به صفحه "استقرار" بروید و "کتابخانه آردوینو" را انتخاب کنید. اکنون به پایین بروید و روی "Build" کلیک کنید تا روند شروع شود. این یک کتابخانه آردوینو برای پروژه شما ایجاد می کند.
حالا کتابخانه را در Arduino IDE خود اضافه کنید. برای این کار Arduino IDE را باز کنید و سپس روی Sketch> Include Library> Add. ZIP library کلیک کنید. سپس ، یک مثال را با رفتن به مسیر File> Examples> Your project - Edge Impulse> nano_ble33_sense_microphone بارگذاری کنید. ما برخی تغییرات را در کد ایجاد می کنیم تا بتوانیم هنگام آردوینو سرفه را تشخیص دهیم. برای این کار ، یک زنگ با Arduino وصل می شود و هر زمان که سرفه را تشخیص دهد ، LED سه بار چشمک می زند. تغییرات در توابع حلقه خالی () در جایی که مقادیر نویز و سرفه را چاپ می کند ، اعمال می شود. در کد اصلی ، هر دو برچسب و مقادیر آنها را با هم چاپ می کند. برای (size_t ix = 0؛ ix <EI_CLASSIFIER_LABEL_COUNT؛ ix ++) {ei_printf ("٪ s:٪.5f / n"، result.classification [ix].label، result.classification [ix].value)؛ } ما قصد داریم هر دو مقدار سر و صدا و سرفه را در متغیرهای مختلف ذخیره کنیم و مقادیر نویز را مقایسه کنیم. اگر مقدار سر و صدا به زیر 0.50 برسد ، به این معنی است که مقدار سرفه بیش از 0.50 است و صدا را ایجاد می کند. کد اصلی حلقه () را با این جایگزین کنید: for (size_t ix = 1؛ ix <EI_CLASSIFIER_LABEL_COUNT؛ ix ++) {Serial.print (result.classification [ix].value)؛ float Data = result.classification [ix].value؛ if (اطلاعات <0.50) {Serial.print ("سرفه تشخیص داده شد") ؛ زنگ خطر. هشدار()؛ }} پس از اعمال تغییرات ، کد را در Arduino خود بارگذاری کنید. مانیتور سریال را در 115200 baud باز کنید.
بنابراین به این ترتیب می توان یک دستگاه تشخیص سرفه ساخت ، این روش چندان موثری برای یافتن مشکوک به COVID19 نیست ، اما می تواند در مناطق شلوغ به خوبی کار کند.
مرحله 7: کد
لطفا فایل پیوست را پیدا کنید ،
و اگر دوست داشتید فراموش نکنید که در مسابقه زیر به من رای دهید.
توصیه شده:
ساعت جیبی DIY: 9 مرحله
ساعت جیبی DIY: در این دنیای شلوغ ، ردیابی زمان برای عملکرد بهتر و علاقه مندان ضروری است ، چرا دستگاهی برای پیگیری زمان تهیه نکنید. به لطف فناوری ، دستگاه هایی به نام "ساعت" وجود دارد اما! وقتی همه چیز را به تنهایی لذت می برید
اندازه گیری ولتاژ اندازه جیبی DIY: 5 مرحله
اندازه گیری ولتاژ DC اندازه جیبی DIY: در این مقاله به شما نشان می دهم که چگونه می توانید ولتاژ DC اندازه جیب DIY را با زنگ پیزو برای بررسی مدار توسط خودتان بسازید. تنها چیزی که نیاز دارید دانش اولیه در زمینه الکترونیک و کمی زمان است. اگر س questionال یا مشکلی دارید می توانید
تصویر ساز سیگنال جیبی (اسیلوسکوپ جیبی): 10 مرحله (همراه با تصاویر)
تجسم کننده سیگنال جیبی (اسیلوسکوپ جیبی): سلام به همگی ، همه ما روزانه کارهای زیادی انجام می دهیم. برای هر کاری که در آن نیاز به برخی از ابزار وجود دارد. این برای ساخت ، اندازه گیری ، اتمام و غیره است. بنابراین برای کارگران الکترونیکی ، آنها به ابزارهایی مانند آهن لحیم کاری ، چند متر ، اسیلوسکوپ و غیره نیاز دارند
آشکارساز اندازه جیبی (مونوکسید کربن): 5 مرحله
آشکارساز اندازه جیبی (مونوکسید کربن): همانطور که از نامش مشخص است ، این یک آشکارساز CO با اندازه جیبی است که برای تشخیص مونوکسید کربن در هوا استفاده می شود ، هدف ما این بود که این دستگاه را قابل حمل کنیم و در اندازه جیب جا می گیرد. در حال حاضر چند روز با مشکل آلودگی هوا ناشی از صنعتی شدن
آشکارساز دود IOT: آشکارساز دود موجود را با IOT به روز کنید: 6 مرحله (همراه با تصاویر)
آشکارساز دود IOT: آشکارساز دود موجود را با IOT به روز کنید: فهرست مشارکت کنندگان ، مخترع: Tan Siew Chin ، Tan Yit Peng ، Tan Wee Heng ناظر: دکتر Chia Kim Seng گروه مهندسی مکاترونیک و رباتیک ، دانشکده مهندسی برق و الکترونیک ، Universiti Tun حسین اونن مالزی. توزیع