Với chức năng điều phối, thu tín hiệu từ vịng tay và gửi dữ liệu lên internet cũng như điện thoại, gateway có cấu tạo như sau (xem Hình 2 - 4):
• ESP8266 NodeMCU là VĐK trung tâm.
• Module NRF24L01 được kết nối với D4, D5, D6, D7, D8 của ESP8266 theo chuẩn SPI.
• Module cảnh báo được nối vào chân D3, gồm có transistor phân cực class A để kích cịi báo.
• Header 8P được kết nối theo chuẩn UART, với 2 chân TX, RX kết nối với TX, RX của ESP8266, header sẽ được nối với module sim800l để phục vụ cho việc truyền thông giữa gateway và điện thoại.
2.3.1. Mạch in và mơ phỏng 3D của vịng tay
Mạch của vịng tay được mơ phỏng 3D trên phần mềm Altium (xem Hình 2 - 5).
Hình 2 - 5: Mạch in và mơ phỏng 3D của vịng tay
2.3.2. Mạch in và mô phỏng 3D của gateway
Mạch của gateway được mô phỏng 3D trên phần mềm Altium (xem Hình 2 - 6).
CHƯƠNG 3. LẬP TRÌNH ĐIỀU KHIỂN HỆ THỐNG
3.1. Lưu đồ hoạt động của hệ thống
3.1.1. Hoạt động của hệ thống
Trong quá trình tìm hiểu về NRF24L01, nhận thấy đây là một dịng chip có hiệu năng cao cũng như khả năng truyền tải tốt với tốc độ tối đa có thể đạt được lên tới 2Mbps. Tuy nhiên, dịng chip giá rẻ này cũng có một số nhược điểm như:
- Khả năng truyền tải khoảng cách xa kém.
- Chỉ hỗ trợ truyền tải bán song công (tại một thời điểm chỉ có thể truyền hoặc
nhận, và phải setup trước điều kiện trong phần lập trình). Hệ thống sẽ hoạt động như sau:
- Vịng tay sau khi đo đạc thơng số từ cảm biến sẽ gửi thông tin đến gateway. - Gateway sẽ kiểm tra bản tin đến, sau khi phân tích bản tin sẽ kiểm tra trạng
thái cảnh báo và đưa ra quyết định.
- Gateway sẽ gửi bản tin đã đóng gói đến Firebase của Google qua wifi và gửi
đến điện thoại qua sms.
- Ngồi ra, người dùng có thể chủ động gửi yêu cầu nhờ vào nút nhấn được thiết
kế trên vòng tay.
- Cấu trúc bản tin gửi từ vòng tay đến gateway sẽ gồm 4 byte:
• Byte 1 thể hiện giá trị nhịp tim (lần/phút). • Byte 2 thể hiện giá trị nồng độ oxy trong máu. • Byte 3 thể hiện trạng thái cảnh báo (0 hoặc 1).
• Byte 4 thể hiện yêu cầu nhắn tin đến gateway (0 hoặc 1).
3.1.2. Lưu đồ thuật toán của vịng tay
Vịng tay có nhiệm vụ:
- Đo đạc thơng số từ cảm biến đo nhịp tim, nồng độ oxy trong máu và cảm biến
gia tốc.
Hình 3 - 1: Lưu đồ thuật tốn của vịng tay
Kịch bản hoạt động (xem Hình 3 - 1):
- Sau khi đọc được dữ liệu từ cảm biến, vòng tay sẽ gửi bản tin data có cảnh báo
về gateway.
- Cảm biến gia tốc MPU6050 đo gia tốc của 3 trục, nếu gia tốc 3 trục vượt
ngưỡng cho phép (bị ngã), ta sẽ lập trình phát tín hiệu cảnh báo.
- Vịng tay sẽ gửi bản tin 1 lần sau 10 phút nếu khơng có cảnh báo hoặc ngay
lập tức nếu có cảnh báo. Ngồi ra, nó sẽ gửi u cầu từ người dùng thơng qua 2 nút nhấn được thiết kế trên vịng tay:
• Nút nhấn 1 u cầu gọi điện cho người thân ngay lập tức (nhưng không yêu cầu speak và voice).
• Nhút nhấn 2 yêu cầu tắt cảnh báo (nếu có).
3.1.3. Lưu đồ thuật tốn của gateway
Gateway có nhiệm vụ:
- Nhận dữ liệu từ vịng tay qua sóng RF.
- Cảnh báo còi chip ngay trên mạch nếu mất kết nối wifi hay phát hiện cảnh báo
- Đóng gói bản tin thu được từ vịng tay và gửi lên firebase của google để có thể
theo dõi qua app trên điện thoại.
Hình 3 - 2: Lưu đồ thuật tốn của gateway
Kịch bản hoạt động (xem Hình 3 - 2):
- Gateway sẽ kiểm tra kết nối wifi, nếu khơng thể kết nối sẽ báo cịi, tiếp tục
thực hiện đoạn chương trình tiếp theo.
- Nhận bản tin gửi từ vòng tay qua mạng RF, kiểm tra, phân tích bản tin, sau đó
kiểm tra trạng thái cảnh báo từ bản tin:
• Nếu đúng (phát hiện bất thường như bị ngã) sẽ tự động phát cịi cảnh báo, ngay lập tức gửi thơng báo lên Firebase của Google, đồng thời gửi tin nhắn đến điện thoại qua sms.
• Nếu nhận được tín hiệu tắt cịi cảnh báo từ vịng tay, thì sẽ ngừng mọi trạng thái cảnh báo.
• Nếu có tín hiệu u cầu gọi điện thoại cho người thân thì thực hiện cuộc gọi cho người thân.
- Đóng gói bản tin và gửi lên firebase của google.
3.1.4. Thuật toán phát hiện té ngã
Bằng các phương pháp nghiên cứu, thực nghiệm về mối quan hệ chuyển động của cơ thể người và gia tốc của từng hoạt động, khi một người có dấu hiệu bị ngã, gia tốc của các điểm tại cổ tay sẽ tăng cao đột ngột do các va chạm vật lý giữa người mà
mơi trường xung quanh. Nhận thấy điều đó, chúng em đã sử dụng cảm biến đo gia tốc 3 trục tự do ứng với hệ không gian 3 chiều để đo gia tốc.
Để phân biệt giữa sự vung tay hoặc những hành động thường ngày và sự té ngã, chúng em đã có sự khảo sát như bảng sau (xem Bảng 3 - 1):
Bảng 3 - 1: Khảo sát gia tốc ba trục với những hoạt động hàng ngày
Hoạt động Gia tốc tại các trục X-Y-Z (m/𝒔𝟐)
Tập thể dục (đo 3 lần) 3-15-9 | 3-6-18 | 12-4-6 Đi bộ (đo 3 lần) 7-9-3 | 12-9-7 | 11-4-8 Ăn cơm (đo 3 lần) 2-4-5 | 5-7-7 | 3-2-5
Té ngã (đo 3 lần) 15-18-14 | 20-17-15 | 21-14-18 Từ bảng số liệu thực nghiệm trên, chúng em thấy rằng đối với những hoạt động thường ngày, những hành động hoàn tồn được kiểm sốt về gia tốc, tốc độ để đảm bảo tính tồn vẹn cho cơ thể (cơ thể con người có thể được chuẩn bị để đón nhận một lực tác động từ 1 phía và cố định), dẫn đến gia tốc sẽ chỉ tăng mạnh ở một chiều hướng nhất định.
Khác với hoạt động thường ngày, sự ngã hoàn tồn khơng thể kiểm sốt, cơ thể sẽ bị tác động từ nhiều phía khi va chạm với mơi trường xung quanh cũng như phản xạ tự nhiên để chống lại nguyên nhân va chạm, dẫn đến các hướng chuyển động của cơ thể là hỗn loạn, và sẽ làm gia tốc tăng đột ngột tại tất cả các phía.
Từ đó, thuật tốn phát hiện ngã được phát triển dựa trên nguyên tắc, nếu phát hiện gia tốc tại 3 trục tăng đột ngột khi vượt quá ngưỡng 15m/𝑠2 thì sẽ được đặt vào trạng thái té ngã.
3.1.5. Nguyên lý đo nhịp tim, SpO2
Kỹ thuật được sử dụng để đo nhịp tim trên các thiết bị đeo tay thường là thơng qua thể tích PPG (Photoplethysmography - dùng ánh sáng để đo lường thể tích của một cơ quan trong cơ thể). Bằng cách chiếu các xung ánh sáng lên da và đo lường sự thay đổi của lượng ánh sáng bị hấp thụ, các cảm biến sẽ xác định được lượng máu đến các mơ và lớp hạ biểu bì dưới da.
Ở mỗi chu kỳ, máu sẽ được bơm đến các mạch ngoại biên khắp cơ thể. Mặc dù áp suất mỗi lần bơm giảm khi đến da, nhưng cường độ của nó vẫn đủ để tăng các mạch máu và hệ mạch ở mô dưới da. Nếu thiết bị được gắn bên ngoài da, ngay cả một áp lực rất nhỏ trong hệ thống mạch máu cũng có thể được phát hiện. Sự thay đổi khả năng chuyển đổi theo áp suất này có thể được phát hiện bằng cách sử dụng ánh sáng LED chiếu vào da và đo lượng ánh sáng phản xạ trở lại diode cảm quang. Lượng máu đến mơ trong mỗi chu kỳ thời gian có liên quan đến nhiều hệ thống sinh học khác nhau, vì vậy PPG có thể được sử dụng để theo dõi nhịp tim, nhịp thở và các tuần hoàn toàn thân khác nhau.
Trong đề tài lựa chọn sử dụng cảm biến MAX30100 - phát ra hai bước sóng ánh sáng từ hai đèn LED - một LED đỏ và một LED hồng ngoại - sau đó đo sự hấp thụ của xung huyết (pulsing blood) bằng cách thu tín hiệu thơng qua một bộ cảm biến ánh sáng (photodetector) để xác định nồng độ oxi và nhịp tim.
3.2. Giới thiệu môi trường và công cụ sử dụng
3.2.1. Phần mềm Arduino
Về cơ bản bộ xử lý trung tâm ESP8266 của gateway có khá nhiều phần mềm và mơi trường hỗ trợ trong đó phổ biến nhất phải kể đến Arduino.
Ngôn ngữ Arduino được phát triển dựa trên ngôn ngữ C/C++ nên việc làm quen và lối tư duy logic khá cơ bản và dễ nắm bắt, bên cạnh đó, ưu điểm của C/C++ là tốc độ và lập trình viên có thể dễ dàng quản lý code. Ở đồ án lần này, em sử dụng ngôn ngữ Arduino.
Đây là một phần mềm được phát triển và open source với mục đích giáo dục và đưa kỹ thuật, công nghệ đến gần với đa số người dùng hơn.
3.2.2. Phần mềm Progisp
Để nạp firmware ta thực hiện các bước sau:
Hình 3 - 3: Chạy chương trình nạp Progisp
- Bước 2: Chọn loại chip.
Chọn chim ATmega328P (xem Hình 3 - 4).
Hình 3 - 4: Chọn chip ATmega328P
- Bước 3: Các thơng số quan trọng khi nạp chương trình.
Hình 3 - 5: Các thơng số quan trọng khi nạp code
• Chip Erase: Cho phép xóa chip.
• Program Flash: Nạp file Hex cho chip.
• Verify Flash: Kiểm tra lỗi của chương trình Flash. • Program Eeprom: Nạp file Eeprom cho chip (nếu có). • Verify Eeprom: Kiểm tra lỗi chương trình Eeprom.
• Data Reload: Tự động cập nhật dữ liệu khi có sự thay đổi file Hex với Eeprom.
- Bước 4: Xóa chip (xóa chương trình cũ có trong chip).
Ta có thể xóa chương trình cũ có sẵn trong chip (xem Hình 3 - 6).
- Bước 5: Nạp chương trình Flash.
Để nạp chương trình ta thực hiện các bước sau (xem Hình 3 - 7):
• Bước 1: Chọn Load Flash. • Bước 2: Chọn file hex (.hex). • Bước 3: Chọn Open.
- Bước 6: Nạp chương trình Eeprom (nếu có).
Để nạp chương trình Eeprom ta thực hiện các bước như sau (xem Hình 3 - 8):
• Bước 1: Chọn Load Eeprom. • Bước 2: Chọn file eeprom (.eep). • Bước 3: Chọn Open.
Hình 3 - 7: Nạp chương trình Flash
- Bước 7: Load chương trình.
Để load file hex và eeprom ta chọn Auto (xem Hình 3 - 9).
Hình 3 - 9: Load chương trình
- Bước 9: Hồn thành
Khi hiển thị dịng chữ successfully done tức ta đã hồn thành nạp chương trình (xem Hình 3 - 10).
3.2.3. Giới thiệu về Google Firebase
Firebase là một platform được phát triển từ máy chủ của Google (xem Hình 3 -
11). Nó được dùng như một cơ sở dữ liệu trên nền tảng đám mây hay một công cụ hỗ
trợ việc phát triển phần mềm. Chức năng chính của Google Firebase là cung cấp các tài nguyên phục vụ cho việc xây dựng các dự án ứng dụng. Nổi bật là khả năng đơn giản hóa các thao tác với cơ sở dữ liệu.
Google Firebase được sử dụng lý tưởng nhất là cho các phần mềm với giao diện API đơn giản. Nó phù hợp với cả 2 hệ điều hành phổ biến là IOS và Android. Mục đích mà Google tạo ra Firebase là thu hút lượng lớn người dùng để mang đến nguồn lợi nhuận xoay vòng nhanh.
Dù Google Firebase khơng tốn nhiều chi phí để có thể khai thác tiện ích nhưng những gì nó mang lại khơng thể coi thường. Google Firebase nhanh chóng, đơn giản và rất hiểu người dùng. Đối với các dự án phát triển phần mềm nhỏ và vừa, Google Firebase là lựa chọn chính xác nhất.
Hình 3 - 11: Google Firebase
3.3. Xây dựng giao diện phần mền trên điện thoại
3.3.1. Chức năng của phần mềm theo dõi trên điện thoại
Phần mềm có các chức năng sau (xem Hình 3 - 12):
• Nhận dữ liệu đo nhịp tim, nồng độ oxy trong máu và tín hiệu cảnh báo ngã từ gateway và hiển thị.
• Cập nhật dữ liệu theo ngày đã lựa chọn và vẽ ra đồ thị dễ tiện theo dõi và quản lý.
• Nếu dữ liệu nhận được mới nhất có chứa thơng tin cảnh báo thì tạo thơng báo và hiển thị ra màn hình chính.
Hình 3 - 12: Ứng dụng theo dõi trên điện thoại
3.3.2. Thiết kế giao diện trên phần mềm điện thoại
Để thiết kế giao diện phần mềm theo dõi dữ liệu trên điện thoại, ta làm các bước như sau:
- Bước 1: Tạo project.
Khởi chạy android studio và tạo project mới (xem Hình 3 - 13).
Hình 3 - 13: Tạo project mới
- Bước 2: Chọn Form project, chọn Empty Activity (xem Hình 3 - 14).
- Bước 3: Đặt tên, đường dẫn lưu, ngôn ngữ và API cho phiên bản android phát
triển ứng dụng, ấn Finish và hồn tất tạo project (xem Hình 3 - 15).
Hình 3 - 15: Đặt tên và đường dẫn cho project
- Bước 4: Đợi hồn tất q trình load thư viện (xem Hình 3 - 16).
❖ Kết nối project với Firebase:
- Bước 1: Ở trên thanh cơng cụ, chọn Tools → Firebase (xem Hình 3 - 17).
Hình 3 - 17: Tool -> Firebase
- Bước 2: Trong hộp thoại Realtime Database và chọn chọn Save and retrieve data
(xem Hình 3 - 18).
Hình 3 - 18: Hộp thoại Firebase
Hình 3 - 19: Connect to firebase
- Bước 4: Một hộp thoại kết nối xuất hiện, chọn Create new firebase project và
điền tên project firebase vào, ở đây để cùng tên với project ứng dụng android.
Rồi chọn Connect to Firebase để tạo project firebase và kết nối. Đợi cho chương trình tự động tạo, nhớ là phải có kết nối mạng (xem Hình 3 - 20).
Hình 3 - 20: Connect to Firebase
- Bước 5: Sau khi kết nối thành cơng, bước 1 sẽ hiện được như hình. Tiếp theo
Add the realtime database to your app để đưa cơ sở dữ liệu thời gian thực vào ứng dụng (xem Hình 3 - 21).
Hình 3 - 21: Thêm Firebase vào app
- Bước 6: Nhấn “Accept Changes” để hệ thống tự động đưa các thư viện vào build.gradle ( xem Hình 3 - 22).
CHƯƠNG 4. THỬ NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ
4.1. Thử nghiệm tính năng của hệ thống
4.1.1. Đo nhịp tim, nồng độ oxy trong máu (SpO2)
Để kiểm tra độ chính xác của tính năng đo nhịp tim, nồng độ oxy trong máu của vịng tay, nhóm đã thực hiện khảo nghiệm với AppleWatch (xem Bảng 4 - 1).
Kết quả nhiệt đo nhịp tim và nồng độ oxy trong máu đạt kết quả tương đối chính xác, sai số nhỏ.
Thời gian đáp ứng kết quả nhanh.
Bảng 4 - 1: Khảo nghiệm so sánh nhịp tim giữa vòng tay với AppleWatch
Họ và tên Giới tính Tuổi Đo lần 1 (Vòng tay – AppleWatch) Đo lần 2 (Vòng tay – AppleWatch) Đo lần 3 (Vòng tay – AppleWatch) Đo lần 4 (Vòng tay – AppleWatch) Đo lần 5 (Vòng tay – AppleWatch) DVT Nam 22 96 - 95 86 - 92 90 - 96 91 - 89 98 - 96 TTT Nam 22 84 - 87 86 - 88 89 - 88 93 - 97 96 – 85 BTV Nam 22 86 - 93 89 - 84 86 - 89 87 - 96 85 - 92 TVA Nam 68 73 - 76 75 - 71 77 - 72 73 - 75 76 – 75 NTM Nữ 63 76 - 72 71 - 75 78 - 74 74 - 77 75 – 78 4.1.2. Phát hiện té ngã và cảnh báo