Ngày nay, IoT đang dần được sử dụng nhiều hơn trong lĩnh vực y tế, cung cấp nhiều giải pháp và sản phẩm kết nối với mạng IoT để cải thiện chất lượng chăm sóc, giảm thiểu chi phí và tăng tính hiệu quả của các dịch vụ y tế. Việc áp dụng IoT trong lĩnh vực chăm sóc sức khỏe đã mang lại lợi ích không chỉ cho bệnh nhân mà còn cho các nhà cung cấp dịch vụ y tế, bằng cách tạo ra sự hiện diện lớn hơn và tăng tính hiệu quả trong việc cung cấp dịch vụ chăm sóc sức khỏe. Một số ứng dụng của IoT chăm sóc sức khỏe là các ứng dụng y tế di động hoặc thiết bị đeo được cho phép bệnh nhân thu thập dữ liệu sức khỏe của họ. Các bệnh viện sử dụng IoT để theo dõi vị trí của các thiết bị y tế, nhân viên và bệnh nhân.
Đánh Giá Các Nghiên Cứu Có Sẵn
Trong những năm gần đây, đã có nhiều thiết bị phát hiện sốc nhiệt được phát triển và ứng dụng thực tiễn Một trong những dự án tiên phong trong lĩnh vực này là hệ thống phát hiện đột quỵ nhiệt do Iksan Jaya và cộng sự thực hiện, sử dụng Wemos D1 Mini làm vi xử lý và cảm biến DS18B20 để đo nhiệt độ cơ thể Hệ thống này kết nối qua mô-đun Wi-Fi ESP8266 để truyền dữ liệu đến cơ sở dữ liệu MySQL và hiển thị thông tin trên trang web được xây dựng bằng phần mềm Bootstrap Tuy nhiên, độ chính xác của hệ thống này còn hạn chế do không xem xét các yếu tố quan trọng như nhịp tim và nhiệt độ xung quanh.
Nghiên cứu của P O Antonio và cộng sự đã phát triển một hệ thống phát hiện đột quỵ nhiệt dựa trên công nghệ IoT, sử dụng cảm biến nhịp tim Pulse Sensor và cảm biến nhiệt độ DS18B20 để đo nhịp tim và nhiệt độ cơ thể Hệ thống này tích hợp vi xử lý Arduino Mini 05 và mô-đun Wi-Fi ESP8266 để truyền dữ liệu đến cơ sở dữ liệu MySQL, hiển thị thông tin trên trang web được xây dựng bằng phần mềm Bootstrap thông qua máy tính cá nhân Khi các chỉ số được thu thập thành công, chúng sẽ được gửi dưới dạng tin nhắn nhanh (SMS) cho người dùng thông qua giao thức HTTPS nhằm cảnh báo về sốc nhiệt Mặc dù các chỉ số hiện tại có triển vọng, vẫn có thể cải thiện bằng cách đo thêm nhiệt độ và độ ẩm xung quanh, cũng như áp dụng logic mờ để tính toán.
Chúng tôi đã đánh giá các nghiên cứu hiện có và đề xuất một giải pháp tối ưu để phát hiện đột quỵ nhiệt Giải pháp này bao gồm thiết kế thiết bị đo nhịp tim, nhiệt độ cơ thể, nhiệt độ và độ ẩm xung quanh, từ đó tạo ra chỉ số "Chỉ số sốc nhiệt" (Heat Stroke Risk Level) Các chỉ số và thông báo sẽ được tích hợp công nghệ IoT, cho phép gửi dữ liệu lên hệ thống máy chủ và thông báo cho người dùng qua ứng dụng phát triển trên nền tảng Android.
Hình 2 - 1: Quá trình phát triển và hoàn thành thiết bị
Phần Cứng
Cảm Biến Nhịp Tim Max30100
Cảm biến nhịp tim Max30100 có chức năng đo nhịp tim của cơ thể, nó có kích thước nhỏ gọn và độ chuẩn xác cao
Hình 2.1.1 - 1: Cảm biến nhịp tim Max30100 Đặc tính kỹ thuật MAX03100
- Điện áp hoạt động từ 1,8V đến 3,3V
- Dòng điện đầu vào 20mA
- Tích hợp loại bỏ nhiễu từ ánh sáng xung quanh
- Tốc độ lấy mẫu tín hiệu cao
- Xuất đầu ra dữ liệu nhanh
Cảm biến MAX30100, do Maxim Integrated phát triển, là một thiết bị đo nhịp tim và nồng độ oxy trong máu Với các linh kiện điện tử tích hợp sẵn để đo ánh sáng, xử lý tín hiệu và giao tiếp, cảm biến này dễ dàng tích hợp vào nhiều dự án điện tử khác nhau.
Cảm biến Max30100 áp dụng công nghệ đo ánh sáng không tiếp xúc để theo dõi sức khỏe người dùng Thiết bị chiếu hai tia sáng LED (đỏ và xanh lá cây) lên da, từ đó đo mức độ hấp thụ ánh sáng bởi huyết quản Nhờ vào quá trình này, Max30100 có khả năng tính toán nhịp tim và nồng độ oxy trong máu một cách chính xác.
Cảm biến Max30100 là một thiết bị nhỏ gọn, dễ dàng tích hợp vào các dự án điện tử như thiết bị đeo tay thông minh, thiết bị y tế và các ứng dụng IoT Nó không chỉ tiết kiệm năng lượng mà còn mang lại độ chính xác cao trong quá trình đo lường.
Cảm Biến DHT11
Cùng với đó là cảm biến DHT11 có chức năng đo nhiệt độ và độ ẩm không khí xung quanh
Hình 2.1.2 - 1: Cảm biến DHT11 Đặc tính kỹ thuật DHT11
- Dòng sử dụng: 2.5mA max (khi truyền dữ liệu).
- Khoảng đo độ ẩm: 20%-90% RH (sai số 5%RH)
- Khoảng đo nhiệt độ: 0-50°C (sai số 2°C)
- Tần số lấy mẫu tối đa: 1Hz (1 giây / lần)
- Kích thước 15mm x 12mm x 5.5mm.
Cảm biến DHT11 là một thiết bị đo độ ẩm và nhiệt độ phổ biến nhờ vào chi phí thấp và khả năng thu thập dữ liệu dễ dàng qua giao tiếp 1 wire Với bộ tiền xử lý tín hiệu tích hợp, cảm biến này cung cấp dữ liệu chính xác mà không cần tính toán phức tạp Được sản xuất bởi Aosong Electronics, DHT11 thường được ứng dụng trong các lĩnh vực đo lường và giám sát môi trường.
Cảm biến DHT11 đo nhiệt độ với độ chính xác ±2 độ C và độ ẩm với độ chính xác ±5% Thiết bị này sử dụng cặp điện cực để đo điện trở và điện dung của không khí trong khu vực nhất định, sau đó chuyển đổi các giá trị này thành nhiệt độ và độ ẩm tương ứng.
Cảm biến DHT11 có kích thước nhỏ gọn, dễ sử dụng và tích hợp vào các dự án điện tử.
Nó có khả năng kết nối với các vi điều khiển phổ biến như Arduino, Raspberry Pi và các thiết bị khác, cho phép đọc và xử lý dữ liệu từ cảm biến một cách hiệu quả.
Cảm Biến Nhiệt Độ DS18B20
Tiếp theo là cảm biến nhiệt độ DS18B20 đo nhiệt độ lõi của cơ thể với sai số thấp (±0.5°C).
Hình 2.1.3 - 1: Cảm biến nhiệt độ DS18B20 Đặc tính kỹ thuật DS18B20
Điện áp hoạt động từ 3V đến 5V
Phạm vi nhiệt độ: -55 ° C đến + 125 ° C
Độ phân giải đầu ra: 9-bit đến 12-bit (có thể lập trình)
Địa chỉ 64-bit duy nhất cho phép ghép kênh
Thời gian chuyển đổi: 750ms ở 12 bit
DS18B20 là IC cảm biến nhiệt độ kỹ thuật số tuân theo giao thức 1 dây và có thể đo nhiệt độ từ -55oC đến + 125oC với độ chính xác + -5%.
Dữ liệu nhận được từ 1 dây nằm trong khoảng từ 9 bit đến 12 bit.
Cảm biến nhiệt độ DS18B20 sử dụng giao thức 1 dây, cho phép điều khiển thông qua một chân duy nhất của vi điều khiển, cùng với việc cấp nguồn GND.
Giao thức 1 dây là một giao thức cấp cao, cho phép điều khiển nhiều cảm biến DS18B20 thông qua một chân duy nhất của vi điều khiển nhờ vào mã nối tiếp 64 bit độc đáo của mỗi cảm biến.
Vi Xử Lý ESP8266
Vi xử lý ESP8266 tích hợp sẵn mô đun wifi, sở hữu bộ nhớ lớn và tốc độ xử lý nhanh, cho phép lập trình dễ dàng thông qua Arduino IDE.
Hình 2.1.4 - 1: Vi xử lý ESP8266 Đặc tính kỹ thuật vi xử lý ESP8266
Điện áp hoạt động: 3.0 ~ 3.6VDC.
Dòng điện hoạt động: trung bình ~80mA.
Giao tiếp: UART/ADC/GPIO/PWM.
ESP8266 là một chip tích hợp cao, lý tưởng cho các ứng dụng Internet of Things (IoT) Chip này cung cấp giải pháp kết nối mạng Wi-Fi toàn diện và độc lập, cho phép lưu trữ ứng dụng và giảm tải các chức năng kết nối mạng.
Fi từ một bộ xử lý ứng dụng.
ESP8266 sở hữu khả năng xử lý và lưu trữ vượt trội, cho phép tích hợp dễ dàng với các bộ cảm biến, vi điều khiển và thiết bị ứng dụng cụ thể khác qua GPIOs, tất cả trong một thiết kế PCB nhỏ gọn và chi phí hợp lý.
Mạch ESP8266 có kích thước nhỏ gọn, đầy đủ chân IC, được thiết kế và gia công chất lượng cao Vỏ bọc kim loại chống nhiễu cùng với anten Wifi PCB tích hợp giúp đảm bảo khoảng cách truyền xa và ổn định.
Phần Mềm
Arduino IDE
Arduino IDE là phần mềm mã nguồn mở, chủ yếu dùng để viết và biên dịch mã cho module Arduino Nó bao gồm cả phần cứng và phần mềm, với phần cứng cung cấp khoảng 300,000 board mạch thiết kế sẵn cùng các cảm biến và linh kiện Phần mềm cho phép người dùng linh hoạt sử dụng các cảm biến và linh kiện của Arduino theo nhu cầu cụ thể.
Arduino IDE hỗ trợ nhiều ngôn ngữ lập trình như C và C++, cung cấp thư viện phong phú với các hàm và chức năng giúp người dùng thực hiện các tác vụ như điều khiển động cơ, giao tiếp với cảm biến và kết nối mạng.
Các tính năng chính của Arduino IDE bao gồm:
- Trình soạn thảo mã nguồn được tích hợp với các tính năng như tô sáng mã, kiểm tra cú pháp và đánh dấu cú pháp.
- Trình biên dịch được tích hợp để biên dịch mã nguồn thành mã máy.
- Trình tải chương trình để nạp chương trình lên board Arduino.
Thư viện lập trình đa dạng cung cấp cho người dùng các công cụ cần thiết để điều khiển động cơ, giao tiếp với cảm biến và thiết lập kết nối mạng hiệu quả.
- Hỗ trợ nhiều loại board Arduino khác nhau và có thể được mở rộng để hỗ trợ các board khác.
Thingspeak
ThingSpeak là nền tảng IoT do MathWorks phát triển, cho phép thu thập, phân tích và lưu trữ dữ liệu từ các thiết bị IoT Nền tảng này cung cấp công cụ để thiết lập chương trình cảm biến và thực hiện các tác vụ tự động dựa trên dữ liệu thu thập được.
ThingSpeak tương thích với nhiều thiết bị IoT phổ biến như Arduino và Raspberry Pi Nó cho phép thu thập dữ liệu từ các cảm biến đa dạng, bao gồm cảm biến nhiệt độ, độ ẩm, ánh sáng, độ ồn, độ rung, áp suất, độ bụi và nhiều loại cảm biến khác.
Các thiết bị có thể dễ dàng định cấu hình và gửi dữ liệu tới Thingspeak bằng cách sử dụng các giao thức truyền thông như HTTP.
- Có thể xem dữ liệu trong thời gian thực
- Nó có thể nhận dữ liệu từ phần mềm của bên thứ ba.
- Có thể sử dụng với Matlab để phân tích dữ liệu
Khi dữ liệu được gửi lên ThingSpeak, nền tảng này cung cấp các công cụ phân tích mạnh mẽ cho dữ liệu thu thập từ thiết bị IoT, bao gồm biểu đồ, đồ thị, bản đồ và báo cáo thống kê ThingSpeak cũng hỗ trợ tích hợp với các dịch vụ web khác, giúp người dùng phát triển các ứng dụng IoT phức tạp hơn.
MIT App Inventor
MIT App Inventor là một công cụ lập trình miễn phí do Viện Công nghệ Massachusetts phát triển, giúp người dùng dễ dàng thiết kế và phát triển ứng dụng di động Android Điểm nổi bật của App Inventor là khả năng cho phép người dùng tạo ứng dụng mà không cần có kiến thức lập trình sâu.
App Inventor cung cấp một giao diện kéo và thả, giúp người dùng dễ dàng thiết kế các mô-đun ứng dụng, từ giao diện người dùng đến mô-đun xử lý Nền tảng này hỗ trợ phát triển ứng dụng di động cho các dự án IoT và nhiều loại dự án khác.
Hivemq
MQTT là giao thức nhắn tin tiêu chuẩn cho giao tiếp máy với máy, rất phù hợp cho các ứng dụng IoT như cảm biến thông minh và thiết bị đeo.
- Gọn nhẹ và hiệu quả
Hình 2.2.4 - 1: Giao thức MQTT Để kết nối giao tiếp giữa APP, Website và hệ thống ta cần sử dụng một broker làm cầu nối: broker.hivemq.com
HiveMQ là một nền tảng truyền nhận dữ liệu miễn phí dựa trên giao thức MQTT, được thiết kế với đặc tính nhanh, hiệu quả, độ tin cậy cao
Mục Tiêu Hệ Thống
Hệ thống IoT (Internet of Things) được thiết kế để kết nối các thiết bị thông minh và thu thập dữ liệu từ chúng, với mục tiêu cung cấp thông tin chính xác và nhanh chóng Để triển khai hiệu quả, hệ thống cần đáp ứng các tiêu chí như độ chính xác cao, dễ sử dụng và giao diện thân thiện với người dùng ở mọi lứa tuổi Đặc biệt, việc áp dụng các công thức y học trong phân tích dữ liệu từ cảm biến là rất quan trọng, giúp đảm bảo độ tin cậy và chính xác của thông tin, đặc biệt trong lĩnh vực y tế.
Tính dễ dàng sử dụng là yếu tố quan trọng trong thiết kế hệ thống IoT, với giao diện người dùng cần đơn giản và dễ tương tác Điều này đặc biệt cần thiết cho người cao tuổi và người khuyết tật, giúp họ sử dụng hệ thống một cách thuận tiện và hiệu quả.
Hệ thống IoT cần đảm bảo khả năng xử lý nhanh chóng để thu thập và phân tích dữ liệu trong thời gian ngắn nhất, nhằm cung cấp kết quả chính xác và đáng tin cậy Điều này đặc biệt quan trọng trong lĩnh vực y tế, nơi mà việc đưa ra phương án điều trị kịp thời là cần thiết để bảo vệ sức khỏe người dùng.
Nguyên Lý Hoạt Động
Hệ thống bao gồm bộ mô đun cảm biến, điều khiển logic mờ và nguồn nuôi, với các cảm biến Max30100, DHT11 và DS18B20 được tích hợp để thu thập thông tin người dùng Dữ liệu từ các cảm biến sẽ được gửi đến Esp8266 để xử lý bằng logic mờ.
Sau khi xử lý, thông tin sẽ được gửi lên ứng dụng di động thông qua giao thức MQTT, giúp người dùng giám sát thông tin liên tục và theo thời gian thực Ứng dụng cũng cung cấp cảnh báo cho người dùng khi mức độ nguy hiểm cao và cho phép ghi lại các thông tin đo bất thường vào cơ sở dữ liệu Thingspeak.
Với dữ liệu từ Thingspeak, người dùng có thể theo dõi và cải thiện sức khỏe của bản thân Hệ thống này cung cấp giải pháp hiệu quả cho việc giám sát sức khỏe cơ thể.
Hình 3.2 - 1: Sơ đồ nguyên lý hệ thống
Chỉ Số Heat Index
Để hệ thống đạt được kết quả phán đoán chính xác cho người dùng, cần kết hợp dữ liệu từ các cảm biến với các công thức y học Việc này sẽ nâng cao độ tin cậy và tính chính xác của phân tích Cảm biến DHT11 được sử dụng để đo nhiệt độ và độ ẩm môi trường, nhưng để đánh giá độ sốc nhiệt của người dùng, chỉ số Heat Index cũng cần được xem xét.
Chỉ số Heat Index, hay còn gọi là chỉ số nóng bức, được tính toán dựa trên nhiệt độ và độ ẩm không khí, nhằm đo lường cảm giác nóng bức của con người Khi chỉ số này tăng cao, nguy cơ gặp phải các vấn đề sức khỏe như trầm cảm, đau đầu, hoa mắt, chóng mặt và đau tim cũng gia tăng Do đó, Heat Index là một chỉ số quan trọng để đánh giá nguy cơ đột quỵ nhiệt.
Cảm giác của con người về thời tiết được xác định dựa trên sự kết hợp giữa nhiệt độ và độ ẩm không khí, phản ánh mức độ thoải mái hoặc khó chịu của cơ thể.
- Nó cũng được sử dụng để đưa ra các khuyến cáo về sức khỏe trong trường hợp nhiệt độ và độ ẩm cao.
Để tính toán chỉ số Heat Index, cần biết nhiệt độ và độ ẩm không khí tại một thời điểm cụ thể Cảm biến DHT11 có thể đo lường nhiệt độ và độ ẩm này Sau khi thu thập dữ liệu, chúng ta có thể áp dụng các công thức tính toán để xác định chỉ số Heat Index Thư viện DHT.h cũng hỗ trợ quá trình tính toán chỉ số này một cách thuận tiện.
Hệ thống giám sát sức khỏe cơ thể thông minh có thể tích hợp chỉ số Heat Index, cung cấp cảnh báo cho người dùng khi chỉ số này vượt quá ngưỡng an toàn Điều này giúp người dùng nâng cao cảnh giác và thực hiện các biện pháp phòng ngừa kịp thời, từ đó bảo vệ sức khỏe của bản thân hiệu quả hơn.
Cảm biến DS18B20 được sử dụng để đo nhiệt độ cơ thể, với giá trị nhiệt độ bình thường dao động từ 35 đến 37°C khi đo bằng nhiệt kế trên trán Sau quá trình đo và hiệu chỉnh, chúng tôi đã phát triển công thức tính nhiệt độ chuẩn của cơ thể.
Tchuẩn= Tda + α * (Tavg_cơ thể - Tmôi trường)
Tavg_cơ thể : Nhiệt độ trung bình tại điều kiện thường (≈ 36°C) Đầu 0.309
Bảng 3.3 - 1: Các chỉ số α tại các bộ phận
Thuật Toán Fuzzy Logic
Khái Niệm
Đột quỵ nhiệt là tình trạng khẩn cấp do cơ thể chịu tác động của nhiệt độ cao, có thể gây hại nghiêm trọng đến sức khỏe và thậm chí dẫn đến tử vong Việc áp dụng logic mờ (Fuzzy logic) trong việc đánh giá và xử lý tình huống đột quỵ nhiệt có thể giúp đưa ra quyết định nhanh chóng và chính xác hơn.
Trong số nhiều bộ điều khiển hiện có, chúng tôi đã chọn bộ điều khiển logic mờ do tính thực dụng vượt trội của nó So với bộ điều khiển nhị phân 0-1 trong điều kiện thí nghiệm hiện tại, bộ điều khiển logic mờ cho thấy sự ưu việt hơn khi đưa ra phán đoán cuối cùng, trong khi bộ điều khiển nhị phân chỉ có khả năng đưa ra những phán đoán hạn chế.
“Có” hoặc “Không” – hoàn toàn mang tính một chiều và không tin cậy thì bộ logic mờ lại đưa ra nhiều trường hợp hơn
Logic mờ là một phương pháp xử lý thông tin sử dụng các giá trị mờ để mô tả tình huống hoặc sự kiện Trong trường hợp đột quỵ nhiệt, logic mờ giúp đưa ra quyết định dựa trên các giá trị như "rất có thể đột quỵ nhiệt", "có khả năng đột quỵ nhiệt" và "không có dấu hiệu đột quỵ nhiệt".
Logic mờ cho phép sử dụng các giá trị mờ để mô tả sự không chắc chắn, thay vì chỉ dựa vào các giá trị nhị phân như "đúng" hoặc "sai" Bằng cách áp dụng logic mờ, chúng ta có thể đưa ra quyết định chính xác hơn dựa trên tập hợp các giá trị mờ, từ đó giảm thiểu sai sót không cần thiết Bài viết này sẽ giải thích chi tiết từng khái niệm và cách hoạt động của logic mờ.
Ví dụ, hãy xem xét tập hợp các ngày bao gồm một ngày cuối tuần:
Hầu hết mọi người đều đồng ý rằng thứ bảy và chủ nhật là ngày cuối tuần, nhưng thứ sáu thì sao? Mặc dù nó mang cảm giác như một phần của cuối tuần, nhưng lại có vẻ như bị loại trừ về mặt kỹ thuật Điều này tạo ra cảm giác thứ sáu "đứng giữa ranh giới", gây ra sự không chắc chắn.
“Cuối tuần là khoảng thời gian từ tối thứ Sáu hoặc thứ Bảy đến Sáng thứ hai”
Trong lĩnh vực logic sắc bén, việc xem xét cả sự tồn tại và không tồn tại là rất quan trọng Tuyên bố sau đây sẽ thiết lập nền tảng cho logic mờ.
Hình 3.4.1 - 1: Ranh giới các ngày cuối tuần
Trong logic mờ, sự thật của bất kỳ tuyên bố nào cũng trở thành vấn đề.
Lý luận mờ mang đến ưu điểm nổi bật trong việc trả lời các câu hỏi có-không với kết quả không hoàn toàn rõ ràng Con người thường xuyên sử dụng phương pháp này, khi mà những câu trả lời thẳng thắn cho các câu hỏi đơn giản rất hiếm Tuy nhiên, đây vẫn là một khái niệm mới mẻ đối với máy tính.
Logic mờ hoạt động bằng cách mở rộng khái niệm logic Boolean truyền thống, cho phép các giá trị nằm giữa true (1) và false (0) Điều này có nghĩa là logic mờ không chỉ gói gọn trong hai trạng thái mà còn chấp nhận các giá trị như 0,2 và 0,7453, tạo ra một phạm vi đa dạng hơn cho việc biểu diễn thông tin.
Hàm Thành Viên
Tiếp tục theo vết câu truyện, bạn đang xác định mức độ nào là cuối tuần trong một mốc thời gian, chư không phải cả ngày.
Ngoài ra vào lúc nửa đêm thứ Sáu, khi kim đồng hồ chạy qua con số 12, giá trị xác thực của cuối tuần nhảy từ 0 lên 1.
Logic mờ sinh ra để đánh giá mức không chắc chắn từ 0->1
Một đường cong thay đổi mượt mà cho thấy rằng nửa ngày thứ Sáu xứng đáng được coi là một phần của những khoảnh khắc cuối tuần Đường cong này xác định tính chất cuối tuần của bất kỳ khoảnh khắc nào trong thời gian.
Hình 3.4.2 - 1: Chức năng thành viên ngày cuối tuần
Hàm thành viên (MF) là một khái niệm khác biệt so với lý thuyết logic truyền thống, trong đó mức độ đúng của một sự kiện được xác định bằng một số thực nằm trong khoảng từ 0 đến 1, phản ánh mức độ chính xác của sự kiện đó.
“nhiều” hay “ít” của nó.
Ví dụ: Được sử dụng phổ biến nhất của một bộ mờ là tập hợp những người cao.
Trong một tập hợp người cao, nếu được xác định rõ ràng, những người cao hơn sáu feet sẽ được coi là cao Tuy nhiên, việc phân loại một người là thấp và một người khác là cao chỉ dựa trên sự chênh lệch nhỏ, chẳng hạn như 1.80 mét so với 1.78 mét, là không hợp lý.
Hình 3.4.2 - 2: Chức năng thành viên đối tập hợp người cao-thấp
Cốt truyện của những ngày cuối tuần mô tả một đường cong chuyển đổi mượt mà, thể hiện sự dịch chuyển từ mức thấp đến cao Trục đầu ra là giá trị thành viên, dao động từ 0 đến 1 Đường cong này được gọi là chức năng thành viên và thường được ký hiệu bằng μ.
Các chức năng thành viên cơ bản nhất được xây dựng thông qua các đường thẳng Bên cạnh đó, chức năng thành viên còn được thể hiện qua nhiều loại đồ thị khác nhau.
trimf Thành viên tam giác chức năng
trapmf Thành viên hình thang chức năng
linzmf Chức năng thành viên hình chữ z tuyến tính mở cho trái (kể từ R2022a)
linsmf Chức năng thành viên hình chữ S tuyến tính mở cho bên phải (kể từ
Hình 3.4.3 - 1: Hoạt động logic mờ
Hoạt động logic and trong logic mờ được gọi là tích mờ Nó trả về giá trị mờ là hợp(giá trị nhỏ nhất) của hai giá trị mờ
Hoạt động logic or trong logic mờ được gọi là tổng mờ Nó trả về giá trị mờ là tổng (giá trị lớn nhất) của hai giá trị mờ.
Hoạt động logic not trong logic mờ được gọi là đảo mờ Nó trả về giá trị mờ là nghịch đảo của giá trị mờ
Trong đó A và B là các giá trị ngôn ngữ được xác định bởi các tập mờ trên các phạm vi
Nếu dịch vụ tốt, tiền boa thường ở mức trung bình Quy tắc nếu-thì dựa trên giá trị hiện tại của đầu vào, được thể hiện dưới dạng số từ 0 đến 1.
Giá trị đầu ra phụ thuộc vào các biến đầu vào, và tập hợp này sẽ được đánh giá thông qua quá trình fuzzifying Các đầu vào sẽ được xử lý và áp dụng các toán tử mờ cần thiết để đạt được kết quả chính xác.
Suy luận mờ là quá trình xây dựng ánh xạ từ đầu vào đến đầu ra bằng logic mờ, giúp tạo ra cơ sở cho việc ra quyết định và phân biệt các mẫu.
Hình 3.4.5 - 1: Mô hình tổng quan Logic mờ
Quá trình suy luận mờ được mô tả thông qua ví dụ về vấn đề tipping với hai đầu vào là chất lượng dịch vụ và thực phẩm, cùng một đầu ra là tỷ lệ phần trăm tiền boa Hệ thống suy luận mờ áp dụng ba quy tắc từ logic mờ so với logic không mờ để tính toán tiền boa dựa trên các yếu tố đầu vào này.
Nếu dịch vụ kém hoặc thức ăn bị ôi, thì tiền boa rẻ.
Nếu dịch vụ tốt, thì tiền boa là trung bình.
Nếu dịch vụ là tuyệt vời hoặc thức ăn ngon, thì tiền boa là rộng lượng.
Hãy quan sát kĩ hơn,
Trong hoạt động suy luận mờ liên quan đến "Xếp hạng dịch vụ và thực phẩm", hai yếu tố chính của tiền đề là "dịch vụ là tuyệt vời" và "thức ăn ngon" tạo ra các giá trị thành viên mờ lần lượt là 0,0 và 0,7.
Toán tử OR mờ chọn tối đa của hai giá trị “0,7” Các phương pháp OR xác suất vẫn sẽ cho kết quả 0,7.
Hình 3.4.5 - 3: Góc nhìn trực quan suy luận mờ
3.4.6 KHỬ FUZZIFY_DF Đầu vào cho quá trình khử nhiễu là bộ mờ đầu ra tổng hợp và đầu ra là một số duy nhất, giúp đánh giá quy tắc trong các bước trung gian, đầu ra mong muốn cuối cùng cho mỗi biến nói chung là một số đơn.
Có năm phương pháp tích hợp được hỗ trợ để khử nhiễu, bao gồm:
Phương pháp Giữa tối đa (Average of Maximum)
Phương pháp Lớn nhất của tối đa (Maximum of Maximum)
Phương pháp Nhỏ nhất của tối đa (Minimum of Maximum)
Phổ biến nhất là tính toán trung tâm (Centroid)
If_Then Logic
Trong đó A và B là các giá trị ngôn ngữ được xác định bởi các tập mờ trên các phạm vi
Nếu dịch vụ tốt, tiền boa thường ở mức trung bình Quy tắc nếu-thì sử dụng giá trị hiện tại của đầu vào, được thể hiện dưới dạng số từ 0 đến 1.
Giá trị đầu ra phụ thuộc vào các biến đầu vào Tập hợp này sẽ được đánh giá thông qua việc làm mờ các đầu vào và áp dụng các toán tử mờ cần thiết.
Suy Luận Mờ
Suy luận mờ là quá trình tạo ra ánh xạ từ đầu vào đến đầu ra thông qua logic mờ, giúp xây dựng nền tảng cho việc ra quyết định và phân biệt các mẫu.
Hình 3.4.5 - 1: Mô hình tổng quan Logic mờ
Quá trình suy luận mờ được mô tả thông qua ví dụ về vấn đề tipping với hai đầu vào và một đầu ra, so sánh giữa Logic mờ và Logic không mờ Hệ thống suy luận mờ sử dụng chất lượng dịch vụ và thực phẩm làm đầu vào để tính toán tỷ lệ phần trăm tiền boa, dựa trên ba quy tắc cụ thể.
Nếu dịch vụ kém hoặc thức ăn bị ôi, thì tiền boa rẻ.
Nếu dịch vụ tốt, thì tiền boa là trung bình.
Nếu dịch vụ là tuyệt vời hoặc thức ăn ngon, thì tiền boa là rộng lượng.
Hãy quan sát kĩ hơn,
Hoạt động suy luận mờ cho "Xếp hạng dịch vụ và thực phẩm" dựa trên hai yếu tố tiền đề: dịch vụ tuyệt vời và thức ăn ngon, tạo ra các giá trị thành viên mờ lần lượt là 0,0 và 0,7.
Toán tử OR mờ chọn tối đa của hai giá trị “0,7” Các phương pháp OR xác suất vẫn sẽ cho kết quả 0,7.
Hình 3.4.5 - 3: Góc nhìn trực quan suy luận mờ
Khử Fuzzify_Df
Quá trình khử nhiễu bắt đầu với bộ mờ đầu ra tổng hợp, và đầu ra cuối cùng là một số duy nhất Điều này giúp đánh giá các quy tắc trong các bước trung gian, với mục tiêu cuối cùng là đạt được một số đơn cho mỗi biến.
Có năm phương pháp tích hợp được hỗ trợ để khử nhiễu, bao gồm:
Phương pháp Giữa tối đa (Average of Maximum)
Phương pháp Lớn nhất của tối đa (Maximum of Maximum)
Phương pháp Nhỏ nhất của tối đa (Minimum of Maximum)
Phổ biến nhất là tính toán trung tâm (Centroid)
Xây Dựng Chương Trình Hệ Thống
#define ONE_WIRE_BUS 2 // Định nghĩa chân kết nối với cảm biến DS18B20
OneWire oneWire(ONE_WIRE_BUS);
#define DHTPIN 14 // Định nghĩa chân kết nối cảm biến DHT22
#define DHTTYPE DHT11 // Khai báo loại void setup() {
Serial.begin(9600); setup_wifi(); mqtt_connect(); sensors.begin(); sensors.getAddress(tempDeviceAddress, 0); sensors.setResolution(tempDeviceAddress, resolution); sensors.setWaitForConversion(false); sensors.requestTemperatures(); delayInMillis = 750 / (1 addFuzzySet(normal); bpm->addFuzzySet(exercise); bpm->addFuzzySet(tooHigh); fuzzy->addFuzzyInput(bpm);
// FuzzyInput FuzzyInput *THSRC = new FuzzyInput(2);
THSRC->addFuzzySet(dangerous); fuzzy->addFuzzyInput(THSRC);
// FuzzyInput FuzzyInput *BodyTemp = new FuzzyInput(3);
BodyTemp->addFuzzySet(normalTemp); BodyTemp->addFuzzySet(slighlyHigh); BodyTemp->addFuzzySet(tooHighTemp); fuzzy->addFuzzyInput(BodyTemp);
// FuzzyOutput FuzzyOutput *HeartStrokeLv = new FuzzyOutput(1);
HeartStrokeLv->addFuzzySet(attentionLv); HeartStrokeLv->addFuzzySet(warningLv); HeartStrokeLv->addFuzzySet(dangerousLv); fuzzy->addFuzzyOutput(HeartStrokeLv);
// Building FuzzyRule 1 FuzzyRuleAntecedent *Stroke1= new FuzzyRuleAntecedent();
FuzzyRuleAntecedent *Stroke1pp = new FuzzyRuleAntecedent();
Stroke1pp->joinWithAND(Stroke1, normalTemp);
WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500);
// Loop until we're reconnected while (!mqtt_client.connected()) {
Serial.println("Attempting MQTT connection ");
// Attempt to connect if (mqtt_client.connect(mqtt_clientId)) {
Serial.println("MQTT Client Connected");
// Subscribe mqtt_subscribe(topic_subscribe);
Serial.print(mqtt_client.state());
Serial.println(" try again in 5 seconds");
Stroke2pp->joinWithAND(Stroke2, slighlyHigh);
FuzzyRuleConsequent *thenHeartStroke2 = new FuzzyRuleConsequent(); thenHeartStroke2->addOutput(safeLv);
FuzzyRule *fuzzyRule2 = new FuzzyRule(2, Stroke2pp, thenHeartStroke2); fuzzy->addFuzzyRule(fuzzyRule2);
// Building FuzzyRule 3 FuzzyRuleAntecedent *Stroke3= new FuzzyRuleAntecedent();
FuzzyRuleAntecedent *Stroke3pp = new FuzzyRuleAntecedent();
Stroke3pp->joinWithAND(Stroke3, tooHighTemp);
FuzzyRuleConsequent *thenHeartStroke3 = new FuzzyRuleConsequent(); thenHeartStroke3->addOutput(attentionLv); FuzzyRule *fuzzyRule3 = new FuzzyRule(3, Stroke3pp, thenHeartStroke3); fuzzy->addFuzzyRule(fuzzyRule3);
} void loop() { if (millis() - lastTempRequest >= 2000) // waited 2s (đủ lâu để pow update)
Continue processing other values by reading humidity from the sensor, followed by reading temperature from the same sensor Additionally, retrieve the body temperature using the specified index from the sensors Finally, implement a delay of 5000 milliseconds before the next operation.
} void mqtt_publish(char * data) { if (!mqtt_client.connected()) { mqtt_connect();
} if (mqtt_client.publish(topic_publish, data)) {
Serial.println("Publish \"" + String(data) + "\" ok");
Serial.println("Publish \"" + String(data) + "\" failed");
} void mqtt_subscribe(const char * topic) { if (mqtt_client.subscribe(topic)) {
Serial.println("Subscribe \"" + String(topic) +
Serial.println("Subscribe \"" + String(topic) +
} độ từ cảm biến DS18B20 resolution++; if (resolution > 12) resolution = 9; sensors.setResolution(tempDeviceAddress, resolution); sensors.requestTemperatures(); delayInMillis = 750 / (1
REPORTING_PERIOD_MS) { bpm = pox.getHeartRate(); // Đọc giá trị nhịp tim từ cảm biến float bpm_kalman = bo_loc.updateEstimate(bpm); float TrueTempBody = tempBody + 0.5466
* (36 - temperature); float THRSC = temperature + humidity * 0.1; fuzzy->setInput(1, bpm_kalman); fuzzy->setInput(2, THRSC); fuzzy->setInput(3, TrueTempBody); fuzzy->fuzzify(); float value = fuzzy->defuzzify(1);
To publish data, a JSON string is constructed with various parameters, including entry ID, temperature, humidity, True Temp Body, BPM Kalman, THRSC, and an additional value This string is then sent using the `mqtt_publish` function, and the timestamp of the last report is updated using `millis()`.
Xây Dựng App
Một ứng dụng Android được phát triển bằng MIT App Inventor có khả năng hiển thị các thông số sức khỏe như nhịp tim, nhiệt độ cơ thể, nhiệt độ xung quanh, độ ẩm tương đối, và mức độ nguy hiểm do nắng nóng dưới dạng số và đồ thị Ứng dụng này cung cấp thông báo cảnh báo dựa trên mức độ nguy hiểm tổn thương do nắng nóng và cho phép người dùng gửi thời gian bắt đầu thực tế khi cảm thấy không thoải mái đến máy chủ ThingSpeak.
Một số chức năng đáng chú ý của nhóm bao gồm:
- Hiển thị giá trị cảm biến từ server broker MQTT, cho phép người dùng theo dõi và giám sát các thông số từ thiết bị IoT của họ.
Chức năng hiển thị cảnh báo giúp người dùng nhận thông báo khi giá trị cảm biến vượt ngưỡng cho phép, từ đó giảm thiểu rủi ro và bảo đảm an toàn cho cả thiết bị lẫn người sử dụng.
App Inventor cung cấp tính năng ghi giá trị lên Thingspeak, giúp người dùng lưu trữ và phân tích dữ liệu từ các cảm biến một cách hiệu quả.
Việc theo dõi các thông số và phát hiện vấn đề cảnh báo trong dữ liệu giúp người dùng dễ dàng đưa ra những phán đoán chính xác về sức khỏe của bản thân.
Hình 3.6 - 1: Mô tả Logic phía sau app
4 THỰC NGHIỆM VÀ KẾT QUẢ
Một cá nhân 23 tuổi với chỉ số BMI 18.6 thuộc mức bình thường đã thực hiện thí nghiệm với các cường độ tập luyện khác nhau, bao gồm nghỉ ngơi, luyện tập nhẹ và tập luyện cường độ cao Kết quả cho thấy sự khác biệt rõ rệt trong phản ứng cơ thể đối với từng mức độ hoạt động.
Các cảm biến ghi lại chỉ số sẽ gửi dữ liệu lên server MQTT, và ứng dụng sẽ thu thập thông tin này để hiển thị cho người dùng qua điện thoại.
Mẫu thử nghiệm thiết bị phát hiện tổn thương do nắng nóng dựa trên IoT có thể đeo được, đã được phát triển với thiết kế tối ưu Phản hồi từ người sử dụng cho thấy thiết bị này không gây bất tiện hay khó chịu khi di chuyển mạnh tay, mang lại sự thoải mái cho người dùng.
Thông báo cảnh báo về mức độ nguy hiểm do nắng nóng được phân loại thành 4 cấp độ khác nhau, kèm theo dữ liệu số Ứng dụng Android đã thành công trong việc hiển thị dữ liệu lịch sử của 6 trường dưới dạng đồ thị thông qua kênh ThingSpeak Ngoài ra, ứng dụng còn ghi lại thời gian bắt đầu cảm giác khó chịu của người dùng trên kênh ThingSpeak, giúp theo dõi sự phát triển của cảm giác này.
Hình 4 - 1: Kết quả đầu ra của ứng dụng Android cho 2 mức độ nguy hiểm tổn thương do nắng nóng khác nhau.
Các cảm biến ghi lại các chỉ số khó chịu sẽ gửi dữ liệu lên ThingSpeak, nơi dữ liệu được biểu diễn dưới dạng đồ thị và lưu trữ trên server để theo dõi sức khỏe.
Hình 4 - 2: Các dữ liệu được đẩy lên ThingSpeak
Mức độ nguy hiểm tổn thương do nắng nóng của người dùng khác nhau giữa môi trường trong nhà và ngoài trời Môi trường mát mẻ, biểu thị bằng đường xanh, cho thấy chỉ số sốc nhiệt thấp hơn, từ đó giảm đáng kể nguy cơ tổn thương do nắng nóng so với môi trường ngoài trời, được biểu thị bằng đường cam.
Hình 25: Biểu đồ nhịp tim của người dùng
Hình 4 - 3: Biểu đồ nhiệt độ cơ thể của người dùng
Hình 4 - 4: Biểu đồ HI của người dùng
Hình 4 - 5: Biểu đồ chỉ số sốc nhiệt của người dùng
Theo đồ thị phiên kiểm, chỉ số sốc nhiệt của người dùng dao động từ 10 đến 30, với nhiệt độ cơ thể thường trên 38,5 độ C và nhịp tim khi chạy vượt quá 114 nhịp/phút Tại phút thứ 23, nhịp tim đạt đỉnh 138 nhịp/phút, làm mức độ nguy hiểm do nắng nóng gần chạm 30 Ngược lại, trong môi trường trong phòng, chỉ số nguy hiểm ở phút thứ 23 là 15, với HeatIndex thấp 30,32 độ C, mặc dù nhịp tim vẫn vượt 131 nhịp/phút và nhiệt độ cơ thể gần 37,6 độ C.
Tiềm năng tổn thương do nắng nóng chỉ được nhận diện khi chỉ số Heat Index đạt mức nguy hiểm vượt quá 25.
Khi nhiệt độ cơ thể vượt quá 38 độ C và nhịp tim đạt trên 130 nhịp/phút, chúng ta có thể xác định thứ tự phản ứng của các yếu tố sinh lý và môi trường liên quan đến tổn thương do nắng nóng Cụ thể, thứ tự này là Heat Index > nhiệt độ cơ thể > nhịp tim.
Các thiếu sót hiện tại bao gồm việc thiết bị chưa được phát triển thành một mô hình "thiết bị" thực sự, dẫn đến khó khăn trong việc lấy mẫu và giảm độ chính xác của các mẫu thử Ngoài ra, tình trạng sai giá trị đọc khi vận động mạnh vẫn chưa được khắc phục triệt để Hơn nữa, bộ điều khiển logic mờ vẫn ở giai đoạn ban đầu và chưa đủ mẫu thí nghiệm để xác định bộ logic chính xác nhất.
Trong tương lai, chúng tôi dự định hoàn thiện thiết kế mạch PBC và in 3D khung để biến thiết bị thành một “công cụ” thực tế hơn Đồng thời, chúng tôi sẽ phát triển và hoàn thiện bộ điều khiển logic mờ, đồng thời bổ sung các tính năng mới cho bộ điều khiển, từ việc chống đột quỵ nhiệt đến khả năng phòng ngừa các bệnh đột quỵ trong nhiều hoàn cảnh khác nhau như hơi thở ốm yếu.