1 of 48

THEO DÕI HAI TRẠNG THÁI CƠ BẢN CỦA CON NGƯỜI - THỨC VÀ NGỦ

Nhóm 1

SINH VIÊN THỰC HIỆN:

NGUYỄN MINH ĐẠT - N20DCCN095

NGUYỄN THANH HỮU - N20DCCN108

ĐÀO XUÂN CƯỜNG - N20DCCN089

TRẦN DOÃN TRIẾT - N18DCCN228

2 of 48

Trạng thái thức

Nhận thức rõ ràng về môi trường, khả năng tư duy, phản ứng và điều chỉnh hành vi.

Cơ bắp ở trạng thái thức linh hoạt, có khả năng thực hiện các hoạt động như vận động, cử chỉ, giao tiếp. Sức mạnh cơ bắp có thể thay đổi tùy thuộc vào độ tuổi, giới tính và hoạt động thể chất.

Nhịp tim dao động từ 60 đến 120 nhịp/phút, tùy thuộc vào độ tuổi, giới tính, tình trạng sức khỏe và hoạt động thể chất. Nhịp tim tăng lên khi con người hoạt động thể chất, căng thẳng hoặc lo lắng.

3 of 48

Trạng thái ngủ

Giảm sút hoạt động tinh thần và thể chất, trong đó ý thức bị thay đổi, hoạt động của các giác quan bị ức chế ở một mức độ nhất định.

Cơ bắp thư giãn, ít hoạt động. Sức mạnh cơ bắp giảm xuống.

Nhịp tim dao động từ 40 đến 60 nhịp/phút.

Nhịp tim thay đổi theo các giai đoạn của giấc ngủ:

NREM: Nhịp tim giảm dần.

REM: Nhịp tim tăng lên, nhưng vẫn thấp hơn so với trạng thái thức.

4 of 48

Sơ đồ khối thể hiện các quy trình thực hiện đề tài

5 of 48

Chuẩn bị thiết bị

MPU6050

MAX30102

LCD 16x2

Module I2C

ESP32 WROOM 32

6 of 48

Thu thập và tổng hợp dữ liệu

  • Xây dựng phần mềm hỗ trợ thu thập dữ liệu

7 of 48

Thu thập và tổng hợp dữ liệu

  • Quy trình khởi động các ứng dụng:

8 of 48

    • Tần số lấy mẫu: 50 Hz
    • Thời gian: 5,12 s
    • Khởi động Websocket Server
    • Khởi động Websocket Client (Web UI)
    • Khởi động Websocket Client (ESP32S Wroom 32)
    • Trên giao diện web UI, trong mục thiết bị đo, chọn tuỳ chọn MPU6050
    • Bấm vào nút ra lệnh đo và chờ kết quả trả về
    • Khi kết quả đã trả về ta có thể chọn thư mục cần lưu trữ và bấm gửi đi để yêu cầu server lưu tệp tín hiệu.

Thu thập và tổng hợp dữ liệu

    • Đo tín hiệu Module MPU6050, gia tốc và vận tốc góc của 3 trục x, y, z.

9 of 48

    • Tần số lấy mẫu: 50 Hz
    • Thời gian: 20,48 s
    • Khởi động Websocket Server
    • Khởi động Websocket Client (Web UI)
    • Khởi động Websocket Client (ESP32S Wroom 32)
    • Trên giao diện web UI, trong mục thiết bị đo, chọn cả hai
    • Bấm vào nút ra lệnh đo và chờ kết quả trả về
    • Khi kết quả đã trả về ta có thể chọn thư mục cần lưu trữ và bấm gửi đi để yêu cầu server lưu tệp tín hiệu.

Tiến hành đo

    • Đo tín hiệu Module MPU6050 và Max30102.

10 of 48

Demo phần mềm hỗ trợ đo

11 of 48

Demo phần mềm hỗ trợ đo

12 of 48

Demo phần mềm hỗ trợ đo

 Hệ thống sẽ tự động lưu lại các tệp tín hiệu và hiển thị thông báo số lần đo đã đo được trên hộp thoại. Người dùng có thể bấm bút Dừng lại để dừng lại việc đo đạc.

13 of 48

Kết quả thu được

Đo tín hiệu Module MPU6050

Đo tín hiệu Module MPU6050 và Max30102

14 of 48

Hành động đi (WALKING)

Tiền xử lý dữ liệu (Preprocessing)

  • Tiền xử lý tập tín hiệu dùng để training mô hình Human Activity Recoginition
  • Tổng hợp và load dữ liệu
  • Một số đồ thị biểu diễn tập tín hiệu đã đo được với các hành động cơ bản của con người

15 of 48

16 of 48

Hành động đứng (STANDING)

17 of 48

18 of 48

Hành động ngồi (SITTING)

19 of 48

20 of 48

Hành động nằm (LYING)

21 of 48

22 of 48

  • Lựa chọn các đặc trưng để chuẩn bị training (có tổng cộng 24 đặc trưng)
  • Thực hiện trích xuất các đặc trưng từ tập dữ liệu và lưu dữ liệu dưới dạng file excel
  • Giá trị trung bình của tập tín hiệu (mean): tAcc-mean()-X, tAcc-mean()-Y, tAcc-mean()-Z, tGyro-mean()-X, tGyro-mean()-Y, tGyro-mean()-Z.
  • Độ lệch chuẩn của tập tín hiệu (std): tAcc-std()-X, tAcc-std()-Y, tAcc-std()-Z, tGyro-std()-X, tGyro-std()-Y, tGyro-std()-Z.
  • Giá trị lớn nhất của tập tín hiệu (max): tAcc-max()-X, tAcc-max()-Y, tAcc-max()-Z, tGyro-max()-X, tGyro-max()-Y, tGyro-max()-Z.
  • Giá trị nhỏ nhất của tập tín hiệu (min): tAcc-min()-X, tAcc-min()-Y, tAcc-min()-Z, tGyro-min()-X, tGyro-min()-Y, tGyro-min()-Z.
  • Kiểm tra lại file dữ liệu đã được lưu

23 of 48

  • Một số đồ thị biểu diễn tập tín hiệu đã đo được với các hai trạng thái cơ bản của con người - ngủ và thức
  • Tổng hợp và load dữ liệu
  • Tiền xử lý tập tín hiệu dùng để training mô hình Nhận dạng hai trạng thái cơ bản của con người - thức và ngủ (One's Basic Human State Recognition - Awake and Asleep)

24 of 48

25 of 48

26 of 48

Hành động nằm (LYING)

27 of 48

28 of 48

  • Lựa chọn các đặc trưng để chuẩn bị training (có tổng cộng 25 đặc trưng)
  • Giá trị trung bình của tập tín hiệu (mean): tAcc-mean()-X, tAcc-mean()-Y, tAcc-mean()-Z, tGyro-mean()-X, tGyro-mean()-Y, tGyro-mean()-Z.
  • Độ lệch chuẩn của tập tín hiệu (std): tAcc-std()-X, tAcc-std()-Y, tAcc-std()-Z, tGyro-std()-X, tGyro-std()-Y, tGyro-std()-Z.
  • Giá trị lớn nhất của tập tín hiệu (max): tAcc-max()-X, tAcc-max()-Y, tAcc-max()-Z, tGyro-max()-X, tGyro-max()-Y, tGyro-max()-Z.
  • Giá trị nhỏ nhất của tập tín hiệu (min): tAcc-min()-X, tAcc-min()-Y, tAcc-min()-Z, tGyro-min()-X, tGyro-min()-Y, tGyro-min()-Z.
  • Giá trị nhịp tim trung bình (bmp): ppg-bmp
    • Để tính được giá trị bmp từ tập tín hiệu PPG, ta thực hiện FFT (Fast Fourier Transform) với tập tín hiệu PPG.
    • Chuẩn hoá tập tín hiệu: Tìm giá trị trung bình của tập tín hiệu sau đó lấy tất cả giá trị trong tập tín hiệu trừ đi giá trị trung bình đã tính được.
    • Thực hiện FFT trên tập tín hiệu: Sau khi thực hiện FFT ta biểu diễn được đồ thị như sau

29 of 48

  • Tìm tần số có gíá trị biên độ cao nhất (freq): Như đã đề cập trong chương 1 thì nhịp tim con người dao động từ 40 - 120 nhịp/phút, do đó để tính chính xác giá trị bmp ta cần xét trong dải tần số 0,67 Hz - 2 Hz khi tìm tần số có giá trị biên độ cao nhất.
  • Tính giá trị bmp theo công thức:

bmp= freq x 60

  • Thực hiện trích xuất các đặc trưng từ tập dữ liệu

30 of 48

  • Với mô hình nhận dạng hành động cơ bản của con người (Human Activity Recognition)
  • Lựa chọn mô hình
    • Chọn mô hình Support Vector Machine (SVM): SVM (Support Vector Machine) là một thuật toán học máy thuộc nhóm học có giám sát (supervised learning) được sử dụng chủ yếu trong các bài toán phân loại (classification) và hồi quy (regression). SVM có thể phân biệt các lớp dữ liệu bằng cách tìm ra một siêu phẳng (hyperplane) tối ưu nhất để phân tách dữ liệu.
    • Lý do chọn: Vì tập dữ liệu có số lượng đặc trưng (feature) lớn (tức số chiều nhiều) và số lượng dữ liệu ít nên lựa chọn mô hình SVM là phù hợp nhất.

Lựa chọn mô hình, thực hiện training, đánh giá mô hình

31 of 48

  • Thực hiện training
    • Import các thư viện cần thiết

32 of 48

    • Load file dữ liệu

    • Chia tập dữ liệu thành hai phần: train và test

33 of 48

    • Khởi tạo mô hình và lựa chọn các tham số tối ưu cho mô hình

    • Đánh giá mô hình

34 of 48

    • Chuyển đổi mô hình thành file .h (sử dụng micromlgen)

35 of 48

  • Với mô hình nhận dạng hai trạng thái cơ bản của con người - thức và ngủ (One's Basic Human State Recognition - Awake and Asleep)
  • Lựa chọn mô hình
    • Chọn mô hình Support Vector Machine (SVM): SVM (Support Vector Machine) là một thuật toán học máy thuộc nhóm học có giám sát (supervised learning) được sử dụng chủ yếu trong các bài toán phân loại (classification) và hồi quy (regression). SVM có thể phân biệt các lớp dữ liệu bằng cách tìm ra một siêu phẳng (hyperplane) tối ưu nhất để phân tách dữ liệu.
    • Lý do chọn: Vì tập dữ liệu có số lượng đặc trưng (feature) lớn (tức số chiều nhiều) và số lượng dữ liệu ít nên lựa chọn mô hình SVM là phù hợp nhất.

36 of 48

  • Thực hiện training
    • Import các thư viện cần thiết

37 of 48

    • Load file dữ liệu

    • Chia tập dữ liệu thành hai phần: train và test

38 of 48

    • Khởi tạo mô hình và lựa chọn các tham số tối ưu cho mô hình

    • Đánh giá mô hình

39 of 48

    • Chuyển đổi mô hình thành file .h (sử dụng micromlgen)

40 of 48

Triển khai mô hình vào hệ thống nhúng

  • Chuẩn bị
  • Cài đặt Arduino IDE phiên bảng mới nhất.
  • Cài board: esp32 (by Espressif Systems).
  • Cài đặt các library cần thiết: Adafruit MPU6050 (by Adafruit), SparkFun 3010x Pulse and Proximity, arduinoFFT, LiquidCrystal_I2C.
  • Hai mô hình Human Activity Recognition và One's Basic Human State Recognition - Awake and Asleep (đã được chuyển đổi thành file .h).
  • Các thiết bị (Được đề cập trong quy trình chuẩn bị thiết bị).
  • Có kiến thức về RTOs.

41 of 48

  • Mô tả các chức năng
  • Mô tả luồng hoạt động
  • Chức năng dự đoán các hoạt động cơ bản của con người (đi, đứng, ngồi, nằm): Nó sẽ dự đoán những hành động có thể đã xảy ra cứ sau mỗi 20,48 giây và hiển thị kết quả trên LCD 16x2
  • Chức năng dự đoán trạng thái hiện tại trong số hai trạng thái thức và ngủ của con người: Nó sẽ tiến hành dự đoán trạng thái của con người trong khoảng 20,48 giây, cứ sau mỗi 20,48 giây nó sẽ hiển thị kết quả đến người dùng thông qua LCD 16x2.

42 of 48

43 of 48

  • Code và import các mô hình

File MAX30102_Task.h

File MAX30102_Task.cpp

File MPU6050_Task.h

File MPU6050_Task.h

File Predict_Task.h

File Predict_Task.cpp

File my_structs.h

File main.ino

File human_activity_recognition_model.h

File sleep_stage_recognition_model.h

44 of 48

  • Upload code vào vi xử lý ESP32S Wroom 32

45 of 48

Thử nghiệm

  • Đeo thiết bị

46 of 48

  • Các kết quả thực tế thu được

47 of 48

Đánh g

Dựa vào kết quả thực tế thu được ở bảng trên có thể tính ra được khả năng dự đoán của hai trạng thái của con người - thức và ngủ của thiết bị, cụ thể khi đang ở trạng thái thức thiết bị có thể dự đoán đúng với tỉ lệ chính xác lên đến 80% và khi đang ở trạng thái ngủ có thể dự đoạn đúng với tỉ lệ chính xác lên đến 75%.

Dựa vào những con số tính ra có thể thấy được khả năng ứng dụng thiết bị vào thực tiễn rất có thể. Việc đưa thiết bị này vào với ứng dụng thực tế đòi hỏi nhiều yếu tố và cần có cân nhắc nhiều hơn như cần phải thu thập dữ liệu một cách đa dạng từ nhiều người, điều chỉnh lại các thông số mô hình sao cho phù hợp với lượng dữ liệu thu được,... Nhưng trước mắt với kết quả hiện tại, có thể thấy được rằng thiết bị và mô hình này có tiềm năng lớn trong việc ứng dụng thực tiễn trong đời sống con người.

48 of 48

Kết luận

Mặc dù kết quả ban đầu đầy hứa hẹn, việc triển khai thiết bị vào ứng dụng thực tế đòi hỏi phải giải quyết một số thách thức. Một trong những thách thức lớn nhất là sự đa dạng của dữ liệu sinh lý học giữa các cá nhân. Dữ liệu từ nhiều người dùng khác nhau có thể khác biệt đáng kể do các yếu tố như tuổi tác, giới tính, tình trạng sức khỏe, và lối sống. Do đó, việc thu thập và phân tích dữ liệu từ một mẫu lớn và đa dạng là cần thiết để cải thiện độ chính xác của thiết bị.