Trong quá trình thu tín hiệu trong thực tế thường sẽ không tránh khỏi việc bị ảnh hưởng bởi nhiễu từ môi trường. Vì vậy, quá trình lọc nhiễu tín hiệu là rất cần thiết cho việc phân bố lại các thành phần tần số của tín hiệu. Quá trình này được thực hiện thông qua các bộ lọc với hai mục đích chính sau:
• Phân tích tính hiệu được áp dụng khi tín hiệu mong muốn bị giao thoa với các tín hiệu khác (nhiễu).
• Phục hồi tín hiệu khi tín hiệu bị sai lệch bởi các tác động không mong muốn từ môi trường xung quanh làm cho nó bị biến dạng.
Gồm 2 bộ lọc chính: bộ lọc tương tự và bộ lọc số. Và trong đề tài này nhóm chỉ sử dụng bộ lọc số để lọc nhiễu tín hiệu ECG.
Bộ lọc số là hệ thống tuyến tính bất biến theo thời gian. Đặc trưng bởi một đáp ứng xung và một đáp ứng tần số. Mỗi đáp ứng đều chứa đầy đủ thông tin về bộ lọc nhưng ở dạng khác nhau. Nếu có được một trong hai đáp ứng thì có thể tính toán trực tiếp để suy ra đáp ứng còn lại. Đáp ứng xung là đầu ra của hệ thống khi đầu vào là xung đơn vị. Đáp ứng tần số là kết quả từ phép biến đồi Fourier của đáp ứng xung.
Bộ lọc số có hai chức năng chính là phân tích và phục hồi tín hiệu. Nếu xét về đáp ứng xung chia các bộ lọc số thành 2 loại chính là bộ lọc có đáp ứng xung hữu hạn FIR và bộ lọc có đáp ứng xung vô hạn IIR. Xét về đáp ứng tần số biên độ chia các bộ lọc thành 4 loại cơ bản: lọc thông thấp, thông cao, thông dải và chắn dải.
2.4 GIỚI THIỆU SƠ LƯỢC VỀ ANDROID 2.4.1 Khái niệm Android 2.4.1 Khái niệm Android
Android là một hệ điều hành mở dựa trên nền tảng Linux, được thiết kế và chạy trên các thiết bị di động có màn hình cảm ứng như điện thoại thông minh, máy tính bảng và cả đồng hồ thông minh [20].
2.4.2 Kiến trúc Android
Hình 2.10: Kiến trúc hệ điều hành Android
Kiến trúc hệ điều hành Android gồm 4 tầng chính là Linux Kernel (hạt nhân), Android Runtime (ART) và Libraries, Application Framework và tầng Applications [21].Và chi tiết về tầng trong cấu trúc Android (hình 2.10) được trình bày dưới đây:
a. Tầng hạt nhân Linux
Ở tầng này, tất cả mọi hoạt động của thiết bị muốn thi hành được đều phải thực hiện ở mức cấp thấp.
b. Tầng Libraries
Tầng này được cung cấp một tập các thư viện đa dạng dùng trong đồ họa, cơ sở dữ liệu, giao tiếp mạng,... Các thư viện chủ yếu dựa trên Java và C/C++.
c. Tầng Android Runtime
Tầng này sẽ chứa các thư viện của của chương trình viết bằng ngôn ngữ Java gồm 2 bộ phận là các thư viện lõi (core library) và một máy ảo Java (DVM).
d. Tầng Application Framework
Tầng này sẽ xây dựng bộ công cụ các phần tử mức cao bằng ngôn ngữ Java.
Là tầng cao nhất trong stack bao gồm các ứng dụng Android và các ứng dụng bên thứ ba do người dùng cài đặt.
2.5 GIỚI THIỆU VỀ SERVER
Server là một hệ thống đáp ứng yêu cầu trên một mạng máy tính để cung cấp hoặc hỗ trợ cung cấp một dịch vụ mạng. Các server có thể chạy trên một máy tính chuyên dụng thường gọi là "máy chủ" hoặc nhiều máy tính nối mạng có khả năng máy chủ lưu trữ.
Các máy chủ thường hoạt động trong một mô hình client-server với server là các chương trình máy tính đang chạy để phục vụ yêu cầu của các chương trình khác để thực hiện một số nhiệm vụ thay mặt cho khách hàng (client). Các client thường kết nối với server thông qua mạng nhưng có thể chạy trên cùng một máy tính. Trong hệ thống hạ tầng của mạng Internet Protocol (IP), một server là một chương trình hoạt động như một socket listener (giao thức nghe) [22].
Nếu dựa theo phương pháp xây dựng hệ thống, máy chủ - Server gồm 3 loai: Máy chủ riêng (Dedicated), Máy chủ ảo (VPS), Máy chủ đám mây (Cloud Server). Còn phân loại theo chức năng thì máy chủ - server được chia thành các loại phổ biến như: Web Server, Mail Server, FTP Server, Database Server, DNS Server, DHCP Server, Print Server, Application Server, Indentity Server, Game Server,...[23].
2.6 GIỚI THIỆU VỀ TCP/IP
TCP/IP là một bộ các giao thức truyền thông mà internet và hầu hết các mạng máy tính đang chạy. Bộ giao thức này gồm hai giao thức chính là TCP và IP. TCP giúp tạo kết nối giữa các ứng dụng trên các máy chủ được nối mạng để trao đổi dữ liệu một cách đáng tin cậy và đúng thứ tự. IP có chức năng hướng dữ liệu được sử dụng bởi các máy chủ ngồn và đích để truyền dữ liệu trong một liên mạng chuyển mạch gói.
Bộ giao thức TCP/IP là một tập hợp các tầng gồm Tầng ứng dụng (Application Layer), Tầng giao vận (Transport Layer), Tầng mạng (Internet Layer), Tầng liên kết (Link Layer).
2.7 GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU
Cơ sở dữ liệu (Database) là một tập hợp các dữ liệu có tổ chức và được lưu trữ và truy cập từ hệ thống máy tính. Hệ quản trị cơ sở dữ liệu (DBMS) là phần mềm thu
thập và phân tích dữ liệu với 4 nhóm chức năng chính là Định nghĩa, Cập nhật, Truy suất và Quản trị dữ liệu.
SQL là một loại ngôn ngữ máy tính phổ biến để tạo, sửa và lấy dữ liệu từ một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở hoạt động theo mô hình client-server, quản lý dữ liệu thông qua các Database với mỗi Database có thể có nhiều bảng quan hệ chứa dữ liệu [24].
2.8 GIỚI THIỆU VỀ WEB 2.8.1 Giới thiệu 2.8.1 Giới thiệu
Web là từ gọi tắt của “World Wide Web”, là một mạng lưới toàn cầu giúp mọi người có thể truy cập và tải xuống thông tin qua các thiết bị kết nối với mạng internet. Các trang Web được định dạng bằng HTML cho phép các link nhúng có chứa URL và cho phép điều hướng đến các tài nguyên web khác. Trang web được lưu trữ trong các máy tính đang chạy chương trình được gọi là “máy chủ web”, xử lý các yêu cầu (request) từ các client thông qua giao thưc HTML và một số giao thưc liên quan khác. Có nhiều ngôn ngữ để xây dựng các trang web như Javascript, Python, C#,… nhưng để kết nối App điện thoại và DBMS thì PHP được sử dụng phổ biến nhất. Đây là ngôn ngữ lập trình mã nguồn mở và mã PHP có thể thực thi trên server để tạo ra mã HTML và xuất ra trình duyệt web theo yêu cầu của người sử dụng. PHP cho phép xây dựng ứng dụng web trên mạng internet tương tác với mọi cơ sở dữ liệu như: MySQL, Oracle,…
Bên cạnh đó, PHP được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình phổ biến nhất thế giới [25].
2.9 GIỚI THIỆU PHẦN CỨNG 2.9.1 Giới thiệu 2.9.1 Giới thiệu
Từ những phần lý thuyết được tìm hiểu ở 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 với phần Vi điều khiển là LUA ESP8266 CP2102 Nodemcu WIFI Module, phần cảm biến để thu tín hiệu là ADS1292R ECG Module và một màn hình SSD1306 OLED để hiển thị.
2.9.2 LUA ESP8266 CP2102 Nodemcu WIFI Module a. Mô tả a. Mô tả
Hình 2.11: Module Wifi LUA ESP8266 CP2102 Nodemcu
Hình 2.11 chính là Module Wifi ESP8266, đây là một mạch vi điều khiển có thể giúp ta điều khiển các thiết bị điện tử. Thêm vào đó nó được tích hợp wi-fi 2.4GHz có thể dùng cho lập trình [26]. Kít ESP8266 được tích hợp sẵn mạch nạp sử dụng chíp CP2102 trên board và một lõi vi xử lý nên có thể trực tiếp lập trình cho ESP8266 mà không cần thêm bất kì con vi xử lý nào nữa [27].
Ở hệ thống này, ESP8266 kết nối với một module cảm biến thu điện tim dưới dạng tín hiệu analog. Nhờ có 1 chân analog duy nhất mà ESP8266 có thể nhận được dữ liệu. Sau khi thu thập dữ liệu và xử lý, ESP8266 thực hiện 2 nhiệm vụ độc lập với nhau là: gửi dữ liệu lên web server để lưu trữ và gửi dữ liệu lên điện thoại để hiển thị trực tiếp tín hiệu đo được.
b. Thông số kỹ thuật
• WiFi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n.
• Điện áp hoạt động: 3.3V.
• Điện áp vào: 5V thông qua cổng USB.
• Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/ PWM/ I2C/ One- wire, trừ chân D0).
• Số chân Analog Input: 1 (điện áp vào tối đa 3.3V).
• Bộ nhớ Flash: 4MB.
• Giao tiếp: Cable Micro USB (tương đương cáp sạc điện thoại).
• Hỗ trợ bảo mật: WPA/WPA2.
• Tích hợp giao thức: TCP/IP.
2.9.3 ADS1292R ECG Module Sensor a. Mô tả a. Mô tả
Hình 2.12: Mô-đun cảm biến ADS1292R
Hình 2.12 chính là Mô-đun ADS1292 là một mô-đun cảm biến với 2 kênh chuyển đổi A/D 24 bit có chức năng là hỗ trợ đo các tín hiệu ECG và hô hấp. Bên cạnh đó, mô-đun này được bổ sung chân SPI mới giúp tương thích với các thiết bị Arduino mới hơn và bao gồm đầu nối Arduino Yun và Due.
Tín hiệu ECG được thu thập thông qua một dây cáp kết nối đi kèm với một đầu là jack 3.5mm tròn và đầu bên kia là các nút để kết nối các điện cực ECG. Nó cũng chấp nhận 2 điện cực ECG và một điện cực DRL để giảm nhiễu chế độ chung.
Ngoài ra, mô-đun này cũng có thể đo hoạt động hô hấp bằng cách sử dụng 2 điện cực giống nhau dựa trên phương pháp chụp phổi trở kháng để đo hô hấp thông qua các thay đổi về trở kháng của ngực gây ra trong quá trình hô hấp [28].
b. Thông số kỹ thuật
• Điện áp hoạt động: 3.3V.
• Dòng điện vào (trừ chân cung cấp): ± 10 (mA).
• Dòng điện vào tạm thời: ± 100 (mA).
• Dòng điện vào liên tục: ± 10 (mA).
• Nhiệt độ hoạt động: -40 đến +85 (ºC).
• Phạm vi nhiệt độ lưu trữ: +60 đến +150 (ºC).
• Tốc độ dữ liệu: 125 SPS đến 8 kSPS.
2.9.4 Monochrome 7-pin SSD1306 0.96” OLED display a. Mô tả a. Mô tả
Hình 2.13: Màn hình Oled
Hình 2.13 chính là màn hình Oled nhóm sử dụng cho đề tài này. Loại màn hình này có thể hoạt động trên ở chế độ SPI (chế độ mặc định) và I2C. Bên cạnh đó, module hiển thị này có các đặc điểm như: độ sáng cao, tự phát xạ, tỷ lệ tương phản cao, đường viền mỏng, góc nhìn và phạm vi hoạt động nhiệt độ rộng, tiêu thụ điện năng thấp.
b. Thông số kỹ thuật
• Kích thước đường chéo: 0.96 inch.
• Kích thước hiển thị: 21.7 x 10.8mm.
• IC: SH1106.
• Độ phân giải: 128 x 64pixels.
• Giao tiếp: SPI và I2C.
• Cung cấp điện áp: 3V-5V.
• Nhiệt độ hoạt động: -30 đến +70 ºC.
2.10 GIỚI THIỆU PHẦN MỀM LẬP TRÌNH
Sau khi tìm hiểu và lựa chọn phần cứng, đối với Vi điều khiển thì phần mềm hỗ trợ nhóm chọn là “Aruino IDE”. Còn về phần mềm để lập trình ứng dụng Android thì có khá nhiều phần mềm hỗ trợ, và nhóm quyết định lựa chọn “Mit App Inventor”
vì nó khá dễ tìm hiểu cũng như sử dụng đối với người mới. Ngoài ra còn có một số phần mềm hỗ trợ khác như: phần mềm hỗ trợ lập trình cho Server “Subline Text”, phần mềm lập trình và tạo Database “PhpMyAdmin”. Và chi tiết về các phần mềm lập trình này sẽ được giới thiệu chi tiết hơn ở các chương sau.
Chương 3. TÍNH TOÁN VÀ THIẾT KẾ
3.1. GIỚI THIỆU
Hệ thống thu thập và hiển thị tín hiệu ECG lên điện thoại có thể đo được dữ liệu điện tim từ 3 điện cực trên cơ thể. Dữ liệu thu được gửi lên server để hiển thị trên điện thoại. Hơn nữa dữ liệu được lưu trên Database server để khi cần có thể xem lại. Những yêu cầu đặt ra cho hệ thống cần được tính toán và thiết kế, từ đó xây dựng phần mềm để hệ thống được hoạt động.
3.2. TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG
Để đáp ứng được những yêu cầu trên đặt ra cho hệ thống, phần tính toán và thiết kế phần cứng là điều quan trọng. Một hệ thống muốn hoạt động ổn định thì phần cứng phải được tính toán chặt chẽ. Dưới đây là phần tính toán thiết kế phần cứng của hệ thống được thể hiện qua các phần: Thiết kế sơ đồ khối, tính toán và thiết kế các khối, thiết kế sơ đồ nguyên lý toàn mạch.
Hình 3.1: Sơ đồ khối hệ thống
3.2.1. Thiết kế sơ đồ khối hệ thống
Một hệ thống đáp ứng được yêu cầu của đề tài có các khối như trên sơ đồ hình 3.1. Sơ đồ bao gồm các khối như: khối cảm biến, khối xử lý, khối hiển thị, khối truyền dữ liệu trực tuyến và lưu trữ, khối nguồn. Khối cảm biến lấy tín hiệu từ cơ thể con người chuyển thành tín hiệu điện. Tín hiệu điện này được chuyển đồi tương sự sang số để dễ dàng thực hiện xử lý. Khối xử lý nhận tín hiệu số từ khối cảm biến, xử lý chúng và gửi các tín hiệu đó lên khối hiển thị và khối lưu trữ. Tín hiệu được lưu trữ tại khối lưu trữ, khi cần chúng sẽ được truy xuất ra khối hiển thị. Cuối cùng là khối
nguồn, khối này cung cấp năng lượng cho toàn bộ hệ thống hoạt động. Kết hợp các khối này để được một phần cứng hệ thống hoàn chỉnh.
3.2.2. Tính toán và thiết kế mạch
Để đạt được một hệ thống hoàn chỉnh, trước tiên hết là tính toán và thiết kế phần cứng. Phần cứng tốt là nền tảng để phần mềm hoạt động tốt. Các khối được thiết kế phải phù hợp và tương thích với nhau thì hệ thống mới hoạt động ổn định. Dưới đây là thiết kế và tính toán các thông số của các khối hệ thống này.
a. Thiết kế khối cảm biến
Như đã được giới thiệu ở phần tổng quan và sơ sở lý thuyết. Điện tim là một loại xung điện do tim tự phát. Xung điện này giúp tim co bóp và nó cũng lan truyền khắp cơ thể. Tuỳ vào mỗi vị trí và đặc điểm khác nhau của mỗi phần cơ thể mà tại đó ta thu được những tín hiệu điện tim khác nhau. Tín hiệu sau khi đo phải giảm nhiễu, khuyếch đại, chuyển đổi tương tự sang số, và chuyển sang bộ xử lý. Hình 3.2 là sơ đồ khối của cảm biến điện tim ADS1292R. IC cảm biến này tích hợp đủ các yêu cầu phần cứng để thu về tín hiệu điện tim của hệ thống.
Hình 3.2: Sơ đồ khối ADS1292R
• Mạch thu tín hiệu
Tín hiệu được thu vào là sự sai lệch điện áp khi tim hoạt động được đo tại các điểm cực đặt trên cơ thể. Hệ thống này đo đạt tín hiệu điện tim bằng ba điện cực.
Trong đó có 2 điện cực để lấy hiệu điện thế và một điện cực để làm điện thế tham chiếu.
Hình 3.3: Sơ đồ mạch khuyếch đại đo
Để tính toán được hiệu điện thế giữa hai cực, hệ thống dùng mạch khuyếch đại đo (Instrumentation Amplifier) như hình 3.3. Điện áp đầu ra Vout chính là tín hiệu điện tim cần tìm. Để dễ dàng tính toán, mạch trên hình 3.3 sẽ được chia thành hai phần, phần I sẽ là hai op-amp đệm ở ngõ vào, phần II sẽ là op-amp với vai trò mạch vi sai. Vout ở phần II sẽ được tính theo công thức (3.1).
( 1 2) 4 5 o o out V V R R V = − (Volt) (3.1)
Trong đó quy ước Vo1 và Vo2 lần lượt là ngõ ra của hai op-amp đệm ở phần I, điện trở R3 = R2. Vì hai mạch op-amp ở ngõ vào là khuyếch đại đệm không đảo, nên ta có 2 ngõ vào âm cũng lần lượt là V1 và V2 tương ứng với hai ngõ vào dương. Áp dụng định luật Ohm ta tính được dòng i chạy qua điện trở R1. Tương tự ta cũng tính dòng i qua điện trở R1, R2, R3. Từ đó ta sẽ tính được (Vo1-Vo2) theo công thức (3.2) (3.3) dưới đây. 3