Mundarija:
- Ta'minotlar
- 1 -qadam: O'chirish diagrammasi
- 2 -qadam: Yo'talni aniqlash mashinasi uchun ma'lumotlar to'plamini yaratish
- 3 -qadam: Mobil telefonga ulanish
- 4 -qadam:
- 5 -qadam: Modelni o'rgatish va kodni o'zgartirish
- 6 -qadam:
- 7 -qadam: kod
Video: Yo'talni cho'ntak o'lchagichi: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
COVID19 haqiqatan ham butun dunyoga juda yomon ta'sir ko'rsatadigan tarixiy pandemiya va odamlar u bilan kurashish uchun ko'plab yangi qurilmalar yaratmoqdalar. Biz, shuningdek, kontaktsiz haroratni tekshirish uchun avtomatik sanitarizatsiya mashinasi va termal tabancani qurdik. Bugun biz koronavirus bilan kurashda yordam beradigan yana bir qurilma quramiz. Bu yo'talni aniqlash tizimi bo'lib, u shovqin va yo'tal tovushini ajrata oladi va koronadan gumonlanuvchini topishga yordam beradi. Buning uchun u mashinani o'rganish texnikasidan foydalanadi.
Ushbu qo'llanmada biz Arduino 33 BLE Sense va Edge Impulse Studio yordamida yo'talni aniqlash tizimini qurmoqchimiz. Haqiqiy vaqtda ovozda oddiy fon shovqini va yo'talni farqlash mumkin. Biz yo'tal va fon shovqinlari namunalari to'plamini o'rgatish va real vaqtda yo'tal ovozini aniqlaydigan TInyML modelini yaratish uchun Edge Impulse Studio-dan foydalandik.
Ta'minotlar
Uskuna
- Arduino 33 BLE Sense
- LEDJumper
- Simlar
Dasturiy ta'minot
- Edge Impulse studiyasi
- Arduino IDE
1 -qadam: O'chirish diagrammasi
Arduino 33 BLE Sense yordamida yo'talni aniqlash sxemasi yuqorida keltirilgan. Arduino 33 BLE uchun muzlatuvchi qism yo'q edi, shuning uchun men Arduino Nanodan foydalandim, chunki ikkalasi ham bir xil pinli.
LEDning ijobiy chizig'i Arduino 33 BLE sensorining 4 -raqamli piniga, Arduinoning GND piniga esa salbiy sim ulangan.
2 -qadam: Yo'talni aniqlash mashinasi uchun ma'lumotlar to'plamini yaratish
Yuqorida aytib o'tganimizdek, biz yo'talni aniqlash modelini o'rgatish uchun Edge Impulse Studio -dan foydalanmoqdamiz. Buning uchun biz Arduino -da tanib olishni istagan ma'lumotlar namunalari bo'lgan ma'lumotlar to'plamini yig'ishimiz kerak. Maqsad yo'talni aniqlash bo'lgani uchun siz shovqin uchun uning namunalarini va boshqa namunalarni to'plashingiz kerak bo'ladi, shuning uchun u yo'tal va boshqa shovqinlarni ajrata oladi. Biz ikkita "yo'tal" va "shovqin" sinfidan iborat ma'lumotlar to'plamini yaratamiz. Ma'lumotlar to'plamini yaratish uchun Edge Impulse hisobini yarating, hisobingizni tasdiqlang va keyin yangi loyihani boshlang. Siz namunalarni mobil telefoningiz, Arduino kartangiz yordamida yuklashingiz mumkin yoki ma'lumotlar to'plamini chekka impuls hisobingizga import qilishingiz mumkin. Namunalarni hisobingizga yuklashning eng oson usuli - mobil telefoningizdan foydalanish. Buning uchun siz Edge Impulse -ga mobil telefoningizni ulashingiz kerak. Mobil telefoningizni ulash uchun "Qurilmalar" ni bosing va "Yangi qurilmani ulash" ni bosing.
3 -qadam: Mobil telefonga ulanish
Endi keyingi oynada "Mobil telefoningizdan foydalanish" tugmasini bosing, shunda QR kod paydo bo'ladi. QR kodini Google Lens yoki boshqa QR -kod skaneri yordamida mobil telefoningiz bilan skanerlang.
Bu telefoningizni Edge Impulse studiyasi bilan bog'laydi.
Telefoningiz Edge Impulse Studio -ga ulangan bo'lsa, endi siz namunalaringizni yuklashingiz mumkin. Namunalarni yuklash uchun "Ma'lumot yig'ish" ni bosing. Endi Ma'lumotlarni olish sahifasida yorliq nomini kiriting, sensor sifatida mikrofonni tanlang va namuna uzunligini kiriting. 40 soniyali namuna olishni boshlash uchun "Namuna olishni boshlash" tugmasini bosing. O'zingizni yo'talishga majburlash o'rniga, turli uzunlikdagi onlayn yo'tal namunalarini ishlatishingiz mumkin. Har xil uzunlikdagi jami 10 dan 12 gacha yo'tal namunalarini yozib oling.
4 -qadam:
Yo'tal namunalarini yuklaganingizdan so'ng, yorliqni "shovqin" ga o'rnating va yana 10 dan 12 gacha shovqin namunasini yig'ing.
Bu namunalar modulni o'qitish uchun mo'ljallangan, keyingi bosqichlarda biz test ma'lumotlarini yig'amiz. Test ma'lumotlari mashg'ulot ma'lumotlarining kamida 30% bo'lishi kerak, shuning uchun 3 ta "shovqin" va 4-5 ta "yo'tal" namunalarini to'plang. Ma'lumotlaringizni yig'ish o'rniga Edge Impulse hisobingizga Edge yordamida ma'lumotlar bazasini import qilishingiz mumkin. CLI impulsli yuklovchi. CLI yuklovchisini o'rnatish uchun avval noutbukga Node.js faylini yuklab oling va o'rnating. Shundan so'ng, buyruq satrini oching va quyidagi buyruqni kiriting:
npm o'rnatish -g edge-impulse-cli
Endi ma'lumotlar bazasini yuklab oling (ma'lumotlar bazasi havolasi) va faylni loyiha papkasida chiqarib oling. Buyruqlar satrini oching va ma'lumotlar bazasi manziliga o'ting va quyidagi buyruqlarni bajaring:
chekka-impuls-yuklovchi-tozalovchi-impuls-yuklovchi-toifali trening treningi/*. json
chekka impuls-yuklovchi-toifali treninglar/*. cbor
chekka-impuls-yuklovchi-kategoriyaviy test sinovlari/*. json edge-impuls-uploader-toifali test sinovlari/*. cbor
5 -qadam: Modelni o'rgatish va kodni o'zgartirish
Ma'lumotlar bazasi tayyor bo'lgach, endi biz ma'lumotlar uchun impuls yaratamiz. Buning uchun "Impuls yaratish" sahifasiga o'ting.
Endi "Impuls yaratish" sahifasida "Qayta ishlash blokini qo'shish" ni bosing. Keyingi oynada Audio (MFCC) blokini tanlang. Shundan so'ng, "O'quv blokini qo'shish" ni bosing va Neural Network (Keras) blokini tanlang. Keyin "Impulse saqlash" ni bosing.
Keyingi bosqichda, MFCC sahifasiga o'ting va "Xususiyatlarni yaratish" ni bosing. Bu bizning barcha audio oynalarimiz uchun MFCC bloklarini yaratadi.
Shundan so'ng, "NN tasniflagichi" sahifasiga o'ting va "Neyron tarmoq sozlamalari" ning yuqori o'ng burchagidagi uchta nuqtani bosing va "Keras (ekspert) rejimiga o'tish" -ni tanlang.
Asl nusxasini quyidagi kod bilan almashtiring va "Minimal ishonch darajasi" ni "0,70" ga o'zgartiring. Keyin "Treningni boshlash" tugmasini bosing. Bu sizning modelingizni o'qitishni boshlaydi.
tensorflow.keras.modellardan tensorflow -ni import qilish tensorflow.keras.layer -dan ketma -ket import qilish Zich, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D dan tensorflow.keras.optimizstrain import. MaxNorm # modelli arxitektura modeli = 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 (Zich (sinflar, faollashtirish = 'softmax', ism = 'y_pred', kernel_constraint = MaxNorm) (3))) # bu o'rganish tezligini boshqaradi opt = Adam (lr = 0.005, beta_ 1 = 0.9, beta_2 = 0.999) # neyron tarmoq modelini o'rgating. Kompilyatsiya (loss = 'kategorik_krossentropiya', optimizator = opt, o'lchovlar = ['aniqlik']) model.fit (X_train, Y_train, batch_size = 32, davrlar = 9, validation_data = (X_test, Y_test), aniq = 2)
6 -qadam:
Modelni o'rgatgandan so'ng, u mashg'ulot natijalarini ko'rsatadi. Men uchun aniqlik 96,5% va yo'qotish 0,10 edi, bu davom ettirish uchun yaxshi.
Endi yo'talni aniqlash modeli tayyor bo'lgach, biz ushbu modelni Arduino kutubxonasi sifatida joylashtiramiz. Modelni kutubxona sifatida yuklab olishdan oldin, siz "Jonli tasnif" sahifasiga o'tib, ishlashini sinab ko'rishingiz mumkin. "Joylashtirish" sahifasiga o'ting va "Arduino kutubxonasi" ni tanlang. Endi pastga siljiting va jarayonni boshlash uchun "Build" tugmasini bosing. Bu sizning loyihangiz uchun Arduino kutubxonasini quradi.
Endi kutubxonani Arduino IDE -ga qo'shing. Buning uchun Arduino IDE -ni oching va Sketch> Kutubxonani qo'shish> Add. ZIP kutubxonasini bosing. Keyin, Fayl> Misollar> Loyihangiz nomi - Edge Impulse> nano_ble33_sense_microphone -ga o'tish orqali misolni yuklang. Biz kodga ba'zi o'zgartirishlar kiritamiz, shunda biz Arduino yo'talni aniqlaganda ogohlantirish ovozini chiqaramiz. Buning uchun ovozli signal Arduino bilan bog'langan va u yo'talni aniqlaganida, LED uch marta yonadi. O'zgarishlar void loop () funktsiyalarida amalga oshiriladi, u erda shovqin va yo'tal qiymatlari chop etiladi. Asl kodda u teglar va ularning qiymatlarini birgalikda chop etadi. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix]. label, result.classification [ix].value); } Biz shovqin va yo'tal qiymatlarini har xil o'zgaruvchilarda saqlaymiz va shovqin qiymatlarini solishtiramiz. Agar shovqin 0,50 dan past bo'lsa, demak yo'tal 0,50 dan oshadi va ovoz chiqaradi. Loop () kodining asl nusxasini bu bilan almashtiring: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (Ma'lumotlar <0,50) {Serial.print ("Yo'tal aniqlandi"); signal (); }} O'zgarishlarni kiritgandan so'ng, kodni Arduino -ga yuklang. Seriyali monitorni 115200 bodda oching.
Shunday qilib, yo'talni aniqlash apparati shunday qurilishi mumkin, bu har qanday COVID19 gumonlanuvchisini topishning juda samarali usuli emas, lekin u gavjum joylarda yaxshi ishlashi mumkin.
7 -qadam: kod
Iltimos, biriktirilgan faylni toping, Agar sizga yoqqan bo'lsa, quyidagi tanlovda menga ovoz berishni unutmang.
Tavsiya:
DIY cho'ntak soati: 9 qadam
DIY cho'ntak soati: Bu gavjum dunyoda, vaqtni kuzatib borish yaxshiroq ishlash va sevimli mashg'ulot bo'lish uchun nima uchun vaqtni kuzatib borish uchun asbob yasamaslik kerak. Texnologiya tufayli "soat" deb nomlangan qurilmalar mavjud, lekin! Agar siz o'zingizni biror narsa qilsangiz, zavq olasiz
DIY cho'ntak o'lchamli shahar kuchlanish o'lchagichi: 5 qadam
DIY cho'ntak o'lchovli shahar kuchlanish o'lchagichi: Men sizga ko'rsatma beraman, siz o'zingizning qo'lingiz bilan elektron cho'ntakli DC kuchlanish o'lchagichini piezo signal yordamida o'zingiz tekshirishingiz mumkin. Sizga kerak bo'lgan yagona narsa - elektronika bo'yicha asosiy bilimlar va ozgina vaqt. Agar sizda biron bir savol yoki muammo bo'lsa
Cho'ntak foydasiz quti (shaxsiyati bilan): 9 qadam (rasmlar bilan)
Cho'ntakning foydasiz qutisi (shaxsiyati bilan): Garchi biz robot qo'zg'olonidan ancha uzoqda bo'lsak ham, odamlarga zid bo'lgan bitta mashina bor, lekin u eng kichik darajada. Siz uni foydasiz quti yoki yolg'iz qoladigan mashina deb atashni xohlaysizmi, bu bema'ni va bema'ni robot
Cho'ntak signalizatori (cho'ntak osiloskopi): 10 qadam (rasmlar bilan)
Cho'ntak signalizatori (cho'ntak osiloskopi): Hammaga salom, biz har kuni juda ko'p ishlarni qilamiz. U erda har bir ish uchun ba'zi asboblar kerak bo'ladi. Bu ishlab chiqarish, o'lchash, pardozlash va hokazo uchun. Shunday qilib, elektron ishchilar uchun ularga lehimlantiruvchi temir, ko'p metrli, osiloskop va boshqalar kerak bo'ladi
Eng zo'r USB L.E.D. Cho'ntak o'lchamli yorug'lik (cho'ntak o'lchamli kirish): 6 qadam
Eng zo'r USB L.E.D. Cho'ntak o'lchamli yorug'lik (cho'ntak o'lchamli kirish): Ushbu yo'riqnomada men sizga USB orqali ishlaydigan L.E.D-ni qanday qilishni ko'rsataman. X-it Mint qalay o'lchamiga o'raladigan va cho'ntagingizga osongina sig'adigan yorug'lik. Agar sizga yoqqan bo'lsa, + belgisini qo'ying va tanlovda menga ovoz bering! Materiallar va