1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án tốt nghiệp kỹ thuật điện tử truyền thông thiết kế và thi công thiết bị giám sát nhịp tim và nồng độ oxy trong máu

114 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 114
Dung lượng 7,74 MB

Nội dung

u iệ il Tà n iệ Đ n iệ -Đ tử TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o -Tp HCM, ngày 18 tháng 12 năm 2019 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nguyễn Phi Lân MSSV: 15141195 Kim Thanh Huy MSSV: 15141171 Chuyên ngành: Công Nghệ Kĩ Thuât Điện tử Truyền Thông Mã ngành: 11 Hệ đào tạo: Đại học quy-Sư phạm Mã hệ: Khóa: 2015 Lớp: 159410DT I TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG THIẾT BỊ GIÁM SÁT NHỊP TIM VÀ NỒNG ĐỘ OXY TRONG MÁU II NHIỆM VỤ Các số liệu ban đầu: il Tà - Nguyễn Đình Phú, “Giáo trình vi xử lý ”, NXB ĐH Quốc Gia Tp.HCM, 2014 u iệ - Nguyễn Hữu Phương, “Xử lí tín hiệu số”, NXB ĐH Quốc Gia Tp.HCM, 2015 n -Đ Tp.HCM, 2015 iệ Đ - Khoa Y,“ Kĩ thuật đo phân tích điện tâm đồ bình thường”, NXB ĐH Quốc Gia n iệ - Nguyễn Thanh Hoàng, Nguyễn Khoa Nam, “THIẾT KẾ VÀ THI CƠNG VỊNG tử TAY ĐO NHỊP TIM SỬ DỤNG CÔNG NGHỆ IoTs”, Đồ Án Tốt Nghiệp ĐH, Trường ĐH Sư Phạm Kỹ Thuật Tp.HCM, 2019 Nội dung thực hiện: - NỘI DUNG 1: Tiến hành nguyên cứu nhịp tim đồ thị điện tim - NỘI DUNG 2: Đọc cảm biến thu giá trị cho qua lọc vi xử lí truyền giá trị thu qua chuẩn truyền không dây - NỘI DUNG 3:Nhận liệu từ chuẩn truyền không giao tiếp với vi điều khiển qua chuẩn truyền UART - NỘI DUNG : Thiết kế board mạch điều khiển hình chuẩn FSMC khối nhận liệu - NỘI DUNG 5: Xử lí xuất liệu lên hình LCD dạng số dạng điện tim - NỘI DUNG 6: Viết ứng dụng Android hiển thị liệu hình LCD ii - NỘI DUNG 7: Thiết kế thi cơng mơ hình hệ thống hồn chỉnh - NỘI DUNG 8: Đánh giá kết thực so sánh với thiết bị có thị trường - NỘI DUNG 9: Viết báo cáo đề tài III NGÀY GIAO NHIỆM VỤ: 28/08/2019 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 28/12/2019 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: CÁN BỘ HƯỚNG DẪN ThS Phan Vân Hoàn BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH u iệ il Tà n iệ Đ n iệ -Đ tử iii TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o -Tp HCM, ngày 15 tháng 12 năm 2019 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Nguyễn Phi Lân Lớp: 159410DT MSSV:15141195 Họ tên sinh viên 2: Kim Thanh Huy Lớp: 159410DT MSSV:15141171 Tên đề tài: THIẾT KẾ VÀ THI CÔNG THIẾT BỊ GIÁM SÁT NHỊP TIM VÀ NỒNG ĐỘ OXY TRONG MÁU Xác nhận GVHD Nội dung Tuần - Gặp GVHD để nghe phổ biến yêu cầu làm đồ án, tiến hành chọn đề tài, GVHD tiến hành xét duyệt đề tài n iệ - Tìm hiểu nhịp tim đồ thị điện tim -Đ - Tìm hiểu cơng nghệ truyền khơng dây NodeMCU ESP8266 n iệ (11/9 - 18/9) - Viết đề cương tóm tắt nội dung đồ án Đ Tuần u (3/9 - 10/3) iệ Tuần il (26/8 - 2/9) Tà Tuần/ngày (19/9 - 26/9) -Tìm hiểu hình TFT inch tử Tuần - Hiển thị thơng số, đồ thị hình LCD TFT - Tiến hành vẽ mạch nguyên lí mạch PCB Altium cho board STM32F407 điều khiển hình Tuần (27/9 - 4/10) Tuần (5/10 - 12/10) Tuần (13/10 - 20/10) - Tìm hiểu nghiên cứu hiển thị dạng sóng điện tim hình LCD, điện thoại Android - Tiến hành hàn linh kiện mạch in kiểm tra - Tìm hiểu cách lập trình app Inventer - Thiết kế board đo nhịp tim với vi điều khiển - Lập trình điều khiển hiển thị STM32F4 iv Tuần - Lập trình ESP8266 Node MCU giao tiếp với cảm biến nhịp tim MAX30100 (21/10 - 28/10) - Tiến hành truyền nhận liệu module ESP8266 Tuần - 10 - Hoàn thiện app Android hiển thị nhịp tim tín (29/11 - 12/11) hiệu điện tim Tuần 11 (13/11 - 20/11) - Hiển thị giá trị nhịp tim đồ thị điện tim hình LCD TFT Tuần 12 - 13 (21/11 - 5/12) Tuần 14 (6/5- 12/5) - Tiến hành đóng gói mơ hình hồn thiện sản phẩm - Tiến hành viết báo cáo cho đề tài - Chỉnh sửa báo cáo theo yêu cầu GVHD il Tà - Nộp báo cáo báo cáo đề tài iệ Tuần 15 (6/12 – 13/12) Tuần 16-17 - Hồn thiện cải tiến chương trình u (14/12 - 28/12) - Thiết kế Slide báo cáo n iệ Đ n iệ -Đ GV HƯỚNG DẪN (Ký ghi rõ họ tên) tử v LỜI CAM ĐOAN Đề tài cơng trình thân nhóm tự thực dựa vào số tài liệu trước hướng dẫn ThS.Phan Vân Hoàn Các số liệu đề tài nhóm thu thập khơng chép từ tài liệu hay cơng trình khác Người thực đề tài NGUYỄN PHI LÂN KIM THANH HUY LỜI CẢM ƠN Em xin gởi lời cảm ơn sâu sắc đến Thầy Phan Vân Hoàn _ Giảng viên môn Điện tử công nghiệp – y sinh trực tiếp hướng dẫn tận tình giúp đỡ tạo điều kiện để hoàn thành tốt đề tài iệ il Tà Em xin gửi lời chân thành cảm ơn thầy cô Khoa Điện-Điện Tử anh chị khóa trước tạo điều kiện tốt cho em hoàn thành đề tài u Em gửi lời đồng cảm ơn đến bạn lớp 159410 chia sẻ trao đổi kiến thức kinh nghiệm quý báu thời gian thực đề tài iệ Đ n Cảm ơn đến cha mẹ, người thân bên cạnh động viên suốt trình thực đề tài n iệ -Đ Xin chân thành cảm ơn! tử Người thực đề tài NGUYỄN PHI LÂN KIM THANH HUY vi LỜI CẢM ƠN Em xin gởi lời cảm ơn sâu sắc đến Thầy Phan Vân Hồn _ Giảng viên mơn Điện tử cơng nghiệp – y sinh trực tiếp hướng dẫn tận tình giúp đỡ tạo điều kiện để hồn thành tốt đề tài Em xin gửi lời chân thành cảm ơn thầy cô Khoa Điện-Điện Tử anh chị khóa trước tạo điều kiện tốt cho em hoàn thành đề tài Em gửi lời đồng cảm ơn đến bạn lớp 159410 chia sẻ trao đổi kiến thức kinh nghiệm quý báu thời gian thực đề tài Cảm ơn đến cha mẹ, người thân bên cạnh động viên suốt trình thực đề tài Xin chân thành cảm ơn! il Tà Người thực đề tài u iệ NGUYỄN PHI LÂN n iệ Đ KIM THANH HUY n iệ -Đ tử vii MỤC LỤC Trang bìa i Nhiệm vụ đồ án ii Lịch trình iv Cam đoan vi Lời cảm ơn vii Mục lục viii Liệt kê hình vẽ xii Liệt kê bảng vẽ ………………………………………………… ………… xv Tóm tắt xii Chương TỔNG QUAN Error! Bookmark not defined 1.1 ĐẶT VẤN ĐỀ Error! Bookmark not defined 1.2 MỤC TIÊU Error! Bookmark not defined Tà u iệ il 1.2.1 Đối tượng phạm vi nghiên cứu Error! Bookmark not defined iệ Đ 1.2.2 Phương pháp nghiên cứu Error! Bookmark not defined n 1.3 NỘI DUNG NGHIÊN CỨU Error! Bookmark not defined -Đ n iệ 1.4 GIỚI HẠN Error! Bookmark not defined tử 1.5 BỐ CỤC Error! Bookmark not defined Chương CƠ SỞ LÝ THUYẾT Error! Bookmark not defined 2.1 LÍ THUYẾT VỀ NHỊP TIM VÀ PHƯƠNG PHÁP ĐO ĐIỆN TIM Error! Bookmark not defined 2.1.1 Khái niệm nhịp tim Error! Bookmark not defined 2.1.2 Nồng độ oxy máu Error! Bookmark not defined 2.1.3 Quá trình điện học tim Error! Bookmark not defined 2.1.4 Đo nhịp tim phương pháp hấp thụ quang họcError! Bookmark not defined viii 2.2 CÁC CHUẨN GIAO TIẾP GIỮA CÁC MODULE Error! Bookmark not defined 2.2.1 Chuẩn giao tiếp I2C MAX30100 ESP8266 Node MCU Error! Bookmark not defined u iệ il Tà n iệ Đ n iệ -Đ tử ix 2.2.2 Chuẩn giao tiếp UART STM32F407 ESP8266 Node MCUError! Bookmark not defined 2.2.3 Chuẩn truyền không dây theo giao thức UDP Error! Bookmark not defined Chương TÍNH TỐN VÀ THIẾT KẾ 19 3.1 GIỚI THIỆU Error! Bookmark not defined 3.2 THIẾT KẾ SƠ ĐỒ KHỐI HỆ THỐNG Error! Bookmark not defined 3.3 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNGError! Bookmark not defined 3.3.1 Thiết kế khối cảm biến đô nhịp tim Error! Bookmark not defined a Chức Error! Bookmark not defined b Lựa chọn linh kiện Error! Bookmark not defined Tà u iệ il c Thông số kỹ thuật Error! Bookmark not defined iệ Đ d Sơ đồ nguyên lý Error! Bookmark not defined n e Giải thích sơ đồ nguyên lí Error! Bookmark not defined -Đ Thiết kế khối vi điều khiển đọc cảm biến giao tiếp wifi Error! n iệ 3.3.2 tử Bookmark not defined a Chức Error! Bookmark not defined b Lưa chọn linh kiện Error! Bookmark not defined c Thông số kỹ thuật Error! Bookmark not defined d Sơ đồ nguyên lý Error! Bookmark not defined e Giải thích nguyên lí Error! Bookmark not defined 3.3.3 Thiết kế khối giao tiếp wifi Error! Bookmark not defined a Chức Error! Bookmark not defined b Lựa chọn linh kiện Error! Bookmark not defined c Thông số kĩ thuật Error! Bookmark not defined x CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 KẾT LUẬN Qua đề tài “THIẾT KẾ VÀ THI CÔNG THIẾT BỊ GIÁM SÁT NHỊP TIM VÀ NỒNG ĐỘ OXY TRONG MÁU” nhóm thực nghiên cứu vấn đề mà mục tiêu nhóm đưa ra: - Cấu tạo nguyên lí hoạt động nhịp tim - Phương pháp đo nhịp tim phương pháp hấp thụ quang học - Giải thuật vẽ tín hiệu điện tim - Cách đo nhịp tim cảm biến MAX3010 giao tiếp với vi điều khiển ESP8266 - Truyền liệu không dây nội module ESP8266 Node MCU Tà il - Giao tiếp UART ESP8266 Node MCU STM32F407VET6 u iệ - Giao tiếp STM32F407VET6 với hình LCD Inch chuẩn giao n iệ Đ tiếp song song FSMC -Đ - Hiểu cách thiết kế giao diện ứng dụng Android n iệ Tuy nhiên, thời gian trình độ cịn hạn hẹp nên khơng tránh khỏi tử sai sót, hạn chế hệ thống như: - Chưa đảm bảo tiện lợi cho thiết bị ba thiết bị đo, hình điện thoại cần phải nằm vùng wifi truy cập - Do dạng sóng đề tài cần phải cập nhật liên tục với tốc độ cực nhanh thiết bị chưa đạt ổn định xác cao - Ứng dụng nhóm thiết kế hoạt động Android 6.2 HƯỚNG PHÁT TRIỂN Đề tài “THIẾT KẾ VÀ THI CÔNG THIÊT BỊ GIÁM SÁT NHỊP TIM VÀ NỒNG ĐỘ OXY TRONG MÁU” cịn có nhiều hạn chế nhiên ứng dụng vào việc theo dõi nhịp tim cho người cao tuổi, người có tiền sử bệnh tim, bệnh nhân nhập viện điều trị lâu ngày ứng dụng vào phịng khám nhỏ BỘ MƠN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 82 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Hệ thống phần cứng hỗ trợ cảm biến mạnh mẽ, chất lượng tốt thiết bị chạy xác nhiều Về phần truyền khơng dây nâng cấp lên điện thoại, cảm biến, hình khơng cần kết nối chung wifi với đồng chung với Về phần mềm, thiết kế trang web lưu lịch sử đo nhịp tim, SpO2 người dùng, quản lý nhiều hệ thống đo cùng lúc, kết hợp với trí thơng minh nhân tạo (AI) để đưa chẩn đoán, cảnh báo bệnh cách kịp thời xác Về phần ứng dụng điện thoại nhóm thiết kế cho Android, số người dung IOS lớn nên tâm vào viết ứng dụng cho hệ điều hành nà u iệ il Tà n iệ Đ n iệ -Đ tử BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 83 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO Sách tham khảo [1] Nguyễn Đình Phú, “Giáo trình vi xử lý ”, NXB ĐH Quốc Gia Tp.HCM, 2014 [2] Nguyễn Đình Phú, “Giáo trình Thực hành thiết kế vi mạch số với HDL ”, NXB ĐH Quốc Gia Tp.HCM, 2014 [3] Nguyễn Hữu Phương, “Xử lí tín hiệu số”, NXB ĐH Quốc Gia Tp.HCM, 2015 [4] Khoa Y,“ Kĩ thuật đo phân tích điện tâm đồ bình thường”, NXB ĐH Quốc Gia Tp.HCM, 2015 [5] Nguyễn Thanh Hoàng, Nguyễn Khoa Nam, “THIẾT KẾ VÀ THI CƠNG VỊNG TAY ĐO NHỊP TIM SỬ DỤNG CƠNG NGHỆ IoTs”, Đồ Án Tốt Nghiệp ĐH, Trường il Tà ĐH Sư Phạm Kỹ Thuật Tp.HCM, 2019 u iệ [6] Pong P.Chu, “RTL Hardware Design Using VHDL”,2005 Đ n iệ [7] Nguyễn Công Danh, Nguyễn Tuấn Minh, “ỨNG DỤNG RASPBERRY PI GIÁM n iệ 2016 -Đ SÁT NHỊP TIM QUA TRANG WEB”, Đồ án thiết kế, Trường ĐHSPKT, Tp.HCM, tử [8] Dương Quốc Trung, Trần Thế Vinh “THIẾT KẾ VÀ THI CÔNG MẠCH ĐO NHỊP TIM, NHIỆT ĐỘ VÀ ÁP SUẤT SỬ DỤNG STM32F103C8T6 HIỂN THỊ TRÊN LCD TFT”, Đồ án môn học, Trường ĐHSPKT, Tp.HCM, 2018 [9] Nguyễn Minh Đức, Trần Châu Phong, “BẢNG LED MA TRẬN ĐIỀU KHIỂN BẰNG ỨNG DỤNG ANDROID ”, Đồ án tốt nghiệp, Trường ĐHSPKT, Tp.HCM, 2019 84 PHỤ LỤC PHỤ LỤC u iệ il Tà - Chương trình đọc cảm biến truyền liệu: #include #include #include #include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 MAX30100 sensor; WiFiUDP udpConnect; float ir_dcFilter; float v[2]; PulseOximeter pox; uint32_t tsLastReport = 0,mslast = 0; uint32_t load; uint32_t lastms = 0; int bmp,bmpsend,sposend, bmpbt = 0, bmpcao = 0,bmpthap, bmpsum = 0,diff, ii = 0,spo2=0, spo2reg=0; int drawdata; uint16_t red,ir; void setup() { Wire.begin(); Serial.begin(115200); Serial.print("Initializing pulse oximeter "); ketnoiwifi(); if (!pox.begin()) { Serial.println("FAILED"); for(;;); } else { Serial.println("SUCCESS"); } udpConnect.begin(50002); } void senddata(String sms) { int len= sms.length()+1; uint8_t a[len]; char smsc[len]; sms.toCharArray(smsc,len); for (int m = 0; m < len; m ++) a[m] = (uint8_t)smsc[m] n iệ Đ n iệ -Đ tử 85 PHỤ LỤC udpConnect.beginPacket("255.255.255.255",54321); udpConnect.write(a,len); udpConnect.endPacket(); u iệ il Tà } void loop() { pox.update(); sensor.update(); if (millis() - lastms>100) { senddata("Ha" + String(bmpsend)); senddata("Sa" + String(sposend)); lastms = millis(); } while (sensor.getRawValues(&ir, &red)) { drawdata= fillter(float(ir)); if (drawdata > 1000) { senddata("Da0"); } else { if (drawdata > -1000) { if (drawdata > 0) drawdata = drawdata/2; String data = "Da" + String(drawdata); senddata(data); } else { senddata("Da0"); } } } if (millis() - tsLastReport > REPORTING_PERIOD_MS) { bmp = pox.getHeartRate(); spo2 = pox.getSpO2(); ii ++; if ( bmp > 80 && bmp < 101) { bmpsend=bmp; bmpbt = bmp; } n iệ Đ n iệ -Đ tử 85 PHỤ LỤC else if (bmp > 100) { bmpcao ++; } else { bmpthap ++; } bmpsum += bmp; u iệ il Tà if (spo2>92) { if (spo2 > 100)spo2 = 100; spo2reg = spo2; sposend = spo2; } Serial.println(String(bmp)); if (ii >= 20) { if(bmpbt > 0){} else if (bmpcao > 15|| bmpthap > 15) { bmpsend = bmp/20; } if(spo2reg < 90) sposend=0; ii = 0; bmpbt = 0; bmpsum = 0; bmpcao = 0; bmpthap=0; spo2reg = 0; } tsLastReport = millis(); n iệ Đ n iệ -Đ tử } udpConnect.parsePacket(); while (udpConnect.available()) { Serial.write(udpConnect.read()); } } float fillter(float x) { #define LM_SIZE 15 #define ALPHA 0.95 static int LM[LM_SIZE]; static byte index = 0; static long sum = 0; static byte count = 0; static float meanDiff; // LastMeasurements PHỤ LỤC u iệ il Tà static float w; static float result; long avg = 0; ///////// DC remove fillter w = x + ALPHA * ir_dcFilter; result = w - ir_dcFilter; ir_dcFilter = result; ///////// meandiff////////// sum -= LM[index]; LM[index] = ir_dcFilter; sum += LM[index]; index++; index = index % LM_SIZE; if (count < LM_SIZE) count++; avg = sum / count; meanDiff = avg - ir_dcFilter; /////////lowPassButterworthFilter////// v[0] = v[1]; v[1] = (2.452372752527856026e-1f * meanDiff) + (0.50952544949442879485f * v[0]); return v[0] + v[1]; } void ketnoiwifi() { Serial.println("bat dau ket noi wifi"); WiFi.begin("Wifi Day Tro", "Phongtro91/39"); while(!(WiFi.status() == WL_CONNECTED)){ delay(500); Serial.print(" "); } Serial.println(""); Serial.println("ket noi cong"); } - Chương trình nhận liệu: #include #include WiFiUDP udpConnect; void setup() { WiFi.begin("Wifi Day Tro", "Phongtro91/39"); while (WiFi.waitForConnectResult() != WL_CONNECTED) delay(100); Serial.begin(115200); udpConnect.begin(54321); } void loop() { int k = 0; udpConnect.parsePacket(); n iệ Đ n iệ -Đ tử PHỤ LỤC while (udpConnect.available()) { char data = (char)udpConnect.read(); if (k == ) Serial.println(); Serial.print(data); k ++; } u iệ il Tà } - Chương trình tách chuỗi liệu hiển thị: void Drawa(int16_t* datad) { int i = 0; if (*ikenhb > 200) { for (xa = 200; xa < 800; xa=xa+6) { ya = *(datad + i); LCD_DrawSquare(xa,80,xa+40,480,0x0000,1); tft_draw_line(xa,yra+240,xa+6,ya+240,0xe7e0); yra = ya; i++; } } else { for (xa = 200; xa < 800; xa=xa+6) { ya = (*(datad + i))/1.5; LCD_DrawSquare(xa,0,xa+40,240,0x0000,1); tft_draw_line(xa,yra+120,xa+6,ya+120,0xe7e0); yra = ya; i++; } } n iệ Đ n iệ -Đ tử } void Drawb(int16_t* datad) { int i = 0; if (*ikenha > 200) { for (xb = 200; xb < 800; xb=xb+6) { yb = *(datad + i); LCD_DrawSquare(xb,80,xb+40,480,0x0000,1); tft_draw_line(xb,yrb+240,xb+6,yb+240,0xe7e0); yrb = yb; i++; PHỤ LỤC } } else { for (xb = 200; xb < 800; xb=xb+6) { yb = *(datad + i)/1.5; LCD_DrawSquare(xb,240,xb+40,480,0x0000,1); tft_draw_line(xb,yrb+360,xb+6,yb+360,0xe7e0); yrb = yb; i++; } } } u iệ il Tà int16_t get_value() { uint16_t a1,a2,a3,an; int16_t value; if (*(data + 2) == '-') { a1 = (uint16_t)(*(data + 3) - 48); a2 = (uint16_t)(*(data + 4) - 48); a3 = (uint16_t)(*(data + 5) - 48); if ( a3 > 9) { if ( a2 > 9) { a3 = a1; a1 = 0; a2 = 0; } else { a3 = a2; a2 = a1; a1 = 0; } } an = a1*100 + a2*10 + a3; if (an < 1000) value = - an; } else { a1 = (uint16_t)(*(data + 2) - 48); a2 = (uint16_t)(*(data + 3) - 48); a3 = (uint16_t)(*(data + 4) - 48); if ( a3 > 9) { n iệ Đ n iệ -Đ tử PHỤ LỤC if ( a2 > 9) { a3 = a1; a1 = 0; a2 = 0; } else { a3 = a2; a2 = a1; a1 = 0; } } an = a1*100 + a2*10 + a3; if (an < 1000) value = an; } return value; } Tà u iệ il void getH() { if (*(data) == 'H') { if (*(data+1) == 'a') { Ha = get_value(); if (*ikenhb>200) { LCD_DrawSquare(70,110,150,140,0x0000,1); if ( Ha != ) { if (Ha < 1000) sprintf(hr,"%d",Ha); tft_puts18x32(110,70,(int8_t *)hr,1,green); } else { tft_puts18x32(110,70,(int8_t *)"00",1,green); } } else { LCD_DrawSquare(70,75,150,105,0x0000,1); if ( Ha != ) { if (Ha < 1000) sprintf(hr,"%d",Ha); tft_puts18x32(75,70,(int8_t *)hr,1,green); } else n iệ Đ n iệ -Đ tử PHỤ LỤC { tft_puts18x32(75,70,(int8_t *)"00",1,green); } } u iệ il Tà } if (*(data+1) == 'b') { Hb = get_value(); if( *ikenha > 200) { LCD_DrawSquare(70,110,150,150,0x0000,1); if ( Hb != ) { if (Hb < 1000) sprintf(hr,"%d",Hb); tft_puts18x32(110,70,(int8_t *)hr,1,green); } else { tft_puts18x32(110,70,(int8_t *)"00",1,green); } } else { LCD_DrawSquare(70,320,150,360,0x0000,1); if ( Hb != ) { if (Hb < 1000) sprintf(hr,"%d",Hb); tft_puts18x32(320,70,(int8_t *)hr,1,green); } else { tft_puts18x32(320,70,(int8_t *)"00",1,green); } } } n iệ Đ n iệ -Đ tử } } void getdraw() { int16_t Da,Db; if (*(data) == 'D') { if (*(data + 1) == 'a') { kenha = 0; Da = get_value(); esp_ir1 = -Da/1.5; if ( esp_ir1_reg != esp_ir1 || esp_ir1 == 0) PHỤ LỤC { u iệ il Tà if(esp_ir1 < -50 && esp_ir1 > -100) { if (dinha > 5) { dinha = 0; if (draw_indexa == 0) {for (int i=0; i 99) { Drawa(&datadrawa[0]); draw_indexa = 0; } esp_ir1_reg = esp_ir1; n iệ Đ n iệ -Đ tử } } if (*(data + 1) == 'b') { kenhb = 0; Db = get_value(); esp_ir2 = -Db/1.5; if ( esp_ir2_reg != esp_ir2 || esp_ir2 == 0) { if(esp_ir2 < -50 && esp_ir2 > -100) { if (dinhb > 5) { dinhb = 0; if (draw_indexb == 0) {for (int i=0; i 99) { Drawb(&datadrawb[0]); draw_indexb = 0; } esp_ir2_reg = esp_ir2; tử void getS() { int16_t Sa,Sb; if (*(data) == 'S') { if (*(data + 1) == 'a') { Sa = get_value(); if(*ikenhb > 200) { LCD_DrawSquare(70,360,150,400,0x0000,1); if ( Sa != ) { if (Sa < 1000) sprintf(spo2,"%d",Sa); tft_puts18x32(360,70,(int8_t*)spo2,1,green); } else { tft_puts18x32(360,70,(int8_t*)"00",1,green); } } PHỤ LỤC else { LCD_DrawSquare(70,160,150,200,0x0000,1); if ( Sa != ) { if (Sa < 1000) sprintf(spo2,"%d",Sa); tft_puts18x32(160,70,(int8_t *)spo2,1,green); } else { tft_puts18x32(160,70,(int8_t *)"00",1,green); } } u iệ il Tà } if (*(data + 1) == 'b') { Sb = get_value(); if(*ikenha > 200) { LCD_DrawSquare(70,360,150,400,0x0000,1); if ( Sb != ) { if (Sb < 1000) sprintf(spo2,"%d",Sb); tft_puts18x32(360,70,(int8_t *)spo2,1,green); } else { tft_puts18x32(360,70,(int8_t *)"00",1,green); } } else { LCD_DrawSquare(70,395,150,435,0x0000,1); if ( Sb != ) { if (Sb < 1000) sprintf(spo2,"%d",Sb); tft_puts18x32(395,70,(int8_t *)spo2,1,green); } else { tft_puts18x32(395,70,(int8_t *)"00",1,green); } } } n iệ Đ n iệ -Đ tử } } void getName(uint8_t *len) { PHỤ LỤC u iệ il Tà uint8_t l = *len; uint8_t ida[l], idb[l]; if (*(data) == 'N') { if (*ikenhb > 200) { if (*(data + 1) == 'a') { LCD_DrawSquare(270,0,800,80,0x0000,1); for(int i = 0; i < l - 2; i ++) { ida[i] = *(data + i + 2); tft_putchar18x32(270+20*i,20,ida[i],1,0xffff); } } } if(*ikenha > 200) { if (*(data + 1) == 'b') { LCD_DrawSquare(270,0,800,80,0x0000,1); for(int i = 0; i < l - 2; i ++) { idb[i] = *(data + i + 2); tft_putchar18x32(270+20*i,20,idb[i],1,0xffff); } } } } n iệ Đ n iệ -Đ tử }

Ngày đăng: 22/09/2023, 14:38

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w