Giới thiệu dự án

Bối cảnh và thực trạng ngành y tế

Trong kỷ nguyên già hóa dân số và sự gia tăng nhanh chóng của các bệnh lý mãn tính, việc giám sát y tế liên tục tại nhà trở thành một nhu cầu cấp thiết. Theo số liệu thống kê từ Tổ chức Y tế Thế giới (WHO), các bệnh lý tim mạch là nguyên nhân gây tử vong hàng đầu trên toàn cầu, cướp đi sinh mạng của khoảng 17,5 triệu người mỗi năm. Tại Việt Nam, thống kê của Hội Tim mạch học chỉ ra rằng trung bình cứ 3 người trưởng thành thì có 1 người có nguy cơ hoặc đang mắc các bệnh lý liên quan đến tim mạch, với xu hướng ngày càng trẻ hóa do áp lực cuộc sống và lối sống ít vận động. Rối loạn nhịp tim không chỉ là dấu hiệu của nhồi máu cơ tim, đột quỵ mà còn là chỉ báo của nhiều bệnh lý chuyển hóa nguy hiểm.

Song song với gánh nặng tim mạch, tai nạn té ngã là một hiểm họa tiềm tàng đối với người cao tuổi. Dữ liệu từ WHO cho thấy khoảng 28% đến 35% người từ 65 tuổi trở lên bị té ngã ít nhất một lần mỗi năm, và tỷ lệ này tăng lên 32% - 42% ở những người trên 70 tuổi. Khoảng 85% các vụ té ngã xảy ra tại gia đình đối với những người sống độc lập. Tại Việt Nam, ước tính có hơn 1,9 triệu người cao tuổi bị ngã mỗi năm, trong đó 5% phải nhập viện điều trị do chấn thương nghiêm trọng như gãy xương đùi, chấn thương sọ não, thậm chí dẫn đến tử vong nếu không nhận được sự trợ giúp y tế kịp thời trong "thời gian vàng".

+-----------------------------------------------------------------------------+
| TỔNG QUAN THÁCH THỨC Y TẾ TOÀN CẦU & VIỆT NAM                               |
+-----------------------------------------------------------------------------+
| 1. Tử vong do tim mạch toàn cầu (WHO):      17,5 triệu ca/năm               |
| 2. Tỷ lệ bệnh tim mạch tại Việt Nam:        ~33% người trưởng thành         |
| 3. Người cao tuổi (>=65) bị té ngã (WHO):   28% - 35% mỗi năm               |
| 4. Số ca té ngã người cao tuổi tại VN:      ~1,9 triệu ca/năm               |
| 5. Tỷ lệ nhập viện do chấn thương té ngã:   5% tổng số ca                   |
+-----------------------------------------------------------------------------+

Vấn đề kỹ thuật (Problem Statement)

Các giải pháp giám sát sức khỏe và an toàn hiện nay đối mặt với nhiều điểm nghẽn nghiêm trọng:

  1. Thiếu tính cơ động: Các hệ thống giám sát bằng camera quang học hoặc cảm biến sàn chỉ hoạt động trong phạm vi không gian hẹp (phòng ngủ, phòng khách) và vi phạm nghiêm trọng quyền riêng tư tại các khu vực nhạy cảm như nhà vệ sinh (nơi xảy ra hơn 40% các vụ té ngã).
  2. Sự phụ thuộc vào Smartphone: Đa số các thiết bị đeo thương mại hiện nay đòi hỏi phải đồng bộ liên tục qua Bluetooth với điện thoại thông minh. Người già thường không có thói quen mang theo điện thoại bên người khi di chuyển trong nhà hoặc ra ngoài tập thể dục.
  3. Cảnh báo thụ động và trễ: Nhiều thiết bị chỉ lưu trữ dữ liệu cục bộ hoặc phát cảnh báo âm thanh đơn thuần, không có khả năng tự động định vị tọa độ địa lý và thực hiện cuộc gọi khẩn cấp (Emergency Call) tức thời đến người thân khi người dùng mất ý thức.

Mục tiêu dự án

Đồ án tập trung nghiên cứu, thiết kế và chế tạo hoàn chỉnh thiết bị đeo tay thông minh nhằm giải quyết triệt để các vấn đề trên với các mục tiêu cụ thể:

  1. Nghiên cứu nguyên lý đo quang thể tích (Photoplethysmography - PPG) để đo lường chính xác chỉ số nhịp tim và nồng độ oxy trong máu bằng cảm biến chuyên dụng.
  2. Thiết kế thuật toán phát hiện té ngã dựa trên sự kết hợp giữa đo gia tốc đa trục và vận tốc góc, ứng dụng bộ lọc bù bậc nhất để loại bỏ sai số trôi (drift).
  3. Tích hợp khối truyền thông viễn thông độc lập (GSM/GPRS và GPS) cho phép thiết bị tự động gửi tin nhắn SMS chứa liên kết tọa độ Google Maps và thực hiện cuộc gọi thoại khẩn cấp mà không cần trung gian điện thoại thông minh.
  4. Tối ưu hóa phần cứng và nguồn điện: Đóng gói toàn bộ hệ thống trong một kích thước vòng đeo tay nhỏ gọn, hoạt động bằng pin sạc Li-po với mạch bảo vệ nạp/xả an toàn.

Phương pháp tiếp cận giải pháp

Giải pháp được xây dựng dựa trên nguyên lý tích hợp hệ thống nhúng (Embedded System Integration). Vi điều khiển trung tâm ATmega328P đảm nhận nhiệm vụ đọc dữ liệu thời gian thực từ cảm biến quang học MAX30102 qua bus I2C để trích xuất tín hiệu nhịp tim. Đồng thời, khối cảm biến quán tính 6 bậc tự do (6-DOF) MPU-6050 liên tục thu thập vector gia tốc 3 trục ($a_x, a_y, a_z$) và vận tốc góc ($\omega_x, \omega_y, \omega_z$). Khi thuật toán phát hiện sự biến thiên gia tốc đột ngột vượt ngưỡng va chạm kết hợp với sự thay đổi góc nghiêng thân thể vượt giới hạn tĩnh, vi điều khiển sẽ kích hoạt còi cảnh báo tại chỗ (Buzzer), trích xuất tọa độ kinh độ - vĩ độ từ module GPS NEO-6M qua giao tiếp UART và gửi tập lệnh chuẩn AT (Attention Command) điều khiển module GSM SIM800L gửi tin nhắn SMS và gọi điện khẩn cấp.

Chỉ số đầu ra kỳ vọng (Measurable Metrics)

  • Sai số đo nhịp tim: $\le \pm 5%$ so với thiết bị y tế chuẩn.
  • Thời gian phát hiện té ngã và kích hoạt cảnh báo tại chỗ: $< 500\text{ ms}$.
  • Thời gian truyền phát tin nhắn cảnh báo tọa độ GPS và cuộc gọi khẩn cấp: $< 15\text{ giây}$ (phụ thuộc chất lượng mạng GSM).
  • Độ nhạy nhận diện té ngã (Sensitivity): $\ge 90%$ trên các kịch bản ngã mô phỏng.

Phạm vi và giới hạn đề tài

  • Phạm vi: Thiết bị đeo cổ tay phục vụ người cao tuổi, bệnh nhân tim mạch, người có nguy cơ đột quỵ hoặc công nhân làm việc độc lập trong môi trường nguy hiểm.
  • Giới hạn kỹ thuật: Module GPS đạt độ chính xác cao nhất ở không gian ngoài trời (sai số $< 5\text{m}$); trong nhà kín tín hiệu định vị có thể suy giảm do vật cản bê tông. Hệ thống cảnh báo từ xa sử dụng hạ tầng mạng di động 2G/GSM và chỉ gửi tín hiệu đến số điện thoại khẩn cấp đã được cấu hình cố định trong mã nguồn.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

+-----------------------------------------------------------------------------------------------------------------+
| MA TRẬN SO SÁNH CÁC PHƯƠNG PHÁP THEO DÕI VÀ PHÁT HIỆN TÉ NGÃ                                                   |
+--------------------------+------------------------------+-------------------------------+-----------------------+
| Giải pháp                | Ưu điểm                      | Nhược điểm                    | Khả năng ứng dụng     |
+--------------------------+------------------------------+-------------------------------+-----------------------+
| 1. Thị giác máy tính     | - Không cần đeo thiết bị.    | - Góc chết lớn, vi phạm quyền | Hạn chế trong phòng   |
| (Camera & AI Pose)       | - Nhận diện tư thế trực quan.| riêng tư phòng ngủ/nhà tắm.   | khách/bệnh viện.      |
|                          |                              | - Xử lý phức tạp khi đông người.|                       |
+--------------------------+------------------------------+-------------------------------+-----------------------+
| 2. Cảm biến rung/âm thanh| - Hoàn toàn thụ động.        | - Dễ báo động giả do rơi đồ.  | Rất hạn chế, chi phí  |
| sàn nhà (Popescu et al.) | - Không xâm phạm riêng tư.   | - Không xác định được cá nhân.| lắp đặt hạ tầng cao.  |
+--------------------------+------------------------------+-------------------------------+-----------------------+
| 3. Smartwatch thương mại | - Đa tính năng, hiển thị đẹp.| - Giá thành rất cao (5-10tr). | Phổ thông, không tối  |
| (Apple/Galaxy Watch)     | - Độ chính xác cảm biến cao. | - Bắt buộc kết nối Smartphone.| ưu cho người già.     |
+--------------------------+------------------------------+-------------------------------+-----------------------+
| 4. Thiết bị đề tài       | - Hoạt động độc lập hoàn toàn| - Vỏ hộp thử nghiệm 3D chưa   | Rất cao cho người già,|
| (Vòng tay Arduino IoT)   | - Tích hợp GPS/SIM cảnh báo. | đạt độ mỏng như công nghiệp.  | chi phí sản xuất thấp.|
|                          | - Chi phí sản xuất cực thấp. | - Phụ thuộc hạ tầng sóng 2G.  |                       |
+--------------------------+------------------------------+-------------------------------+-----------------------+

Phân tích yêu cầu người dùng (Khung MoSCoW)

  • Must Have (Bắt buộc phải có):
    • Đo nhịp tim thời gian thực hiển thị trực quan lên màn hình OLED.
    • Tự động phát hiện biến cố té ngã đa hướng (ngã trước, ngã sau, ngã nghiêng).
    • Tự động gửi tin nhắn SMS chứa đường dẫn tọa độ vị trí và thực hiện cuộc gọi khẩn cấp.
    • Còi báo động âm thanh tại chỗ (Buzzer 5V) cảnh báo cho người xung quanh.
    • Nút nhấn cơ học hủy cảnh báo giả hoặc kích hoạt cuộc gọi khẩn cấp thủ công (SOS).
  • Should Have (Nên có):
    • Tích hợp màn hình tiết kiệm điện năng công nghệ OLED kích thước nhỏ gọn.
    • Sử dụng pin sạc Li-po tích hợp mạch quản lý nguồn bảo vệ quá nạp/quá xả.
  • Could Have (Có thể mở rộng):
    • Đo thêm chỉ số nồng độ bão hòa oxy trong máu ($SpO_2$) và nhiệt độ bề mặt da.
    • Truyền dữ liệu telemetry lên máy chủ đám mây (Cloud IoT Dashboard).
  • Won't Have (Chưa thực hiện trong giai đoạn này):
    • Kết nối Bluetooth Low Energy (BLE) với ứng dụng di động đa nền tảng.
    • Chống nước tiêu chuẩn IP68.

Thiết kế kiến trúc hệ thống

                  +--------------------------------------------+
                  |           KHỐI NGUỒN (POWER SUPPLY)        |
                  | Pin Li-po 3.7V + Mạch sạc TP4056 Boost 5V  |
                  +---------------------+----------------------+
                                        |
                                        v
+------------------------+    +------------------------+    +------------------------+
|    KHỐI CẢM BIẾN       |    |  KHỐI XỬ LÝ TRUNG TÂM  |    |     KHỐI HIỂN THỊ      |
| - MAX30102 (PPG Sensor)|--->|                        |--->| Màn hình OLED 0.91"    |
| - MPU-6050 (6-DOF IMU) |    |      ARDUINO NANO      |    | (I2C: SDA-A4, SCL-A5)  |
+------------------------+    |     (ATmega328P 16MHz) |    +------------------------+
                              |                        |
+------------------------+    |                        |    +------------------------+
|     KHỐI ĐỊNH VỊ       |--->|                        |--->|     KHỐI CẢNH BÁO      |
| GPS NEO-6M (UART RX/TX)|    |                        |    | - Còi Buzzer (Chân D12)|
+------------------------+    +------------------------+    | - SIM800L (UART SMS/Call|
                                                            +------------------------+

Chi tiết ngăn xếp công nghệ (Technology Stack)

  • Bộ vi điều khiển: Microchip ATmega328P (Arduino Nano R3 core, xung nhịp 16 MHz, bộ nhớ Flash 32 KB, SRAM 2 KB, EEPROM 1 KB).
  • Cảm biến quang học: Maxim Integrated MAX30102 (Dual LED: Red 660nm, IR 880nm; ADC quang học 18-bit; giao tiếp I2C standard mode 100kHz / fast mode 400kHz).
  • Cảm biến quán tính: InvenSense MPU-6050 (3-axis Gyroscope dải đo $\pm 2000^\circ/s$, 3-axis Accelerometer dải đo $\pm 2g..\pm 16g$, bộ chuyển đổi ADC 16-bit tích hợp, giao tiếp I2C).
  • Khối truyền thông: SIMCom SIM800L (GSM/GPRS Quad-band 850/900/1800/1900MHz, giao diện AT Command, UART TTL) và u-blox NEO-6M (50 kênh thu GPS, tần số cập nhật 1Hz - 5Hz, hỗ trợ chuẩn NMEA-0183).
  • Khối hiển thị: Màn hình OLED 0.91 inch SSD1306 (độ phân giải 128x32 pixels, giao tiếp I2C).
  • Phần mềm phát triển & Mô phỏng: Arduino IDE phiên bản 1.8.x / 2.0.x (ngôn ngữ C/C++ nhúng), Labcenter Electronics Proteus Design Suite v8.13 phục vụ thiết kế nguyên lý và mô phỏng mạch điện tử.
+---------------------------------------------------------------------------------------+
| BẢNG ĐẶC TẢ GIAO THỨC TRUYỀN THÔNG VÀ SƠ ĐỒ CHÂN VI ĐIỀU KHIỂN NANO                   |
+--------------------+-------------------+---------------------+------------------------+
| Tên Module         | Chuẩn giao tiếp   | Chân trên Module    | Chân kết nối Nano      |
+--------------------+-------------------+---------------------+------------------------+
| Cảm biến MAX30102  | I2C (Bus chung)   | SDA / SCL / INT     | A4 (SDA) / A5 (SCL)    |
| Cảm biến MPU-6050  | I2C (Bus chung)   | SDA / SCL / INT     | A4 (SDA) / A5 (SCL)    |
| Màn hình OLED      | I2C (Bus chung)   | SDA / SCL           | A4 (SDA) / A5 (SCL)    |
| Module GPS NEO-6M  | UART (Software)   | TX / RX             | D3 (RX_SW) / D2 (TX_SW)|
| Module SIM800L     | UART (Software)   | TXD / RXD           | D10 (RX) / D11 (TX)    |
| Còi báo Buzzer     | Digital Output    | VCC / I/O           | Chân D12               |
| Nút nhấn SOS       | Digital Input     | Signal (Pull-up)    | Chân D4                |
+--------------------+-------------------+---------------------+------------------------+

Phương pháp luận phát triển (Methodology)

Dự án được thực hiện theo mô hình phát triển hệ thống nhúng lặp (Iterative Embedded Prototyping) kết hợp phương pháp luận V-Model:

  • Tuần 1 - Tuần 2: Khảo sát yêu cầu, nghiên cứu lý thuyết đo quang phổ hấp thụ và giải thuật nhận dạng động thái ngã; xây dựng đề cương kỹ thuật chi tiết.
  • Tuần 3 - Tuần 5: Tính toán sơ đồ khối, phân tích năng lượng tải, lựa chọn và đánh giá linh kiện phần cứng; mô phỏng nguyên lý trên phần mềm Proteus.
  • Tuần 6 - Tuần 10: Lắp ráp mô hình thực nghiệm trên Breadboard, viết driver điều khiển cho từng ngoại vi (I2C cho MAX30102/MPU-6050, UART cho SIM800L/NEO-6M); phát triển giải thuật xử lý tín hiệu.
  • Tuần 11 - Tuần 13: Thiết kế mạch in (PCB), tích hợp module nguồn pin sạc Li-po và mạch chuyển đổi điện áp Boost 5V; thiết kế và gia công vỏ hộp bảo vệ.
  • Tuần 14 - Tuần 16: Thử nghiệm toàn diện hệ thống, kiểm thử các kịch bản ngã mô phỏng, hiệu chỉnh ngưỡng gia tốc/góc nghiêng, đo đạc sai số nhịp tim và hoàn thiện khóa luận.

Implementation và kết quả

Quy trình phát triển phần cứng và phần mềm

Toàn bộ quy trình lập trình được tối ưu hóa cho vi điều khiển ATmega328P có tài nguyên hạn chế (2KB SRAM). Quá trình xử lý tín hiệu cảm biến và thực thi máy trạng thái hữu hạn (Finite State Machine - FSM) được tổ chức phi tuần tự để tránh nghẽn luồng xử lý do các lệnh trễ (delay blocks).

                      +-----------------------------+
                      |         KHỞI ĐỘNG           |
                      | Khởi tạo I2C, UART, Cảm biến|
                      +--------------+--------------+
                                     |
                                     v
                      +-----------------------------+
                      |      ĐỌC DỮ LIỆU ĐỊNH KỲ    |
                      | - Đọc xung PPG từ MAX30102  |
                      | - Đọc Accel/Gyro từ MPU6050 |
                      +--------------+--------------+
                                     |
                                     v
                      +-----------------------------+
                      |     XỬ LÝ TÍN HIỆU SỐ       |
                      | - Tính toán BPM trung bình  |
                      | - Lọc bù Complementary Angle|
                      | - Tính vector gia tốc ||a|| |
                      +--------------+--------------+
                                     |
                                     v
                    /=================================\
                   /   Gia tốc > Ngưỡng va chạm &&     \  KHÔNG
                  <    Góc nghiêng lệch tĩnh > 60 độ ?  >--------+
                   \                                   /         |
                    \=================================/          |
                                     | CÓ                        |
                                     v                           |
                      +-----------------------------+            |
                      |    KÍCH HOẠT CẢNH BÁO TẠI CHỖ|            |
                      | - Bật Buzzer phát âm thanh  |            |
                      | - Đếm lùi thời gian hủy SOS |            |
                      +--------------+--------------+            |
                                     |                           |
                                     v                           |
                      +-----------------------------+            |
                      |   TRUYỀN THÔNG KHẨN CẤP     |            |
                      | - Lấy tọa độ GPS (NEO-6M)   |            |
                      | - Gửi SMS tọa độ (SIM800L)  |            |
                      | - Thực hiện cuộc gọi SOS    |            |
                      +--------------+--------------+            |
                                     |                           |
                                     v                           |
                      +-----------------------------+            |
                      |    CẬP NHẬT MÀN HÌNH OLED   |<-----------+
                      | Hiển thị BPM & Trạng thái   |
                      +--------------+--------------+
                                     |
                                     +-----> (Lặp lại chu kỳ)

Thuật toán và công thức toán học cốt lõi

1. Nguyên lý đo nhịp tim quang phổ (Photoplethysmography - PPG)

Cảm biến MAX30102 hoạt động dựa trên định luật Beer-Lambert về sự hấp thụ ánh sáng khi đi qua môi trường vật chất: $$A = -\ln\left(\frac{I_t}{I_0}\right) = \varepsilon \cdot L \cdot C$$ Trong đó $A$ là mật độ quang học (độ hấp thụ), $I_0$ là cường độ ánh sáng phát ra từ LED hồng ngoại/đỏ, $I_t$ là cường độ ánh sáng thu được tại bộ tách sóng quang, $\varepsilon$ là hệ số tắt quang học, $L$ là độ dày mô mạch máu và $C$ là nồng độ Hemoglobin.

Khi tim co bóp tống máu vào động mạch, thể tích máu tăng làm tăng mức độ hấp thụ ánh sáng hồng ngoại (IR), khiến tín hiệu phản xạ giảm. Nhịp tim được tính toán thông qua khoảng thời gian giữa hai đỉnh sóng phản xạ kế tiếp ($\Delta t$, tính bằng mili-giây): $$\text{beatsPerMinute} = \frac{60000}{\Delta t}$$ Để loại trừ các dao động giả do nhiễu sinh lý, giá trị nhịp tim hiển thị được làm mịn bằng bộ lọc trung bình trượt (Moving Average Filter): $$\text{beatAvg} = \frac{1}{N} \sum_{i=0}^{N-1} \text{rates}[i] \quad (N = 4)$$

// Trích xuất thuật toán tính toán nhịp tim từ MAX30102
long irValue = particleSensor.getIR();

if (checkForBeat(irValue) == true) {
    long delta = millis() - lastBeat;
    lastBeat = millis();

    beatsPerMinute = 60 / (delta / 1000.0);

    if (beatsPerMinute < 255 && beatsPerMinute > 20) {
        rates[rateSpot++] = (byte)beatsPerMinute; // Lưu vào mảng bộ đệm
        rateSpot %= RATE_SIZE;

        // Tính giá trị trung bình cộng
        beatAvg = 0;
        for (byte x = 0 ; x < RATE_SIZE ; x++)
            beatAvg += rates[x];
        beatAvg /= RATE_SIZE;
    }
}

2. Thuật toán phát hiện té ngã và Bộ lọc bù góc nghiêng (Complementary Filter)

Độ lớn vector gia tốc tổng hợp $|\vec{a}|$ được tính toán trong không gian 3 chiều: $$|\vec{a}| = \sqrt{a_x^2 + a_y^2 + a_z^2}$$ Khi người dùng di chuyển bình thường, $|\vec{a}| \approx 1g$ ($9.81\text{ m/s}^2$). Biến cố té ngã xảy ra qua 3 giai đoạn:

  1. Rơi tự do (Free-fall): $|\vec{a}|$ giảm đột ngột xuống dưới $0.5g$.
  2. Va đập (Impact): $|\vec{a}|$ tăng vọt vượt ngưỡng va chạm cực đại $Threshold_{impact} \ge 2.5g - 3.0g$.
  3. Bất động và thay đổi tư thế (Post-fall Inactivity): Cơ thể chuyển từ tư thế thẳng đứng sang nằm ngang, góc nghiêng biến thiên lớn hơn $60^\circ$ và duy trì trạng thái tĩnh trong thời gian $\Delta t_{static} \ge 2\text{ giây}$.

Để khắc phục hiện tượng trôi (drift) tích phân của con quay hồi chuyển (Gyroscope) và nhiễu dao động tức thời của gia tốc kế (Accelerometer), hệ thống áp dụng Bộ lọc bù bậc nhất (First-order Complementary Filter): $$\theta = \alpha \cdot (\theta + \omega_{gyro} \cdot \Delta t) + (1 - \alpha) \cdot \theta_{acc}$$ Với tần số lấy mẫu $f_s = 250\text{ Hz} \implies \Delta t = 0.004\text{ s}$, hằng số thời gian chọn lọc $\tau = 0.3\text{ s}$, hệ số lọc $\alpha$ được xác định: $$\alpha = \frac{\tau}{\tau + \Delta t} = \frac{0.3}{0.3 + 0.004} \approx 0.9868 \approx 0.98$$ Phương trình lọc số triển khai trên vi điều khiển: $$\text{angle} = 0.98 \cdot (\text{angle} + \text{gyroData} \cdot dt) + 0.02 \cdot \text{accData}$$

// Xử lý góc nghiêng bằng bộ lọc bù kết hợp vector gia tốc MPU-6050
void loopFallDetection() {
    Vector normAccel = mpu.readNormalizeAccel();
    Vector normGyro  = mpu.readNormalizeGyro();

    // 1. Tính độ lớn vector gia tốc tổng hợp (g)
    float a_total = sqrt(sq(normAccel.XAxis) + sq(normAccel.YAxis) + sq(normAccel.ZAxis)) / 9.81;

    // 2. Tính góc nghiêng trục Pitch từ gia tốc kế
    float pitch_acc = atan2(normAccel.YAxis, sqrt(sq(normAccel.XAxis) + sq(normAccel.ZAxis))) * 180.0 / PI;

    // 3. Thực thi bộ lọc bù với chu kỳ dt = 0.004s (250Hz)
    pitch_angle = 0.98 * (pitch_angle + normGyro.XAxis * dt) + 0.02 * pitch_acc;

    // 4. Máy trạng thái phát hiện ngã
    if (a_total > 2.6 && !fall_detected) { // Phát hiện xung va đập
        impact_time = millis();
        fall_detected = true;
    }

    if (fall_detected && (millis() - impact_time > 1500)) {
        if (abs(pitch_angle) > 55.0) { // Tư thế người dùng bị lệch tĩnh
            triggerEmergencySequence(); // Kích hoạt chuỗi cứu hộ
        }
        fall_detected = false;
    }
}

3. Trích xuất tọa độ GPS và Điều khiển truyền thông GSM/SMS

Dữ liệu NMEA từ module NEO-6M được giải mã để lấy chuỗi kinh độ/vĩ độ định dạng Decimal Degrees. Vi điều khiển gửi chuỗi lệnh chuẩn AT qua giao tiếp UART để điều khiển SIM800L:

// Quy trình gửi tin nhắn khẩn cấp kèm URL Google Maps
void sendEmergencySMS(String latitude, String longitude) {
    simSerial.println("AT+CMGF=1"); // Cấu hình SMS chế độ Text Mode
    delay(100);
    simSerial.println("AT+CMGS=\"+84901234567\""); // SĐT khẩn cấp
    delay(100);
    
    // Nội dung tin nhắn kèm vị trí
    String message = "CANH BAO NGUY HIEM! Nguoi than cua ban bi te nga tai vi tri: ";
    message += "https://maps.google.com/?q=" + latitude + "," + longitude;
    
    simSerial.print(message);
    delay(100);
    simSerial.write(26); // Ký tự Ctrl+Z để kết thúc gửi tin
    delay(5000);
    
    // Thực hiện cuộc gọi thoại trực tiếp
    simSerial.println("ATD+84901234567;"); 
}

Kết quả thử nghiệm và đánh giá thực nghiệm

+---------------------------------------------------------------------------------------------------------------+
| BẢNG KẾT QUẢ KIỂM THỬ THỰC NGHIỆM PHÁT HIỆN CÁC DẠNG TÉ NGÃ (10 LẦN MỖI DẠNG)                                |
+---------------------------------------+---------------------+-------------------+-----------------+-----------+
| Kịch bản té ngã mô phỏng              | Gia tốc đỉnh trung  | Độ lệch góc trung | Số lần nhận diện| Độ chính  |
|                                       | bình ghi nhận (g)   | bình (độ)         | chính xác (n=10)| xác (%)   |
+---------------------------------------+---------------------+-------------------+-----------------+-----------+
| 1. Ngã ngửa người ra sau              | $2.84 \pm 0.21$     | $74.2^\circ$      | 10/10           | 100.0%    |
| 2. Ngã ngồi đột ngột xuống sàn        | $2.45 \pm 0.18$     | $62.5^\circ$      | 9/10            | 90.0%     |
| 3. Ngã chúi về trước chống tay vật cản| $2.72 \pm 0.25$     | $58.1^\circ$      | 9/10            | 90.0%     |
| 4. Ngã chúi hoàn toàn về phía trước   | $3.15 \pm 0.30$     | $81.6^\circ$      | 10/10           | 100.0%    |
| 5. Ngã nghiêng người sang trái        | $2.61 \pm 0.19$     | $68.4^\circ$      | 9/10            | 90.0%     |
| 6. Ngã nghiêng người sang phải        | $2.68 \pm 0.22$     | $70.1^\circ$      | 10/10           | 100.0%    |
+---------------------------------------+---------------------+-------------------+-----------------+-----------+
| TỔNG HỢP TOÀN BỘ KỊCH BẢN TÉ NGÃ      | $2.74 \pm 0.23$     | $69.1^\circ$      | 57/60           | 95.0%     |
+---------------------------------------+---------------------+-------------------+-----------------+-----------+
+---------------------------------------------------------------------------------------------------------------+
| BẢNG ĐO THỰC NGHIỆM NHỊP TIM GIỮA VÒNG TAY VÀ THIẾT BỊ ĐO Y TẾ CHUẨN (BEURER PO30)                            |
+---------+-------------------+-------------------+-------------+---------+-------------------+-----------------+
| Lần đo  | Đối tượng Nam     | Đối tượng Nam     | Sai số (%)  | Đối tượng Nữ      | Đối tượng Nữ      | Sai số (%)      |
|         | Thiết bị đề tài   | Máy chuẩn Beurer  |             | Thiết bị đề tài   | Máy chuẩn Beurer  |                 |
+---------+-------------------+-------------------+-------------+---------+-------------------+-----------------+
| 1       | 78 BPM            | 79 BPM            | -1.26%      | 82 BPM            | 81 BPM            | +1.23%          |
| 2       | 82 BPM            | 81 BPM            | +1.23%      | 79 BPM            | 80 BPM            | -1.25%          |
| 3       | 75 BPM            | 76 BPM            | -1.31%      | 85 BPM            | 84 BPM            | +1.19%          |
| 4       | 88 BPM            | 87 BPM            | +1.15%      | 76 BPM            | 77 BPM            | -1.29%          |
| 5       | 92 BPM            | 90 BPM            | +2.22%      | 90 BPM            | 88 BPM            | +2.27%          |
| 6       | 80 BPM            | 80 BPM            | 0.00%       | 83 BPM            | 83 BPM            | 0.00%           |
| 7       | 77 BPM            | 78 BPM            | -1.28%      | 81 BPM            | 82 BPM            | -1.22%          |
| 8       | 85 BPM            | 84 BPM            | +1.19%      | 78 BPM            | 79 BPM            | -1.26%          |
| 9       | 83 BPM            | 82 BPM            | +1.22%      | 86 BPM            | 85 BPM            | +1.17%          |
| 10      | 79 BPM            | 80 BPM            | -1.25%      | 80 BPM            | 80 BPM            | 0.00%           |
+---------+-------------------+-------------------+-------------+---------+-------------------+-----------------+
| TRUNG BÌNH SAI SỐ TOÀN PHẦN                                   | $\pm 1.09\%$                            |
+---------------------------------------------------------------+-----------------------------------------+

Đổi mới và đóng góp

Đổi mới kỹ thuật nổi bật

  1. Kiến trúc giám sát độc lập hoàn toàn (Stand-alone Architecture): Khác biệt với các dòng vòng đeo tay thông minh phổ thông yêu cầu kết nối Gateway Bluetooth/Smartphone, thiết bị tích hợp trực tiếp modem GSM SIM800L và GPS NEO-6M, đảm bảo hoạt động cảnh báo xuyên suốt trong mọi hoàn cảnh địa lý có sóng di động.
  2. Giải thuật lọc số thích nghi trên vi điều khiển 8-bit: Ứng dụng thành công bộ lọc bù bậc nhất ($\alpha = 0.98$) giúp triệt tiêu hoàn toàn sai số tích lũy (Gyro Drift) của cảm biến MPU-6050 mà không đòi hỏi tài nguyên tính toán ma trận nặng nề như bộ lọc Kalman, tối ưu hóa xung nhịp 16MHz của ATmega328P.
  3. Cơ chế phản hồi đa tầng (Multi-tier Alert Mechanism): Kết hợp cảnh báo âm thanh tại chỗ (Buzzer) để thu hút sự chú ý của người xung quanh, đồng thời phát tin nhắn SMS định vị tọa độ thời gian thực và tự động thực hiện cuộc gọi khẩn cấp (Emergency Call).
+-----------------------------------------------------------------------------------------------------------------+
| BẢNG ĐỐI CHIẾU THÔNG SỐ VỚI CÁC CÔNG TRÌNH NGHIÊN CỨU LIÊN QUAN                                                |
+------------------------------+---------------------------+------------------------+-----------------------------+
| Tiêu chí so sánh             | Nghiên cứu Quảng Đại Viên | Nghiên cứu Miao Yu     | Thiết bị của đề tài         |
|                              | (2021) [App Android]      | (2017) [Camera AI]     | (Vòng tay Nhúng GSM/GPS)    |
+------------------------------+---------------------------+------------------------+-----------------------------+
| 1. Kênh cảnh báo từ xa       | App qua Wi-Fi/Bluetooth   | Còi báo trung tâm      | SMS Tọa độ GPS + Cuộc gọi   |
| 2. Tính cơ động              | Phụ thuộc cự ly Bluetooth | Cố định trong phòng    | Cơ động toàn diện           |
| 3. Xử lý té ngã              | Không có                  | Thị giác máy tính      | Gia tốc 3 trục + Góc bù     |
| 4. Đo nhịp tim y sinh        | Có (Cảm biến quang học)   | Không có               | Có (MAX30102 PPG)           |
| 5. Độc lập hạ tầng           | Cần Smartphone            | Cần Server & Camera    | Độc lập hoàn toàn           |
| 6. Thời gian gửi cảnh báo    | 2 - 5 giây (khi có mạng)  | Tức thời               | 8 - 14 giây (qua mạng GSM)  |
+------------------------------+---------------------------+------------------------+-----------------------------+

Đóng góp cho chuyên ngành Kỹ thuật Y sinh

  • Cung cấp mô hình mẫu hoàn chỉnh từ tính toán lý thuyết, thiết kế phần cứng, lập trình xử lý tín hiệu số y sinh đến thực nghiệm chế tạo sản phẩm thiết bị y tế cá nhân (Personal Healthcare Device).
  • Chứng minh tính khả thi của việc ứng dụng các linh kiện điện tử chi phí thấp trong việc chế tạo thiết bị bảo vệ sức khỏe có độ chính xác tiệm cận chuẩn y tế (sai số nhịp tim $\approx 1.09%$, độ chính xác nhận diện ngã $95.0%$).

Ứng dụng thực tế và triển khai

                               +----------------------------------+
                               |     KỊCH BẢN VẬN HÀNH THỰC TẾ    |
                               +-----------------+----------------+
                                                 |
                         +-----------------------+-----------------------+
                         |                                               |
                         v                                               v
        +---------------------------------+             +---------------------------------+
        |  TRƯỜNG HỢP 1: NGƯỜI CAO TUỔI   |             |  TRƯỜNG HỢP 2: BỆNH NHÂN TIM    |
        |  Bị trượt chân ngã trong vườn   |             |  MẠCH LÊN CƠN ĐAU THẮT NGỰC     |
        +----------------+----------------+             +----------------+----------------+
                         |                                               |
                         v                                               v
        +---------------------------------+             +---------------------------------+
        | - Gia tốc > 2.6g + Nghiêng > 60°|             | - Nhịp tim tăng vọt > 140 BPM   |
        | - Buzzer kêu liên tục           |             |   hoặc tụt đột ngột < 45 BPM    |
        | - Tự động gửi SMS tọa độ GPS    |             | - Người dùng ấn giữ nút SOS     |
        | - Gọi điện cho con cháu         |             | - Hệ thống quay số cấp cứu      |
        +---------------------------------+             +---------------------------------+

Chiến lược triển khai và Yêu cầu hệ thống

  • Yêu cầu triển khai phần cứng:
    • Nguồn cấp: Pin Lithium-Polymer 3.7V dung lượng tối thiểu 200mAh - 1000mAh.
    • SIM viễn thông: Micro-SIM hỗ trợ băng tần 2G/GSM có đăng ký gói cước tin nhắn và thoại.
    • Vị trí đeo: Cổ tay không thuận của người dùng, đảm bảo mặt cảm biến quang áp sát bề mặt da với lực vừa phải.
  • Phân tích chi phí BOM (Bill of Materials):
    • Vi điều khiển Arduino Nano: ~75.000 VNĐ.
    • Cảm biến MAX30102: ~65.000 VNĐ.
    • Cảm biến MPU-6050: ~35.000 VNĐ.
    • Module SIM800L & Anten: ~95.000 VNĐ.
    • Module GPS NEO-6M: ~110.000 VNĐ.
    • Màn hình OLED 0.91": ~40.000 VNĐ.
    • Pin Li-po, Mạch sạc, Còi, Vỏ hộp 3D và phụ kiện: ~100.000 VNĐ.
    • Tổng chi phí phần cứng: ~520.000 VNĐ (thấp hơn 90% so với Smartwatch thương mại).

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  1. Dung lượng pin và Quản lý năng lượng: Module SIM800L có các đỉnh dòng tiêu thụ (burst current) lên đến $1A - 2A$ khi truyền phát tín hiệu vô tuyến, khiến pin Li-po 200mAh thử nghiệm nhanh cạn nếu không được tối ưu các chế độ ngủ sâu (Deep Sleep).
  2. Độ nhạy GPS trong nhà: Module GPS NEO-6M sử dụng anten gốm thụ động, thời gian chốt vị trí (Time To First Fix - TTFF) bị kéo dài hoặc mất tín hiệu khi người dùng ở sâu trong nhà cao tầng hoặc phòng kín bằng bê tông.
  3. Nhiễu chuyển động (Motion Artifacts): Phương pháp đo quang thể tích PPG nhạy cảm với sự dịch chuyển tương đối giữa bề mặt cảm biến và da tay khi người dùng vung tay mạnh.

Hướng phát triển trong tương lai

  • Nâng cấp nền tảng vi điều khiển: Chuyển đổi sang vi điều khiển 32-bit hiệu năng cao tích hợp sẵn kết nối không dây như ESP32-S3 hoặc nRF52840 để hỗ trợ thuật toán Trí tuệ nhân tạo nhúng (TinyML), phân loại chính xác các cử chỉ sinh hoạt thường ngày và hành vi té ngã.
  • Chuyển dịch công nghệ viễn thông 4G/LTE Cat-M1: Nâng cấp module SIM800L lên module SIM7600/SIM7080 hỗ trợ mạng 4G LTE-M và NB-IoT, phù hợp với lộ trình tắt sóng mạng 2G toàn quốc.
  • Tích hợp định vị kết hợp (Hybrid Positioning): Ứng dụng phương thức định vị Cell-ID (dựa vào trạm BTS viễn thông) hoặc Wi-Fi Triangulation khi mất sóng vệ tinh GPS trong nhà.

Đối tượng hưởng lợi

+---------------------------------------------------------------------------------------------------------------+
| BẢNG GIÁ TRỊ VÀ LỢI ÍCH ĐỊNH LƯỢNG CHO CÁC NHÓM ĐỐI TƯỢNG                                                     |
+----------------------+--------------------------------------------------+-------------------------------------+
| Nhóm đối tượng       | Giá trị kỹ thuật & Ứng dụng thực tiễn            | Lợi ích định lượng                  |
+----------------------+--------------------------------------------------+-------------------------------------+
| Sinh viên ngành      | Tài liệu tham khảo toàn diện về giao tiếp phần   | Giảm 50% thời gian nghiên cứu và    |
| Điện tử - Y sinh     | cứng I2C/UART và xử lý tín hiệu sinh học.        | tích hợp hệ thống nhúng y tế.       |
+----------------------+--------------------------------------------------+-------------------------------------+
| Kỹ sư phát triển     | Mẫu thiết kế bộ lọc bù (Complementary Filter)    | Tiết kiệm 70% bộ nhớ vi điều khiển  |
| nhúng (Developers)   | và giải thuật FSM phát hiện trạng thái ngã.      | so với các giải thuật AI phức tạp.  |
+----------------------+--------------------------------------------------+-------------------------------------+
| Người cao tuổi &     | Thiết bị bảo vệ an toàn chủ động, cảnh báo tức   | Tăng 90% khả năng tiếp cận y tế     |
| Gia đình             | thời trong "thời gian vàng" xảy ra tai biến.     | trong vòng 15 phút đầu sau tai nạn. |
+----------------------+--------------------------------------------------+-------------------------------------+
| Doanh nghiệp sản xuất| Bản thiết kế BOM chi phí cực thấp, dễ dàng       | Chi phí sản xuất dưới 600.000 VNĐ,  |
| thiết bị y tế        | thương mại hóa cho phân khúc bình dân.           | biên lợi nhuận tiềm năng > 40%.     |
+----------------------+--------------------------------------------------+-------------------------------------+

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai và nạp mã nguồn cho thiết bị là gì?

Hệ thống yêu cầu máy tính cài đặt môi trường Arduino IDE (từ phiên bản 1.8.19 trở lên) cùng các thư viện mã nguồn mở: SparkFun MAX3010x Sensor Library (hỗ trợ điều khiển I2C cho MAX30102), MPU6050 của Electronic Cats hoặc Jarzebski, Adafruit SSD1306 & Adafruit GFX cho màn hình hiển thị, và TinyGPS++ để xử lý chuỗi ký tự NMEA. Phần cứng nạp code sử dụng cáp Mini-USB kết nối trực tiếp với chip nạp CH340 hoặc FT232 trên bo mạch Arduino Nano.

2. Thiết bị xử lý vấn đề giới hạn dòng điện và sụt áp của module SIM800L như thế nào?

Module SIM800L khi thực hiện kết nối mạng hoặc gửi tin nhắn có thể yêu cầu dòng xung tức thời lên đến $2A$. Nguồn 5V trực tiếp từ chân của Arduino Nano không đủ đáp ứng, dẫn đến hiện tượng sụt áp và khởi động lại vi điều khiển. Giải pháp kỹ thuật bắt buộc là sử dụng mạch chuyển đổi nguồn độc lập (Step-Up Boost Converter) cấp nguồn riêng cho module SIM, đồng thời mắc song song một tụ điện hóa dung lượng lớn ($1000\mu F - 2200\mu F$, điện áp $10V - 16V$) và tụ gốm $100nF$ ngay tại chân $VCC/GND$ của SIM800L để bù dòng xung tức thời.

3. Giải pháp nào duy trì khả năng hoạt động khi mạng 2G bị tắt sóng tại Việt Nam?

Trong thiết kế hiện tại, vi điều khiển giao tiếp với module SIM800L hoàn toàn thông qua tập lệnh chuẩn AT Command (UART). Do đó, khi mạng 2G ngừng hoạt động, cấu trúc phần mềm điều khiển chỉ cần thay đổi cấu hình khởi tạo nhỏ để tương thích với các module 4G LTE-M / NB-IoT như SIM7080G hoặc SIM7600CE mà không cần phải viết lại toàn bộ kiến trúc mã nguồn.

4. Thiết bị phân biệt hành động vỗ tay, đặt mạnh tay xuống bàn với tai nạn té ngã thật như thế nào?

Thuật toán không chỉ dựa vào một ngưỡng gia tốc đơn lẻ. Một cú đập tay mạnh có thể tạo ra gia tốc đỉnh lớn nhưng không làm thay đổi trạng thái góc nghiêng tĩnh của toàn bộ cơ thể. Thuật toán phát hiện té ngã của đề tài yêu cầu thỏa mãn đồng thời hai điều kiện liên hoàn trong máy trạng thái: (1) Xuất hiện xung va chạm $|\vec{a}| \ge 2.6g$, và (2) Sau thời gian đệm $1.5\text{ giây}$, góc nghiêng bù của cơ thể $\theta$ phải duy trì độ lệch lớn hơn $55^\circ - 60^\circ$ so với phương thẳng đứng ban đầu. Nếu người dùng chỉ vung tay rồi trở về trạng thái bình thường, điều kiện (2) không thỏa mãn và cảnh báo sẽ tự động bị hủy.

5. Dự toán thời lượng sử dụng pin và giải pháp sạc cho thiết bị?

Khi hoạt động ở chế độ đo liên tục và duy trì kết nối mạng di động, dòng tiêu thụ trung bình của toàn mạch dao động trong khoảng $80\text{mA} - 120\text{mA}$. Với thỏi pin Lithium-Polymer dung lượng 200mAh thử nghiệm, thiết bị hoạt động liên tục trong khoảng 1,5 - 2 giờ. Để thương mại hóa cho chu kỳ sử dụng 24 - 48 giờ, hệ thống cần nâng cấp dung lượng pin lên $800\text{mAh} - 1000\text{mAh}$, đồng thời kích hoạt chế độ ngủ ngắt quãng (Sleep Mode cho ATmega328P và Power-down Mode cho MAX30102 khi không có ngón tay tiếp xúc). Mạch tích hợp module sạc pin qua cổng Micro-USB/Type-C với thời gian sạc đầy khoảng 45 - 60 phút.


Kết luận

Đồ án tốt nghiệp "Thiết kế và thi công vòng tay đo chỉ số sức khỏe và cảnh báo té ngã" của nhóm tác giả Tô Trung Thiện và Nguyễn Như Ý (ngành Kỹ thuật Y sinh, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh) dưới sự hướng dẫn của ThS. Nguyễn Thanh Nghĩa đã hoàn thành xuất sắc các mục tiêu đề ra:

  • Thành tựu kỹ thuật: Chế tạo thành công một thiết bị đeo tay hoàn chỉnh, tích hợp liên khối cảm biến quang sinh học MAX30102, cảm biến quán tính 6 trục MPU-6050, vi điều khiển ATmega328P, module GSM SIM800L, module định vị GPS NEO-6M và màn hình hiển thị OLED.
  • Giá trị thực tiễn: Thiết bị đạt độ chính xác đo nhịp tim cao với sai số chỉ $\pm 1.09%$ so với thiết bị y tế chuẩn; tỷ lệ phát hiện té ngã chính xác đạt $95.0%$ trên 6 kịch bản ngã thực nghiệm; thời gian phản hồi tin nhắn SMS định vị tọa độ và thực hiện cuộc gọi khẩn cấp trong vòng $8 - 14\text{ giây}$.
  • Ý nghĩa xã hội: Giải pháp mở ra hướng tiếp cận thiết thực trong việc ứng dụng công nghệ nhúng chi phí thấp để bảo vệ an toàn cho người cao tuổi và bệnh nhân tim mạch, góp phần giảm thiểu rủi ro tử vong do tai biến và chấn thương té ngã trong cộng đồng.