Πίνακας περιεχομένων:
- Βήμα 1: Το κύκλωμα
- Βήμα 2: Ο κώδικας επεξεργασίας σημάτων και οι επικοινωνίες διακομιστή
- Βήμα 3: Ο διακομιστής και οι επικοινωνίες δεδομένων
- Βήμα 4: Η εφαρμογή Android
- Βήμα 5: Συμπέρασμα
Βίντεο: IOT Heart Rate Monitor (ESP8266 και Android App): 5 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Ως μέρος του έργου του τελευταίου έτους, ήθελα να σχεδιάσω μια συσκευή που θα παρακολουθεί τον καρδιακό σας ρυθμό, θα αποθηκεύει τα δεδομένα σας σε έναν διακομιστή και θα σας ειδοποιεί μέσω ειδοποιήσεων όταν ο καρδιακός σας ρυθμός ήταν ανώμαλος. Η ιδέα πίσω από αυτό το έργο ήρθε όταν προσπάθησα να δημιουργήσω μια εφαρμογή 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: Ο κώδικας επεξεργασίας σημάτων και οι επικοινωνίες διακομιστή
Αποφάσισα να χρησιμοποιήσω το 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 σχεδιάστηκε με δύο δραστηριότητες. Η πρώτη δραστηριότητα συνδέθηκε με τον χρήστη ή τον κατέγραψε χρησιμοποιώντας το API του Firebase. Ερεύνησα το φύλλο δεδομένων και βρήκα διάφορα σεμινάρια για τον τρόπο χρήσης του Firebase με μια εφαρμογή για κινητά. Η κύρια δραστηριότητα που έδειξε στον χρήστη δεδομένων των χρηστών έναν ακροατή συμβάντων σε πραγματικό χρόνο, οπότε δεν υπήρξε αισθητή καθυστέρηση στις αλλαγές στο BPM του χρήστη. Οι ειδοποιήσεις ώθησης έγιναν χρησιμοποιώντας τα μηνύματα cloud cloud Firebase που αναφέρθηκαν προηγουμένως. Υπάρχουν πολλές χρήσιμες πληροφορίες στο φύλλο δεδομένων του Firebase για το πώς να το εφαρμόσετε και η εφαρμογή μπορεί να δοκιμαστεί με την αποστολή ειδοποιήσεων από τον πίνακα ελέγχου στον ιστότοπο του Firebase.
Όλος ο κώδικας για τις δραστηριότητες και οι μέθοδοι για τα μηνύματα cloud μπορείτε να βρείτε στο Github Repository μου.
Βήμα 5: Συμπέρασμα
Υπήρχαν ορισμένα σημαντικά ζητήματα με τη μέτρηση του BPM του χρήστη. Οι τιμές ποικίλλουν πολύ και δεν μπορούν να χρησιμοποιηθούν για τον προσδιορισμό της υγείας ενός χρήστη. Αυτό κατέληξε στον κωδικό επεξεργασίας σήματος που εφαρμόστηκε στο ESP8266. Μετά από πρόσθετη έρευνα διαπίστωσα ότι μια καρδιά έχει τέσσερις διαφορετικούς παλμούς με διαφορετική περίοδο, οπότε δεν ήταν περίεργο που το λογισμικό ήταν ανακριβές. Ένας τρόπος καταπολέμησης αυτού θα ήταν να ληφθούν κατά μέσο όρο οι τέσσερις παλμοί σε μια συστοιχία και να υπολογιστεί η περίοδος της καρδιάς πάνω από αυτούς τους τέσσερις παλμούς.
Το υπόλοιπο σύστημα ήταν λειτουργικό, αλλά αυτή είναι μια πολύ πειραματική συσκευή που ήθελα να φτιάξω για να δω αν το αντικείμενο ήταν δυνατό. Ο παλαιός κώδικας που χρησιμοποιήθηκε για την αποστολή ειδοποιήσεων push θα είναι σύντομα άχρηστος, οπότε αν το διαβάζετε αυτό στα τέλη του 2018 ή αργά θα χρειαζόταν μια διαφορετική μέθοδος. Αυτό το ζήτημα παρουσιάζεται μόνο με το ESP αν και αν θέλετε να το εφαρμόσετε σε ένα Arduino με δυνατότητα WiFi δεν θα ήταν πρόβλημα.
Εάν έχετε οποιεσδήποτε ερωτήσεις ή προβλήματα, μη διστάσετε να μου στείλετε μήνυμα στο Instructables.
Συνιστάται:
DIY Monitor Heart Rate (logger): 4 βήματα
DIY Heart Rate Monitor (logger): Σε αυτό το έργο θα σας δείξω πώς ένα εμπορικό smartwatch μετρά και παρακολουθεί τον καρδιακό σας ρυθμό και στη συνέχεια θα σας δείξω πώς να δημιουργήσετε ένα κύκλωμα DIY που μπορεί να κάνει το ίδιο βασικά με την προσθήκη ότι μπορεί επίσης Αποθήκευση δεδομένων καρδιακών παλμών
Λάμπα Zwift Ambilight και Heart Rate Zone Smartbulb: 4 Βήματα
Zwift Ambilight and Heart Rate Zone Smartbulb Lamp: Εδώ χτίζουμε μια μικρή ΜΕΓΑΛΗ βελτίωση για το Zwift. Έχετε στο τέλος ένα ambilight για περισσότερη διασκέδαση ιππασίας στο σκοτάδι. Και έχετε μια λάμπα (Yeelight) για τις ζώνες καρδιακών παλμών σας. Χρησιμοποιώ εδώ 2 Raspberry PI, αν θέλετε μόνο το Yeelight χρειάζεστε μόνο 1 PI εάν
Απομακρυσμένη παρακολούθηση θερμοκρασίας και υγρασίας με ESP8266 και Blynk App: 15 βήματα
Απομακρυσμένη παρακολούθηση θερμοκρασίας και υγρασίας με ESP8266 και Blynk App: firstταν το πρώτο μου έργο με τσιπ ESP8266. Μόλις έχτισα ένα νέο θερμοκήπιο κοντά στο σπίτι μου και ήταν ενδιαφέρον για μένα τι συμβαίνει εκεί κατά τη διάρκεια μιας ημέρας; Εννοώ πώς αλλάζει η θερμοκρασία και η υγρασία; Το θερμοκήπιο αερίζεται αρκετά; Αποφασίζω λοιπόν
Arduino Led Strip Responsive Heart Rate Sensor: 5 Βήματα
Arduino Led Strip Responsive Heart Rate Sensor: Το πρώτο πράγμα που έκανα ήταν να συνδέσω τον αισθητήρα Grove Heart με το Arduino μου μέσω ενός πολύ εύκολου φροντιστηρίου στο YouTube. https://www.youtube.com/watch?v=Dzq4tnJ0LjAhttps://www.kiwi-electronics.nl/grove-finger-clip
8 Έλεγχος ρελέ με NodeMCU και δέκτη IR χρησιμοποιώντας WiFi και IR Τηλεχειριστήριο και εφαρμογή Android: 5 βήματα (με εικόνες)
8 Έλεγχος ρελέ με δέκτη NodeMCU και IR χρησιμοποιώντας WiFi και IR Τηλεχειριστήριο και εφαρμογή Android: Έλεγχος 8 διακοπτών ρελέ χρησιμοποιώντας nodemcu και δέκτη ir μέσω wifi και ir απομακρυσμένης και εφαρμογής Android. Το ir remote λειτουργεί ανεξάρτητα από τη σύνδεση wifi. ΕΔΩ ΕΙΝΑΙ ΕΝΗΜΕΡΩΜΕΝΗ ΚΛΙΚ ΕΔΩ