Cuprins:
- Provizii
- Pasul 1: Diagrama circuitului
- Pasul 2: Crearea setului de date pentru aparatul de detectare a tusei
- Pasul 3: Conectați-vă la telefonul mobil
- Pasul 4:
- Pasul 5: Instruirea modelului și modificarea codului
- Pasul 6:
- Pasul 7: Cod
Video: Detector de tuse de buzunar: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
COVID19 este într-adevăr o pandemie istorică care afectează întreaga lume foarte rău și oamenii construiesc o mulțime de dispozitive noi pentru a lupta cu ea. De asemenea, am construit o mașină de igienizare automată și un pistol termic pentru screeningul temperaturii fără contact. Astăzi vom construi încă un dispozitiv pentru a ajuta la lupta cu Coronavirus. Este un sistem de detectare a tusei, care poate distinge între zgomot și sunetul tusei și poate ajuta la găsirea suspectului Corona. Pentru aceasta, va folosi tehnici de învățare automată.
În acest tutorial, vom construi un sistem de detectare a tusei folosind Arduino 33 BLE Sense și Edge Impulse Studio. Poate diferenția între zgomotul normal de fundal și tusea în timp real. Am folosit Edge Impulse Studio pentru a instrui un set de date de tuse și probe de zgomot de fundal și pentru a construi un model TInyML extrem de optimizat, care poate detecta un sunet de tuse în timp real.
Provizii
Hardware
- Arduino 33 BLE Sense
- LEDJumper
- Fire
Software
- Edge Impulse Studio
- IDE Arduino
Pasul 1: Diagrama circuitului
Diagrama circuitului pentru detectarea tusei folosind Arduino 33 BLE Sense este prezentată mai sus. Partea Fritzing pentru Arduino 33 BLE nu era disponibilă, așa că am folosit Arduino Nano deoarece ambele au același pin-out.
Conductorul pozitiv al LED-ului este conectat la pinul digital 4 al Arduino 33 BLE sense iar cablul negativ este conectat la pinul GND al Arduino.
Pasul 2: Crearea setului de date pentru aparatul de detectare a tusei
Așa cum am menționat anterior, folosim Edge Impulse Studio pentru a ne antrena modelul de detectare a tusei. Pentru aceasta, trebuie să colectăm un set de date care conține mostre de date pe care am dori să le putem recunoaște pe Arduino. Deoarece scopul este detectarea tusei, va trebui să colectați câteva mostre din aceasta și alte probe pentru zgomot, astfel încât să poată distinge între tuse și alte zgomote. Vom crea un set de date cu două clase „tuse” și „zgomot”. Pentru a crea un set de date, creați un cont Edge Impulse, verificați-vă contul și apoi începeți un nou proiect. Puteți încărca eșantioanele folosind telefonul mobil, placa Arduino sau puteți importa un set de date în contul dvs. de impuls de margine. Cel mai simplu mod de a încărca probele în contul dvs. este prin utilizarea telefonului mobil. Pentru asta, trebuie să vă conectați telefonul mobil cu Edge Impulse. Pentru a vă conecta telefonul mobil, faceți clic pe „Dispozitive”, apoi faceți clic pe „Conectați un dispozitiv nou”.
Pasul 3: Conectați-vă la telefonul mobil
Acum, în fereastra următoare, faceți clic pe „Utilizați telefonul mobil” și va apărea un cod QR. Scanați codul QR cu telefonul mobil utilizând Google Lens sau altă aplicație de scanare a codului QR.
Acest lucru vă va conecta telefonul la studioul Edge Impulse.
Cu telefonul conectat la Edge Impulse Studio, puteți încărca acum mostrele. Pentru a încărca mostrele, faceți clic pe „Achiziție date”. Acum, pe pagina de achiziție de date, introduceți numele etichetei, selectați microfonul ca senzor și introduceți lungimea eșantionului. Faceți clic pe „Începe eșantionarea”, pentru a începe eșantionarea unui eșantion de 40 sec. În loc să te forțezi să tuși, poți folosi probe de tuse online de diferite lungimi. Înregistrați în total 10 până la 12 probe de tuse de diferite lungimi.
Pasul 4:
După încărcarea probelor de tuse, setați acum eticheta la „zgomot” și colectați alte 10 până la 12 probe de zgomot.
Aceste mostre sunt destinate instruirii modulului, în următorii pași, vom colecta datele de testare. Datele de testare trebuie să fie de cel puțin 30% din datele de antrenament, deci colectați cele 3 eșantioane de „zgomot” și 4 până la 5 eșantioane de „tuse”. În loc să colectați datele, puteți importa setul nostru de date în contul dvs. Edge Impulse folosind Edge Impulse CLI Uploader. Pentru a instala CLI Uploader, mai întâi, descărcați și instalați Node.js pe laptop. După aceea deschideți promptul de comandă și introduceți comanda de mai jos:
npm instala -g edge-impuls-cli
Acum descărcați setul de date (Link set de date) și extrageți fișierul din folderul proiectului. Deschideți promptul de comandă și navigați la locația setului de date și rulați comenzile de mai jos:
edge-impuls-uploader --cleanedge-impuls-uploader - instruire de formare categorie / *. json
edge-impuls-uploader --category training training / *. cbor
edge-impuls-uploader - testarea testelor de categorie / *. json edge-impuls-uploader - testarea testelor de categorie / *. cbor
Pasul 5: Instruirea modelului și modificarea codului
Deoarece setul de date este gata, acum vom crea un impuls pentru date. Pentru aceasta, accesați pagina „Creați impuls”.
Acum, pe pagina „Creați impuls”, faceți clic pe „Adăugați un bloc de procesare”. În fereastra următoare, selectați blocul Audio (MFCC). După aceea, faceți clic pe „Adăugați un bloc de învățare” și selectați blocul Neural Network (Keras). Apoi faceți clic pe „Salvați impulsul”.
În pasul următor, accesați pagina MFCC și apoi faceți clic pe „Generați caracteristici”. Acesta va genera blocuri MFCC pentru toate ferestrele noastre audio.
După aceea, accesați pagina „Clasificator NN” și faceți clic pe cele trei puncte din colțul din dreapta sus al „Setărilor rețelei neuronale” și selectați „Comutare la modul Keras (expert)”.
Înlocuiți originalul cu următorul cod și schimbați „Evaluarea minimă de încredere” la „0,70”. Apoi faceți clic pe butonul „Începeți antrenamentul”. Va începe să vă pregătiți modelul.
import tensorflow ca tffrom tensorflow.keras.models import Secvențial din tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D din tensorflow.keras.optimizers import Adam din tensorflow.keras.constraints 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))) # aceasta controlează rata de învățare opt = Adam (lr = 0,005, beta_ 1 = 0.9;, validare_date = (X_test, Y_test), detaliat = 2)
Pasul 6:
După antrenamentul modelului, acesta va arăta performanța antrenamentului. Pentru mine, precizia a fost de 96,5%, iar pierderea a fost de 0,10, ceea ce este bine să procedăm.
Acum, deoarece modelul nostru de detectare a tusei este gata, vom implementa acest model ca bibliotecă Arduino. Înainte de a descărca modelul ca bibliotecă, puteți testa performanța accesând pagina „Clasificare live”. Accesați pagina „Implementare” și selectați „Arduino Library”. Acum derulați în jos și faceți clic pe „Construiți” pentru a începe procesul. Aceasta va crea o bibliotecă Arduino pentru proiectul dvs.
Acum adăugați biblioteca în ID-ul dvs. Arduino. Pentru aceasta deschideți ID-ul Arduino și apoi faceți clic pe Sketch> Include Library> Add. ZIP library. Apoi, încărcați un exemplu accesând Fișier> Exemple> Numele proiectului dvs. - Edge Impulse> nano_ble33_sense_microphone. Vom face unele modificări în cod, astfel încât să putem emite un sunet de alertă atunci când Arduino detectează tuse. Pentru aceasta, un buzzer este interfațat cu Arduino și ori de câte ori detectează tuse, LED-ul va clipi de trei ori. Modificările sunt făcute în funcțiile void loop () în care se imprimă valorile de zgomot și tuse. În codul original, imprimă atât etichetele, cât și valorile lor împreună. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf ("% s:%.5f / n", result.classification [ix].label, result.classification [ix].value); } Vom salva atât valorile de zgomot și tuse în diferite variabile și vom compara valorile de zgomot. Dacă valoarea zgomotului scade sub 0,50, înseamnă că valoarea tusei este mai mare de 0,50 și va emite sunetul. Înlocuiți codul original pentru loop () cu acesta: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (Date <0,50) {Serial.print ("Tuse detectată"); alarma(); }} După efectuarea modificărilor, încărcați codul în Arduino. Deschideți monitorul serial la 115200 baud.
Deci, astfel se poate construi o mașină de detectare a tusei, nu este o metodă foarte eficientă pentru a găsi vreun suspect COVID19, dar poate funcționa frumos într-o zonă aglomerată.
Pasul 7: Cod
Vă rugăm să găsiți fișierul atașat, Și dacă ți-a plăcut nu uita să mă votezi în concursul de mai jos.
Recomandat:
Ceas DIY de buzunar: 9 pași
DIY Pocket Watch: În această lume aglomerată, trebuie să păstrezi o evidență a timpului pentru o performanță mai bună și să fii un pasionat de ce să nu faci un dispozitiv pentru a ține evidența timpului. Datorită tehnologiei există dispozitive numite „ceas”, dar! când faci lucrurile singur plăcerea
Vizualizator semnal de buzunar (osciloscop de buzunar): 10 pași (cu imagini)
Vizualizator de semnal de buzunar (osciloscop de buzunar): Bună ziua tuturor, cu toții facem atât de multe lucruri în fiecare zi. Pentru fiecare lucru acolo unde este nevoie de unele instrumente. Aceasta este pentru fabricarea, măsurarea, finisarea etc. Așadar, pentru lucrătorii electronici, au nevoie de instrumente precum lipitorul, multimetrul, osciloscopul etc
Detector de buzunar CO (monoxid de carbon): 5 pași
Detector de buzunar CO (monoxid de carbon): După cum spune numele, acesta este un detector de CO de dimensiuni de buzunar, care este utilizat pentru a detecta monoxidul de carbon în aer, scopul nostru a fost de a face acest dispozitiv portabil și care se potrivește în dimensiunea buzunarului. Acum câteva zile ne confruntăm problema poluării aerului datorată industrializării ev
DETECTOR ÎMBUNĂTĂȚIT DETECTOR PENTRU CAMERE SUBMĂRII: 7 pași (cu imagini)
ÎMBUNĂTĂȚIT DETECTOR DE SCURGERI PENTRU CAMERE SUBMARINE: O versiune anterioară a acestui detector de scurgere a carcasei camerei subacvatice a fost postată pe Instructables anul trecut, unde proiectarea s-a bazat pe un AdaFruit Trinket bazat pe Atmel AVR. Această versiune îmbunătățită folosește AdaFruit Trinket bazat pe Atmel SAMD M0. Acolo
Cel mai tare USB L.E.D. Lumina de buzunar (intrare de buzunar): 6 pași
Cel mai tare USB L.E.D. Lumină de dimensiuni de buzunar (intrare de dimensiuni de buzunar): În acest instructabil, vă voi arăta cum să realizați un L.E.D. lumină care se poate plia în dimensiunea unei cutii X-it Mints și se poate potrivi cu ușurință în buzunar. Dacă vă place, asigurați-vă că faceți + + și votați-mă la concurs! Materialele și