35
2.9.4 Đo oxi trong máu
Đo oxi trong máu dựa trên nguyên tắc: lượng ánh sáng RED và IR được hấp thụ thay đổi phụ thuộc vào lượng oxi trong máu của bạn. Biểu đồ dưới thể hiện phổ hấp thụ của Hemoglobin oxi hóa (HbO2) và Hemoglobin khử oxi (Hb)
Hình 2.34 Mơ phỏng q trình do SPO2
Từ biểu đồ trên, ta thấy máu được khử oxi hấp thụ nhiều ánh sáng RED hơn (660nm), trong khi máu được oxi hấp thụ nhiều ánh sáng IR hơn (880nm). Bằng cách đo tỷ lệ giữa ánh sáng hồng ngoại và ánh sáng RED mà bộ tách sóng quang nhận được, mức oxi (SpO2) trong máu sẽ được tính tốn.
2.9.5 Giao tiếp với cảm biến MAX30100
Cảm biến MAX30100 sử dụng giap tiếp I2C hai dây cơ bản để giao tiếp với vi điều khiển. Nó có 1 địa chỉ hoạt động cố định: 0xAE (cho hoạt động ghi) và 0xAF (cho hoạt động đọc).
Cảm biến hỗ trợ bộ đệm FIFO để lưu trữ các mẫu dữ liệu, FIFO có bộ nhớ 16 mẫu dữ liệu, nghĩa là chúng có thể lưu trữ được 16 mẫu đo nhịp tim và SPO2. Bộ đệm FIFO có thể giảm tải cho vi điều khiển để đọc từng mẫu dữ liệu đo được từ cảm biến, từ đó giúp tiết kiệm năng lượng cho cả hệ thống.
Ngoài ra, cảm biến MAX30100 cịn có thể hỗ trợ được cho ngắt ngoài, cho phép vi điều khiển chủ động thực hiện các tác vụ khác trong khi đang thu thập dữ liệu đo từ cảm biến.
36
2.10 Giới thiệu phần mềm 2.10.1 MIT App Inventor 2.10.1 MIT App Inventor
App Inventor là công cụ lập trình dành cho mọi người, kể cả trẻ em. Được công bố dưới dạng phần mềm tự do (free software), App Inventor trở thành hiện tượng chưa từng có trong lĩnh vực lập trình cho thiết bị di dộng. Ưu điểm của MIT App Inventor là phần mềm hỗ trợ xây dựng những thành phần cơ bản của một ứng dụng Android: Nút bấm, nút lựa chọn, chọn ngày giờ, ảnh, văn bản, thơng báo, trình duyệt web. Sử dụng nhiều tính năng trên điện thoại như chụp ảnh, quay phim, chọn ảnh, bật video. Có thể kết nối danh bạ, bluetooth, email, gọi điện, chia sẻ thông qua các ứng dụng mạng xã hội khác trên thiết bị. Bên cạnh đó cịn có thể lưu trữ tệp txt, tạo cơ sở dữ liệu đơn giản trên điện thoại hoặc trên đám mây thông qua server tự tạo hoặc Firebase.
Tuy nhiên, ngoài những ưu điểm kể trên thì phần mềm cũng có những nhược điểm như ứng dụng được phát triển trên server của MIT mang tính chất giáo dục nên giao diện còn sơ sài, chưa chuyên nghiệp, giới hạn dung lượng của mỗi project chỉ là 5MB. Mặc dù có những nhược điểm như vậy, MIT App Inventor vẫn là một cơng cụ hữu ích giúp cho người mới bắt đầu lập trình trên Android có thể tạo ra được những ứng dụng hoàn thiện hoặc giúp nhà phát triển hoàn thành những ý tưởng của mình.
2.10.2 Phần mềm lập trình Arduino IDE
Arduino IDE là phần mềm dùng để lập trình cho Arduino. Mơi trường lập trình Arduino IDE có thể chạy trên 3 nền tảng phổ biến nhất hiện này là Windows, MacOS và Linux. Do có tính chất nguồn mở nên mơi trường lập trình này hồn tồn miễn phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm. Vùng làm việc của phần mềm gồm thanh công cụ bao gồm các nút lệnh menu (File, Edit, Sketch, Tools, Help). Phía dưới là các icon cho phép sử dụng nhanh các chức năng thường dùng của IDE. Ở vùng viết chương trình bạn sẽ viết các đoạn mã của mình tại đây. Tên chương trình của bạn được hiển thị ngay dưới dãy các Icon. Công cụ gỡ lỗi hỗ trợ người dùng xác định và khắc phục lỗi trong mã nguồn. Các lập trình viên và kỹ sư phần mềm thường có thể kiểm tra các phân đoạn mã khác nhau và xác định lỗi trước khi ứng dụng được phát hành.
37
Lợi ích của IDE là phục vụ như một mơi trường duy nhất cho hầu hết các nhu cầu của nhà phát triển, chẳng hạn như các hệ thống kiểm sốt phiên bản, cơng cụ gỡ lỗi. Khả năng gựi ý và hoàn thành các câu lệnh, đoạn code nhanh chóng. Tự động kiểm tra lỗi và thơng báo vị trí lỗi tại những dịng code cụ thể. Khả năng tái cấu trúc cho phép các lập trình viên thực hiện các thay đổi trên mã nguồn hay project của mình dễ dàng. Hệ thống quản lý dự án, mã nguồn, kết hợp nhiều hệ quản trị cơ sở dữ liệu lớn. Hoạt động trên nhiều loại hệ điều hành khác nhau như windows, Linux, Mac. Nhiều IDE cho phép người dùng mở rộng và bổ sung thêm tính năng mới theo mục đích và từng dự án cụ thể. Phát triển nhiều phần mềm, ứng dụng hay game trên nền tản mobile và desktop.
38
CHƯƠNG 3 : TÍNH TỐN VÀ THIẾT KẾ 3.1 Yêu cầu và sơ đồ khối của hệ thống
3.1.1 Yêu cầu của hệ thống
Hệ thống đo nhiệt độ, nhịp tim, nồng độ oxi máu và phun sát khuẩn có các chức năng dưới đây:
- Đọc, đo, hiển thị, cảnh báo kết quả đo nhiệt độ cơ thể người, hiển thị kết quả ra màn hình LCD và phát kết quả ra loa dùng cảm biến MLX 90614.
- Đọc, đo, hiển thị, cảnh báo kết quả đo nhịp tim, nồng độ SPO2, hiển thị kết quả ra màn hình LCD và phát kết quả ra loa dùng cảm biến MAX30100. - Phun sát khuẩn sau mỗi lần đo dùng đầu phun sương.
- Dùng bàn phím ma trận để thay đổi giá trị cảnh báo của SPO2 nhiệt độ và nhịp tim.
- Dùng đèn hiển thị trạng thái hoạt động của hệ thống - Dùng pin năng lượng và có sạc.
- Hiển thị kết quả vừa đo được trên ứng dụng Android.
3.1.2 Sơ đồ khối
39
3.1.3 Chức năng của từng khối
Khối điều khiển trung tâm có chức năng:
- Nhận dữ liệu từ khối cảm biến, thực hiện tính tốn để in ra giá trị chỉ số đo chính xác
- Nhận dữ liệu từ khối nút nhấn, sau đó sẽ điều khiển thay đổi các thông số đã đặt dựa trên dữ liệu nhận được
- In dữ liệu đo đạt được ra ngồi LCD và đưa tín hiệu ra khối âm thanh để đọc kết quả đo được ra ngoài loa
- Điều khiển khối động cơ phun chất diệt khuẩn.
- Đẩy dữ liệu đo được từ khối cảm biến qua cho khối giao tiếp, từ đó lưu kết quả qua ứng dụng điện thoại Android.
- Xuất tín hiệu cho khối quang báo để thơng báo.
Khối hiển thị: Có chức năng hiển thị các thông số đo đạt được từ khối
cảm biến, trạng thái hoạt động của các chức năng có trong hệ thống và hiển thị các thơng số cần chỉnh sửa.
Khối cảm biến: Có chức năng lấy các chỉ số đo đạt được từ con người,
sau đó gửi dữ liệu cho khối điều khiển trung tâm.
Khối nút nhấn: Có chức năng chính là thay đổi giá trị đặt của các thông
số của khối cảm biến như: mức cảnh báo SPO2 và nhiệt độ cơ thể người, ngồi ra cịn là nút điều khiển khối động cơ thủ công.
Khối động cơ và quang báo: Có chức năng là nhận tín hiệu từ khối xử
lý trung tâm và điều khiển bật tắt máy bơm phun sát khuẩn, ngồi ra cịn thực hiện điều khiển bơm khi nhận được tín hiệu từ nút nhấn thủ công. Khối quang báo là khối cho biết trạng thái hoạt động của hệ thống thông qua các đèn chiếu sáng.
Khối âm thanh: Phát ra âm thanh, đọc nhiệt độ đo được, nhịp tim và
nồng độ oxi đo được từ các cảm biến và phát ra loa.
Khối giao tiếp: Là khối gửi dữ liệu qua Bluetooth cho ứng dụng
Android để hiển thị kết quả vừa đo được.
Khối nguồn: Có chức năng cung cấp nguồn cho các khối còn lại. Ứng dụng Anroid: Là nơi hiển thị các thông số kết quả đã đo được.
40
3.2 Thiết kế phần cứng
3.2.1 Khối xử lý trung tâm
Vì số lượng các module nhiều, đồng nghĩa với việc có nhiều cổng I/O, nên số lượng các chân ngõ vào của khối xử lý phải đáp ứng đủ hoặc dư. Vì vậy nhóm quyết định chọn board xử lý Arduino Mega 2560 để làm khối xử lý trung tâm vì board có số lượng các ngõ vào ra nhiều và đáp ứng đủ với yêu cầu của đề tài.
Arduino Mega 2560 là board xử lý lớn nhất trong họ Arduino. Gồm các đặc tính đáng chú ý sau:
- Có 3 cách cấp nguồn cho Arduino Mega, đó là dùng cáp USB, sử dụng qua chân cấp nguồn Vin và jack cắm nguồn vào DC.
- Được thiết kế với cầu chì tự phục hồi, mục đích ngăn cổng USB của máy tính sinh nhiệt khi xảy ra hiện tượng quá dòng trên board Arduino do các chân I/O chạm chập. Hầu hết các thiết bị kết nối với Board đều có cơ chế bảo vệ dịng thơng qua cổng USB, tuy nhiên trên board Arduino Mega 2560 có tích hợp sẵn sẽ tạo ra được lớp bảo vệ thứ 2 khi kết nối với máy tính.
41
Hình 3.3 Sơ đồ chân của Arduino Mega 2560
Sơ lược về các chân quan trọng trên board Arduino Mega 2560
- Chân 5V và 3.3V: Chân này để cung cấp điện áp ra chuẩn cho các thiết bị - Chân GND: Có 5 chân nối mass có sẵn trên Board Arduino Mega, giúp dễ
dàng kết nối với dự án có nhiều thiết bị ngoại vi
- Chân Reset: Được sử dụng để thiết lập lại Board mạch về lúc ban đầu, với mức tích cực là mức thấp sẽ reset lại board
- Chân Vin: Là chân điện áp đầu vào cung cấp cho mạch Arduino Mega, điện áp từ 7V đến 15V. Mặt khác điện áp được cấp bởi jack nguồn DC có thể được lấy thơng qua chân này. Tuy nhiên, điện áp đầu ra thông qua chân này đến mạch Arduino sẽ được tự động thiết lập là 5V.
42
- Chân truyền thông nối tiếp (Serial Communication): RXD và TXD là các chân nối tiếp được sử dụng để truyền và nhận dữ liệu nối tiếp, chân Rx đại diện cho việc truyền dữ liệu còn Tx được sử dụng để nhận dữ liệu. Có tất cả 4 kết hợp các chân nối tiếp này được sử dụng trong đó Serial 0 là chân RX(0) và TX(1), Seria l 1là chân TX(18) và RX(19), Serial 2 là chân TX(16) và RX(17), và Serial 3 là chân TX(14) và RX(15).
- Chân Ngắt ngoài (External Interrupts): 6 chân được sử dụng để tạo các ngắt ngồi đó là ngắt 0 (chân 0), ngắt 1 (chân 3), ngắt 2 (chân 21), ngắt 3 (chân 20), ngắt 4 (chân 19), ngắt 5 (chân 18). Các chân này tạo ra các ngắt bằng một số cách tức là cung cấp giá trị LOW, tăng hoặc giảm hoặc thay đổi giá trị cho các chân ngắt.
- Đèn LED: Arduino Mega 2560 tích hợp đèn LED trên board mạch kết nối với chân 13. Giá trị HIGH đèn LED được bật và LOW đèn LED tắt. Giúp người lập trình quan sát trực quan khi test, kiểm tra chương trình trên board Arduino - Chân AREF: Chân tạo điện áp tham chiếu cho đầu vào analogs
- Các chân tương tự (Analogs): Có 16 chân analog được tích hợp trên board Arduino có ký hiệu là A0 đến A15. Điều quan trọng cần lưu ý là tất cả các chân analog này có thể được sử dụng làm chân I / O Digital. Mỗi chân analog đi kèm với độ phân giải 10 bit. Các chân này có thể có điện áp thay đổi tử 0V đến 5V. Tuy nhiên, giá trị trên có thể được thay đổi bằng cách sử dụng hàm ISF và analogReference ().
- Giao tiếp I2C: Hai chân 20 và 21 hỗ trợ giao tiếp I2C trong đó 20 đại diện cho SDA (Dịng dữ liệu nối tiếp chủ yếu được sử dụng để giữ dữ liệu) và 21 đại diện cho SCL (Dòng đồng hồ nối tiếp chủ yếu được sử dụng để cung cấp đồng bộ hóa dữ liệu giữa các thiết bị)
- Truyền thông SPI: Được sử dụng để truyền dữ liệu giữa Arduino và các thiết bị ngoại vi khác. Chân 50 (MISO), Chân51 (MOSI), Chân 52 (SCK), Chân 53 (SS) được sử dụng để liên lạc SPI.
43
Bảng 3.1 Thông số kỹ thuật Arduino Mega 2560
Đặc điểm Giá trị
Vi xử lý Atmega2560
Nguồn cấp 7-15VDC
Điện áp hoạt động 5VDC
Dòng max chân 5V 500mA
Dòng max chân 3.3V 50mA
Dòng max chân I/O 40mA
Số chân Digital 54
Số chân Analog 16
Dung lượng bộ nhớ flash 256KB
Xung hoạt động 16Mhz
Dung lượng bộ nhớ SRAM 8 KB Dung lượng bộ nhớ EEPROM 4 KB
3.2.2 Khối hiển thị
Khối hiển thị có chức năng hiển thị các thơng số đo đạt được từ khối cảm biến, trạng thái hoạt động của các chức năng có trong hệ thống và hiển thị các thông số cần chỉnh sửa.
Hiện nay trên thị trường có rất nhiều thiết bị linh kiện hiển thị như led đơn, led 7 đoạn, LCD 16x2, OLED, TFT… Với yêu cầu của hệ thống sẽ hiển thị lên các thông số môi trường và trạng thái điều khiển các thiết bị nên chỉ cần 4 dịng với khơng q 20 ký tự và để đơn giản hơn trong việc sử dụng nhóm quyết định sử dụng LCD 20x4 với giá thành khá rẻ.
Để sử dụng các loại LCD có driver là HD44780 (LCD 16x02, LCD 20x04...) cần có ít nhất 6 chân của MCU kết nối với các chân RS, EN, D7, D6, D5 và D4 để có thể giao tiếp với LCD. Nhưng với module chuyển giao tiếp LCD sang I2C các bạn chỉ cần 2 chân (SDA và SCL) của MCU kết nối với 2 chân (SDA và SCL) của module là có thể hiển thị thơng tin lên LCD, ngồi ra có thể điều chỉnh được độ tương phản bởi biến trở gắn trên module chính vì vậy nhóm đã quyết sử dụng Module I2C LCD nhằm mục đích tiết kiệm GPIO kết nối vào Arduino cũng như là hạn chế số lượng dây dẫn trong hệ thống.
44
Hình 3.4 Sơ đồ nguyên lý khối hiển thị
Kết khối hiển thị với khối điều khiển trung tâm và khối nguồn:
- Chân SCL và SDA của module I2C lần lượt kết nối với chân D21 và D20 của Arduino.
- Chân VDD và VSS của LCD 20x4 lần lượt kết nối với chân 5V và GND của khối nguồn.
Bảng 3.2 Thông số của khối hiển thị
Đặc điểm Giá trị
Điện áp hoạt động 5 VDC Dịng điện tiêu thụ 35.5 mA Kích thước màn hình 9.5 x 4 (cm)
Chuẩn kết nối I2C
45
3.2.3 Khối cảm biến
3.2.3.1 Cảm biến nhiệt độ khơng chạm MLX90614
Có nhiệm vụ đo đạc nhiệt độ cơ thể và gửi thông số đến khối xử lý trung tâm. Sơ đồ chân:
Hình 3.5 Sơ đồ chân của Module MLX90614
VIN là chân nối nguồn dương (+5V)
SCL là chân clock của giao tiếp I2C, nối với chân clock I2C của Arduino. SDA là chân data của giap tiếp I2C, nối với chân data I2C của Arduino.
GND là chân nối nguồn âm (0V)
Kết nối giữa Module MLX90614 với khối điều khiển trung tâm:
- Chân SCL và SDA của Module lần lượt kết nối với chân I2C của Arduino lần lượt là D21 và D20.
- Chân VCC và GND của Module lần lượt kết nối với chân 5V và GND của Arduino.
Bảng 3.3 Các thông số kỹ thuật của Module MLX90614
Đặc điểm Giá trị
Khoảng đo nhiệt độ vật thể -70 ℃ đến 382℃ Khoảng đo nhiệt độ môi trường xung quanh -40 ℃ đến 85℃
Độ chính xác ±0.5 ℃ (ở nhiệt độ phòng)
Độ phân giải ±0.2 ℃
Góc đo nhiệt độ 90º
Điện áp hoạt động 3.3V tới 5V
46
3.2.3.2 Cảm biến đo nhịp tim và SpO2
Có chức năng đo đạc nhịp tim và nồng độ SpO2, sau đó gủi dữ liệu đến khối xử lý trung tâm.
Sơ đồ chân:
Hình 3.6 Sơ đồ chân của Module MAX30100
VIN là chân nối nguồn dương (+5V)
SCL là chân clock của giao tiếp I2C, nối với chân clock I2C của Arduino. SDA là chân data của giap tiếp I2C, nối với chân data I2C của Arduino.
INT INT MAX30100 có thể được lập trình để tạo ngắt cho mỗi xung. Dịng này là dịng hở, vì vậy nó được kéo CAO bởi điện trở tích hợp. Khi một ngắt xảy ra, chân INT sẽ ở mức THẤP và ở mức THẤP cho đến khi ngắt được xóa.
IRD MAX30100 tích hợp trình điều khiển LED để điều khiển xung LED cho các phép đo SpO2 và HR. Sử dụng tùy chọn này nếu bạn muốn tự điều khiển IR LED, nếu khơng, hãy để nó khơng được kết nối.
RD chân tương tự như chân IRD, nhưng được sử dụng để điều khiển đèn LED màu đỏ. Nếu bạn không muốn tự điều khiển đèn LED màu đỏ, hãy để nó ở trạng thái khơng