Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Διάγραμμα κυκλώματος
- Βήμα 2: Δημιουργία του Dataset για το μηχάνημα ανίχνευσης βήχα
- Βήμα 3: Σύνδεση στο κινητό τηλέφωνο
- Βήμα 4:
- Βήμα 5: Εκπαίδευση του μοντέλου και τροποποίηση του κώδικα
- Βήμα 6:
- Βήμα 7: Κωδικός
Βίντεο: Ανιχνευτής βήχα μεγέθους τσέπης: 7 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Ο COVID19 είναι πραγματικά μια ιστορική πανδημία που πλήττει πολύ άσχημα ολόκληρο τον κόσμο και οι άνθρωποι κατασκευάζουν πολλές νέες συσκευές για να το πολεμήσουν. Έχουμε επίσης κατασκευάσει ένα αυτόματο μηχάνημα απολύμανσης και θερμικό όπλο για έλεγχο θερμοκρασίας χωρίς επαφή. Σήμερα θα κατασκευάσουμε μια ακόμη συσκευή για να βοηθήσουμε στην καταπολέμηση του κορωνοϊού. Είναι ένα σύστημα ανίχνευσης βήχα, το οποίο μπορεί να κάνει διάκριση μεταξύ θορύβου και ήχου βήχα και μπορεί να βοηθήσει στην εύρεση ύποπτου Corona. Θα χρησιμοποιήσει τεχνικές μηχανικής μάθησης για αυτό.
Σε αυτό το σεμινάριο, πρόκειται να δημιουργήσουμε ένα σύστημα ανίχνευσης βήχα χρησιμοποιώντας το Arduino 33 BLE Sense και το Edge Impulse Studio. Μπορεί να κάνει διάκριση μεταξύ φυσιολογικού θορύβου φόντου και βήχα σε ήχο σε πραγματικό χρόνο. Χρησιμοποιήσαμε το Edge Impulse Studio για να εκπαιδεύσουμε ένα σύνολο δειγμάτων βήχα και θορύβου και να δημιουργήσουμε ένα εξαιρετικά βελτιστοποιημένο μοντέλο TInyML, το οποίο μπορεί να ανιχνεύσει έναν ήχο βήχα σε πραγματικό χρόνο.
Προμήθειες
Σκεύη, εξαρτήματα
- Arduino 33 BLE Sense
- LEDJumper
- Καλώδια
Λογισμικό
- Edge Impulse Studio
- Arduino IDE
Βήμα 1: Διάγραμμα κυκλώματος
Το διάγραμμα κυκλώματος για τον εντοπισμό βήχα χρησιμοποιώντας Arduino 33 BLE Sense δίνεται παραπάνω. Δεν ήταν διαθέσιμο το κομμάτι ψύξης για το Arduino 33 BLE, οπότε χρησιμοποίησα το Arduino Nano καθώς και τα δύο έχουν το ίδιο pin-out.
Το θετικό καλώδιο του LED συνδέεται με τον ψηφιακό ακροδέκτη 4 του Arduino 33 BLE sense και το αρνητικό καλώδιο συνδέεται με τον ακροδέκτη GND του Arduino.
Βήμα 2: Δημιουργία του Dataset για το μηχάνημα ανίχνευσης βήχα
Όπως αναφέρθηκε προηγουμένως, χρησιμοποιούμε το Edge Impulse Studio για να εκπαιδεύσουμε το μοντέλο ανίχνευσης βήχα. Για αυτό, πρέπει να συλλέξουμε ένα σύνολο δεδομένων που περιέχει τα δείγματα δεδομένων που θα θέλαμε να είναι σε θέση να αναγνωρίσουν στο Arduino μας. Δεδομένου ότι ο στόχος είναι να ανιχνευθεί ο βήχας, θα χρειαστεί να συλλέξετε μερικά δείγματα αυτού και κάποια άλλα δείγματα για θόρυβο, ώστε να μπορεί να διακρίνει μεταξύ Βήχα και άλλων Θορύβων. Θα δημιουργήσουμε ένα σύνολο δεδομένων με δύο κατηγορίες "βήχας" και "θόρυβος". Για να δημιουργήσετε ένα σύνολο δεδομένων, δημιουργήστε έναν λογαριασμό Edge Impulse, επαληθεύστε τον λογαριασμό σας και, στη συνέχεια, ξεκινήστε ένα νέο έργο. Μπορείτε να φορτώσετε τα δείγματα χρησιμοποιώντας το κινητό σας, τον πίνακα Arduino ή μπορείτε να εισαγάγετε ένα σύνολο δεδομένων στο λογαριασμό σας στο παλμό ακμής. Ο ευκολότερος τρόπος για να φορτώσετε τα δείγματα στο λογαριασμό σας είναι χρησιμοποιώντας το κινητό σας τηλέφωνο. Για αυτό, πρέπει να συνδέσετε το κινητό σας με το Edge Impulse. Για να συνδέσετε το κινητό σας τηλέφωνο, κάντε κλικ στο «Συσκευές» και στη συνέχεια κάντε κλικ στο «Σύνδεση νέας συσκευής».
Βήμα 3: Σύνδεση στο κινητό τηλέφωνο
Τώρα στο επόμενο παράθυρο, κάντε κλικ στο «Χρήση του κινητού σας τηλεφώνου» και θα εμφανιστεί ένας κωδικός QR. Σαρώστε τον κωδικό QR με το κινητό σας τηλέφωνο χρησιμοποιώντας το Google Lens ή άλλη εφαρμογή σάρωσης κωδικών QR.
Αυτό θα συνδέσει το τηλέφωνό σας με το στούντιο Edge Impulse.
Με το τηλέφωνό σας συνδεδεμένο με το Edge Impulse Studio, μπορείτε τώρα να φορτώσετε τα δείγματά σας. Για να φορτώσετε τα δείγματα, κάντε κλικ στο «Απόκτηση δεδομένων». Στη σελίδα συλλογής δεδομένων, εισαγάγετε το όνομα της ετικέτας, επιλέξτε το μικρόφωνο ως αισθητήρα και εισαγάγετε το μήκος δείγματος. Κάντε κλικ στο «Έναρξη δειγματοληψίας», για να ξεκινήσετε τη δειγματοληψία δείγματος 40 δευτερολέπτων. Αντί να αναγκάζεστε να βήχετε, μπορείτε να χρησιμοποιήσετε διαδικτυακά δείγματα βήχα διαφορετικού μήκους. Καταγράψτε συνολικά 10 έως 12 δείγματα βήχα διαφορετικού μήκους.
Βήμα 4:
Αφού ανεβάσετε τα δείγματα βήχα, τώρα ορίστε την ετικέτα σε «θόρυβο» και συλλέξτε άλλα 10 έως 12 δείγματα θορύβου.
Αυτά τα δείγματα είναι για την εκπαίδευση της ενότητας, στα επόμενα βήματα, θα συλλέξουμε τα δεδομένα δοκιμής. Τα δεδομένα δοκιμών πρέπει να αποτελούν τουλάχιστον το 30% των δεδομένων εκπαίδευσης, οπότε συλλέξτε τα 3 δείγματα «θορύβου» και 4 έως 5 δείγματα «βήχα». Αντί να συλλέξετε τα δεδομένα σας, μπορείτε να εισαγάγετε το σύνολο δεδομένων μας στον λογαριασμό σας Edge Impulse χρησιμοποιώντας το Edge Impulse CLI Uploader. Για να εγκαταστήσετε το CLI Uploader, κατεβάστε πρώτα και εγκαταστήστε το Node.js στο φορητό υπολογιστή σας. Στη συνέχεια, ανοίξτε τη γραμμή εντολών και εισαγάγετε την παρακάτω εντολή:
npm εγκατάσταση -g edge-impulse-cli
Τώρα κατεβάστε το σύνολο δεδομένων (Link Dataset) και εξαγάγετε το αρχείο στο φάκελο του έργου σας. Ανοίξτε τη γραμμή εντολών και μεταβείτε στη θέση δεδομένων και εκτελέστε τις παρακάτω εντολές:
edge-impulse-uploader --cleanedge-impulse-uploader-εκπαίδευση κατηγορίας/*. json
edge-impulse-uploader-εκπαίδευση κατηγορίας κατάρτισης/*. cbor
edge-impulse-uploader-δοκιμή δοκιμής κατηγορίας/*. json edge-impulse-uploader-δοκιμή δοκιμής κατηγορίας/*. cbor
Βήμα 5: Εκπαίδευση του μοντέλου και τροποποίηση του κώδικα
Καθώς το σύνολο δεδομένων είναι έτοιμο, τώρα θα δημιουργήσουμε μια ώθηση για δεδομένα. Για αυτό, μεταβείτε στη σελίδα "Δημιουργία ώθησης".
Τώρα στη σελίδα «Δημιουργία ώθησης», κάντε κλικ στο «Προσθήκη μπλοκ επεξεργασίας». Στο επόμενο παράθυρο, επιλέξτε το μπλοκ ioχος (MFCC). Στη συνέχεια, κάντε κλικ στο «Προσθήκη μπλοκ εκμάθησης» και επιλέξτε το μπλοκ Neural Network (Keras). Στη συνέχεια, κάντε κλικ στο «Save Impulse».
Στο επόμενο βήμα, μεταβείτε στη σελίδα MFCC και, στη συνέχεια, κάντε κλικ στο «Δημιουργία λειτουργιών». Θα δημιουργήσει μπλοκ MFCC για όλα τα παράθυρα ήχου μας.
Στη συνέχεια, μεταβείτε στη σελίδα "NN Classifier" και κάντε κλικ στις τρεις τελείες στην επάνω δεξιά γωνία των "Ρυθμίσεων νευρωνικού δικτύου" και επιλέξτε "Μετάβαση στη λειτουργία Keras (ειδικός)".
Αντικαταστήστε το πρωτότυπο με τον ακόλουθο κώδικα και αλλάξτε την «Ελάχιστη βαθμολογία εμπιστοσύνης» σε «0,70». Στη συνέχεια, κάντε κλικ στο κουμπί «Έναρξη προπόνησης». Θα ξεκινήσει να εκπαιδεύει το μοντέλο σας.
εισαγωγή tensorflow ως tffrom tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D from tensorflow.keras.optimonstrators 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 (Πυκνό (κλάσεις, ενεργοποίηση = 'softmax', name = 'y_pred', kernel_constraint = MaxNorm (3))) # αυτό ελέγχει το ρυθμό μάθησης opt = Adam (lr = 0,005, beta_ 1 = 0.9, beta_2 = 0.999) # εκπαιδεύστε το νευρωνικό δίκτυο, validation_data = (X_test, Y_test), verbose = 2)
Βήμα 6:
Μετά την εκπαίδευση του μοντέλου, θα δείξει την απόδοση της προπόνησης. Για μένα, η ακρίβεια ήταν 96,5% και η απώλεια ήταν 0,10 που είναι καλό να προχωρήσουμε.
Τώρα καθώς το μοντέλο ανίχνευσης βήχα είναι έτοιμο, θα αναπτύξουμε αυτό το μοντέλο ως βιβλιοθήκη Arduino. Πριν από τη λήψη του μοντέλου ως βιβλιοθήκη, μπορείτε να δοκιμάσετε την απόδοση μεταβαίνοντας στη σελίδα «Ζωντανή ταξινόμηση». Μεταβείτε στη σελίδα «Ανάπτυξη» και επιλέξτε «Βιβλιοθήκη Arduino». Τώρα μετακινηθείτε προς τα κάτω και κάντε κλικ στο «Build» για να ξεκινήσετε τη διαδικασία. Αυτό θα δημιουργήσει μια βιβλιοθήκη Arduino για το έργο σας.
Τώρα προσθέστε τη βιβλιοθήκη στο Arduino IDE. Για αυτό ανοίξτε το Arduino IDE και, στη συνέχεια, κάντε κλικ στο Sketch> Include Library> Add. ZIP Library. Στη συνέχεια, φορτώστε ένα παράδειγμα μεταβαίνοντας στο Αρχείο> Παραδείγματα> Το όνομα του έργου σας - Edge Impulse> nano_ble33_sense_microphone. Θα κάνουμε κάποιες αλλαγές στον κώδικα, ώστε να μπορούμε να κάνουμε έναν ήχο ειδοποίησης όταν το Arduino ανιχνεύσει βήχα. Για αυτό, ένας βομβητής διασυνδέεται με το Arduino και κάθε φορά που εντοπίζει βήχα, το LED θα αναβοσβήνει τρεις φορές. Οι αλλαγές πραγματοποιούνται στις λειτουργίες void loop () όπου εκτυπώνει τις τιμές θορύβου και βήχα. Στον αρχικό κώδικα, εκτυπώνει τόσο τις ετικέτες όσο και τις τιμές τους μαζί. για (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 και θα κάνει τον ήχο. Αντικαταστήστε τον πρωτότυπο για τον κωδικό βρόχου () με αυτό: για (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; εάν (Δεδομένα <0,50) {Serial.print ("Βήχας εντοπίστηκε"); τρομάζω(); }} Αφού κάνετε τις αλλαγές, ανεβάστε τον κώδικα στο Arduino σας. Ανοίξτε τη σειριακή οθόνη στο 115200 baud.
Έτσι, μπορεί να κατασκευαστεί μια μηχανή ανίχνευσης βήχα, δεν είναι μια πολύ αποτελεσματική μέθοδος για να βρείτε οποιοδήποτε ύποπτο για COVID19, αλλά μπορεί να λειτουργήσει όμορφα σε κάποια πολυσύχναστη περιοχή.
Βήμα 7: Κωδικός
Παρακαλώ βρείτε το συνημμένο αρχείο, Και αν σας άρεσε μην ξεχάσετε να με ψηφίσετε στον παρακάτω διαγωνισμό.
Συνιστάται:
Αντικλεπτικός συναγερμός μεγέθους τσέπης DIY!: 3 βήματα
DIY Pocket Sized Anti-Theft Alarm!: Μήπως κάποιος τσιμπάει τα πράγματά σας και δεν μπορείτε να βρείτε ποιος είναι; σε αυτό το διδακτικό θα σας δείξω πώς να κάνετε συναγερμό εισβολέα μεγέθους τσέπης
Γεννήτρια υδρογόνου/οξυγόνου μεγέθους τσέπης: 5 βήματα
Γεννήτρια υδρογόνου/οξυγόνου μεγέθους τσέπης: Το υδρογόνο είναι πολύ διασκεδαστικό, αλλά οι πιο αποδοτικές γεννήτριες είναι μεγάλες. Wantedθελα να φτιάξω κάτι που ήταν μικρό και θα μπορούσε να παράγει υδρογόνο. Αυτό το σεμινάριο θα σας δείξει πώς να φτιάξετε μια γεννήτρια υδρογόνου/οξυγόνου μεγέθους τσέπης. Δυστυχώς, δεν είναι
Τροχός κεραμικού μεγέθους τσέπης: 11 βήματα (με εικόνες)
Τροχός κεραμικού μεγέθους τσέπης: Η κατασκευή αγγείων είναι μια πραγματικά διασκεδαστική και ανταμείβουσα μορφή ψυχαγωγίας. Το μόνο πρόβλημα με την κεραμική είναι ότι απαιτούσε πολλά εφόδια και ένα μεγάλο στούντιο, ώστε να μην μπορείτε να το κάνετε πουθενά, μέχρι τώρα! Σε αυτό το σεμινάριο, θα σας δείξω πώς να φτιάξετε ένα
Ανιχνευτής μεγέθους τσέπης CO (μονοξείδιο του άνθρακα): 5 βήματα
Ανιχνευτής μεγέθους τσέπης CO (μονοξείδιο του άνθρακα): Όπως λέει και το όνομα, αυτός είναι ένας ανιχνευτής CO μεγέθους τσέπης που χρησιμοποιείται για την ανίχνευση μονοξειδίου του άνθρακα στον αέρα, στόχος μας ήταν να κάνουμε αυτή τη συσκευή φορητή και να ταιριάζει σε μέγεθος τσέπης. Τώρα με τις μέρες πρόβλημα ρύπανσης του αέρα λόγω εκβιομηχάνισης
Το πιο cool USB L.E.D. Φως μεγέθους τσέπης (είσοδος μεγέθους τσέπης): 6 βήματα
Το πιο cool USB L.E.D. Φως μεγέθους τσέπης (είσοδος μεγέθους τσέπης): Σε αυτό το Εγχειρίδιο, θα σας δείξω πώς να φτιάξετε ένα L.E.D. φως που μπορεί να διπλωθεί σε μέγεθος κασσίτερου X-it Mints και να χωρέσει εύκολα στην τσέπη σας. Αν σας αρέσει, φροντίστε να το κάνετε + και να με ψηφίσετε στο διαγωνισμό! Τα υλικά και