Πίνακας περιεχομένων:

IOT Heart Rate Monitor (ESP8266 και Android App): 5 βήματα
IOT Heart Rate Monitor (ESP8266 και Android App): 5 βήματα

Βίντεο: IOT Heart Rate Monitor (ESP8266 και Android App): 5 βήματα

Βίντεο: IOT Heart Rate Monitor (ESP8266 και Android App): 5 βήματα
Βίντεο: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Ιούλιος
Anonim
Image
Image

Ως μέρος του έργου του τελευταίου έτους, ήθελα να σχεδιάσω μια συσκευή που θα παρακολουθεί τον καρδιακό σας ρυθμό, θα αποθηκεύει τα δεδομένα σας σε έναν διακομιστή και θα σας ειδοποιεί μέσω ειδοποιήσεων όταν ο καρδιακός σας ρυθμός ήταν ανώμαλος. Η ιδέα πίσω από αυτό το έργο ήρθε όταν προσπάθησα να δημιουργήσω μια εφαρμογή fit-bit που ειδοποιεί έναν χρήστη όταν αντιμετωπίζει καρδιακό πρόβλημα, αλλά δεν μπόρεσα να βρω έναν τρόπο χρήσης πληροφοριών σε πραγματικό χρόνο. Το έργο έχει τέσσερα κύρια μέρη συμπεριλαμβανομένου του φυσικού κυκλώματος για τη μέτρηση του καρδιακού παλμού, μια μονάδα Wi-Fi ESP8266 με κωδικό επεξεργασίας σήματος, τον διακομιστή για την αποθήκευση του κώδικα και μια εφαρμογή Android για την εμφάνιση του καρδιακού ρυθμού.

Ένα βίντεο που περιγράφει λεπτομερώς το φυσικό κύκλωμα μπορείτε να το δείτε παραπάνω. Όλος ο κώδικας για το έργο μπορεί να βρεθεί στο Github μου.

Βήμα 1: Το κύκλωμα

Το Κύκλωμα
Το Κύκλωμα

Υπάρχουν δύο κύριες μέθοδοι για τη μέτρηση του καρδιακού παλμού, αλλά για αυτό το έργο αποφάσισα να χρησιμοποιήσω φωτοπληθυσμογραφία (PPG) που χρησιμοποιεί μια πηγή υπέρυθρου ή κόκκινου φωτός η οποία διαθλάται μέσω των πρώτων στρωμάτων του δέρματος. Ένας αισθητήρας φωτογραφιών χρησιμοποιείται για τη μέτρηση της αλλαγής στην ένταση του φωτός (όταν το αίμα ρέει μέσα από ένα αγγείο). Τα σήματα PPG είναι απίστευτα θορυβώδη, οπότε χρησιμοποίησα ένα φίλτρο μπάντας για να φιλτράρω τις συγκεκριμένες συχνότητες που απαιτούνται. Η ανθρώπινη καρδιά χτυπά μεταξύ 1 και 1,6 Hz συχνότητας. Το op-amp που χρησιμοποίησα ήταν το lm324 που είχε την καλύτερη μετατόπιση τάσης από όλα τα op-amp που ήταν διαθέσιμα σε μένα. Εάν αναδημιουργείτε αυτό το έργο, τότε ένας ενισχυτής ακριβείας θα ήταν πολύ καλύτερη επιλογή.

Χρησιμοποιήθηκε κέρδος μόνο δύο επειδή η μέγιστη ανοχή τάσης στο ESP8266 είναι 3,3v και δεν ήθελα να καταστρέψω την πλακέτα μου!

Ακολουθήστε το παραπάνω κύκλωμα και προσπαθήστε να το ενεργοποιήσετε σε μια σανίδα ψωμιού. Εάν δεν έχετε παλμογράφο στο σπίτι, μπορείτε να συνδέσετε την έξοδο σε ένα Arduino και να το σχεδιάσετε, αλλά βεβαιωθείτε ότι η τάση δεν είναι υψηλότερη από την ανοχή του arduino ή του μικροελεγκτή.

Το κύκλωμα δοκιμάστηκε σε μια σανίδα ψωμιού και μια αλλαγή στην έξοδο παρατηρήθηκε όταν ένα δάχτυλο τοποθετήθηκε στο LED και το τρανζίστορ φωτογραφιών. Τότε αποφάσισα να κολλήσω μαζί τον πίνακα που δεν εμφανίστηκε στο βίντεο.

Βήμα 2: Ο κώδικας επεξεργασίας σημάτων και οι επικοινωνίες διακομιστή

Image
Image
Ο κώδικας επεξεργασίας σημάτων και οι επικοινωνίες διακομιστή
Ο κώδικας επεξεργασίας σημάτων και οι επικοινωνίες διακομιστή

Αποφάσισα να χρησιμοποιήσω το Arduino IDE στο ESP8266 επειδή είναι τόσο εύκολο στη χρήση. Όταν σχεδιάστηκε το σήμα ήταν ακόμα πολύ θορυβώδες, έτσι αποφάσισα να το καθαρίσω με ένα φίλτρο κινητού μέσου όρου FIR με αριθμό δείγματος δέκα. Τροποποίησα ένα παράδειγμα προγράμματος Arduino που ονομάζεται "smoothing" για να γίνει αυτό. Πειραματίστηκα λίγο για να βρω έναν τρόπο μέτρησης της συχνότητας του σήματος. Οι παλμοί ήταν διαφορετικού μήκους και πλάτους λόγω της καρδιάς που είχε τέσσερις διαφορετικούς τύπους παλμών και των χαρακτηριστικών των σημάτων PPG. Επέλεξα μια γνωστή μεσαία τιμή που το σήμα διέσχιζε πάντα ως σημείο αναφοράς για κάθε παλμό. Χρησιμοποίησα ένα ρυθμιστικό δακτυλίου για να προσδιορίσω πότε η κλίση του σήματος ήταν θετική ή αρνητική. Ο συνδυασμός αυτών των δύο μου επέτρεψε να υπολογίσω την περίοδο μεταξύ των παλμών όταν το σήμα ήταν θετικό και ήταν ίσο με μια συγκεκριμένη τιμή.

Το λογισμικό παρήγαγε ένα αρκετά ανακριβές BPM το οποίο δεν μπορούσε να χρησιμοποιηθεί στην πραγματικότητα. Με πρόσθετες επαναλήψεις θα μπορούσε να σχεδιαστεί ένα καλύτερο πρόγραμμα, αλλά λόγω χρονικών περιορισμών αυτό δεν ήταν επιλογή. Μπορείτε να βρείτε τον κωδικό στον παρακάτω σύνδεσμο.

Λογισμικό ESP8266

Βήμα 3: Ο διακομιστής και οι επικοινωνίες δεδομένων

Ο διακομιστής και οι επικοινωνίες δεδομένων
Ο διακομιστής και οι επικοινωνίες δεδομένων

Αποφάσισα να χρησιμοποιήσω το Firebase για να αποθηκεύσω τα δεδομένα καθώς είναι μια δωρεάν υπηρεσία και είναι πολύ εύκολο στη χρήση με εφαρμογές για κινητά. Δεν υπάρχει επίσημο API για το Firebase με το ESP8266, αλλά διαπίστωσα ότι η βιβλιοθήκη Arduino λειτούργησε πολύ καλά.

Υπάρχει ένα παράδειγμα προγράμματος που μπορείτε να βρείτε στη βιβλιοθήκη ESP8266WiFi.h το οποίο σας επιτρέπει να συνδεθείτε σε ένα δρομολογητή με το SSID και τον κωδικό πρόσβασης. Αυτό χρησιμοποιήθηκε για τη σύνδεση της πλακέτας στο Διαδίκτυο, ώστε να μπορούν να σταλούν δεδομένα.

Παρόλο που η αποθήκευση δεδομένων έγινε εύκολα, εξακολουθούν να υπάρχουν πολλά ζητήματα με την αποστολή των ειδοποιήσεων push μέσω αιτήματος POST HTTP. Βρήκα ένα σχόλιο στο Github που χρησιμοποίησε μια παλιά μέθοδο για να το κάνει αυτό μέσω μηνυμάτων Google cloud και της βιβλιοθήκης HTTP για το ESP8266. Αυτή η μέθοδος φαίνεται στον κώδικα στο Github μου.

Στο Firebase δημιούργησα ένα έργο και χρησιμοποίησα το API και τα κλειδιά εγγραφής στο λογισμικό. Τα μηνύματα σύννεφων firebase χρησιμοποιήθηκαν με την εφαρμογή για την αποστολή ειδοποιήσεων push στον χρήστη. Όταν δοκιμάστηκαν οι επικοινωνίες, τα δεδομένα ήταν ορατά στη βάση δεδομένων ενώ λειτουργούσε το ESP8266.

Βήμα 4: Η εφαρμογή Android

Η εφαρμογή Android
Η εφαρμογή Android

Μια πολύ βασική εφαρμογή Android σχεδιάστηκε με δύο δραστηριότητες. Η πρώτη δραστηριότητα συνδέθηκε με τον χρήστη ή τον κατέγραψε χρησιμοποιώντας το API του Firebase. Ερεύνησα το φύλλο δεδομένων και βρήκα διάφορα σεμινάρια για τον τρόπο χρήσης του Firebase με μια εφαρμογή για κινητά. Η κύρια δραστηριότητα που έδειξε στον χρήστη δεδομένων των χρηστών έναν ακροατή συμβάντων σε πραγματικό χρόνο, οπότε δεν υπήρξε αισθητή καθυστέρηση στις αλλαγές στο BPM του χρήστη. Οι ειδοποιήσεις ώθησης έγιναν χρησιμοποιώντας τα μηνύματα cloud cloud Firebase που αναφέρθηκαν προηγουμένως. Υπάρχουν πολλές χρήσιμες πληροφορίες στο φύλλο δεδομένων του Firebase για το πώς να το εφαρμόσετε και η εφαρμογή μπορεί να δοκιμαστεί με την αποστολή ειδοποιήσεων από τον πίνακα ελέγχου στον ιστότοπο του Firebase.

Όλος ο κώδικας για τις δραστηριότητες και οι μέθοδοι για τα μηνύματα cloud μπορείτε να βρείτε στο Github Repository μου.

Βήμα 5: Συμπέρασμα

Υπήρχαν ορισμένα σημαντικά ζητήματα με τη μέτρηση του BPM του χρήστη. Οι τιμές ποικίλλουν πολύ και δεν μπορούν να χρησιμοποιηθούν για τον προσδιορισμό της υγείας ενός χρήστη. Αυτό κατέληξε στον κωδικό επεξεργασίας σήματος που εφαρμόστηκε στο ESP8266. Μετά από πρόσθετη έρευνα διαπίστωσα ότι μια καρδιά έχει τέσσερις διαφορετικούς παλμούς με διαφορετική περίοδο, οπότε δεν ήταν περίεργο που το λογισμικό ήταν ανακριβές. Ένας τρόπος καταπολέμησης αυτού θα ήταν να ληφθούν κατά μέσο όρο οι τέσσερις παλμοί σε μια συστοιχία και να υπολογιστεί η περίοδος της καρδιάς πάνω από αυτούς τους τέσσερις παλμούς.

Το υπόλοιπο σύστημα ήταν λειτουργικό, αλλά αυτή είναι μια πολύ πειραματική συσκευή που ήθελα να φτιάξω για να δω αν το αντικείμενο ήταν δυνατό. Ο παλαιός κώδικας που χρησιμοποιήθηκε για την αποστολή ειδοποιήσεων push θα είναι σύντομα άχρηστος, οπότε αν το διαβάζετε αυτό στα τέλη του 2018 ή αργά θα χρειαζόταν μια διαφορετική μέθοδος. Αυτό το ζήτημα παρουσιάζεται μόνο με το ESP αν και αν θέλετε να το εφαρμόσετε σε ένα Arduino με δυνατότητα WiFi δεν θα ήταν πρόβλημα.

Εάν έχετε οποιεσδήποτε ερωτήσεις ή προβλήματα, μη διστάσετε να μου στείλετε μήνυμα στο Instructables.

Συνιστάται: