Mục lục:

Theo dõi nhịp tim IOT (Ứng dụng ESP8266 và Android): 5 bước
Theo dõi nhịp tim IOT (Ứng dụng ESP8266 và Android): 5 bước

Video: Theo dõi nhịp tim IOT (Ứng dụng ESP8266 và Android): 5 bước

Video: Theo dõi nhịp tim IOT (Ứng dụng ESP8266 và Android): 5 bước
Video: Hướng dẫn sử dụng blynk iot - new blynk 2.0 - node mcu esp8266 - điều khiển thiết bị qua internet 2024, Tháng mười một
Anonim
Image
Image

Là một phần của dự án năm cuối, tôi muốn thiết kế một thiết bị theo dõi nhịp tim của bạn, lưu trữ dữ liệu của bạn trên máy chủ và thông báo cho bạn khi nhịp tim của bạn bất thường. Ý tưởng đằng sau dự án này xuất hiện khi tôi cố gắng xây dựng một ứng dụng fit-bit thông báo cho người dùng khi họ gặp vấn đề về tim nhưng tôi không thể tìm ra cách sử dụng thông tin thời gian thực. bao gồm mạch vật lý để đo nhịp tim, mô-đun Wi-Fi ESP8266 với mã xử lý tín hiệu, máy chủ để lưu trữ mã và một ứng dụng Android để hiển thị nhịp tim.

Video mô tả chi tiết mạch vật lý có thể được xem ở trên. Tất cả mã cho dự án có thể được tìm thấy trên Github của tôi.

Bước 1: Mạch

Mạch
Mạch

Có hai phương pháp chính để đo nhịp tim nhưng đối với dự án này, tôi quyết định sử dụng phương pháp chụp quang tuyến tính (PPG) sử dụng nguồn ánh sáng hồng ngoại hoặc ánh sáng đỏ được khúc xạ qua một vài lớp da đầu tiên. Cảm biến ảnh được sử dụng để đo sự thay đổi cường độ ánh sáng (khi máu chảy qua mạch). Tín hiệu PPG cực kỳ nhiễu vì vậy tôi đã sử dụng bộ lọc thông dải để lọc ra các tần số cụ thể được yêu cầu. Tim người đập với tần số từ 1 đến 1,6 Hz. Op-amp mà tôi sử dụng là lm324 có hiệu điện thế tốt nhất trong số tất cả các op-amp có sẵn cho tôi. Nếu bạn đang tạo lại dự án này thì một op-amp chính xác sẽ là lựa chọn tốt hơn nhiều.

Mức tăng chỉ hai được sử dụng vì khả năng chịu điện áp tối đa trên ESP8266 là 3,3v và tôi không muốn làm hỏng bo mạch của mình!

Làm theo mạch ở trên và cố gắng làm cho nó hoạt động trên bảng mạch bánh mì. Nếu không có máy hiện sóng ở nhà, bạn có thể cắm đầu ra vào Arduino và vẽ biểu đồ nhưng phải đảm bảo rằng điện áp không cao hơn khả năng chịu đựng của arduino hoặc vi điều khiển.

Mạch đã được thử nghiệm trên một bảng mạch bánh mì và sự thay đổi trong đầu ra được quan sát thấy khi một ngón tay đặt trên đèn LED và bóng bán dẫn hình ảnh. Sau đó, tôi quyết định hàn bảng với nhau mà không được hiển thị trong video.

Bước 2: Mã xử lý tín hiệu và giao tiếp máy chủ

Image
Image
Mã xử lý tín hiệu và truyền thông máy chủ
Mã xử lý tín hiệu và truyền thông máy chủ

Tôi quyết định sử dụng Arduino IDE trên ESP8266 vì nó rất dễ sử dụng. Khi tín hiệu được vẽ biểu đồ, nó vẫn rất nhiễu vì vậy tôi quyết định làm sạch nó bằng bộ lọc trung bình động FIR với số mẫu là mười. Tôi đã sửa đổi một chương trình Arduino ví dụ có tên "làm mịn" để làm điều này. Tôi đã thử nghiệm một chút để tìm cách đo tần số của tín hiệu. Các xung có độ dài và biên độ khác nhau do tim có bốn loại xung khác nhau và các đặc điểm của tín hiệu PPG. Tôi đã chọn một giá trị giữa đã biết mà tín hiệu luôn vượt qua làm điểm tham chiếu cho mỗi xung. Tôi đã sử dụng bộ đệm vòng để xác định thời điểm độ dốc của tín hiệu là tích cực hay tiêu cực. Sự kết hợp của hai điều này cho phép tôi tính toán khoảng thời gian giữa các xung khi tín hiệu là tích cực và bằng một giá trị cụ thể.

Phần mềm này đã tạo ra một BPM khá không chính xác và không thể thực sự được sử dụng. Với các lần lặp bổ sung, một chương trình tốt hơn có thể được thiết kế nhưng do hạn chế về thời gian nên đây không phải là một lựa chọn. Mã có thể được tìm thấy trong liên kết dưới đây.

Phần mềm ESP8266

Bước 3: Máy chủ và Truyền dữ liệu

Máy chủ và Truyền dữ liệu
Máy chủ và Truyền dữ liệu

Tôi quyết định sử dụng Firebase để lưu trữ dữ liệu vì đây là một dịch vụ miễn phí và rất dễ sử dụng với các ứng dụng dành cho thiết bị di động. Không có API chính thức cho Firebase với ESP8266 nhưng tôi thấy thư viện Arduino hoạt động rất tốt.

Có một chương trình ví dụ có thể được tìm thấy trên thư viện ESP8266WiFi.h cho phép bạn kết nối với bộ định tuyến bằng SSID và Mật khẩu. Điều này được sử dụng để kết nối bo mạch với internet để dữ liệu có thể được gửi đi.

Mặc dù việc lưu trữ dữ liệu được thực hiện dễ dàng nhưng vẫn có một số vấn đề với việc gửi thông báo đẩy qua yêu cầu HTTP POST. Tôi đã tìm thấy một nhận xét trên Github đã sử dụng một phương pháp kế thừa để thực hiện việc này thông qua nhắn tin đám mây của Google và thư viện HTTP cho ESP8266. Phương pháp này có thể được nhìn thấy trong mã trên Github của tôi.

Trên Firebase, tôi đã tạo một dự án và sử dụng API và khóa đăng ký trong phần mềm. Nhắn tin đám mây firebase đã được sử dụng với ứng dụng để gửi thông báo đẩy cho người dùng. Khi thông tin liên lạc được kiểm tra, dữ liệu có thể được nhìn thấy trong cơ sở dữ liệu khi ESP8266 đang chạy.

Bước 4: Ứng dụng Android

Ứng dụng Android
Ứng dụng Android

Một ứng dụng Android rất cơ bản được thiết kế với hai hoạt động. Hoạt động đầu tiên đã đăng nhập hoặc đăng ký người dùng bằng API Firebase. Tôi đã nghiên cứu biểu dữ liệu và tìm thấy nhiều hướng dẫn khác nhau về cách sử dụng Firebase với ứng dụng dành cho thiết bị di động. Hoạt động chính hiển thị cho người dùng dữ liệu của người dùng một trình xử lý sự kiện thời gian thực để không có sự chậm trễ đáng chú ý trong các thay đổi đối với BPM của người dùng. Thông báo đẩy được thực hiện bằng cách sử dụng nhắn tin đám mây Firebase đã được đề cập trước đây. Có rất nhiều thông tin hữu ích trên biểu dữ liệu Firebase về cách triển khai điều này và ứng dụng có thể được kiểm tra bằng cách gửi thông báo từ trang tổng quan trên trang web Firebase.

Tất cả mã cho các hoạt động và phương pháp nhắn tin đám mây có thể được tìm thấy trong Kho lưu trữ Github của tôi.

Bước 5: Kết luận

Có một số vấn đề lớn khi đo BPM của người dùng. Các giá trị khác nhau rất nhiều và không thể sử dụng để xác định sức khỏe của người dùng. Điều này bắt nguồn từ mã xử lý tín hiệu được triển khai trên ESP8266. Sau khi nghiên cứu thêm, tôi phát hiện ra rằng một trái tim có bốn nhịp đập khác nhau với chu kỳ thay đổi, vì vậy không có gì ngạc nhiên khi phần mềm không chính xác. Một cách để chống lại điều này là lấy trung bình của bốn xung trong một mảng và tính toán chu kỳ của tim trên bốn xung đó.

Phần còn lại của hệ thống vẫn hoạt động nhưng đây là một thiết bị rất thử nghiệm mà tôi muốn chế tạo để xem liệu vật thể đó có khả thi hay không. Mã kế thừa được sử dụng để gửi thông báo đẩy sẽ sớm không thể sử dụng được, vì vậy nếu bạn đang đọc mã này vào cuối năm 2018 hoặc muộn hơn một phương pháp khác sẽ được yêu cầu. Tuy nhiên, sự cố này chỉ xảy ra với ESP vì vậy nếu bạn muốn triển khai điều này trên Arduino có khả năng WiFi thì sẽ không có vấn đề gì.

Nếu bạn có bất kỳ câu hỏi hoặc vấn đề nào, vui lòng gửi tin nhắn cho tôi trên nội dung hướng dẫn.

Đề xuất: