Hiện nay, các trường đại học tại Việt Nam đã có nhiều nghiên cứu về lĩnh vực điện tim, cụ thể trong đó là những Đồ Án Tốt Nghiệp ĐATN như Nguyễn Thanh Phụng – Hoàng Vũ Hoài Sang với đề
TỔNG QUAN
ĐẶT VẤN ĐỀ
Theo thống kê của Tổ chức Y tế Thế giới (WHO), bệnh tim mạch là một trong những nguyên nhân hàng đầu gây tử vong trên toàn thế giới, gây ra khoảng 17,5 triệu ca tử vong mỗi năm[1]
Ngoài ra, theo Báo cáo Điều tra tim mạch của Hiệp hội Tim mạch Hoa Kỳ (AHA) năm 2021, bệnh tim mạch tiếp tục là vấn đề sức khỏe nghiêm trọng tại Hoa
Kỳ và trên toàn thế giới Báo cáo này cho thấy rằng, trong năm 2019, khoảng 30 triệu người Mỹ đã được chẩn đoán mắc phải bệnh tim mạch Tình trạng này đang tiếp tục gia tăng theo thời gian, đặc biệt là ở các nước đang phát triển Do đó, việc nghiên cứu và phát triển các phương pháp phát hiện và chẩn đoán bệnh tim mạch là cực kỳ cần thiết Hiện nay, có nhiều phương pháp để chuẩn đoán các vấn đề về tim mạch nhưng nói về độ tiện lợi thì việc chuẩn đoán thông qua tín hiệu ECG là vô cùng tối ưu Để có thể tạo điều kiện tốt nhất cho Bác sĩ trong việc chuẩn đoán bệnh, điện tim đồ là một trong những phương tiện tốt nhất
Hiện nay, các trường đại học tại Việt Nam đã có nhiều nghiên cứu về lĩnh vực điện tim, cụ thể trong đó là những Đồ Án Tốt Nghiệp (ĐATN) như Nguyễn Thanh Phụng – Hoàng Vũ Hoài Sang với đề tài: “Thiết kế và chế tạo thiết bị đo điện tim ECG” [2], đề tài này tập trung thiết kế thiết bị đo điện tim có các bộ lọc triệt nhiễu tốt nhất có thể đạt được, đề tài “Giám sát nhịp tim qua điện thoại Android” của Nguyễn Văn Hải và Nguyễn Minh Quân, đề tài tập trung gửi dữ liệu nhịp tim lên điện thoại android [3] Dữ liệu này được xử lý trong Arduino, sau đó gửi lên điện thoại thông qua Serial và giao tiếp qua bluetooth Phần mềm điện thoại được thiết kế từ môi trường MIT app để hiển thị và giám sát
Từ khảo sát trên, kết hợp với các kiến thức đã được học, nhóm đã chọn làm đề tài “Đo và phân loại tín hiệu ECG thông qua IoT và Deep Neural Networks” Đề tài này sử dụng Arduino Uno và module AD8232 để đo và lọc tín hiệu ECG, bộ Kit Raspberry Pi4 đóng vai trò là bộ xử lý trung tâm với nhiệm vụ phân loại tín hiệu, gửi dữ liệu lên server và hiển thị lên giao diện người dùng Ngoài ra mô hình còn được trang bị màn hình cảm ứng HDMI 7inch để thực hiện thao tác và hiển thị thông tin
MỤC TIÊU
Đề tài “Đo và phân loại tín hiệu ECG thông qua IOT và Deep Neural Networks” hướng đến mục tiêu thiết kế và thi công mô hình đo tín hiệu ECG bằng Kit Arduino Uno kết hợp với cảm biến AD8232 thông qua ba kênh điện cực gắn lên cơ thể Phân loại tín hiệu bằng kit Raspberry Pi Ngoài ra đề tài còn bao gồm việc lưu trữ dữ liệu lên Database serve thông qua Internet và Wifi, xây dựng hệ thống quản lý thông tin bệnh nhân, hiển thị thông tin bệnh nhân trên Web.
NỘI DUNG NGHIÊN CỨU
Trong quá trình thực hiện Đồ án tốt nghiệp “Đo và phân loại tín hiệu ECG thông qua IoT và Deep Neural Networks” nhóm chúng em đã tập trung giải quyết và hoàn thành những nội dung sau:
• NỘI DUNG 1: Tìm hiểu nguyên lý hoạt động của tim và điện tim
• NỘI DUNG 2: Tìm hiểu về cách đọc tín hiệu điện tim từ module AD8232 và cách gửi dữ liệu qua Raspberry Pi 4 của kit Arduino Uno
• NỘI DUNG 3: Tìm hiểu cách nhận dữ liệu từ kit Arduino Uno và cách gửi dữ liệu lên Database server của Raspberry Pi 4
• NỘI DUNG 4: Nghiên cứu thiết kế giao diện màn hình HDMI
• NỘI DUNG 5: Nghiên cứu xây dựng Database server lưu trữ thông tin người dùng
• NỘI DUNG 6: Thiết kế mô hình hệ thống
• NỘI DUNG 7: Nghiên cứu lập trình xử lý, phân loại tín hiệu ECG
• NỘI DUNG 8: Thi công phần cứng, chạy thử nghiệm và hiệu chỉnh hệ thống
• NỘI DUNG 9: Viết báo cáo
• NỘI DUNG 10: Bảo vệ đồ án.
GIỚI HẠN
• Sử dụng cho nghiêng cứu, không sử dụng để khám và chuẩn đoán trong y tế
• Database Server được xây dựng trực tiếp trên Raspberry nên yêu cầu các thiết bị phải truy cập cùng Wifi
• Mô hình đề tài chưa sử dụng trên người
BỐ CỤC
Đề tài “Đo và phân loại tín hiệu ECG thông qua IoT và Deep Neural Networks” được trình bày với bố cục như sau:
Giới thiệu tổng quan về đề tài, đặt vấn đề và mục tiêu nghiên cứu nội dung đề tài, giới hạn và bố cục của đề tài
• Chương 2: Cơ Sở Lý Thuyết
Trình bày về nguyên lý hoạt động của tim và điện tâm đồ Giới thiệu sơ lược về cơ sở dữ liệu, Web, Server, hệ điều hành Linux, tổng quan về AI, các thông số và ý nghĩa của các linh kiện chính sử dụng cho hệ thống (Kit Arduino Uno, Kit Raspberry
Pi 4, Module cảm biến ECG AD8232, màn hình HDMI, Thiết bị mô phỏng tín hiệu điện tim SKX2000 )
• Chương 3: Thiết Kế và Tính Toán
Trình bày việc tính toán và thiết kế hệ thống, xây dựng và giải thích lưu đồ kỹ thuật
• Chương 4: Thi công hệ thống
Trình bày quá trình thi công hệ thống bao gồm các thao tác như cài đặt môi trường, làm mạch, lắp ráp mô hình và lập trình cho hệ thống
• Chương 5: Kết quả, Nhận Xét và Đánh Giá
Trình bày các kết quả đạt được sau thời gian thực hiện đề tài, nhận xét và đánh giá hệ thống dựa theo những mục tiêu ban đầu
• Chương 6: Kết Luận và Hướng Phát Triển
Chương này đưa ra những kết luận về hệ thống sau khi hoàn, từ đó đề xuất hướng phát triển của đề tài trong tương lai.
CƠ SỞ LÝ THUYẾT
GIỚI THIỆU
Sau khi chọn đề tài, nhằm làm sáng tỏ thêm về các đặc trưng của đề tài, nhóm em xin phép giới thiệu một vài thông tin cơ bản như: Tổng quan về hoạt động của tim ,điện tim, khái quát về AI, giới thiệu khái quát về Server, giới thiệu hệ điều hành Linux, giới thiệu cơ sở dữ liệu, giới thiệu một số phần cứng và ứng dụng được dùng trong đề tài.
KHÁI QUÁT VỀ HOẠT ĐỘNG CỦA TIM VÀ ĐIỆN TIM
2.2.1 Nguyên lý hoạt động của tim
Tim là một trong những bộ phận quan trọng nhất của con người cũng như các động vật khác [4] Nhiệm vụ chính của tim là bơm máu cung cấp oxy và các chất dinh dưỡng cho toàn bộ cở thể, cũng như hỗ trợ loại bỏ các chất thải từ việc trao đổi chất Đồng thời tim lấy máu từ các tĩnh mạch về hai tâm thất của tin sau đó đẩy máu đến phổi để trao đổi khí CO2 và lấy khí
Tim của con người đóng vai trò quan trọng trong việc bơm máu thông qua hai hệ thống tuần hoàn Máu được vận chuyển từ tĩnh mạch chủ, có nồng độ oxy thấp, vào tâm nhĩ phải trước khi được đẩy vào tâm thất phải Tại đây, máu được bơm vào hệ tuần hoàn phổi để nhận oxy và thải ra carbon dioxide Sau khi được tăng cường oxy, máu trở về tâm nhĩ trái, đi qua tâm thất trái và được đẩy ra thông qua các động mạch chủ để cung cấp oxy cho các cơ quan của cơ thể Đồng thời, máu cũng vận chuyển dưỡng chất từ gan và hệ tiêu hóa đến các cơ quan khác và đưa chất thải đến gan và thận Mỗi nhịp tim đập, tâm thất phải bơm ra cùng một lượng máu vào phổi như tâm thất trái bơm máu vào cơ thể Tĩnh mạch đưa máu đến tim, trong khi động mạch đẩy máu ra khỏi tim Tuy nhiên, áp lực trong tĩnh mạch thường thấp hơn so với áp lực trong động mạch Tốc độ đập của tim ở trạng thái nghỉ khoảng 72 nhịp mỗi phút Dù tập thể dục có làm tăng nhịp tim tạm thời, nhưng nó lại giảm tốc độ đập của tim trong trạng thái nghỉ ngơi về lâu dài - điều này có lợi cho sức khỏe tim mạch của con người
2.2.2 Cơ chế hoạt động của tim
Hình 2.1 Chu kỳ hoạt động của tim
Chu kỳ hoạt động của tim bao gồm hai giai đoạn chính: giai đoạn co bóp (systole) và giai đoạn nghỉ (diastole) Trong giai đoạn co bóp, tâm thất trái và phải co bóp đồng thời để đẩy máu ra khỏi tim và vào các động mạch Trong khi đó, tâm nhĩ trái và phải đang nghỉ Trong lúc này, van bảo vệ giữa tâm thất và động mạch giảm áp (van bảo vệ động mạch chủ trái và van bảo vệ động mạch phổi) mở ra để cho máu được đẩy ra Khi tâm thất co bóp, áp lực trong hệ thống tuần hoàn mạch máu tăng lên Sau giai đoạn co bóp, đến giai đoạn nghỉ, các tâm thất và nhĩ thả lỏng để cho máu từ tĩnh mạch chủ trên và dưới chảy vào nhĩ Khi đó, van ở cửa đầu của động mạch chủ trái và động mạch phổi đóng lại để ngăn không cho máu trở lại Trong lúc này, áp lực trong hệ thống tuần hoàn mạch máu giảm xuống Giai đoạn nghỉ kéo dài khoảng 0,4 giây, sau đó chu kỳ hoạt động của tim bắt đầu lại từ đầu
Chu kỳ hoạt động của tim được điều khiển bởi hệ thống dẫn điện tim (electrical conduction system), bao gồm các nút điện thế và sợi dẫn điện trong tim Khi một xung điện được tạo ra tại nút xoang (sinoatrial node) trong nhĩ phải, nó sẽ lan truyền qua các nhĩ và tâm thất để kích hoạt quá trình co bóp và nghỉ của tim Quá trình này được điều chỉnh bởi các tín hiệu thần kinh và các hormone cũng như các yếu tố khác như nhiệt độ và mức độ hoạt động của cơ thể
2.2.3 Sơ lược về hệ thống điện tim
Tim của con người được chia thành bốn buồng, gồm hai tâm nhĩ ở phía trên và hai tâm thất ở phía dưới Tâm nhĩ trái bơm máu vào tâm thất trái, trong khi tâm nhĩ phải đưa máu vào tâm thất phải Sau đó, tâm thất phải bơm máu theo động mạch lên phổi và tâm thất trái bơm máu xuống cơ thể Tất cả hoạt động này được điều khiển bởi một hệ thống các tế bào dẫn điện đặc biệt nằm trong cơ tim
Trong tâm nhĩ bên phải, có nút xoang nhĩ gồm các tế bào tự tạo xung điện Xung điện này lan truyền qua các cơ xung quanh để làm co bóp hai tâm nhĩ, tạo nên sóng
P trên Điện Tâm đồ Tiếp theo, dòng điện truyền qua một chuỗi tế bào đặc biệt tới nút nhĩ thất nằm gần vách liên thất rồi lan ra các cơ chung quanh bằng sợi Purkinje, dẫn đến co bóp hai tâm thất và tạo nên loạt sóng QRS Sau đó, xung điện giảm dần và tâm thất giãn ra, tạo nên sóng T
Hình 2.2 Các thành phần sóng của điện tâm đồ Đây là mô tả các dạng sóng ECG chuẩn:
- Sóng P: Sóng khử cực 2 nhĩ, có độ cao thấp hơn 0.25mV và chiều rộng ở khoảng 0.05-0.11s Sóng P được ghi nhận tốt nhất ở điện cực V1
- Khoảng PR: Là khoảng thời gian dẫn truyền từ nhĩ tới thất, đo từ điểm bắt đầu của sóng P đến điểm bắt đầu của QRS Khoảng thời gian này thường nằm trong khoảng từ 0.12-0.2s
- Phức hợp QRS: Là khoảng thời gian khử cực 2 thất, được đo từ điểm cuối của khoảng PR đến điểm cuối của sóng S Phức hợp QRS thường có độ rộng ở khoảng 0.05-0.09s
- Khoảng QT: Là khoảng thời gian cho thấy hoạt động khử cực và tái khử cực của tâm thất, bao gồm thời gian từ điểm bắt đầu của QRS đến điểm cuối của sóng T Khoảng thời gian này thường nằm trong khoảng từ 0.35-0.44s
- Đoạn ST: Là khoảng thời gian 2 tâm thất hoàn toàn bị khử cực và bắt đầu từ điểm cuối của QRS đến điểm bắt đầu của sóng T Đoạn ST thường có độ rộng ở khoảng 0.05-0.15s
- Sóng T: Là sóng tái cực 2 tâm thất, có độ cao thường nằm trong khoảng 0.1- 0.5mV và đỉnh tròn
- Sóng U: Là một sóng nhỏ sau sóng T, có độ cao thường nhỏ hơn 0.1mV và thường được ghi nhận tốt nhất ở điện cực V2-V3
2.2.4 Phương pháp đo điện tim
Nguyên lý đo điện tim là dựa vào việc thu nhận các tín hiệu điện từ tâm trương và tâm thu của tim thông qua các điện cực được đặt trên bề mặt da của người bệnh Những tín hiệu này được truyền qua các đường dây cáp đến một bộ khuếch đại tín hiệu, nơi chúng được khuếch đại và chuyển đổi thành dòng điện biến thiên Dòng điện này sẽ tạo ra một từ trường biến thiên, tác động lên một thanh nam châm đồng thời là bút vẽ Bút vẽ sẽ di chuyển theo các biến thiên của từ trường và vẽ lại trên giấy đồ thị, tạo thành đồ thị điện tâm đồ (ECG) của tim Điện cực dán và điện cực hút là hai loại điện cực được sử dụng để thu nhận tín hiệu điện của tim Điện cực dán được đặt trên bề mặt da của người bệnh và thu nhận tín hiệu điện bề mặt của tim, trong khi điện cực hút được đặt trực tiếp lên các mô của tim để thu nhận tín hiệu điện nội mạch của tim Thông qua đồ thị điện tâm đồ, các chuyên gia y tế có thể đánh giá chức năng tim của bệnh nhân, phát hiện các rối loạn nhịp tim và các vấn đề khác liên quan đến tim.
TỔNG QUAN VỀ AI
2.3.1 Giới thiệu sơ lược về AI
AI là viết tắt của Artificial Intelligence, tức là Trí tuệ nhân tạo Đây là một lĩnh vực của khoa học máy tính và công nghệ thông tin nhằm nghiên cứu và phát triển các hệ thống hoạt động tự động và thông minh, có khả năng học hỏi và tự cải tiến dựa trên dữ liệu được cung cấp
Trong thời gian gần đây, sự phát triển của AI đã mở ra nhiều cơ hội mới cho nhiều lĩnh vực khác nhau, từ y tế, tài chính, sản xuất, đến giáo dục và giải trí Các ứng dụng của AI bao gồm nhận dạng giọng nói và khuôn mặt, dịch thuật tự động, xe tự lái, robot hỗ trợ công việc, và rất nhiều ứng dụng khác
Các phương pháp AI hiện nay bao gồm học máy (machine learning),học sâu (deep learning), và học tăng cường (reinforcement learning) Những công nghệ này đều dựa trên việc xử lý dữ liệu lớn, đưa ra dự đoán và quyết định dựa trên các mô hình toán học và thuật toán phân tích dữ liệu
2.3.2 Tổng quan về mạng Neural Network a) Giới thiệu sơ lược về mạng neural network
Neural Network hay còn gọi là Mạng nơ-ron nhân tạo là một loại hệ thống tính toán được thiết kế để học hỏi và phát hiện các mối quan hệ giữa dữ liệu Nó được tạo ra để mô phỏng cách hoạt động của não bộ con người, với mục đích tìm ra các mẫu và quy luật ẩn trong dữ liệu Mạng nơ-ron nhân tạo có khả năng học hỏi và thích ứng với các thay đổi từ dữ liệu đầu vào mà không cần thiết kế lại các tiêu chí đầu ra Điều này làm cho nó trở thành một công cụ rất hữu ích trong nhiều lĩnh vực, bao gồm nhận dạng hình ảnh, nhận dạng giọng nói, xử lý ngôn ngữ tự nhiên, dự đoán thị trường tài chính và nhiều ứng dụng khác Các mạng nơ-ron nhân tạo có thể được thiết kế với các loại tế bào thần kinh nhân tạo khác nhau, bao gồm các tế bào thần kinh nhân tạo hữu cơ và nhân tạo Mỗi loại tế bào thần kinh có ưu điểm và hạn chế riêng, và sự lựa chọn phụ thuộc vào nhiều yếu tố, bao gồm ứng dụng cụ thể và tài nguyên có sẵn b) Kiến trúc của mạng neural network
Hình 2.3 Cấu trúc của mạng neural network
Một mạng neural network (NN) bao gồm nhiều nút hoặc neuron được kết nối với nhau để xử lý thông tin Cấu trúc của NN có thể được tóm tắt bởi ba yếu tố chính: lớp đầu vào, lớp ẩn và lớp đầu ra
• Lớp đầu vào (Input Layer): Là lớp đầu tiên của NN, nơi dữ liệu được đưa vào để được xử lý Lớp đầu vào có thể là một vector hoặc một ma trận, phụ thuộc vào loại dữ liệu đầu vào
• Lớp ẩn (Hidden Layer): Là các lớp nằm giữa lớp đầu vào và lớp đầu ra Mỗi lớp ẩn bao gồm nhiều neuron, mỗi neuron có nhiều kết nối đến các neuron khác trong lớp đó hoặc các lớp khác Lớp ẩn có thể bao gồm một hoặc nhiều lớp
• Lớp đầu ra (Output Layer): Là lớp cuối cùng của NN, nơi kết quả đầu ra được tính toán dựa trên dữ liệu đầu vào và các trọng số của mạng Lớp đầu ra có thể là một vector hoặc một ma trận phụ thuộc vào bài toán cụ thể
2.3.3 Giới thiệu về mạng VGG
VGG (Vienna Group of GoogLeNet) là một mạng neural network sâu được phát triển bởi nhóm nghiên cứu tại Đại học Oxford vào năm 2014 VGG được đặt tên theo viết tắt của Vienna Group of GoogLeNet, nhằm tôn vinh sự đóng góp của nhóm nghiên cứu GoogLeNet và nhóm nghiên cứu tại Vienna
VGG là một mạng neural network sâu với nhiều lớp tích chập (convolutional layer) và lớp kích hoạt phi tuyến tính ReLU (Rectified Linear Unit) Mạng VGG được huấn luyện trên tập dữ liệu ImageNet, một tập dữ liệu ảnh lớn với hơn 1,2 triệu ảnh và 1000 lớp
VGG có nhiều phiên bản khác nhau với số lượng lớp khác nhau, từ VGG-11 đến VGG-19 Mỗi phiên bản của VGG đều có cùng cấu trúc cơ bản với các lớp tích chập và lớp kích hoạt ReLU xen kẽ với nhau, sau đó là một số lớp gộp (pooling layer) để giảm kích thước dữ liệu Cuối cùng là các lớp fully connected để phân loại ảnh đầu vào
VGG đã đạt được kết quả rất tốt trong nhiều bài toán phân loại ảnh, vượt qua nhiều mô hình khác như AlexNet hay GoogLeNet VGG cũng đã trở thành một trong những mô hình cơ bản trong lĩnh vực xử lý ảnh và được sử dụng rộng rãi trong các ứng dụng nhận diện ảnh và video Tuy nhiên, VGG có số lượng tham số lớn và đòi hỏi khá nhiều tài nguyên tính toán, làm cho nó không phù hợp cho các ứng dụng thời gian thực hoặc trên các thiết bị có tài nguyên hạn chế Do đó,các mô hình như VGG thường được sử dụng trong các bài toán offline hoặc trên các máy tính có khả năng tính toán cao.
KHÁI QUÁT VỀ SERVER
Server hay còn gọi là máy chủ, là một thiết bị hoặc một chương trình trên thiết bị, có chức năng cung cấp các tài nguyên, dịch vụ hoặc thông tin cho các Client kết nối tới thông qua mạng Internet hoặc mạng nội bộ Các tài nguyên này có thể bao gồm các trang web, tệp tin, ứng dụng, cơ sở dữ liệu, email, và các dịch vụ khác Một đặc điểm của Server là khả năng cung cấp dịch vụ cho nhiều Client cùng một lúc Điều này làm cho Server trở thành một nền tảng quan trọng trong việc cung cấp các dịch vụ trực tuyến và khả năng lưu trữ dữ liệu Tùy vào mục đích sử dụng, Server có thể được cấu hình để đáp ứng các yêu cầu khác nhau về hiệu suất, độ tin cậy, bảo mật, và khả năng mở rộng
Một số loại server phổ biến trên thị trường hiện nay:
Web Server: Đây là loại server được sử dụng để cung cấp các trang web cho các Client truy cập thông qua mạng Internet Web Server hỗ trợ các ngôn ngữ lập trình phổ biến như PHP, Python, ASP.NET, Java và các dạng cơ sở dữ liệu như MySQL, Oracle, và SQL Server
Mail Server: Đây là loại server được sử dụng để quản lý và chuyển tiếp các email giữa các Client thông qua mạng Internet Mail Server bao gồm các dịch vụ như SMTP, POP3, IMAP, và các tính năng bảo mật như SSL, TLS
File Server: Đây là loại server được sử dụng để lưu trữ và chia sẻ các tệp tin và thư mục giữa các Client File Server hỗ trợ các giao thức truyền tải dữ liệu như FTP, SFTP, SMB và các tính năng bảo mật như mã hóa dữ liệu, kiểm soát truy cập
Database Server: Đây là loại server được sử dụng để quản lý và lưu trữ các cơ sở dữ liệu Database Server bao gồm các dịch vụ như MySQL, Oracle, SQL Server, MongoDB, và các tính năng bảo mật như mã hóa dữ liệu, kiểm soát truy cập
Application Server: Đây là loại server được sử dụng để cung cấp các ứng dụng phía server cho các Client truy cập thông qua mạng Internet Application Server hỗ trợ các ngôn ngữ lập trình như Java, Python, Ruby, và các dạng cơ sở dữ liệu như Oracle, SQL Server.
GIỚI THIỆU SƠ LƯỢC VỀ HỆ ĐIỀU HÀNH LINUX
2.5.1 Tổng quan về hệ điều hành Linux
Linux là một hệ điều hành mã nguồn mở và tự do dạng Unix-like, được xây dựng trên nền tảng của nhân Linux Phiên bản đầu tiên của Linux kernel được phát hành vào năm 1991 bởi Linus Torvalds khi ông còn là sinh viên đại học tại Phần Lan Linux kernel ban đầu chỉ hỗ trợ cho dòng chip 80386 của Intel, nhưng sau đó đã được phát triển để hỗ trợ nhiều kiến trúc vi xử lý khác nhau
Với sự đóng góp của nhiều cá nhân và tổ chức, Linux đã trở thành một hệ điều hành phổ biến và được sử dụng rộng rãi trên nhiều thiết bị khác nhau, từ các máy tính cá nhân đến các siêu máy tính, các thiết bị nhúng, server và cả các thiết bị di động Linux được ưa chuộng bởi tính bảo mật cao, khả năng tùy biến linh hoạt và hiệu suất cao Bên cạnh đó, Linux cũng có thể hoạt động tốt trên các máy tính cấu hình yếu và không yêu cầu phải trả bất kỳ chi phí nào để sử dụng
Vì những ưu điểm trên, Linux đã được sử dụng rộng rãi trên các thiết bị nhúng như Raspberry Pi và Jetson Nano, để xây dựng các ứng dụng IoT và các hệ thống nhúng khác Ngoài ra, Linux còn được sử dụng rộng rãi trên các server để cung cấp các dịch vụ trực tuyến và quản lý hệ thống
2.5.2 Kiến trúc của hệ điều hành Linux
Hệ điều hành linux nói riêng và unix nói chung có chung kiến trúc như Hình 2.4, đi từ vật lý lên ta có các layers như sau:
Hình 2.4 Mô hình cấu trúc hệ điều hành Linux
• Hardware : Gồm các phần cứng của máy chủ như (CPU, Mem, I/O)
• Kernel: Là thành phần chính của hệ điều hành, trái tim của linux Trong kernel bao gồm các modules (drivers) điều khiển phần cứng hoạt động, các program cấp kernel để điều khiển việc cấp phát tài nguyên phần cứng phía dưới cho các ứng dụng chạy trên linux hoạt động,
• Shell là một chương trình trên hệ điều hành, có chức năng nhận các lệnh (command) từ người dùng hoặc từ các ứng dụng yêu cầu, sau đó chuyển đến cho Kernel xử lý Shell có thể được sử dụng để thực thi các lệnh hệ thống, quản lý tệp tin và thư mục, tạo và quản lý quá trình (process), và nhiều chức năng khác Shell là một cầu nối giữa người dùng và Kernel của hệ điều hành Người dùng sẽ gửi các lệnh cho Shell, Shell sẽ phiên dịch và thực thi các lệnh đó, sau đó chuyển đến cho Kernel xử lý Kernel sẽ thực thi các lệnh đó và trả lại kết quả cho Shell, sau đó Shell sẽ hiển thị kết quả đó cho người dùng
• Application: Ứng dụng và người dùng hoạt động ở tầng trên cùng, thông qua giao diện lệnh (shell) hoặc đồ họa (X) để hoạt động Có chú ý là giao diện đồ họa trên Unix, linix là tùy chọn - nghĩa là ta có thể cài đặt lên hoặc không Nó không phải là thành phần chính của hệ thống Giao diện Shell là giao diện mặc định luôn có để cho phép user, app tác động vào hệ thống thông qua giao diện này.
TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU
Cơ sở dữ liệu (Database) là một tập hợp dữ liệu được tổ chức có cấu trúc liên quan với nhau và được lưu trữ trong máy tính Các dữ liệu được tổ chức thành các bảng (table), các bản ghi (record), các trường dữ liệu (field) và các mối quan hệ giữa chúng
MySQL là một hệ thống quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở, được thiết kế để quản lý các cơ sở dữ liệu quan hệ MySQL hoạt động theo mô hình client-server, cho phép nhiều người dùng truy cập và thực hiện các thao tác trên cùng một cơ sở dữ liệu MySQL cũng tích hợp với các công cụ như Apache và PHP để phát triển các ứng dụng web
Mỗi cơ sở dữ liệu trong MySQL có thể chứa nhiều bảng quan hệ, và mỗi bảng quan hệ chứa nhiều bản ghi và các trường dữ liệu MySQL cung cấp các câu lệnh
SQL để thực hiện các thao tác trên cơ sở dữ liệu, giúp người dùng quản lý và truy xuất dữ liệu một cách dễ dàng và hiệu quả.
GIỚI THIỆU VỀ WEB
Web là từ viết tắt của World Wide Web, là một mạng lưới toàn cầu trên Internet, cho phép các người dùng truy cập và tương tác với các thông tin và tài nguyên trên đó World Wide Web được phát triển vào những năm 1990 bởi nhà khoa học máy tính người Anh Sir Tim Berners-Lee Các trang web trên World Wide Web được định dạng bằng HTML (Hypertext Markup Language), một ngôn ngữ đánh dấu để mô tả cấu trúc và nội dung của các trang web HTML cho phép các tài liệu web chứa các liên kết (link) đến các tài nguyên khác trên web, thông qua các URL (Uniform Resource Locator), giúp người dùng dễ dàng tìm kiếm và truy cập các trang web liên quan Cấu trúc của một mô hình internet cơ bản được thể hiện ở Hình 2.5
Hình 2.5 Mô hình cơ bản của Internet
Khi người dùng là chúng ta muốn truy cập vào Internet thì ta phải sử dụng một phần mềm gọi là trình duyệt web (Browser) để xem siêu văn bản (HTML) Với trình duyệt web thì ta sẽ nhập thông tin là tên miền (domain) của trang web mà ta muốn truy cập vào thanh địa chỉ (address) của trình duyệt rồi sau đó trình duyệt sẽ tự động gửi thông tin tới máy chủ (web server) chứa trang web đó và lấy những thông tin mà máy chủ trả về là các tập tin HTML được viết và xuất bản bởi các chủ trang web đó Sau đó trình duyệt sẽ hiển thị cho người dùng xem và tương tác
Người dùng có thể xem và truy cập thông tin của toàn bộ web đó thông qua siêu liên kết (Hyperlink) để truy cập từ trang web này tới trang web khác trong cùng website hoặc khác website Ta cũng có thể điền thông tin và bảng biểu và gửi thông tin cho trang web để máy chủ lưu trữ vào Quá trình như vậy gọi là lướt web Tuy nhiên độ chính xác và chứng thực thông tin thì không được đảm bảo
Hiện nay, có nhiều ngôn ngữ lập trình được sử dụng để xây dựng các trang web như Javascript, Python, C#, Tuy nhiên, để kết nối ứng dụng điện thoại với cơ sở dữ liệu, PHP vẫn là ngôn ngữ được sử dụng phổ biến nhất PHP là một ngôn ngữ lập trình mã nguồn mở, cho phép mã của nó được thực thi trên server để tạo ra mã HTML và truyền tải đến trình duyệt web theo yêu cầu của người sử dụng PHP cũng cho phép xây dựng các ứng dụng web tương tác trên mạng internet với mọi cơ sở dữ liệu như MySQL, Oracle,
PHP được tối ưu hóa cho các ứng dụng web với tốc độ nhanh, nhỏ gọn và dễ học, Chính vì những lợi ích này, PHP đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất trên toàn cầu.
GIỚI THIỆU VỀ PHẦN CỨNG
Từ những kiến thức về cơ sở lý thuyết đã được phân tích ở trên, nhóm chúng em đã quyết định lựa chọn phần cứng để thực hiện đề tài này gồm khối xử lý trung tâm là kit Raspberry pi 4 và kit Arduino Uno, khối tạo tín hiệu ECG là máy SKX2000, khối thu tín hiệu ECG là module cảm biến AD8232, khối hiển thị sử dụng màn hình HDMI 7 inch
2.8.2 Kit raspberry Pi4 a) Mô tả
Hình 2.6 giới thiệu về Raspberry Pi 4 Model B là một phiên bản mới nhất của dòng máy tính Raspberry Pi, với nhiều cải tiến vượt trội so với các phiên bản trước đó Nó được trang bị bộ vi xử lý lõi tứ 64-bit hiệu suất cao, giúp cải thiện tốc độ xử lý và hiệu suất đồ hoạ so với các phiên bản trước đó Ngoài ra, nó còn hỗ trợ hiển thị kép ở độ phân giải lên đến 4K thông qua một cặp cổng micro-HDMI, giải mã video phần cứng lên đến 4Kp60
Raspberry Pi 4 Model B cũng được trang bị RAM lên đến 8GB, cùng với cổng LAN không dây băng tần 2.4 / 5.0 GHz, Bluetooth 5.0, Gigabit Ethernet, USB 3.0 và khả năng PoE (Power over Ethernet) thông qua tiện ích bổ sung PoE HAT riêng biệt Với các tính năng này, Raspberry Pi 4 Model B có thể được sử dụng cho nhiều mục đích, từ các ứng dụng IoT đơn giản đến các dự án máy tính nhỏ gọn Nó cũng có tính tương thích ngược tốt với các phiên bản trước đó của Raspberry Pi, giúp cho người dùng dễ dàng nâng cấp hoặc thay thế các thiết bị hiện có b) Thông số kỹ thuật
• Bộ xử lý: Broadcom BCM2711, SoC lõi tứ Cortex-A72 (ARM v8) 64 bit @ 1.5GHz
• Điện áp đầu vào: 5V DC (Tối thiểu 3A) qua cổng USB-C
• Bộ nhớ Ram với các phiên bản 1GB, 2GB, 4GB hoặc 8 GB
• Kêt nối: Mạng LAN không dây 2.4 GHz và 5.0 GHz, Bluetooth 5.0, BLE Gigabit Ethernet,2 cổng USB 3.0, 2 cổng USB 2.0
• Có 2 cổng micro HDMI để kết nối màn hình ( hỗ trợ lên đến 4Kp60)
2.8.3 Kit Arduino Uno a) Mô tả:
Hình 2.7 là Kit Arduino Uno được phát triển bởi công ty Arduino Đây là board phổ biến và được sử dụng rộng rãi trong các ứng dụng điện tử như điều khiển thiết bị, thu thập dữ liệu, và làm việc với các cảm biến và mạch điện tử khác
Board Arduino Uno được trang bị vi điều khiển ATmega328P của hãng Atmel, có tốc độ xử lý 16 MHz và bộ nhớ Flash 32 KB Board được trang bị các cổng kết nối đa dạng bao gồm cổng USB, cổng nguồn, cổng ICSP (In-Circuit Serial Programming) và 14 chân kết nối GPIO (General Purpose Input/Output) cho phép người dùng kết nối với các thiết bị khác nhau Ở hệ thống này, Arduino Uno sẽ kết nối với Module cảm biến AD8232 để đọc tín hiệu điện tim ECG, tính toán chỉ số BPM sau đó gửi dữ liệu qua Kit Raspberry Pi4 thông qua cổng kết nối UART/USB b) Thông số kỹ thuật:
• Vi điều khiển trung tâm ATmega328P họ 8 bit
• Điện áp hoạt động 5V được cấp qua cổng USB
• Điện áp đầu vào khuyên dùng từ 7 đến 12V
• Có 14 chân I/O Digital, trong đó có 6 chân có thể được sử dụng để tạo xung PWM
• Có 6 ngõ ra Analog với độ phân giải 10 bit
2.8.4 Module cảm biến AD8232 a) Mô tả:
Hình 2.8 Module cảm biến AD8232
Hình 2.8 giới thiệu về Module cảm biến AD8232, AD8232 là một mạch cảm biến nhịp tim đơn dẫn chuyên dụng được thiết kế để trích xuất, khuếch đại và lọc các tín hiệu sinh học nhỏ trong điều kiện nhiễu Nó có thể được sử dụng để đo lường nhịp tim và các thông số sinh học khác trong các ứng dụng y tế và thể dục thể thao
AD8232 cung cấp đầu ra analog, giúp dễ dàng kết nối với các vi điều khiển và các thiết bị đo lường khác để thực hiện các ứng dụng liên quan đến nhịp tim Ngoài ra, nó còn hỗ trợ tính năng chống nhiễu, giúp loại bỏ tạp âm từ các nguồn bên ngoài như động cơ và các thiết bị điện tử khác Các tính năng này giúp AD8232 trở thành một giải pháp tiện ích và chính xác cho các ứng dụng đo lường sinh học b) Thông số kỹ thuật
• Điện áp ngõ vào định mức: 3.3V DC
• Độ lớn tín hiệu đầu ra: 1.1V (Tại điện áp nguồn 3.3V)
• Dải tần số: 0.5Hz đến 40Hz
• Giao tiếp đầu ra: Jack cắm tai nghe 3.5
2.8.5 Thiết bị mô phỏng tín hiệu điện tim SKX2000 a) Mô tả:
Hình 2.9 Thiết bị mô phỏng tín hiệu điện tim SKX2000
SKX2000 là một thiết bị mô phỏng tín hiệu điện tim, được sử dụng để kiểm tra và hiệu chuẩn các thiết bị y tế như máy đo ECG (Electrocardiogram), máy chụp điện não đồ (EEG - Electroencephalogram) và máy đo nhịp tim Thiết bị này có thể tạo ra nhiều loại sóng khác nhau với 13 chế độ để ta lựa chọn, với mỗi chế độ ta cũng có thể lựa chọn tần số tùy ý
Thiết bị SKX2000 bao gồm một bộ khuếch đại tín hiệu ECG, các bộ lọc và một bộ tạo tín hiệu điện tim giả lập Thiết bị này có thể được điều khiển bằng các phím trên bộ điều khiển Nó cũng có khả năng tự động phát hiện các lỗi và cảnh báo người sử dụng khi phát hiện lỗi b) Thông số kỹ thuật:
• Tín hiệu đầu vào: 3 hoặc 4 kênh ECG
• Tần số lấy mẫu: 250Hz hoặc 500Hz
• Tần số cơ bản: 30bpm đến 100bpm
• Dải tần số tín hiệu đầu vào: 0.5Hz đến 40Hz
• Dải tần số tín hiệu đầu ra: 0.1Hz đến 100Hz
• Độ chính xác tần số: ±1%
• Độ chính xác biên độ: ±1%
• Độ chính xác xung điện: ±1%
• Điện áp đầu ra: 0.5mV, 1mV, 2mV, 5mV hoặc 10mV
2.8.6 Màn hình HDMI a) Mô tả:
Hình 2.10 giới thiệu về màn hình 7 inch LCD HDMI 1024x600 cảm ứng điện dung, là một loại màn hình kỹ thuật số được thiết kế để hiển thị hình ảnh hoặc video từ các thiết bị đầu cuối như máy tính, Raspberry Pi, máy tính nhúng và các thiết bị khác
Màn hình này có độ phân giải 1024x600, với mật độ điểm ảnh cao để đảm bảo chất lượng hình ảnh sắc nét và màu sắc chính xác Màn hình này còn được trang bị cảm biến điện dung, cho phép người dùng tương tác với màn hình bằng cách chạm hoặc nhấn vào màn hình Các tính năng cảm ứng này cho phép người dùng điều khiển ứng dụng và trình phát đa phương tiện một cách dễ dàng và thuận tiện hơn b) Công nghệ cảm ứng điện dung:
Cảm ứng điện dung là công nghệ cảm ứng dựa vào những thay đổi của điện tích trên màn hình khi tay người, hoặc vật có điện tích chạm vào
Công nghệ cảm ứng điện dung được chia thành 2 loại: Một là cảm ứng đơn điểm, chỉ nhận được nhiều nhất một điểm chạm trong quá trình thao tác Và hai là đa điểm (multi-touch) Trường hợp của màn hình HDMI LCD là cảm ứng đa điểm, nó có thể phát hiện tối đa năm điểm chạm trên màn hình
Màn hình cảm ứng điện dung thực chất là một tấm kiếng được phủ một lớp ion kim loại, lớp này có thể được xem là một mạng lưới các tụ điện Các tụ điện này sẽ mất đi điện tích khi tay người hoặc các vật mang điện tích chạm vào, nhờ vào đó, màn hình có thể biết chính xác điểm nào trên màn hình đang được chạm và thực hiện các thao tác tại điểm chạm đó
Hình 2.10 Màn hình HDMI 7inch c) Thông số kỹ thuật:
• Model: Waveshare 7inch Capacitive Touch Screen LCD (C), 1024×600, HDMI, IPS, Low Power
• Kích thước màn hình: 7 inch
• Cổng kết nối: HDMI, USB
• Sử dụng nguồn 5VDC qua cổng Micro USB
• Công nghệ cảm ứng: điện dung
• Cổng kết nối: HDMI, VGA, AV
GIỚI THIỆU PHẦN MỀM LẬP TRÌNH
Sau khi đã lựa chọn xong phần cứng, nhóm đã tiến hành tìm hiểu về một số phần mềm để lập trình cho hệ thống Đối với kit Raspberry Pi 4 nhóm đã lập trình trên phần mềm Thony bằng ngôn ngữ python Còn đối với kit Arduino Uno thì nhóm chọn phần mềm Arduino IDE và lập trình bằng ngôn ngữ C Đối với code Web, nhóm đã viết code trên phần mềm Visual Studio bằng ngôn ngữ PHP sau đó nhúng trực tiếp lên hệ điều hành Linux để nó luôn luôn hoạt động mỗi khi ta khởi động Raspberry Pi
4 Và chi tiết về các phần mềm lập trình sẽ được nhóm giới thiệu chi tiết hơn ở chương sau.
TÍNH TOÁN VÀ THIẾT KẾ
GIỚI THIỆU
Hệ thống đo và phân loại tín hiệu ECG bao gồm việc đo tín hiệu từ ba điện cực thông qua module cảm biến AD8232, tín hiệu sau khi đo sẽ được xử lý bởi Kit Arduino Uno Kit Raspberry Pi4 sẽ nhận dữ liệu từ Arduino Uno, sau đó tiến hành phân loại, tín hiệu sau khi được phân loại kèm theo với các thông tin người dùng sẽ được gửi lên server và lưu trữ tại đó Thông tin người dùng sẽ được nhập từ màn hình HDMI 7 inch, ngoài ra màn hình HDMI còn có chức năng hiển thị sóng tín hiệu thời gian thực, các thông tin cơ bản, kết quả phân loại và chỉ số BPM.
TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG
Để đáp ứng những yêu cầu đặt ra, việc tính toán và thiết kế một hệ thống phù hợp là vô cùng quan trọng Việc thiết kế hệ thống được thực hiện qua các bước như sau: Thiết kế sơ đồ khối, tính toán và thiết kế các khối, hoàn thiện sơ đồ nguyên lý toàn mạch
3.2.1 Thiết kế sơ đồ khối hệ thống
Hình 3.1 Sơ đồ khối hệ thống
Sơ đồ khối hệ thống được thể hiện đầy đủ thông qua Hình 3.1 Các khối này bao gồm: Khối cảm biến, khối xử lý, khối hiển thị, khối nguồn, ngoài ra còn có Server để lưu trữ dữ liệu Khái quát về hoạt động của toàn hệ thống Khối nguồn cấp năng lượng để toàn bộ hệ thống hoạt động Khối cảm biến tiến hành lấy tín hiệu từ đầu đo, sau đó tín hiệu này được gửi đến khối xử lý, khối này bao gồm hai bộ phận, bộ phận đầu có nhiệm vụ chuyển đổi ADC, tiền xử lý tín hiệu, sau đó bộ phận hai sẽ hoàn thành các bước xử lý tín hiệu còn lại Khối truyền dữ liệu và lưu trữ sẽ nhận dữ liệu từ khối xử lý để lưu trữ Khối cuối cùng là khối hiển thị, có chức năng nhận dữ liệu từ các khối truyền dữ liệu và lưu trữ, khối xử lý, sau đó tiến hành hiển thị các nội dung nhận được
3.2.2 Tính toán và thiết kế mạch a Khối cảm biến Đã được đề cập ở chương 2 cơ sở lý thuyết Tín hiệu điện tim là các tín hiệu được tạo ra bởi hoạt động điện của tim Trong mỗi chu kỳ hoạt động, thông qua sự co rút và giãn nở các tín hiệu điện sẽ thay đổi giá trị, những giá trị này có thể ghi lại bởi điện cực được dán trên mặt da của người bệnh Tuy nhiên, những giá trị này khá nhỏ, giá trị ngõ ra khoảng vài trăm milivolt, chính vì vậy ở khối cảm biến này, chúng ta cần giảm nhiễu, khuếch đại, chuyển đổi tương tự sang số AD8232 là một cảm biến được thiết kế để thu thập, khuếch đại, xử lý tín hiệu ECG, ngoài ra với sự phổ biến và giá thành rẻ, cảm biến AD8232 là một lựa chọn hoàn hảo cho đề tài
Cấu tạo của module AD8232 được mô tả ở hình 3.2 Ở vị trí số (1) là port 3.5 dùng để kết nối với dây đo Vị trí số 2 là IC AD8232, các chân I/O của module nằm ở vị trí số (3) Tên và chức năng của các chân này được thể hiện ở bảng 3.1
Bảng 3.1 Bảng chức năng chân module AD8232
Về nguyên lý hoạt động của module AD8232: Sau khi được cấp nguồn, module sẽ bắt đầu lấy tín hiệu từ ba miếng điện cực dán trên da người dùng, tín hiệu này sẽ thông qua các khối trong module AD8232 để tiến hành khuếch đại, giảm nhiễu và cuối cùng là xuất tín hiệu analog ở chân OUTPUT Ngoài ra, module còn có 3 chân vẫn chưa đề cập đến đó là chân SDN và hai chân LO-, LỢ Như đã đề cập ở bảng 3.1 chân SDN là chân shutdown, điều này góp phần giảm sự tiêu thụ năng lượng khi chân được đưa xuống mức thấp, dòng tiêu thụ lúc này chỉ rơi vào khoản 200nA Về hai chân LO+ và LO-, hai chân này có nhiệm vụ phát hiện Lead-off cho cả AC và
DC, được thể hiện ở bảng 3.2
Bảng 3.2 Bảng chức năng chân LO+ và LO-
Tên chân Chế độ phát hiện DC
Lead-off Chế độ phát hiện AC
LO+ LO+ sẽ xuống mức thấp khi chân LA (chân +IN đối với IC 8232) được kết nối và lên mức cao khi LA mất kết nối
LO+ xuống mức thấp khi cả LA và RA được kết nối và lên mức cao khi cả hai mất kết nối
LO- LO- sẽ xuống mức thấp khi chân RA (chân -IN đối với IC 8232) được kết nối và lên mức cao khi RA mất kết nối
Chân LO- luôn ở mức thấp b Khối xử lý
Sau khi đo tín hiệu điện tim ở khối cảm biến, điều cần làm tiếp theo là đọc và xử lý tín hiệu đó Như được đề cập ở khối cảm biến, tín hiệu ngõ ra của module AD8232 là tín hiệu analog và vẫn còn khá thô, do đó chúng ta cần một kit vi xử lý có thể đọc và xử lý tín hiệu, ngoài ra còn có thể cung cấp điện áp cho module cảm biến hoạt động Từ những yêu cầu trên, việc đưa kit Arduino Uno vào mô hình là vô cùng phù hợp Nhưng bấy nhiêu đó là chưa đủ để có thể đáp ứng được toàn bộ các yêu cầu của đề tài như: phân loại tín hiệu, đưa dữ liệu lên server để lưu trữ, hiển thị thông tin lên màn HDMI, đây là điều mà Arduino Uno rất khó để thực hiện, vì thế nên nhóm đã sử dụng thêm kit Raspberry Pi 4 để bổ sung vào khối xử lý
Arduino Uno: Như đã đề cập ở chương 2 cơ sở lý thuyết, Kit Arduino Uno có tổng cộng 6 chân có khả năng nhận tín hiệu analog với độ phân giải 10 bit là các chân A0 đến A5, ngoài ra, cần thêm 2 chân để nối với 2 chân LO+ và LO- của module AD8232, sơ đồ kết nối Kit Arduino Uno và module cảm biến được thể hiện ở hình 3.3 và bảng 3.3
Hình 3.3 Sơ đồ kết nối Arduino Uno và AD8232 Bảng 3.3 Bảng nối chân Arduino Uno và AD8232
Raspberry Pi 4: Có ba phương thức thường được sử dụng để kết nối giữa Raspberry Pi4 và Arduino Uno như kết nối theo chuẩn SPI, chuẩn I2C và chuẩn UART Để thuận tiện trong việc kết nối cũng như cấp nguồn cho Kit Arduino, nhóm quyết định sử dụng USB cable để kết nối 2 board, điều này đồng nghĩa với việc sử dụng chuẩn giao tiếp UART
Hình 3.4 Kết nối Raspberry Pi với Arduino c Khối hiển thị
Màn hình HDMI 7 inch LCD được sử dụng làm màn hình chính trong mô hình Với kích thước màn hình 7inch, độ phân giải 1024x600 tích hợp cảm ứng diện dung, không nghi nghờ đây là một sự lựa chọn tuyệt vời cho mô hình của đề tài
Hình 3.5 Màn hình HDMI 7inch LCD
Như đã đề cập ở chương 2, màn hình sử dụng hai cổng kết nối đó là USB và HDMI, cổng HDMI dùng để kết nối dữ liệu hình ảnh, cổng USB thì cấp nguồn cho màn hình, ngoài ra cổng này còn dùng để thực hiện truyền dữ liệu cho tính năng cảm ứng điện dung d Server
PHPMyAdmin là một ứng dụng web miễn phí mã nguồn mở được viết bằng ngôn ngữ PHP, được sử dụng để quản lý các cơ sở dữ liệu MySQL hoặc MariaDB thông qua giao diện web Nó cho phép người dùng thao tác với các bảng dữ liệu, chỉnh sửa, xóa và tạo mới các bản ghi, tạo bảng, thực hiện các truy vấn SQL và quản lý các tài khoản người dùng và quyền truy cập cơ sở dữ liệu
Với phpMyAdmin, người dùng có thể quản lý cơ sở dữ liệu một cách dễ dàng và hiệu quả hơn so với việc sử dụng các câu lệnh SQL trực tiếp Giao diện người dùng trực quan của nó cho phép người dùng thực hiện các thao tác một cách đơn giản, thân thiện và nhanh chóng Hình 3.6 là giao diện làm việc của PHPmyadmin
Ngoài ra, nhóm còn tạo một trang web được lập trình bởi ngôn ngữ PHP Trang Web này có chức năng liên kết với PHPmyadmin để lấy dữ liệu, sau đó hiển thị dưới dạng danh sách, điều này tạo sự tiện lợi cho người dùng trong việc kiểm tra lịch sử đo cũng như so sánh để nhanh chóng phát hiện sự bất thường của tim e Khối nguồn Để một hệ thống hoạt động ổn định, thì việc xây dựng một khối nguồn phù hợp là vô cùng quan trọng Khối nguồn này phải đảm bảo rằng cung cấp đủ điện và áp cho toàn bộ các thiết bị trong hệ thống Ngoài ra việc thiết kế hoặc lựa chọn khối nguồn để tối ưu về chi phí cũng quan trọng không kém Nhìn thấy được yếu tố này, nhóm đã tiến hành tìm tòi, đánh giá nhiều phương án khác nhau như thiết kế mạch mới, dùng nguồn tổ ong hoặc sử dụng adapter Trong đề tài này đã có sẵn một adapter 5V-3A đi kèm theo kit Raspberry Pi 4
Trước hết ta khảo sát các giá trị dòng và áp của mỗi phần tử trong mạch Bảng 3.4 thống kê về giá trị của dòng điện cũng như điện áp của các thành phần
Bảng 3.4 Thống kê dòng điện, điện áp hoạt động của mô hình
Tên thiết bị Điện áp hoạt động Dòng tiêu thụ
Màn hình HDMI 5 VDC 800mA
Ta có công thức tính công suất là:
Trong đó: P là công suất (W)
I là cường độ dòng điện (A)
Dòng tiêu thụ của toàn mạch:
Dựa vào bảng 3.4 và công thức 3.1, ta có thể tính công suất tiêu thụ của toàn mạch như sau:
AD AD Arduino Arduino Raspberry Raspberry
Với giá trị Adapter đi kèm theo kit Raspberry Pi là 5V, 3A tương đương với 15W Điều này đồng nghĩa với việc adapter này hoàn toàn đủ khả năng để cấp cho hệ thống hoạt động
− Chuẩn kết nối: USB Type-C
3.2.3 Sơ đồ nguyên lý toàn mạch
THI CÔNG HỆ THỐNG
GIỚI THIỆU
Hệ thống sau khi được tính toán và thiết kế ở chương 3 thì nhóm tiến hành thi công hệ thống Quá trình thi công bao gồm thi công mạch PCB, lắp ráp phần cứng và kiểm tra mạch, cài hệ điều hành cho Raspberry Pi, tạo cơ sở dữ liệu trên Raspberry, tạo trang web hiển thị thông tin đăng nhập, thiết kế giao diện màn hình HDMI, lập trình hệ thống, xây dựng mô hình phân loại.
THI CÔNG PHẦN CỨNG
4.2.1 Thi công board mạch Để thi công được mạch của hệ thống, ta cần thiết kế bản mạch in Vì linh kiện và mạch đơn giản, chỉ gồm board arduino uno kết nối với module cảm biến AD8232 để đo tín hiện ECG nên board mạch chỉ được thiết kế trên một lớp mạch với kích thước khá nhỏ gọn Hình 4.1 là hình thể hiện sơ đồ kết nối của module cảm biến AD8232 và Arduino Uno
Hình 4.1 Sơ đồ kết nối AD8232 và Arduino Uno
Các bước thi công phần cứng:
- Mạch in được thiết kế bằng phần mềm proteus 8.10
- Thực hiện thi công mạch và tiến hành thi công board mạch
- Sau khi thi công sẽ tiến hành dùng VOM để kiểm tra ngõ vào, ngõ ra để xem có lỗi trong lúc thực hiện hay không
Sơ đồ mạch bao gồm board Arduino Uno, một jump 5 chân cho phép kết nối với cảm biến AD8232 để hạn chế việc nối dây tránh gây ra nhiễu tín hiệu khi đo Hình 4.2 là hình thể hiện sơ đồ mạch in của mô hình
Hình 4.2 Mạch in sau khi thiết kế
Từ những tính toán và thiết kế ban đầu, nhóm đã liệt kê ra các linh kiện cần sử dụng trong bảng 4.1 dưới đây
Bảng 4.1 Danh sách linh kiện
STT Tên linh kiện Giá trị Số lượng Ghi chú
2 Kit Raspberry Pi 4 5V-3A 01 Bản 2GB Ram, có tản nhiệt
3 Màn hình HDMI 7 inch 01 Hãng Waveshare
4.2.2 Lắp ráp và kiểm tra
Sau khi hoàn thành việc vẽ mạch in, ta tiến hành thi công mạch, lắp ráp và linh kiện hành lên mạch sau đó tiến hành đo thông mạch xem có bị đứt dây hay hàn bị dính dây không, nếu có thì xử lý
- Kết nối Arduino với máy tính thông qua cổng USB sau đó vào phần mềm Arduino IDE kiểm tra xem nếu kết nối thành công sẽ xuất hiện dòng “Port COM”
Hình 4.3 Kiểm tra kết nối Arduino với máy tính
- Tiến hành kết nối phần cứng với Arduino rồi biên dịch và nạp chương trình vào Arduino, sau đó vào Serial Plotter để kiểm tra dạng sóng ngõ ra, hoặc vào Serial Monitor để xem giá trị ngõ ra dưới dạng số, hình 4.4 là kết quả hiển thị của dạng sóng ECG từ máy phát tín hiệu
- Sau khi kiểm tra hoàn tất bên Arduino Uno, tiếp theo sẽ kiểm tra quá trình truyền dữ liệu giữa Arduino và Raspberry Pi Kết nối chúng bằng USB cable, sau đó vào phần mềm lập trình bên Raspberry, tiến hành biên dịch và chạy chương trình đọc tín hiệu serial, nếu kết quả hiển thị tương tự với kết quả bên Arduino thì quá trình truyền dữ liệu là bình thường
Hình 4.4 Tín hiệu đọc từ cảm biến
THIẾT LẬP MÔI TRƯỜNG
Ở mục này sẽ tập trung vào việc thiết lập môi trường phù hợp cho nhu cầu lập trình hệ thống, bao gồm các yếu tố như: cài đặt hệ điều hành phù hợp, cài đặt server PHPMyadmin, cài đặt ứng dụng bàn phím ảo matchbox-keyboard
4.3.1 Cài hệ điều hành cho Raspberry Pi a Các bước cài hệ điều hành cho Raspberry Pi
Như đã giới thiệu ở phần trước, Raspberry Pi là một máy tính nhúng chạy hệ điều hành Linux Với những ưu điểm tuyệt vời mà hệ điều hành này mang lại đã làm cho kit Raspberry Pi ngày càng được ứng dụng phổ biến trong đời sống hằng ngày Raspberry pi có nhiều phiên bản khác nhau, ứng với mỗi phiên bản sẽ có một hệ điều hành tương thích với nó Sau đây nhóm xin trình bày về quá trình cài đặt hệ điều hành cho Raspberry Pi 4
Bước 1: Truy cập vào trang web của Raspberry Pi OS và chọn bản phù hợp với máy tính để tải phần mền cài hệ điều hành
Bước 2: Tiến hành cắm thẻ nhớ vào máy tính và Formatter thẻ nhớ bằng phần mềm SD Formatter
Bước 3: Tiến hành chạy file cài hệ điều hành đã tải về Tại mục Choose OS ta chọn Raspberry Pi OS( other) sau đó chọn Raspberry Pi OS( 64-bit) Sau đó ta nhấn Write để ghi hệ điều hành vào thẻ nhớ b Thiết lập ban đầu cho Raspberry
Sau khi chép hệ điều hành vào thẻ nhớ, ta rút thẻ ra và cắm vào Raspberry sau đó cấp nguồn để khởi động Kết nối màn hình, bàn phím và chuột để thiết lập ban đầu cho Raspberry
Khi khởi động lên, một cửa sổ màn hình như h sẽ hiện lên ta nhấn Next
Hình 4.5 Giao diện màn hình khi Raspberry Pi vừa khởi động
Tiếp theo ta cài đặt quốc gia và ngôn ngữ cho Raspberry sau đó nhấn Next Tiếp theo ta sẽ tiến hành thiết lập tên và mật khẩu cho Raspberry sau đó nhấn Next Để Raspberry Pi có thể truy cập internet được ta phải kết nối Raspberry Pi với Wifi hoặc mạng Lan qua cổng Ethernet Hình 4.6 hiển thị giao diện cài đặt Wifi cho Raspberry, sau đó ta nhấn Next là hoàn tất quá trình cài đặt ban đầu cho Raspberry
Hình 4.6 Giao diện cài đặt Wifi của Raspberry Pi
4.3.2 Cài đặt server cho Raspberry Pi a Tạo cơ sở dữ liệu trên Raspberry
Raspbery Pi còn được biết đến như một máy chủ web Nó cho phép người dùng có thể tạo ra một cơ sở dữ liệu trên sever của nó để lưu trữ và cho phép các client có thể truy cập vào để xem hoặc chỉnh sửa dữ liệu Nhờ đó mà giúp cho người dùng có thể tiết kiệm được đáng kể bộ nhớ Rom Dưới đây nhóm xin trình bày về các bước để tạo một cơ sở dữ liệu trên Raspberry Pi 4
Bước 1 Đầu tiên ta vào màn hình Terminal của Raspberry Pi và gõ lệnh "sudo apt upgrade" để Raspberry Pi cập nhật phiên bản mới nhất của hệ thống
Bước 2 Bước tiếp theo là cài đặt Apache trên Raspberry Pi Để làm điều này, chúng ta có thể sử dụng APT, bằng cách gõ lệnh "sudo apt install apache2" này lên màn hình Terminal sau đó nhấn “Y” để xác nhận cài đặt Ta vào trình duyệt web và truy cập vào: http:// để xem dã cài đặt được Apache chưa Bước 3 Ta tiến hành cài đặt PHP để thêm khả năng tạo nội dung động vào máy chủ web của trên Raspberry Pi Để cài đặt ta gõ lệnh "sudo apt install php libapache2- mod-php"
Hình 4.7 Giao diện cài đặt các gói của PHP
Trong hình 4.7, gói đầu tiên bổ sung các gói cốt lõi cho PHP và khả năng chạy các tập lệnh PHP trong một thiết bị đầu cuối Gói thứ hai tăng tốc cho Apache với khả năng PHP, cho phép ta đưa mã PHP vào các trang HTM Sau khi cài đặt PHP, ta nên kiểm tra xem mọi thứ có ổn với quá trình cài đặt của mình không trước khi tiếp tục
Thực hiện theo các bước sau để tạo tệp PHP và kiểm tra tệp đó trong trình duyệt hay không:
- Chuyển đến thư mục web Apache bằng cách gõ lệnh: cd /var/www/html
- Tạo một tệp PHP mới bằng cách gõ lệnh: "sudo nano test.php"
- Sao chép đoạn code này vào: ""
- Lưu và Thoát (CTRL+O, CTRL+X)
- Mở URL này bằng trình duyệt web của bạn và gõ: "http:///test.php" Nếu ta thấy trang một trang web hiện ra như hình 4.8, thì mọi thứ đều ổn, máy chủ Apache và PHP đã được cài đặt đúng cách và bạn có thể sử dụng mã HTML và PHP trong các trang của mình
Hình 4.8 Phiên bản PHP đã cài đặt
Bước 4: Tiếp theo ta tiến hành cài đặt MySQL để lưu trữ và quản lý cơ sở dữ liệu Để cài đặt ta gõ lệnh: "sudo apt install mariadb-server php-mysql"
Hình 4.9 Giao diện cài đặt MySQL
Trong hình 4.9 hiển thị các gói cần cài đặt cho MySQL Gói đầu tiên (máy chủ mariadb) cài đặt máy chủ chính cho cơ sở dữ liệu MySQL Gói thứ hai thêm khả năng sử dụng các hàm MySQL trong mã PHP(như liên kết giữa Apache và PHP) Để hoàn tất quá trình cài đặt ta khởi động lại Apache bằng cách gõ lệnh: "sudo service apache2 restart"
Bước 5: Kế tiếp ta tiến hành tạo người dùng MySQL đầu tiên trên Raspberry để quản lý cơ sở dữ liệu Ta tiến hành các bước sau:
- Đăng nhập vào bảng điều khiển MySQL bằng cách gõ lệnh: "sudo mysql"
- Tạo cơ sở dữ liệu đầu tiên bằng cách gõ: "CREATE DATABASE test";
- Tạo người dùng đầu tiên bằng cách gõ: "CREATE USER 'webuser' IDENTIFIED BY 'password' ";
- Thêm tất cả các đặc quyền vào cơ sở dữ liệu thử nghiệm : GRANT ALL PRIVILEGES ON test.* To 'webuser'@'localhost' IDENTIFIED BY 'password';
- Lưu các thay đổi bằng cách gõ lệnh: "FLUSH PRIVILEGES";
Hình 4.10 Quá trình tạo người dùng MySQL
Bước 6: Ta tiến hành cài đặt PHPMyAdmin để quản lý cơ sở dữ liệu MySQL bằng cách gõ lệnh: "sudo apt install phpmyadmin" Trong quá trình cài đặt, sẽ hiện ra các cửa sổ ta chọn các tùy chọn sau:
- Chọn Apache2 (nhấn dấu cách rồi enter)
- Định cấu hình cơ sở dữ liệu cho PHPMyAdmin với db-common: Không
Sau khi cài đặt, hãy truy cập: http:///phpmyadmin sẽ có giao diện đăng nhập hiện ra như trong hình 4.11 Ta lựa chọn ngôn ngữ và đăng nhập với người dùng đã tạo trước đó
Hình 4.11 Giao diện đăng nhập cơ sở dữ liệu trên PHPMyAdmin
Hình 4.12 Giao diện tạo cơ sở dữ liệu
Bước 7: Ta tiến hành tạo cơ sở dữ liệu màn hình như hình 4.12 Tại mục “Cơ sở dữ liệu”, để tạo một CSDL mới thì nhấp vào “Mới” ở phía ngoài bên trái và nhập các thông tin CSDL muốn tạo và chọn “Tạo” để hoàn thành tạo CSDL mới và tên CSDL mới tạo được sẽ hiện ở phía ngoài cùng bên trái
Bước 8:Tạo bảng dữ liệu sẽ hiện ra gồm chỗ điền thông tin tên bảng và số cột của bảng muốn tạo Sau khi nhập thông tin đầy đủ thì chọn “Thực hiện” để chuyển đến giao diện nhập thông tin và lựa chọn chức năng cho các hàng các cột trong bảng Cuối cùng chọn “Ghi lại” để hoàn thành xuất bảng dữ liệu như hình 4.13
Hình 4.13 Kết quả sau khi hoàn thành tạo bảng CSDL b Kết nối cơ sỡ dữ liệu giữa PHPMyAdmin với Web
LẬP TRÌNH HỆ THỐNG
4.4.1 Tạo giao diện cho màn hình HDMI Để giúp cho người dùng dễ dàng thao tác, nhóm đã nghiêng cứu thiết kế giao diện cho màn hình HDMI Nhờ đó mà việc thao tác trở nên đơn giản và dễ dàng hơn Để thiết kế được giao diện, nhóm đã sử dụng phần mềm QT Designer để thiết kế, sau đó chuyển sang code python và chỉnh sửa lại cho phù hợp với đề tài Sau đây, nhóm xin trình bày các bước để tạo ra giao diện màn hình HDMI:
Bước 1: Cài đặt Qt Designer: Ta có thể tải miễn phí từ trang web chính thức của
Qt Sau khi cài đặt, ta có thể khởi động Qt Designer
Bước 2: Tạo một form mới: Ta có thể tạo một form mới bằng cách chọn "File" -> "New" -> "Form" hoặc nhấn phím tắt "Ctrl+N", giao diện vùng làm việc ‘2’ sẽ hiện ra như hình 4.16
Hình 4.16 Giao diện làm việc phẩn mềm Qt Designer
Bước 3: Thêm các phần tử giao diện: Ta có thể kéo và thả các phần tử giao diện từ thanh công cụ Widget Box( các ô trong phần đánh dấu số 1) vào form Các phần tử này bao gồm các nút bấm, các hộp văn bản, các danh sách và các phần tử khác Bước 4: Cấu hình thuộc tính: Sau khi thêm các phần tử giao diện, ta có thể cấu hình các thuộc tính của chúng bằng cách sử dụng bảng thuộc tính( phần đánh dấu số
3) Bảng này cho phép bạn cấu hình các thuộc tính như kích thước, vị trí và màu sắc Sau khi thiết kế ta được giao diện như hình 4.17 và 4.18
Hình 4.17 Giao diện đăng nhập sau khi thiết kế
Hình 4.18 Giao diện làm việc sau khi thiết kế
Bước 5: Sau khi hoàn thành thiết kế giao diện, ta lưu form bằng cách chọn "File" -> "Save" hoặc nhấn phím tắt "Ctrl+S" Ngoài ra để thực hiện các thao tác với ngôn ngữ python, ta có thể chuyển đổi định dạng của file bằng cách mở terminal trong pycharm hoặc Vscode và gõ lệnh: python -m PyQt5.uic.pyuic -x [FILENAME].ui -o [FILENAME].py Như vậy, bây giờ ta có thể sử dụng file python để tùy chỉnh lại theo yêu cầu
Hệ thống đo và phân loại tín hiệu ECG được xây dựng bởi một chuỗi các chương trình hỗ trợ lẫn nhau, trong đó có các chương trình chính được mô tả như hình 4.19:
Hình 4.19 Lưu đồ tổng quát hệ thống
- Chương trình "Đọc và xử lý tín hiệu từ module AD8232" có nhiệm vụ đọc và xử lý tín hiệu từ module cảm biến, sau đó gửi tín hiệu sang Raspberry Pi, Arduino Uno đảm nhiệm phần này
- Chương trình "Đăng nhập thông tin người dùng" được thực hiện trên kit Raspberry Pi, chương trình này thực hiện hiển thị giao diện đăng nhập được thiết kế ở chương 3, tại đây thông tin người dùng sẽ được lưu trữ
- Chương trình "Xử lý và hiển thị" thực hiện chức năng hiển thị giao diện chính (được thiết kế ở chương 3), tại đây, tín hiệu sóng ECG thời gian thực sẽ được hiển thị tùy theo nút nhấn, ngoài ra còn có chức năng phân loại tín hiệu đầu vào
- Chương trình "Gửi thông tin lên server" đảm nhận nhiệm vụ nhận thông tin bao gồm thông tin người dùng cũng như thông tin về tín hiệu đo được từ Raspberry Pi và sau đó lưu trữ lại
- Chương tình cuối cùng là chương trình "Hiển thị trên web", chương trình này sẽ lấy dữ liệu từ server và hiển thị nó lên web đã được xây dựng trước đó a Lập trình cho Kit Arduino Uno Ở phần này, nhóm trình bày lưu đồ giải thuật cho Arduino Uno, trong đó bao gồm chương trình cốt lõi là " Đọc và xử lý tín hiệu từ module AD8232" cùng với lưu đồ của các chương trình con
Giải thích lưu đồ hình 4.20: Sau khi cấu hình cho arduino, ta kiểm tra dữ liệu nhận được từ module AD8232, sau đó tiến hành lọc tín hiệu bằng hai bộ lọc IIR và FIR, tiếp đến là tính toán chỉ số BPM và gửi dữ liệu thông qua chân serial
Hình 4.22 là lưu đồ cho chương trình con tính giá trị BPM Đầu tiên là khai báo các biến, trong đó có các biến quan trọng như giá trị ngưỡng đặt trước, giá trị này sẽ được chọn trong quá trình quan sát sóng ngõ vào Tiếp đến là biến bỏ qua đọc dữ liệu, biến này đóng vai trò chỉ lấy giá trị đầu tiên lớn hơn ngưỡng để dựa vào đó tính mốc thời gian và các biến thời gian
Về nguyên lý: Để mô tả hoạt động của chương trình ta nhìn vào hình 4.21 Đầu tiên ta chọn giá trị ngưỡng thích hợp, sau đó khi mà dữ liệu ngõ vào lớn hơn ngưỡng, các giá trị trước đó nhỏ hơn ngưỡng và giá trị thời gian 1 chưa được gán giá trị thì lúc này giá trị thời gian 1 sẽ bằng giá trị thời gian hiện tại, khi mà giá trị ngõ vào lớn hơn ngưỡng một lần nữa và giá trị thời gian 1 đã có thì giá trị thời gian lúc này được gán cho thời gian 2 Từ hai giá trị thời gian 1 và 2 ta có thể tính được khoản thời gian 1 chu kì (tương đương với thời gian 1 nhịp tim) bằng cách trừ chúng cho nhau Sau khi có được thời gian 1 nhịp, ta lấy 60 1000
(vì thời gian trong chương trình được tính theo đơn vị ms nên phải nhân thêm cho 1000)
Hình 4.20 Lưu đồ đọc và xử lý tín hiệu từ module AD8232
Hình 4.21 Ví dụ hoạt động của chương trình tính BPM
Hình 4.22 Lưu đồ tính chỉ số BPM b Lập trình cho Raspberry Pi
Hình 4.23 Lưu đồ chương trình đăng nhập thông tin người dùng
Hình 4.23 mô tả nguyên lý hoạt động của hệ thống khi đang ở giao diện đăng nhập Sau khi thiết lập môi trường hoạt động cho hệ thống, ta tiến hành chạy chương trình chính, giao diện đăng nhập sẽ hiển thị trước tiên, tại đây người dùng sẽ nhập các thông tin cơ bản vào các ô được mô tả trên màn hình, tiếp theo sẽ có hai sự lựa chọn, một là nhấn nút clear, nếu nút clear được nhấn thì toàn bộ thông tin người dùng sẽ bị xóa, nếu nhấn nút login thì sẽ kiểm tra thông tin đã nhập đủ chưa, nếu chưa thì sẽ yêu cầu nhập đầy đủ, ngược lại thì hệ thống sẽ chuyển sang giao diện làm việc chính
Hình 4.24 Lưu đồ xử lý và hiển thị trên màn hình chính
Sau khi điền thông tin ở giao diện đăng nhập, chúng ta sẽ chuyển sang giao diện chính hay được gọi là giao diện xử lý và hiển thị Lưu đồ của giao diện này được thể hiện ở hình 4.24
TÀI LIỆU HƯỚNG DẪN THAO TÁC
Để thực hiện việc đo các tín hiệu từ cảm biến, ta cần thực hiện các bước như sau Bước đầu tiên là kết nối ba cực của cảm biến vào các vị trí cần đo và cấp nguồn cho Raspberry Pi để khởi động hệ thống Sau đó, ta tiến hành chạy chương trình trên phần mềm Thony Khi chương trình được khởi động, giao diện màn hình đăng nhập sẽ hiển thị Ta cần nhập thông tin và nhấn Login để vào màn hình chính
Tại màn hình chính, ta có thể tùy chọn các chức năng bằng các nút nhấn tương ứng Nếu muốn tiến hành đo và hiển thị realtime tín hiệu lên màn hình, ta nhấn nút Start Khi muốn dừng realtime tín hiệu, ta nhấn nút Stop Nếu muốn phân loại tín hiệu và gửi dữ liệu lên CSDL, ta nhấn nút Class Để thoát khỏi màn hình chính và quay về màn hình đăng nhập, ta nhấn nút Close
Sau khi đã thu thập được dữ liệu, ta có thể truy cập vào trang web http:///phpmyadmin để xem CSDL trên PHPMyAdmin hoặc truy cập vào http:///csdl_benh_nhan.php để xem thông tin trên Web.
KẾT QUẢ, NHẬN XÉT VÀ ĐÁNH GIÁ
KIẾN THỨC ĐẠT ĐƯỢC
Đối tượng xử lý chính mà đề tài hướng đến là tín hiệu điện tim Nhờ đó nhóm thực hiện hiểu được thêm các kiến thức về hoạt động của tim, lý thuyết về tín hiệu điện tim Hiểu được cách đo và phân loại tín hiệu điện tim dùng mạng neural network Hiểu biết thêm kiến thức về vi điều khiển, cảm biến và ngoại vi Thực hiện tìm hiểu và lập trình được kit Arduino Uno, kit Raspberry Pi 4 Giao tiếp và lấy tín hiệu từ cảm biến điện tim AD8232 Sử dụng kit Arduino Uno xử lý, tính toán Hiểu được cách gửi tín hiệu từ kit Arduino Uno sang kit Raspberry Pi 4 và hiển thị tín hiệu lên màn hình HDMI
Nhóm cũng đã tìm hiểu và ứng dụng được lý thuyết Xử lý tín hiệu số Các bộ lọc FIR và IIR được sử dụng cho đề tài, hiểu được cách tính toán thông số nhịp tim BPM
Kiến thức về lập trình Web, cơ sở dữ liệu, kết nối các thiết bị truyền tải thông tin trong mạng internet thông qua wifi Thiết lập hệ cơ sở dữ liệu để quản lí và lưu trữ dữ liệu Hiểu được cách tạo cơ sở dữ liệu trên Raspberry Pi và cách gửi dữ liệu từ Raspberry Pi lên cơ sở dữ liệu Truy xuất dữ liệu từ PHPMyAdmin sang web service Kiến thức về AI( Artificial Intelligence), mạng neural network và hiểu được cách sử dụng mạng VGG (Vienna Group of GoogLeNet) vào việc phân loại tín hiệu Kiến thức sử dụng các phần mềm liên quan để phục vụ cho việc thiết kế, tính toán, thi công, lập trình hệ thống Phần mềm Thony, Arduino IDE để lập trình cho vi điều khiển, phần mềm Proteus cho vẽ mạch, phần mềm QT Designer để tạo giao diện.
KẾT QUẢ PHẦN CỨNG
Phần cứng của sản phẩm có tổng thể gồm các mặt bên ngoài, bên trong và lúc hoạt động
Hình 5.1 Tổng thể bên ngoài sản phẩm
Sau khi hoàn thành việc thi công hệ thống, nhóm đã thực hiện được sản phẩm phần cứng của hệ thống Hình 5.1 là tổng thể bên ngoài của sản phẩm gồm các thành phần chính gồm có hộp đựng, nắp hộp cố định bằng vít, quạt tản nhiệt cho hệ thống, màn hình HDMI, khe cắm jack đo tín hiệu, khe cấp nguồn cho hệ thống
Hình 5.2 Bên trong sản phẩm
Bên trong của phần đóng gói được thể hiện như hình 5.2 Bên trong bao gồm các vị trí (2) Module cảm biến AD8232, (3) Kit Arduino Uno, (4) Kit Raspberry Pi 4
5.2.2 Lập trình phần cứng a Xử lý tín hiệu
Hình 5.3 là kết quả thu được từ việc lấy tín hiệu thô Tín hiệu thô là tín hiệu được lấy trực tiếp từ cảm biến Tín hiệu này có nhiều tác nhân ảnh hưởng như tín hiệu sai lệch do người dùng rung lắc, nhiễu tần số cao, ảnh hưởng điện cơ
Hình 5.3 Tín hiệu thô thu được từ cảm biến
Tín hiệu thô thu được từ cảm biến là tín hiệu chưa được xử lý Nhóm đã tiến hành xử lý bằng cách sử dụng bộ lọc FIR và IIF để lọc và loại bỏ thành phần nhiễu Kết quả như hình 5.4, các thành phần nhiễu gần như bị loại bỏ hoàn toàn
Hình 5.4 Tín hiệu đã qua bộ lọc IIR và FIR
Hình 5.5 Kết quả tính toán nhịp tim
Tín hiệu sau khi đi qua bộ lọc IIR và FIR sẽ tiếp tục đưa vào để tính toán nhịp tim Tính toán nhịp tim dựa vào ngưỡng đạo hàm bậc một các ngưỡng này sẽ tự động cập nhật và điều chỉnh sau mỗi thay đổi của ngưỡng trước đó, từ đó làm cho việc tính toán nhịp tim trở nên chính xác hơn Hình 5.5 có ô màu đỏ hiển thị kết quả tính toán nhịp tim b Lập trình hệ thống
Kết quả giao diện màn hình đăng nhập được nhóm thiết kế gồm có bốn ô cho phép nhập thông tin và hai nút nhấn “EXIT”, “LOGIN” được thể hiện như hình 5.6
Hình 5.6 Giao diện màn hình đăng nhập sau thi công
Hình 5.7 Giao diện màn hình chính sau thi công
Tiến hành nhập thông tin và nhấn nút Login, hệ thống sẽ chuyển sang giao diện màn chính như hình 5.7 Tại đây ta sẽ thấy có các nút nhấn để ta thao tác cũng như các ô hiển thị thông tin vừa nhập và thông tin thời gian, loại tín hiệu và chỉ số nhịp tim.
KẾT QUẢ PHẦN MỀM
5.3.1 Kết quả mô hình phân loại
Dựa vào nội dung thiết kế mô hình phân loại ở chương 3, nhóm đã xây dựng mô hình phân loại dựa trên cấu trúc VGG-19 và ở trong phần này nhóm sẽ trình bày kết quả đạt được khi sử dụng dữ liệu đo từ module cảm biến AD8232 để huấn luyện mô hình, ngoài ra, để chứng thực mô hình vẫn hoạt động tốt ở dữ liệu huấn luyện với kích thước lớn hơn, đa dạng hơn, nhóm đã sử dụng thêm thư viện MIT-BIH [6] Thư viện MIT-BIH là một tập dữ liệu đa dạng các tín hiệu điện tim được sử dụng phổ biến trong nghiên cứu y học Tập dữ liệu này bao gồm các tín hiệu điện tim được ghi lại từ 47 bệnh nhân khác nhau trong khoảng thời gian từ 1975 đến 1979, và được sử dụng rộng rãi trong các nghiên cứu về xử lý tín hiệu và phân loại đặc trưng của tín hiệu điện tim
Hình 5.8 Ma trận nhầm lẫn mô hình sử dụng dữ liệu từ cảm biến
Bảng 5.1 Thông số sau khi đào tạo mô hình sử dụng dữ liệu từ cảm biến
Loại tín hiệu Precision Recall F1-score sample Accuracy
Bảng 5.1 trình bày các thông số của mô hình phân loại sử dụng dữ liệu lấy từ cảm biến bao gồm các thông số như: Precision, Recall, F1 và support (số lượng mẫu được sử dụng) Công thức tính của các thông số này được trình bày lần lượt theo các công thức số 5.1, 5.2, 5.3, 5.4
- Trong đó các thông số TP, FP, TN và FN là các đại lượng trong ma trận nhầm lẫn, để hiểu rõ hơn ta quan sát bảng 5.2
Bảng 5.2 Ma trận nhầm lẫn mẫu
Nó đại diện điểm trên ma trận 2 chiều bao gồm :Thực tế và Dự đoán
- TP: True Positive: Các giá trị Positive và được dự đoán là Positive
- FP: False Positive: Các giá trị là Negative được dự đoán là Positive
- FN: False Negative: Các giá trị là Positive được dự đoán là Negative
- TN: True Negative: Các giá trị Negative và được dự đoán là Negative
Thông qua hình 5.8 và bảng 5.1 ta thấy rằng độ chính xác của mô hình là khá cao, sấp xỉ 100% Mặc dù kết quả đạt được là vô cùng tốt, tuy nhiên mô hình phân loại dựa trên dữ liệu từ máy phát sóng này chỉ mang tính tham khảo, không thể áp dụng quá nhiều vào thực tế, bởi vì các nguyên nhân sau đây:
- Dữ liệu huấn luyện chưa được đa dạng
- Các tín hiệu phát ra từ thiết bị là khá chuẩn, khả năng nhiễu thấp
Chính vì vậy, để làm rõ năng suất của mô hình ta sẽ tiến hành huấn luyện trên tập dữ liệu lớn hơn, đa dạng hơn và thực tế hơn đó là dữ liệu từ thư viện MIT-BIH Các tín hiệu điện tim trong thư viện MIT-BIH được ghi lại bằng các điện cực được đặt trên bề mặt da của người bệnh và được lưu trữ dưới dạng tệp dữ liệu dạng tín hiệu Mỗi tệp dữ liệu này bao gồm các giá trị điện áp đo được tại từng thời điểm, thường là với tần số lấy mẫu 360 Hz
Hình 5.9 Kết quả huấn luyện mô hình với thư viện MIT-BIH
Hình 5.9 thể hiện kết quả của mô hình huấn luyện trong suốt thời gian đào tạo
Có thể thấy rằng độ chính xác của mô hình ngày càng tăng tương ứng với lỗi ngày càng giảm Độ chính xác và các thông số đặc trưng được trình bày ở bảng 5.3
Bảng 5.3 Thông số sau khi đào tạo mô hình dùng thư viện MIT-BIH
Loại tín hiệu Precision Recall F1-score sample Accuracy
V 0.98 0.96 0.97 1426 0.996 Để đánh giá mô hình ta sử dụng tập dữ liệu được tách ra từ thư viện MIT-BIH và hình 5.10 là ma trận nhầm lẫn của mô hình
Hình 5.10 Ma trận nhầm lẫn của mô hình sử dụng thư viện MIT-BIH
Nhìn chung thì độ chính xác của tập dữ liệu để kiểm tra là khá cao, thấp nhất là loại N với 99,2% cao nhất là loại F với 99,7% Độ chính xác trung bình của mô hình là 99,3%
So sánh mô hình của đề tài với một số mô hình khác: Để làm rõ khả năng của mô hình được sử dụng trong đề tài, ta tiến hành khảo sát và đối chiếu kết quả với một số mô hình đã được nghiên cứu trước đó trên cùng một tập dữ liệu (tập dữ liệu từ thư viện MIT-BIH) Bảng 5.4 trình bày nội dung so sánh của các mô hình
Bảng 5.4 Bảng so sánh các mô hình phân loại
Phương pháp Tập dữ liệu Độ chính xác
Phương pháp đề xuất MIT-BIH arrhythmia database 99,3%
TVCG_PSO [8] MIT-BIH arrhythmia database 92,4%
MobileNet MIT-BIH arrhythmia database 99%
Cơ sở dữ liệu được nhóm xây dựng trực tiếp trên server của Raspberry Pi để lưu trữ thông tin của hệ thống gồm có các cột: ID, Paswword, UserName, Phone, Date, ECG, Class chi tiết được thể hiện như hình 5.11
Hình 5.11 Bảng cơ sở dữ liệu đã tạo
Hình 5.12 Các dữ liệu được lưu trên CSDL PHPMyAdmin
Dữ liệu sẽ tự động được Raspberry Pi gửi lên khi ta nhấn nút Class ở giao diện màn hình chính Kết quả là dữ liệu đã được lưu trên cơ sở dữ liệu như hình 5.12
Web service được nhóm viết bằng ngôn ngữ PHP và được nhúng trực tiếp vào thư mục cd /var/www/html trên Raspberry Pi, nhờ đó mà bất cứ khi nào Raspberry
Pi kết nối Internet thì ta có thể truy cập vào trang Web để xem thông tin Hình 5.13 hiển thị thông tin được cập nhật trên CSDL PHPMyAdmin
Hình 5.13 Kết quả thông tin người đo trên Web
Từ hình 5.13 ta có thể thấy được toàn bộ thông tin người đăng nhập bao gồm:
ID, Password, UserName, Phone, Date, BPM, Class Thông tin được hiển thị một cách trực quan , rõ ràng giúp cho người dùng dễ theo dõi thông tin hơn.
ĐÁNH GIÁ KẾT QUẢ
Sau khi hoàn thành được hệ thống, nhóm đã tiến hành đo và thu lại được kết quả Để đánh giá hệ thống có hoàn thành được yêu cầu đã đề ra và hoạt động được không, nhóm tiến hành đo trên các thiết bị khác để so sánh
5.4.1 Kết quả đo và phân loại trên thiết bị SKX2000 Để kiểm chứng độ chính xác kết quả đo của hệ thống, nhóm đã tiến hành sử dụng máy mô phỏng tín hiệu điện tim SKX2000 để phát ra tín hiệu ECG để đo nhiều lần trên máy theo dõi điện tim OMNI II và hệ thống của nhóm Kết quả tính toán nhịp tim được thể hiện như trong bảng 5.4
Bảng 5.5 So sánh tính chính xác tính toán nhịp tim với các thiết bị khác
Máy mô phỏng tín hiệu điện tim 50bpm 55bpm 60bpm 65bpm 70bpm 100bpm
Dạng sóng điện tim và chỉ số nhịp tim Bpm của máy theo dõi điện tim OMNI II(1), hệ thống của nhóm(2) Tiến hành đo bằng cách gắn các điện cực vào máy mô phỏng tín hiệu điện tim SKX2000
Hình 5.14 Kết quả đo và phân loại tín hiệu dạng Nomal
Hình 5.15 Kết quả đo và phân loại tín hiệu bệnh 1
Hình 5.16 Kết quả đo và phân loại tín hiệu bệnh 2
Hình 5.17 Kết quả đo và phân loại tín hiệu bệnh 3
Từ những kết quả đạt được ở trên ta có thể thấy được hệ thống hoạt động đáp ứng được các yêu cầu đề ra Dạng sóng về cơ bản là giống nhau, kết quả tính toán bpm đúng cho dạng sóng Normal Kết quả phân loại đạt độ chính xác cao.