Përmbajtje:
- Furnizimet
- Hapi 1: Mbledhja e mostrave të tingullit të kuzhinës
- Hapi 2: Përgatitja e ekranit Arduino/Matrix
- Hapi 3: Drejtimi i Klasifikuesit dhe Identifikimi i Tingujve
- Hapi 4: Krijimi i një Strehimi LEGO
Video: Identifikuesi i tingullit të personalizuar të kuzhinës: 4 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:17
Për projektin tonë përfundimtar në një kurs sistemesh ndërvepruese këtë pranverë, ne krijuam një sistem në kohë reale për identifikimin dhe vizualizimin e tingujve të zakonshëm në kuzhinë duke përdorur klasifikimin Support-Vector Machine. Sistemi përbëhet nga një kompjuter portativ për marrjen e mostrave/klasifikimit audio dhe një ekran Arduino/matricë për vizualizim. Më poshtë është një udhëzues për krijimin e versionit tuaj të këtij sistemi për tingujt nga kuzhina juaj.
Rasti ynë origjinal i përdorimit ishte si një pajisje për kuzhinën e një personi të shurdhër dhe me vështirësi në dëgjim, por ky sistem teorikisht mund të përshtatet për të identifikuar një grup tingujsh në një sërë kontekstesh. Kuzhina ishte një vend ideal për të filluar, pasi tenton të jetë relativisht i qetë dhe përmban një sasi të arsyeshme të tingujve të thjeshtë, të dallueshëm.
Një depo GitHub për këtë projekt mund të gjendet këtu.
Furnizimet
- Mikrokontrolluesi Arduino Leonardo me kokë
- KEYESTUDIO 16x16 Dot Matrix LED ekran për Arduino
- Teli i kërcyesit të bukës
- Kabllo Micro-USB në USB 2.0
-
Një laptop me Jupyter Notebook (instalimi i Anaconda)
Një udhëzues fillestar për Fletoren Jupyter mund të gjendet këtu
-
Një sasi e konsiderueshme e tullave të papërputhshme LEGO për strehimin e sistemit
(Por me të vërtetë ju mund t'i zëvendësoni këto me çdo material ndërtimi DIY që dëshironi!)
Hapi 1: Mbledhja e mostrave të tingullit të kuzhinës
Figura më sipër: Të dhënat audio të marra nga regjistrimi i një piruni dhe një thike që përplasen së bashku duke përdorur këtë proces grumbullimi
Për të identifikuar tingujt në kohë reale, ne duhet të furnizojmë modelin tonë të mësimit të makinerisë me shembuj cilësor për krahasim. Ne krijuam një fletore Jupyter për këtë proces, e cila mund të arrihet këtu ose përmes depove të projektit tonë GitHub. Depoja gjithashtu përmban koleksione mostrash nga dy kuzhina të ndryshme për qëllime testimi.
Hapi 1.1: Kopjoni fletoren CollectSamples.ipynb në drejtorinë tuaj Fletore të punës Jupyter dhe hapeni atë.
Hapi 1.2: Drejtoni secilën qelizë një nga një, duke i kushtuar vëmendje çdo shënimi që kemi dhënë në tituj. Ndaloni kur të arrini një të titulluar "Regjistrimi i Mostrës".
SH NOTNIM: Disa biblioteka Python përdoren në këtë fletore, dhe secila kërkon instalim para se të mund të importohen me sukses në projekt. Jeni të mirëpritur ta bëni këtë me dorë, megjithëse një udhëzues për instalimin e bibliotekës brenda Jupyter Notebook mund të gjendet këtu.
Hapi 1.3: Krijoni një drejtori të zbrazët për të ruajtur mostrat tuaja brenda drejtorisë tuaj të punës për këtë projekt.
Hapi 1.4: Ndryshoni ndryshoren SAMPLES_LOCATION në qelizën "Regjistrimi i mostrës" që të përputhet me vendndodhjen e drejtorisë tuaj të zbrazët.
Hapi 1.5: Shtoni ose hiqni sa më shumë tinguj që dëshironi në ndryshoren SOUND_LABELS.
Në mënyrë që kodi i regjistrimit të funksionojë, çdo rresht i kësaj ndryshoreje duhet të ndahet me presje dhe me formën e mëposhtme:
'ts': Sound ("TargetedSound", "ts")
Hapi 1.6: Kur të gjitha etiketat janë shtuar, duke vlerësuar qelizën "Regjistrimi i Mostrës" me fillimin e procesit të grumbullimit të mostrës. Në daljen e qelizës, do t'ju kërkohet të futni kodin e shkurtër që keni lidhur me secilin tingull në etiketa (d.m.th., "ts" për TargetedSound). Mos e bëni këtë akoma.
Hapi 1.7: Merrni laptopin tuaj në kuzhinë dhe vendoseni në zonën ku ka shumë të ngjarë të vendosni sistemin e përfunduar. Ky vend duhet të jetë qendror për mbledhjen e mirë të audios, dhe të thatë dhe larg nga çdo derdhje e mundshme për të mbrojtur pajisjet elektronike.
Hapi 1.8: Përgatitni tingullin tuaj të parë të synuar. Nëse ky është një bip i kohëmatësit të furrës, mund ta vendosni kohëmatësin në një minutë dhe të prisni që ai të numërojë deri në 20 sekonda ose më shumë para se të vazhdoni në hapin tjetër.
Hapi 1.9: Shkruani kodin e etiketës në kërkesën (d.m.th., "ts") dhe shtypni Enter/Return.
Sistemi do të fillojë të dëgjojë për një ngjarje të shëndoshë të dallueshme nga zhurma e ambientit të dhomës. Me të ndjerë këtë ngjarje të shëndoshë, do të fillojë regjistrimin derisa të ndiejë se tingulli në dhomë është kthyer në nivelet e ambientit. Pastaj do të ruajë audion si një skedar WAV 16-bit në drejtorinë e identifikuar në SAMPLES_LOCATION në formatin:
TargetedSound _#_ kapur.wav
Pjesa # e këtij emri i skedarit korrespondon me numrin e mostrave të zërit të synuar që keni mbledhur. Pasi të ruhet skedari WAV, kërkesa do të përsëritet, duke ju lejuar të mblidhni disa mostra të të njëjtit tingull në një ekzekutim të vetëm të qelizës.
MOS e ndryshoni këtë emër skedari. Isshtë e rëndësishme për hapin tjetër.
Hapi 1.10: Përsëritni hapat 1.8 dhe 1.9 derisa të keni mbledhur 5-10 mostra të secilit tingull.
Hapi 1.11: Futni "x" kur të përfundoni për të dalë nga ekzekutimi.
KUJDES: Dështimi për të lënë qelinë në këtë mënyrë mund të shkaktojë prishjen e Fletores. Në këtë rast, kerneli i Notebook duhet të rivendoset dhe secila qelizë të funksionojë përsëri nga lart.
Hapi 1.11 (Opsionale): Kontrolloni të dhënat WAV të skedarëve individualë në qelizën "Vizualizimi i tingullit të shpejtë" për t'u siguruar që keni kapur të gjithë informacionin e dëshiruar.
Disa keshilla:
- Regjistroni kur kuzhina juaj është e qetë.
- Regjistroni vetëm një tingull menjëherë. Sistemi nuk mund të dallojë mbivendosjen në tinguj.
- Mundohuni ta bëni çdo provë të shëndoshë sa më të qëndrueshme që të jetë e mundur. Kjo do të ndihmojë në saktësinë e identifikimit.
- Rivlerësimi i qelizës së Regjistrimit do të rivendosë vlerën # në emrin e skedarit dhe do të rishkruajë çdo skedar ekzistues që përputhet me atë #. Ne e gjetëm më të lehtë të regjistronim të gjitha mostrat e një tingulli menjëherë, pastaj të ndalonim qelizën e Regjistrimit.
- Nëse sistemi nuk po merr zërin tuaj të synuar, provoni të ulni vlerën THRESHOLD (e vendosur në 30 për të filluar) dhe rivlerësoni qelizën.
- Nëse regjistrimi nxitet nga tinguj të tjerë jashtë atij të synuar, provoni të ngrini vlerën THRESHOLD (e vendosur në 30 për të filluar) dhe rivlerësoni qelizën.
Hapi 2: Përgatitja e ekranit Arduino/Matrix
Tjetra, ne do të vendosim sistemin e vizualizimit duke përdorur një ekran Arduino Leonardo dhe KEYESTUDIO 16x16 LED me pika. Kjo është për të nxjerrë parashikimin e modelit të klasifikimit të tingujve të zbuluar. Si më parë, ne kemi siguruar të gjithë skedarët e kërkuar si këtu ashtu edhe në depon e projektit GitHub.
Hapi 2.1: Lidhni matricën Arduino dhe LED sipas diagramit të mësipërm. KEYESTUDIO përfshin tela për t'u lidhur me matricën e tyre të pikave, por telat e kërcyesit do të nevojiten për t'i lidhur këto tela me Arduino
Hapi 2.2: Hapni "arduino_listener.ino" duke përdorur Ardunio IDE dhe ngarkojeni atë te Leonardo. Nëse lidheni siç duhet, duhet të shihni ikonën "duke dëgjuar" (duket si Wi-Fi) siç tregohet në imazhin e mësipërm.
Hapi 2.3: Përgatitni ikonat që dëshironi të shfaqni për secilin nga tingujt tuaj të synuar. Për të ditur se cilat LED duhet të ndizen, ikona duhet të dërgohet nga Arduino në matricë si një grup byte. Për shembull, ikona jonë e filxhanit të kafesë (në imazhin e mësipërm) dërgohet në matricë në këtë format:
{
0xff, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xbb, 0x5b, 0xeb, 0xfb, 0xfb, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf7, 0xfb, 0xfb, 0xfb, 0xfb, 0xf7, 0x0f, 0xdf, 0x1f, 0xff, 0xff};
Ne i vizatuam ikonat tona duke përdorur mjetin online Dot2Pic, me 16 kolona, 16 rreshta dhe "monokromatike, 8 piksele për bajt, cilësim vertikal" të zgjedhur nga menyja zbritëse. Tona mund të gjendet në grupin "sample_icon_bytes.txt".
SHENIM: Mund të ketë gjithashtu mjete në internet që mund ta bëjnë këtë automatikisht me skedarët e ngarkuar.
Hapi 2.4: Vizatoni secilën ikonë. Kur të përfundoni vizatimin, zgjidhni "Konverto në grup".
Hapi 2.5: Zëvendësoni ikonat e panevojshme të përcaktuara në krye të kodit "arduino_listening.ino" sipas dëshirës. Sigurohuni që të shtoni një koment që përshkruan ikonën, në mënyrë që të mbani mend se cili është cili!
Hapi 2.6: Ngarko kodin e ri në Arduino. Mos e mbyllni skedarin akoma, do të na duhet për hapin tjetër.
Hapi 3: Drejtimi i Klasifikuesit dhe Identifikimi i Tingujve
Tani është koha për të bashkuar sistemin. Tubacioni i klasifikimit, komunikimi Arduino dhe kapja e drejtpërdrejtë e zërit bëhet e gjitha përmes një fletoreje të vetme Arduino, e cila është siguruar këtu ose mund të arrihet përmes depove të projektit tonë GitHub.
Hapi 3.1: Kopjoni fletoren FullPipeline.ipynb në drejtorinë tuaj të punës të Fletoreve Jupyter dhe hapeni atë.
Hapi 3.2: Drejtoni secilën qelizë një nga një, duke i kushtuar vëmendje çdo shënimi që kemi dhënë në tituj. Asnjë prodhim nuk pritet. Ndaloni kur të arrini në qelizën me titull "Ngarko të dhënat e trajnimit".
Hapi 3.3: Ndryshoni ndryshoren SAMPLES_LOCATION_ROOT në qelizën "Ngarko të dhënat e trajnimit" në drejtorinë mëmë të vendndodhjes së mostrës suaj të mëparshme. Pastaj, ndryshoni ndryshoren SAMPLES_DIR_NAME në emrin e drejtorisë tuaj. Pra, nëse do të kishit vendosur vendndodhjen në CollectSamples.ipynb në:
SAMPLES_LOCATION = "/Përdoruesit/xxxx/Documents/KitchenSoundClassifier/MySamples/NewDir"
Tani do t'i vendosni këto ndryshore në:
SAMPLES_LOCATION_ROOT = "/Përdoruesit/xxxx/Documents/KitchenSoundClassifier/MySamples/" SAMPLES_DIR_NAME = "NewDir"
Ne e bëmë këtë të lejojë ndryshime të shpejta në klasifikuesin në rastet e pasaktësisë. Ju mund të kaloni midis koleksioneve të ndryshme të mostrave për të akorduar të dhënat tuaja.
Hapi 3.4: Vlerësoni qelizën. Ju duhet ta shihni secilin koleksion të ngarkuar me sukses.
Hapi 3.5: Vazhdoni të drejtoni secilën qelizë një nga një, duke i kushtuar vëmendje çdo shënimi që kemi dhënë në tituj.
Hapi 3.6: Ndaloni kur të arrini në qelizën "Messaging Arduino". Përcaktoni portin serik që kompjuteri juaj do të përdorë për komunikim me Arduino në ndryshoren PORT_DEF. Kjo mund të gjendet në Arduino IDE dhe duke shkuar te Tools> Port.
Më shumë informacion mund të gjeni këtu.
Hapi 3.8: Hapni sërish ID -në tuaj Arduino. Në vendet ku keni bërë ndryshime në ikonat, shënoni shkronjën pranë vlerës së grupit, por MOS e ndryshoni atë. Në shembullin më poshtë, kjo është "g".
// depozitimi i plehravecont char char g [1] [32] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf7, 0xf7, 0xfb, 0xff, 0xfe, 0xfd, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x27, 0xc3, 0x03, 0xc3, 0x27, 0x2f, 0xff, 0xef, 0xdf, 0xbf, 0xff, 0xff,};
Hapi 3.7: (Kthimi në qelizën "Messaging Arduino" të Fletores) Ndryshoni etiketat në fjalorin self.sounds që të përputhen me etiketat që keni përdorur në regjistrimin e mostrave tuaja, duke u siguruar që secila etiketë korrespondon me shkronjën e vetme që keni shënuar në të mëparshmen hap. "Regjistrimi" dhe "Dëgjimi" janë të dy pjesë e funksionalitetit bazë të sistemit dhe nuk duhet të ndryshohen. MOS ndryshoni shkronjën e dytë nëse nuk ndiheni të sigurt në bërjen e disa ndryshimeve shtesë në kodin Arduino gjithashtu, pasi përndryshe do të prishë komunikimin me Arduino/matricën.
Hapi 3.8: Drejtoni funksionin kryesor! Kodi do të marrë të dhënat e trajnimit, do të nxjerrë tiparet kryesore të tij, do t'i futë ato në tubacion, do të ndërtojë një model klasifikimi, pastaj do të fillojë të dëgjojë për ngjarje të shëndosha. Kur ndjen një, do të shihni që matrica të ndryshojë në një simbol regjistrimi (katror me rreth brenda) dhe do t'i segmentojë këto të dhëna dhe do t'i futë në model. Çfarëdo që parashikon modeli do të shfaqet disa sekonda më vonë në ekranin e matricës.
Ju mund të ndiqni në daljen e qelizës më poshtë. Shihni sa të saktë mund ta merrni!
Hapi 4: Krijimi i një Strehimi LEGO
Kjo është pjesa argëtuese! Ju keni bërë të gjitha hapat seriozë të mësimit të makinerisë dhe keni vënë në punë të gjithë sistemin nga njëra anë në tjetrën, dhe tani ju mund të luani me LEGO-të si shpërblim. Nuk ka shumë proces për të detajuar këtu. Ne vetëm shtuam blloqe që na pëlqyen aty këtu pa u shqetësuar shumë për modelin e përgjithshëm dhe përfunduam të kënaqur me mënyrën se si doli.
Lejoni që fotografitë tona të shërbejnë si frymëzim për shtëpinë tuaj krijuese unike për kuzhinën tuaj. Ne vendosëm Arduino dhe shumicën e instalimeve elektrike në një kuti të zbrazët, pastaj siguruam ekranin e matricës më sipër me mbivendosje. Ne shtuam pak letër mbi ekran për të shpërndarë dritën pak, e cila menduam se i bëri ikonat më të qarta.
Recommended:
Kohëmatësi i kuzhinës: 4 hapa
Kohëmatësi i Kuzhinës: Ky funksion përmban gen4-uLCD-35DT i cili do të përdoret si ekran dytësor për një projekt Raspberry Pi, Kohëmatësi i Kuzhinës. Shtë një aplikim i dobishëm për shumicën e nënave dhe entuziastëve të gatimit atje. Kjo mund të përdoret për të monitoruar kohën kur gatuani
Shkalla e Kuzhinës Arduino: 6 hapa (me fotografi)
Shkalla e Kuzhinës Arduino: Në këtë projekt do t'ju tregoj se si të ndërtoni një peshore të thjeshtë të kuzhinës me një mbyllje të printuar me porosi 3D
Ellie Ment Identifikuesi i Elementit: 4 Hapa
Ellie Ment Identifikuesi i Elementit: Ellie është një Roomba që është programuar të jetë në gjendje të zbulojë ngjyra të ndryshme duke përdorur kamerën e saj, kuptojeni nëse ajo po kalon një shkëmb në mënyrë që të ndalojë veten nga përmbysja dhe do të largohet nga rruga e pengesa kur parakolpët e saj godasin diçka
Kundër dritat e kuzhinës duke përdorur Arduino: 3 hapa
Kuzhina kundër dritave duke përdorur Arduino: Për ca kohë tani kam dashur të zhyt këmbët në automatizimin e shtëpisë. Vendosa të filloja me një projekt të thjeshtë. Fatkeqësisht, unë nuk kam bërë asnjë fotografi gjatë procesit, por kam përdorur një dërrasë për të testuar idetë e mia së pari, dhe vetëm e bashkova atë së bashku
Luajtësi i fshehur i kuzhinës Cd: 7 hapa
Luajtësi i fshehur i kuzhinës Cd: Kjo u bë në vend që të blini një nga ato nën luajtësin CD të kabinetit me të vërtetë të lirë. E tëra që ju nevojitet është një CD i vogël normal me përshtatësin e rrymës dhe disa altoparlantë të kompjuterit aq të fortë sa për ju