TỔNG QUAN
ĐẶT VẤN ĐỀ
Trong cuộc sống hiện đại, sức khỏe là nhu cầu thiết yếu, giúp nâng cao hiệu quả công việc Tại Việt Nam, việc thăm khám và điều trị bệnh ngày càng trở nên quan trọng, đặc biệt ở các thành phố lớn Sự tiến bộ của khoa học, đặc biệt trong lĩnh vực điện tử, đã tạo ra những hệ thống đo lường và điều khiển thông minh hơn Trong y sinh, các vi mạch và linh kiện chính xác đã phát triển những thiết bị giúp theo dõi sức khỏe, phòng ngừa bệnh tật, từ đó xây dựng lối sống lành mạnh cho mỗi người.
Mạng viễn thông đang phát triển mạnh mẽ và trở nên phổ biến toàn cầu, với ứng dụng rộng rãi trong nhiều lĩnh vực Sự phát triển nhanh chóng của các dịch vụ và ứng dụng thông tin qua mạng viễn thông mang lại tiện lợi, tiết kiệm thời gian và chi phí, đồng thời đảm bảo an toàn Chất lượng mạng viễn thông hiện nay đã tạo điều kiện thuận lợi cho sự phát triển của các ứng dụng điều khiển từ xa và tự động hóa.
Nhóm nghiên cứu đã phát triển một thiết bị chăm sóc sức khỏe mang tên “Hệ thống đo đạc, theo dõi huyết áp cơ thể sử dụng kit Arduino” nhằm hỗ trợ bác sĩ trong việc theo dõi tình trạng bệnh nhân và xác định vị trí của họ trong trường hợp khẩn cấp Thiết bị này được thiết kế với độ ổn định cao, hoạt động tin cậy và đảm bảo độ chính xác cũng như an toàn Giao diện điều khiển đơn giản giúp hiển thị kết quả đo một cách rõ ràng.
MỤC TIÊU
Máy đo huyết áp cơ thể hỗ trợ theo dõi huyết áp và nhiệt độ một cách dễ dàng và thuận tiện Kết quả đo sẽ được gửi lên mạng để thống kê, giúp cải thiện việc theo dõi tình trạng sức khỏe.
NỘI DUNG NGHIÊN CỨU
Những nội dung nghiên cứu của đề tài bao gồm:
NỘI DUNG 1: Cách thức đo huyết áp, xác định tâm thu, tâm trương
NỘI DUNG 2: Tìm hiểu về các loại cảm biến phù hợp với đề tài
NỘI DUNG 3: Tìm hiểu cách thức giao tiếp và gửi dữ liệu lên Google
NỘI DUNG 4: Tìm hiểu về hoạt động và cách thức giao tiếp của các module
NỘI DUNG 5: Thiết kế hệ thống điều khiển
NỘI DUNG 6: Thiết kế mô hình
NỘI DUNG 7: Đánh giá kết quả thực hiện
GIỚI HẠN
Hệ thống đo đạc, theo dõi huyết áp cơ thể có các thông số sau:
Hệ thống bao gồm 1 hộp điều khiển, vòng quấn tay (cuff)
Kích thước của hộp điều khiển 11.5 x 13.5 x 9.5cm
Thiết bị đo huyết áp cơ thể hiển thị lên màn hình OLED
Kết quả sau mỗi lần đo huyết áp sẽ được gửi lên Google Spreadsheet thông qua modul Wifi ESP8266 để thống kê
Thiết kế trang web và ứng dụng Android để theo dõi các kết quả đo
Hiển thị thời gian thực trên màn hình chính OLED
Thiết bị sử dụng 4 pin AA 1.5V, 800 mAh có thể sạc.
BỐ CỤC
Trình bày đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nội dung nghiên cứu, các giới hạn thông số và bố cục đồ án
Chương 2: Cơ Sở Lý Thuyết
Trình bày các lý thuyết có liên quan đến các vấn đề mà đề tài sẽ dùng để thực hiện thiết kế, thi công cho đề tài
Chương 3: Thiết Kế và Tính Toán
Bài viết tổng quan về yêu cầu thiết kế và tính toán hệ thống, bao gồm sơ đồ nguyên lý toàn mạch và các phần riêng lẻ của hệ thống.
Chương 4: Thi công hệ thống
Trình bày kết quả thi công phần cứng và những kết quả hình ảnh trên màn hình hay mô phỏng tín hiệu, kết quả thống kê
Chương 5: Kết Quả, Nhận Xét và Đánh Giá
Bài viết trình bày kết quả toàn bộ quá trình nghiên cứu, bao gồm thời gian thực hiện, những kết quả đã đạt được, cùng với nhận xét và đánh giá về đề tài Ngoài ra, bài viết cũng nêu rõ tính ứng dụng của đề tài trong thực tiễn, giúp người đọc hiểu rõ hơn về giá trị và ý nghĩa của nghiên cứu này.
Chương 6: Kết Luận và Hướng Phát Triển
Kết quả đạt được của đề tài nghiên cứu so với mục tiêu ban đầu cho thấy sự tiến bộ rõ rệt, với những thành công đáng ghi nhận Đánh giá tổng quan cho thấy các mục tiêu đã được hoàn thành, đồng thời cũng chỉ ra một số điểm cần cải thiện Hướng phát triển trong tương lai sẽ tập trung vào việc mở rộng nghiên cứu và ứng dụng thực tiễn, nhằm nâng cao hiệu quả và giá trị của đề tài.
CƠ SỞ LÝ THUYẾT
NGUYÊN LÝ ĐO HUYẾT ÁP
Huyết áp là áp lực máu trong động mạch, giữ vai trò quan trọng trong việc cung cấp máu cho các cơ quan trong cơ thể Đây là một chỉ số thiết yếu để đánh giá chức năng của hệ tim mạch và là một trong ba thông số (mạch, huyết áp, thở) dùng để kiểm tra tình trạng sống còn của bệnh nhân Hai phương pháp đo huyết áp phổ biến hiện nay là phương pháp Korotkoff, dựa vào việc nghe âm thanh khi đo, và phương pháp Oscillometric, đo dao động áp lực bên trong cổ tay khi bệnh nhân đeo vòng bit.
2.1.2 Huyết áp tâm thu và huyết áp tâm trương
Hình 2 1: Huyết áp tâm thu và tâm trương [1]
Huyết áp tâm thu là chỉ số đo áp lực máu trong động mạch khi tim co bóp, trong khi huyết áp tâm trương là áp lực máu tối thiểu khi tim nghỉ giữa các nhịp đập.
Bảng 2 1: Giá trị huyết áp theo độ tuổi [2]
Tuổi Tối thiểu Trung bình Tối đa
Phương pháp Korotkoff là kỹ thuật đo huyết áp, trong đó bao hơi được bơm lên để ngăn chặn lưu thông máu ở động mạch cánh tay, kết nối với cột thủy ngân của áp kế Ống nghe được đặt trên động mạch cánh tay để nghe tiếng đập Khi bao hơi đầy, mạch không nghe thấy tiếng đập Khi xả hơi, tiếng đập đầu tiên xuất hiện cho biết máu bắt đầu lưu thông, tương ứng với áp lực tối đa Áp lực tiếp theo giảm dần, với tiếng đập êm dịu thể hiện huyết áp tâm thu (SBP), tiếp theo là tiếng đập mạnh Cuối cùng, khi tất cả âm thanh biến mất, đó là giá trị huyết áp tâm trương (DBP).
GIỚI THIỆU PHẦN CỨNG
2.2.1 Chuẩn giao tiếp I2C a Giới thiệu
I2C là viết tắc của từ Inter-Integrated Circuit là một chuẩn truyền thông do hãng điện tử Philips Semiconductor sáng lập và xây dựng thành chuẩn năm 1990
Hình 2 2: Sơ đồ khối kết nối theo chuẩn I2C [4]
The I2C protocol operates using two lines, SDA (Serial Data) and SCL (Serial Clock), which are configured as open-drain or open-collector on devices This configuration necessitates the use of pull-up resistors for both lines to ensure proper functionality.
SDA - Dữ liệu nối tiếp là đường truyền thông tin, nơi tất cả địa chỉ và dữ liệu được truyền theo thứ tự từng bit Trong giao thức I2C, bit có trọng số lớn nhất (MSB) được truyền trước tiên, điều này trái ngược với chuẩn UART.
SCL (Serial Clock) là đường xung nhịp trong chuẩn truyền thông TWI (I2C), cho phép truyền dữ liệu đồng bộ Mỗi xung trên đường SCL sẽ kích hoạt việc truyền hoặc nhận một bit dữ liệu trên đường SDA.
Trong hệ thống truyền dữ liệu I2C, thiết bị cung cấp xung clock được gọi là thiết bị chủ (master), trong khi thiết bị nhận xung clock được gọi là thiết bị tớ (slave) Hệ thống này có thể hỗ trợ lên đến 128 thiết bị tớ, nhưng chỉ có một thiết bị chủ duy nhất Mỗi thiết bị tớ sẽ nhận và xử lý thông tin từ thiết bị chủ.
Các thiết bị chủ có thể lựa chọn nhiều địa chỉ khác nhau để giao tiếp với thiết bị tớ một cách phù hợp Thông thường, địa chỉ của thiết bị tớ được cài đặt sẵn bởi nhà sản xuất.
Điều kiện bắt đầu (START Condition) xảy ra khi cả SDA và SCL đều ở mức cao Khi Master muốn giao tiếp với Slave, Master sẽ kéo chân SDA xuống thấp trong khi SCL vẫn giữ ở mức cao Trạng thái này được gọi tắt là S.
Điều kiện STOP (STOP Condition) là tín hiệu mà Master tạo ra để kết thúc quá trình truyền hoặc nhận dữ liệu Khi muốn dừng quá trình, Master sẽ kéo chân SDA lên cao, từ đó xác lập điều kiện STOP.
SCL đang ở mức cao STOP condition chỉ được tạo ra sau khi địa chỉ hoặc dữ liệu đã được truyền/nhận
Trong giao thức truyền thông, REPEAT START là một khái niệm quan trọng, diễn ra giữa điều kiện START và STOP Trong khoảng thời gian này, các Master khác không thể can thiệp vào đường truyền Khi quá trình truyền hoặc nhận dữ liệu kết thúc mà Master không gửi tín hiệu STOP và tiếp tục gửi tín hiệu START, điều này được gọi là REPEAT START Tính năng này thường được sử dụng khi Master cần thu thập dữ liệu liên tục từ các Slaves Hình 2.3 dưới đây minh họa cách các Master tạo ra các tín hiệu START, STOP và REPEAT START.
Hình 2 3: Trạng thái bit Start và bit Stop [4] b Giới thiệu giao thức SMBus
SMBus (System Management Bus) là giao diện hai dây cho phép các chip thành phần trong các hệ thống khác nhau giao tiếp với nhau và với phần còn lại của hệ thống Giao thức này dựa trên các nguyên tắc của chuẩn I2C.
Hình 2 4: Sơ đồ khối kết nối của giao thức SMBus [4]
SMBus thường được sử dụng trong máy tính cá nhân, pin thông minh, điều khiển nhiệt độ và hệ thống quản lý giao tiếp ở băng thông thấp
Bảng 2 2: So sánh điểm khác nhau giữa SMBus với I2C [4]
VIL Ngõ vào mức thấp 1.5 V 0.8 V
VIH Ngõ vào mức cao 3.5 V 2.1 V
I PULL_UP Dòng từ điện trở kéo lên N/A 100-350 uA fSCL Tần số xung clock Max 100 kHz 10-100 kHz
Hình 2 5: Khoảng xung nhịp giữa SDA và SCL trong chuẩn SMBus [4]
SMBus đòi hỏi SMBDAT (SDA) vẫn giữ nguyên nguyên trạng thái khoảng 300ns sau cạnh xuống của SMBCLK (SCL)
Một điểm khác biệt nữa giữa các thiết bị Master và Slave là khả năng chuyển đổi giữa hai loại thiết bị này Tuy nhiên, trong bất kỳ thời điểm nào, hệ thống chỉ cho phép tồn tại một thiết bị Master duy nhất Nếu có nhiều thiết bị cùng phát tín hiệu để trở thành Master, SMBus sẽ cung cấp một cơ chế để xử lý tình huống này.
“trọng tài” dựa trên cơ chế wired-AND
2.2.2 Board Arduino Nano a Sơ lược
Arduino đang trở thành một công cụ phổ biến trên toàn cầu và tại Việt Nam, thể hiện sức mạnh vượt trội qua nhiều ứng dụng sáng tạo trong cộng đồng nguồn mở.
Arduino là một bo mạch vi xử lý cho phép lập trình và tương tác với nhiều thiết bị phần cứng như cảm biến, động cơ, đèn và nhiều thiết bị khác.
Arduino ra đời tại thị trấn Ivrea, Ý, được đặt theo tên vua Arduin từ thế kỷ thứ 9 Được giới thiệu lần đầu vào năm 2005 bởi giáo sư Massimo Banzi tại trường Interaction Design Institute Ivrea (IDII), Arduino nhằm cung cấp một phương thức dễ dàng và tiết kiệm cho sinh viên, người yêu thích và chuyên gia tạo ra các thiết bị tương tác với môi trường qua cảm biến và cơ cấu chấp hành Các dự án phổ biến cho người mới bắt đầu bao gồm robot đơn giản và hệ thống giám sát nhiệt độ, độ ẩm Arduino đi kèm với môi trường phát triển tích hợp (IDE) cho phép người dùng lập trình bằng ngôn ngữ C hoặc C++.
Arduino Nano là một bo mạch thuộc dòng Arduino, sử dụng bộ vi xử lý ATmega328 (trên phiên bản Nano 3.x) hoặc ATmega168 (trên phiên bản Nano 2.x) Bo mạch này được cấu tạo từ nhiều thành phần quan trọng, phục vụ cho các dự án điện tử và lập trình.
Cổng mini USB: đây là cổng giao tiếp dùng để nạp code và cấp nguồn cho board hoạt động
Bảng chân I/O của thiết bị bao gồm 14 chân được đánh số từ 0 đến 13, có khả năng xuất nhập dữ liệu số Trong số đó, 6 chân hỗ trợ chức năng tạo xung PWM Ngoài ra, thiết bị còn có các chân ngõ ra như GND, VCC, AREF và 3V3.
Có 8 chân Analog đánh số từ A0 đến A7 có chức năng nhận tín hiệu tương tự từ bên ngoài
Vi điều khiển AVR: đây là bộ xử lý trung tâm của toàn mạch
Bảng 2 3: Một số thông số chính của board Arduino Nano [5]
Vi xử lý ATmega328 (phiên bản V3.0) Điện áp hoạt động: 5V Điện áp ngõ vào: 5 - 12 V
Số lượng chân số (digital): 14 trong đó có 6 chân cung cấp điều xung PWM
Chân ngõ vào tương tự
Dòng điện mỗi chânI/O: 40 mA
Bộ nhớ flash: 16kB (ATmega168) 32 kB (ATmega328) trong đó sử dụng 2 kB cho bootloader
SRAM: 1KB ( ATmega168) 2 KB (ATmega328)
EEPROM: 512 bytes ( ATmega168) 1 KB (ATmega328)
Tần số xung clock: 16 MHz
Kích thước 0.7đến 1.7 inch c Vi điều khiển ATmega328
Hình 2 7: Vi điều khiển ATmega328 [5]
TÍNH TOÁN VÀ THIẾT KẾ
GIỚI THIỆU
Từ yêu cầu của đề tài thì chúng ta thiết kế hệ thống theo các yêu cầu sau:
Huyết áp có thể được đo bằng các thiết bị kết nối ngoại vi, giúp tăng tính thuận tiện và dễ sử dụng cho người dùng.
Có thể gửi dữ liệu
Sử dụng vi điều khiển giá thành rẻ mà vẫn đáp ứng đầy đủ các nhu cầu của thiết bị
Hiển thị thông tin và thời gian thực trên màn hình Màn hình phải tiết kiệm năng lượng
Hiển thị dữ liệu trên web site và thiết bị di động.
TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG
3.2.1 Thiết kế sơ đồ khối hệ thống
Hình 3 1: Sơ đồ khối tổng quát của thiết bị
Khối hiển thị Khối cảm biến
Khối động cơ, vanxả Khối nguồn
Khối vi điều khiển là khối trung tâm của hệ thống, có vai trò điều khiển các khối khác trong thiết bị hoạt động
Đọc dữ liệu từ các cảm biến
Giao tiếp với module wifi để truyền dữ liệu
Giao tiếp với màn hình hiển thị OLED
Giao tiếp với IC thời gian thực
Điều khiển động cơ bơm hơi và van xả
Khối cảm biến có nhiệm vụ tiếp nhận tín hiệu từ môi trường bên ngoài để truyền đến vi điều khiển xử lý Trong dự án này, thiết bị sử dụng cảm biến áp suất nhằm đo huyết áp.
Khối hiển thi ̣có chức năng hiển thi ̣các thông tin cần thiết
Hiển thị thời gian thực: giờ, phút, giây, thứ, ngày, tháng, năm
Hiển thị giá trị huyết áp
Khối wifi có chức năng gữi dữ liệu đo được lên google spreadsheet, giúp người sử dụng thống kê được số lần đo huyết áp
Nhằm đem lại sự tiện lợi cho người sử dụng trong việc theo dõi thời gian để đo huyết áp
Khối động cơ, van xả
Khối động cơ bơm và van xả khí là hai bộ phận quan trọng trong việc tạo áp suất ban đầu và xả từ từ để đo huyết áp.
Là khối nhận tín hiệu vào từ các phím nhấn giúp ta lựa chọn chức năng của máy Máy đo có các phím lựa chọn như:
Phím đo huyết áp: dùng để khởi động chức năng đo huyết áp
Phím Send: dùng để gữi dữ liệu lên google spreadsheet
Khối nguồn là một phần thiết yếu trong hệ thống, đảm bảo cung cấp đủ dòng điện và điện áp cho từng khối chức năng, giúp toàn bộ hệ thống hoạt động hiệu quả.
3.2.2 Tính toán và thiết kế mạch a Khối điều khiển
Hiện nay trên thị trường có nhiều dòng vi điều khiển khác nhau như: PIC, AVR,
8051, Raspberry, Arduino… tất cả đều có thể đáp ứng được yêu cầu đặt ra nhưng nhóm chọn Arduino vì những ưu điểm sau:
Giá thành rẻ, là module hoàn chỉnh sử dụng vi điều khiển AVR
Là dòng vi điều khiển mã nguồn mở, có nhiều thư viện hỗ trợ cho các module chức năng khác nhau, trình biên dịch dễ sửdụng
Sơ đồ nguyên lý kết nối của ArduinoNano
Hình 3 2: Sơ đồ chân của Arduino Nano Điện áp hoạt động: 5V
Dòng điện trên mỗi chân I/O: 40mA
Dòng điện tiêu thụ cho 14 chân digital:
I tong = 14x40mAV0mA (3.1) Đối với thiết bị này thì chỉ sử dụng 5 chân digital của Arduino Nano, nên dòng tiêu thụ của Arduino Nano là:
I tieuthu = 5x40mA 0mA (3.2) b Khối cảm biến
Lựa chọn: đây là những cảm biến đọc dữ liệu từ cơ thể nên cần có độ phân giải cao, sai số nhỏ
Để đo huyết áp nhóm chọn cảm biến áp suất MPX5050
Cảm biến MPX5050 kết nối với điện áp hoạt động 5V và dòng hoạt động 7mA, có khả năng đo áp suất tối đa lên đến 50 kPa (tương đương 375mmHg) Để chuyển đổi các giá trị điện áp (Vcambien) từ cảm biến thành giá trị huyết áp tính bằng mmHg, chúng ta cần áp dụng các công thức chuyển đổi phù hợp.
Vì sử dụng vi điều khiển Arduino Nano có chân Analog với độ phân giải là 10 bit Chọn điện áp tham chiếu là VREF-=0V, VREF+ =5V
Chuyển đổi giá trị áp suất:
5000 là giá trị điện áp vào5V
1023 là giá tri chuyển đổi ADC 10 bit (210-1)
90 là độ nhạy của cảm biến mV/kPa
7.5061 là giá trị chuyển đổi giữa kPa sang mmHg (1kPa = 7.5061 mmHg)
Value giá trị trả về tương ứng với mức điện áp đọc được
Công thức tính giá trị huyết áp trung bình (MAP)
MAP : Là giá trị huyết áp trung bình (Mean ArterialPressure)
Diatolic : Là huyết áp tâm trương
Systolic : Là huyết áp tâm thu
Lựa chọn: có nhiều loại màn hình hiển thị khác nhau như: LCD 16x2, LCD20x4, LCD Nokia 5110, LCD OLED…Nhóm lựa chon màn hình LCD OLED vì có:
Độ phân giải cao (128x64pixel)
Giao tiếp với vi điều khiển theo chuẩn I2C nên tiết kiệm chân giao tiếp
Hình 3 4: Sơ đồ kết nối màn hình LCD OLED Điện áp hoạt động: 5V
Dòng điện tiêu thụ: 15mA d Khối thời gianthực
Lựa chon: nhóm đã sử dụng IC DS1307 để giao tiếp với vi điều khiển theo chuẩn I2C
Hình 3 5: Sơ đồ nguyên lý thời gian thực DS1307 Điện áp hoạt động: 5V
Dòng điện tiêu thụ: 1.5mA e Khối động cơ, van xả
Để đảm bảo hoạt động hiệu quả, nhóm đã lựa chọn động cơ và van xả điện từ từ các máy đo huyết áp phổ biến của hãng Omron, nhằm đạt được độ chính xác cao trong quá trình xử lý.
Để điều khiển động cơ xả và van khí, có nhiều phương pháp như relay, triac, hoặc transistor Tuy nhiên, do động cơ và van xả có dòng tiêu thụ nhỏ, nhóm đã quyết định sử dụng IC đệm ULN2803 để đảm bảo mạch điện gọn gàng và hiệu quả.
Hình 3 7: Sơ đồ nguyên lý nút nhấn g Khối Wifi
Hình 3 8: Sơ đồ nguyên lý ESP8266 h Khối nguồn
Bảng 3 1: Dòng và áp tiêu thụ hệ thống
Tên linh kiện Điện áp (V) Dòng điện (mA)
Cảm biến áp suất MPX5055 5 10
Dòng tiêu thụ toàn hệ thống: 15 + 25 + 10 + 100 + 300 + 20 = 470 mA
Từ bảng trên ta thấy, hệ thống sử dụng nguồn 5V, dòng điện tiêu thụ khoảng
470mA ta có sự lựa chọn sau:
Pin: nhóm đã sử dụng pin 4AA 1.5V, 800mAh là 1 pin phổ biến trên thị trường có giá thành rẻ và đặc biệt là dung lượng pin lớn
Hình 3 9: Sơ đồ chân kết nối với nguồn
3.2.3 Sơ đồ nguyên lý của toàn mạch
Hình 3 10: Sơ đồ nguyên lý của thiết bị
Dựa vào sơ đồ khối, mạch nguyên lý của thiết bị được thiết kế với Arduino Nano làm trung tâm Nó nhận tín hiệu điều khiển từ nút nhấn qua các chân 5 và 7, điều khiển động cơ bơm và van xả thông qua chân 15 và 14 Giá trị từ cảm biến áp suất được hiển thị trên màn hình OLED qua các chân SDA và SCL Đồng thời, Arduino Nano cũng kết nối và truyền dữ liệu với module ESP8266 qua chân 11 và 12.
THI CÔNG HỆ THỐNG
GIỚI THIỆU
Sau quá trình nghiên cứu, nhóm đã hoàn thiện thiết bị và đáp ứng đầy đủ các yêu cầu đề ra Các khối chức năng hoạt động chính xác, đảm bảo việc lưu trữ dữ liệu lên Google Spreadsheet một cách hiệu quả.
Dưới đây là kết quả tính toán vị trí và sắp xếp linh kiện để đảm bảo đáp ứng yêu cầu và tạo sự thuận tiện trong quá trình sử dụng.
Hình 4 1: Mạch in bố trí linh kiện
Kết quả đo huyết áp sẽ được tự động cập nhật lên Google Spreadsheet để dễ dàng lưu trữ và thống kê, phục vụ cho việc theo dõi sức khỏe Tuy nhiên, tốc độ mạng và khả năng kết nối với trang chủ có thể ảnh hưởng đến quá trình cập nhật dữ liệu và hiệu suất hoạt động của hệ thống.
Tổng quan, hệ thống hoạt động ổn định nhưng vẫn còn tồn tại một hạn chế như:
Quá trình đo đạc huyết áp bị sai do tư thế và cách đo không chính xác.
Kết nối wifi còn chưa tối ưu.
Giao diện sử dụng android chưa được thuận tiện cho người sử dụng
THI CÔNG HỆ THỐNG
Bảng 4 1: Danh sách linh kiện
STT Tên linh kiện Giá trị Dạng vỏ
15 Hàng rào các loại DIP
16 Tụ điện (tụ gốm) 720pF, 0.1uF, 0.1pF
LẬP TRÌNH HỆ THỐNG
Chương trình điều khiển thiết bị phải đáp ứng những yêu cầu sau:
Thiết bị được trang bị hai nút nhấn vật lý, tương ứng với chức năng đo huyết áp và gửi dữ liệu Sau mỗi lần đo, giá trị sẽ được hiển thị trên màn hình OLED và tự động gửi lên Google Spreadsheet.
Khi vừa khởi động và ở trạng thái chờ thì thiết bị sẽ hiển thị thời gian thực
Các thông số hiển thị trên màn hình OLED phải đầy đủ và rõ ràng a Lưu đồ giải thuật chương trình chính
Khởi tạo thư viện hệ thống
Khởi tạo kết nối OLED, RTC, WIFI
Khởi tạo biến mode bằng 0, vàbiến DAO1 bằng false
Kiểm tra nút nhấn huyết áp
Kiểm tra nút nhấn gửi dữ liệu bieán mode baèng 1? bieán mode baèng 2? Đọc thời gian thực
Hiển thị thời gian Đo huyết áp
Gửi dữ liệu Kiểm tra dữ liệu gửi mode = 0
DAO1 gán bằng false mode gán bằng 0 ẹ ẹ
Hình 4 3: Lưu đồ chương trình chính của thiết bị [11]
Giải thích các biến trong lưu đồ:
mode: biến dùng để lựa chọn chọn chương trình Ví dụ mode=0, hiển thị màn hình chính, mode = 1 đọc huyết áp, mode = 2 gửi dữ liệu
DAO1: biến trạng thái, khi mỗi lần nhấn phím huyết áp thì các biến sẽ thay đổi trạng thái để cho phép đọc hoặc dừng đọc
Khi khởi động, hệ thống bắt đầu khởi tạo các thư viện và khai báo biến trạng thái Sau đó, chương trình kiểm tra các phím nhấn; nếu không có phím nào được nhấn (mode mặc định bằng 0), hệ thống sẽ tự động đọc và hiển thị thời gian thực Nếu phím đo huyết áp được nhấn (mode = 1) và biến cho phép đọc (DAO1 = true) cùng với END = 0, hệ thống sẽ tiến hành đo huyết áp.
Bieán mode baèng 1, END baèng 0, Đảo trạng thái biến DAO1 ẹ
Hình 4 4: Lưu đồ giải thuật chương trình nhấn phím huyết áp
Chương trình sẽ kiểm tra phím nhấn và áp dụng biện pháp chống dội bằng cách trì hoãn 20ms trước khi tiếp tục kiểm tra Khi xác nhận có phím nhấn, chương trình sẽ thiết lập các biến mode, DAO1 và END để cho phép thực hiện việc đọc huyết áp.
Bieán mode baèng 2 Bieán gui baèng 0
Hình 4 5: Lưu đồ giải thuật chương trình nhấn phím send
Chương trình đọc phím send có chức năng điều khiển module ESP8266 để gửi dữ liệu Khi phát hiện phím được nhấn, chương trình sẽ hiển thị thông báo về quá trình gửi dữ liệu Dưới đây là lưu đồ giải thuật cho chương trình gửi dữ liệu.
GỬI DỮ LIỆU LÊN MẠNG
Khởi tạo kết nối WIFI
Kết nối với trang chủ (ThingSpeak.com)
Lấy các giá trị huyết áp
Khai báo các trường gửi dữ liệu Gửi dữ liệu đi
Hình 4 6: lưu đồ giải thuật chương trình gữi dữ liệu
Chương trình sẽ kết nối với Wifi đã cài đặt và truy cập trang chủ ThingSpeak để lấy giá trị huyết áp từ chương trình đo huyết áp Để gửi dữ liệu, cần tính toán độ dài và số lượng dữ liệu, vì bước này rất quan trọng; nếu sai sót trong tính toán, chương trình sẽ không thể gửi dữ liệu thành công Sau khi hoàn tất tính toán, lệnh gửi sẽ được thực hiện Lưu đồ giải thuật chương trình đo huyết áp bao gồm các bước như đóng van, khởi động động cơ bơm và đọc cảm biến áp suất.
Xả khí theo thời gian định sẵn Mở van xả
Lấy giá trị huyết áp
END Biến END gán bằng 1
Bieán END baèng 0? biến mode gán bằng 0, biến ngat gán bằng 1
Kieồn tra nuựt nhấn huyết áp? Áp suất nhỏ hơn 170mmHg bieán ngat baèng 0?
Hình 4 7: Lưu đồ giải thuật chương trình đọc huyết áp
Khi nhấn phím đọc huyết áp, hệ thống sẽ tự động bắt đầu quá trình đo huyết áp Van xả sẽ đóng lại và động cơ bơm hơi vào vòng bit, trong khi cảm biến sẽ đọc giá trị áp suất Trong quá trình bơm, cần kiểm tra phím nhấn huyết áp để có thể dừng hệ thống nếu cần thiết Khi áp suất đạt 170mmHg, hệ thống sẽ dừng bơm và xả van khí theo khoảng thời gian định sẵn để xác định huyết áp tâm thu, huyết áp tâm trương và tính toán huyết áp trung bình Cuối cùng, các giá trị đo được sẽ được hiển thị trên màn hình OLED.
Khi nhấn phím gửi, chương trình sẽ không thực hiện lệnh nếu máy đo huyết áp chưa có dữ liệu Chỉ khi quá trình đo huyết áp hoàn tất và có dữ liệu, chương trình mới tiến hành gửi thông tin Hệ thống sử dụng lưu đồ giải thuật để đọc tín hiệu từ cảm biến áp suất.
Cộng dồn các giá trị của biến a lưu vào biến temp
Lấy giá trị trung bình biến temp lưu vào biến b
Taờng bieỏn i 1 ủụn vũ Đọc giá trị cảm biến gán vào a ẹ i nhỏ hơn 10? S
Biến i gán bằng 0, Biến temp gán bằng 0, a, b
Chương trình đọc tín hiệu analog từ cảm biến thực hiện 10 lần đo để đảm bảo độ chính xác cao hơn, sau đó tính giá trị trung bình cộng nhằm cung cấp kết quả chính xác nhất.
4.3.2 Phần mềm lập trình cho Arduino a Phần mềm
Mặc dù bo mạch Arduino có thiết kế nhỏ gọn và nhiều tính năng hữu ích, sức mạnh thực sự của nó đến từ phần mềm Môi trường lập trình đơn giản và dễ sử dụng, cùng với ngôn ngữ lập trình dựa trên C/C++, rất quen thuộc với kỹ sư Đặc biệt, số lượng thư viện mã nguồn mở phong phú được cộng đồng chia sẻ là một lợi thế lớn cho người dùng.
Môi trường lập trình Arduino IDE hỗ trợ ba nền tảng chính: Windows, Macintosh OSX và Linux Với tính chất mã nguồn mở, Arduino IDE hoàn toàn miễn phí và cho phép người dùng có kinh nghiệm mở rộng thêm tính năng Ngôn ngữ lập trình có thể được nâng cao thông qua việc sử dụng các thư viện C++.
Hình 4 9: Giao diện phần mềm lập trình Arduino
To download the Arduino IDE, visit http://arduino.cc/en/Main/Software/ where you can find the latest updates and versions Click on the "Windows ZIP file for non-admin install" option as shown in the illustration.
Hình 4 10: Download phần mềm lập trình Arduino trên web
Bước 2: Sau khi download xong, chúng ta bấm chuột phải vào file vừa download arduino-1.6.9-windows.zip và chọn “Extract here” để giải nén
Hình 4 11: Giải nén phần mềm đã tải về Bước 3: Copy thư mục arduino-1.6.9 vừa giải nén đến nơi lưu trữ
Bước 4: Chạy file trong thư mục arduino-1.6.4\ để khởi động ArduinoIDE
To enable communication between your computer and the Arduino board, it is essential to install the appropriate drivers first Begin by running the dpinst-x86.exe file for Windows x86 or the dpinst-amd64.exe file for Windows x64, both located in the arduino-1.6.9\drivers\ directory.
“Device Driver Installation Wizard” hiện ra, chúng ta chọn Next để tiếp tục
Khi có yêu cầu xác nhận cài đặt driver, chọn “Install”
Hình 4 12: Các bước cài driver kết nối PC với arduino
Hình 4 13: Giao diện phần mềm lập trình Arduino theo vùng
Vùng lệnh trong IDE bao gồm các nút lệnh menu như File, Edit, Sketch, Tools và Help Dưới đây là các biểu tượng cho phép người dùng truy cập nhanh vào các chức năng thường dùng, giúp tối ưu hóa quy trình làm việc.
Bảng 4 2: Chức năng của các Menu lệnh [5]
Kiểm tra mã nguồn để xác định lỗi bằng cách sử dụng chức năng "Verify" Nạp mã đang soạn thảo vào Arduino thông qua tùy chọn "Upload" Các tính năng "New", "Open" và "Save" cho phép người dùng tạo mới, mở và lưu dự án Serial Monitor là công cụ hiển thị dữ liệu từ Arduino gửi lên máy tính, giúp theo dõi và kiểm tra thông tin một cách dễ dàng.
Vùng soạn thảo chương trình: vùng soạn thảo chương trình được mặc định bằng
2 chương trình là hàm setup() và hàm loop():
O setup (): hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết lập các cài đặt và chỉ chạy 1 lần trong suốt chương trình
O loop (): hàm này được chạy sau hàm setup() và được lặp đi lặp lại cho đến khi tắt nguồn hệ thống
Vùng thông báo là khu vực cung cấp thông tin cho người dùng về các lỗi trong chương trình Nếu chương trình không gặp lỗi và biên dịch thành công, người dùng sẽ nhận được thông báo về dung lượng file chương trình cùng với lượng bộ nhớ RAM đã sử dụng.
Cấu hình chương trình khi nạp vào board Arduino
Bước 1: Vào menu Tools -> Board -> chọn Board Arduino mà chúng ta lập trình
HƯỚNG DẪN SỬ DỤNG
4.4.1 Hướng dẫn sử dụng a Những điều cần lưu ý trước khi đo huyết áp
Cần nghỉ ngơi ít nhất 15 phút trước khi đo huyết áp
Tránh ăn, uống, tập thể dục ít nhất 30 phút trước khi đo huyết áp
Tránh đo huyết áp khi căng thẳng
Không cử động người và nói chuyện trong khi đo
Nên quấn vòng bit sát da tay hoặc chỉ trên lớp áo mỏng
Hít thở sâu 5 đến 6 lần trước khi bắt đầu đo
Không nên đo huyết áp liên tục trong thời gian ngắn
Nên đo huyết áp vào cùng một thời điểm mỗi ngày với cùng một máy đo và lưu lại kết quả đo b Cách quấn vòng bit
Xắn tay áo ở phần cánh tay cần đo Không quấn vòng bit lên lớp áo dày
Để lồng tay vào vòng bit, bạn cần đảm bảo mép cuối của vòng bit cách khuỷu tay từ 1 đến 2 cm Đồng thời, phần đánh dấu (mũi tên ở dưới ống dẫn khí) phải nằm ở chính giữa mặt trong cánh tay.
Hình 4 31: Vòng bit quấn bắp tay của máy đo huyết áp
Hình 4 32: Cách quấn vòng bit
Dán miếng dính để cố định vòng bit
Bước 1: Cắm các jack cắm cho vòng bit vào thiết bị Bật công tắc nguồn ở mặt trước của thiết bị Thiết bị được khởi động trên màn hình OLED
Để đo huyết áp, đầu tiên quấn vòng bit quanh bắp tay có chỉ số huyết áp cao, sau đó nhấn phím “đo” trên thiết bị Kiểm tra chỉ số huyết áp hiển thị trên màn hình OLED và nếu cần, bấm nút gửi dữ liệu để lưu lại kết quả Dữ liệu sẽ tự động cập nhật khi thực hiện đo lại.
Hình 4 33: Hình ảnh sử dụng thực tế
Sau khi sử dụng thiết bị, hãy tắt công tắc nguồn và rút các jack cắm vòng bit Để đảm bảo độ chính xác của kết quả đo huyết áp, cần bảo quản vòng bit và ống dẫn khí cẩn thận, tránh hư hỏng có thể ảnh hưởng đến áp suất trong vòng bit.
KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ
KẾT QUẢ
Nhóm đã nghiên cứu, tìm hiểu cảm biến áp suất MPX5050 để đo huyết áp cơ thể
Hình 5 1: Giá trị huyết áp đo được
Nhóm đã học lập trình Arduino và cách sử dụng các thư viện hỗ trợ từ phần mềm Arduino IDE, cũng như từ nhà sản xuất và cộng đồng Tuy nhiên, việc sử dụng vi điều khiển 8 bit và nhiều thư viện hỗ trợ đã tiêu tốn 70% bộ nhớ chương trình, dẫn đến hệ thống hoạt động chậm.
Biết cách sử dụng thư viện hỗ trợ để lập trình, hiển thị các thông số huyết áp lên trên màn hình OLED
Biết cách sử dụng module Wifi ESP8266 có chức năng gửi dữ liệu lên mạng
Sau khi nhận dữ liệu từ module ESP8266, hệ thống sẽ xử lý và thống kê các thông tin như ngày giờ, huyết áp Tâm Thu, huyết áp Tâm Trương và huyết áp trung bình Các giá trị này sẽ được lưu trữ theo từng cột và phác thảo thành biểu đồ, giúp người thân theo dõi tình trạng sức khỏe của người dùng máy đo huyết áp Điều này hỗ trợ người sử dụng trong việc phòng tránh các bệnh liên quan đến huyết áp.
Hình 5 2: Biểu đồ theo dõi huyết áp trên thiết bị di động
Hình 5 3: Biểu đồ theo dõi huyết áp trên web
Nhóm đã thiết kế và tính toán các giá trị dòng và áp trong mạch điện để đảm bảo hoạt động hiệu quả Tuy nhiên, quá trình vẽ mạch chỉ dừng lại ở những bước cơ bản, chủ yếu phục vụ cho việc học tập mà chưa đi sâu vào các quy luật đi dây nhằm chống nhiễu và giảm sai số cho các đường tín hiệu.
Biết cách tính toán để đóng gói bo mạch thiết kế được vào hộp nhằm bảo vệ bo
Hình 5 4: Hộp cho thiết bị
Hình 5 5: Bo mạch đã được ráp vào hộp hoàn chỉnh
Để chọn khối nguồn phù hợp cho thiết bị, cần tính toán các phần tử và đảm bảo nguồn cung cấp đủ dòng và áp cho thiết bị Với pin AA 800mAh, thiết bị có thể thực hiện khoảng 40 lần đo Do đó, việc mua thêm một bộ sạc cho pin AA là cần thiết để đảm bảo hiệu suất sử dụng.
Các linh kiện hàn trên mạch in sẽ được kết nối chắc chắn với nhau thông qua các dây bus Hình 5.6 dưới đây minh họa board điều khiển sau khi đã được lắp vào hộp sản phẩm.
Hình 5 6: Board mạch sau khi lắp ráp vào hộp
Máy đo huyết áp của nhóm hoạt động dựa trên nguyên lý giống như thiết bị đo huyết áp bằng tay, do đó có thể xảy ra nhiều sai số trong quá trình đo Để kiểm tra độ chính xác, nhóm đã lập bảng so sánh với thiết bị chuẩn, và kết quả được trình bày trong bảng 5.1.
Bảng 5 1: Kết quả so sánh huyết áp của thiết bị
Thiết bị của nhóm Thiết bị chuẩn
Bảng khảo sát được thực hiện trên nhóm đối tượng từ 20 đến 30 tuổi với 10 lần đo liên tiếp, mỗi lần cách nhau 5 phút Kết quả của nhóm này đã được so sánh với dữ liệu đo được từ máy đo huyết áp Rossmax (MJ 701f).
Từ bảng trên ta tính ra được sai số của huyết áp tâm thu 5.4(%), huyết áp tâm trương 8,62(%).
NHẬN XÉT ĐÁNH GIÁ
Trong quá trình lập trình cho thiết bị thì nhóm cũng đã gặp một số lỗi đáng chú ý như:
Giá trị huyết áp có thể không ổn định, với những lúc đo nhanh và chính xác, nhưng cũng có khi mất thời gian lâu hoặc hiển thị thông số huyết áp ảo ngay cả khi không thực hiện đo.
Giá trị khi thu thập từ cảm biến áp suất bị nhiễu và vọt lố rất nhiều do cảm biến rất nhạy
Xung đột thư viện dẫn đến không hiển thị được trên OLED
Nhóm đã thực hiện kiểm tra và điều chỉnh mạch, đồng thời xác nhận các giá trị nhịp tim và gia tốc Quá trình gửi dữ liệu được đảm bảo ổn định, với tất cả các thông số được hiển thị đầy đủ trên GLCD.
Nhóm đã phát triển thiết bị đo dựa trên việc thu thập dữ liệu từ nhiều người khác nhau, nhận thấy rằng không có hai người nào hoàn toàn giống nhau, dẫn đến một số sai sót trong quá trình đo huyết áp và xác định tư thế Để kiểm tra độ sai số, nhóm đã thực hiện các phép đo so sánh và kết luận rằng mức sai số trong đo huyết áp là chấp nhận được, trong khi việc xác định tư thế gần như chính xác hoàn toàn, chỉ áp dụng cho những tư thế đã được quy định.