MAX30100 là một cảm biếnquang học tích hợp, cung cấp dữ liệu chính xác và đáng tin cậy về các chỉ số sinh lý này,đồng thời rất dễ sử dụng và tích hợp vào các thiết bị di động hoặc hệ thố
Giới thiệu chung
Học phần Đồ án II tập trung vào việc tìm hiểu vi điều khiển, nhằm nâng cao năng lực chuyên môn cho sinh viên Nội dung khóa học liên kết các kiến thức về điện tử tương tự, điện tử số, kỹ thuật vi xử lý, và xử lý số tín hiệu, giúp sinh viên hoàn thiện khả năng ứng dụng kiến thức vào thực tế.
Trong học phần này, sinh viên sẽ được làm quen với công cụ thiết kế mạch điện, thực hành lập trình phần cứng và xây dựng một ứng dụng cơ bản sử dụng các vi mạch có thể lập trình được.
Sau khi nghiên cứu các loại vi điều khiển, tôi đã quyết định chọn vi điều khiển ESP32, cụ thể là ESP32 DOIT Devkit V1, cho dự án "Thiết kế mạch đo nhịp tim sử dụng module MAX30100" và hiển thị dữ liệu trên màn hình OLED SSD1306.
Vi điều khiển ESP 32
Tổng quan
ESP32 là bộ vi điều khiển tiết kiệm chi phí và tiêu thụ điện năng thấp, nổi bật với khả năng tích hợp Bluetooth và Wi-Fi chế độ kép Điều này mang lại tính linh hoạt, sức mạnh và độ tin cậy cao cho nhiều ứng dụng khác nhau.
Hình 1.1 Vi điều khiển ESP32 DOIT Devkit V1
Bộ vi điều khiển ESP32, kế thừa từ NodeMCU ESP8266, mang lại hiệu suất và tính năng vượt trội Được sản xuất bởi Espressif Systems, ESP32 được ứng dụng rộng rãi trong các lĩnh vực như IoT, robot và tự động hóa.
ESP32 được tối ưu hóa để tiết kiệm năng lượng, rất phù hợp cho các ứng dụng sử dụng pin Với hệ thống quản lý năng lượng thông minh, ESP32 có khả năng hoạt động ở chế độ ngủ và chỉ kích hoạt khi cần thiết, giúp kéo dài đáng kể tuổi thọ pin.
Ưu và nhược điểm của esp32
ESP32 tích hợp Wi-Fi và Bluetooth (BLE và Classic), cho phép kết nối và truyền dữ liệu qua mạng không dây một cách dễ dàng Điều này khiến ESP32 trở thành lựa chọn lý tưởng cho các dự án, vì nó có khả năng tích hợp thêm tính năng IoT trong tương lai.
ESP32 sở hữu hiệu năng cao với bộ vi xử lý Xtensa lõi kép 32-bit, xung nhịp lên đến 240 MHz, cho phép xử lý các tác vụ phức tạp một cách mạnh mẽ Bên cạnh đó, nó còn có bộ nhớ RAM lớn hơn so với nhiều vi điều khiển khác trong cùng phân khúc Với đa dạng giao diện ngoại vi, ESP32 hỗ trợ nhiều giao thức giao tiếp như UART, SPI, I2C, I2S, ADC, DAC, PWM, cùng với số lượng chân GPIO phong phú và đa chức năng, giúp kết nối dễ dàng với nhiều loại thiết bị ngoại vi.
Tiêu thụ năng lượng linh hoạt là một trong những ưu điểm nổi bật của ESP32, với các chế độ tiết kiệm năng lượng như chế độ ngủ sâu (deep sleep) và chế độ ngủ (light sleep) Những chế độ này giúp tối ưu hóa việc tiêu thụ điện năng, đặc biệt cho các ứng dụng di động và thiết bị sử dụng pin, mang lại hiệu suất cao và kéo dài thời gian sử dụng.
ESP32 có độ phức tạp cao hơn so với các vi điều khiển đơn giản như Arduino Uno hoặc Nano, đòi hỏi người dùng cần có kiến thức vững về lập trình và phần cứng để khai thác tối đa các tính năng của nó.
Khi hoạt động ở chế độ hiệu suất cao, ESP32 tiêu thụ năng lượng nhiều hơn so với các vi điều khiển đơn giản, mặc dù thiết bị này cũng có các chế độ tiết kiệm năng lượng.
Chi phí của ESP32 thường cao hơn so với các vi điều khiển cơ bản khác, đặc biệt là khi so sánh với các vi điều khiển không hỗ trợ kết nối không dây.
ESP 32 DOIT Devkit V1
ESP32 DOIT Devkit V1 là một bảng phát triển nổi bật sử dụng vi điều khiển ESP32 do Espressif Systems sản xuất
Hình 1.2 Sơ đồ các chân của ESP32 DOIT Devkit V1
• Chip vi điều khiển: ESP32
• Loại bộ xử lý: Dual-core Xtensa®32-bit LX6
• Tốc độ xử lý: Lên đến 240 MHz
• Bộ nhớ Flash: 4 MB (có thể thay đổi tùy phiên bản)
• Wi-Fi: Chuẩn: 802.11 b/g/n Tần số: 2.4 GHz
• Bluetooth: Loại Bluetooth v4.2 (Bluetooth Classic và BLE)
• Số chân GPIO: 34 chân GPIO
• Chân ADC: 12-bit ADC với tối đa 18 kênh đầu vào
• Chân DAC: 2 kênh DAC 8-bit
• PWM: Hỗ trợ nhiều kênh PWM
• Cổng USB: Cổng USB-C cho cấp nguồn và nạp chương trình
• Nguồn hoạt động: 3.3V (cung cấp qua cổng USB hoặc pin bên ngoài)
• Môi trường phát triển: Arduino IDE; ESP-IDF (Espressif IoT Development Frame- work)
Module MAX30100
Nguyên lý hoạt động
Module MAX30100 bao gồm đèn LED đỏ (660 nm) và hồng ngoại (940 nm), cùng với cảm biến quang học có chức năng nhận ánh sáng phản xạ từ da và mạch máu.
Bộ vi xử lý: Xử lý tín hiệu từ cảm biến quang học và giao tiếp qua giao thức I2C
Phát sáng và phản xạ:
Hình 1.3 Nguyên lý hoạt động của MAX 30100
Các đèn LED trên module phát ra ánh sáng với các bước sóng cụ thể như đỏ và hồng ngoại, chiếu vào da nơi có mạch máu Ánh sáng này xuyên qua lớp da và mạch máu, một phần sẽ được hấp thụ bởi máu và mô trong da, trong khi phần còn lại sẽ phản xạ lại bề mặt da.
Cảm biến quang học (photo-detector) trên module nhận ánh sáng phản xạ đo sự thay đổi của ánh sáng phản xạ trong thời gian thực Dữ liệu ánh sáng này tạo ra tín hiệu điện có thể được ghi lại và phân tích, với dạng sóng phản ánh nhịp đập của tim và sự thay đổi nồng độ oxy trong máu, được gọi là Tín Hiệu PPG.
Tín hiệu ánh sáng từ cảm biến quang học được chuyển đổi thành dữ liệu số, giúp bộ vi xử lý trên module xử lý tín hiệu loại bỏ nhiễu và nâng cao độ chính xác Dựa vào sự thay đổi của tín hiệu PPG theo thời gian, module xác định nhịp tim bằng cách phân tích chu kỳ sóng tín hiệu Đồng thời, bằng cách sử dụng tín hiệu từ đèn LED đỏ và hồng ngoại, module tính toán nồng độ oxy trong máu (SpO2) thông qua việc so sánh sự thay đổi ánh sáng phản xạ giữa hai bước sóng khác nhau.
Thông số kỹ thuật
• Điện Áp Vận Hành: 1.8V đến 3.3V
• Dòng Tiêu Thụ:Khoảng 1 mA đến 2 mA (tùy thuộc vào chế độ và cường độ đèn LED)
• Tốc Độ Lấy Mẫu: Lên đến 100 Hz (có thể điều chỉnh)
• Độ Phân Giải ADC: 14-bit
• Dải Đo Nhịp Tim: Khoảng 30 đến 240 bpm (beats per minute)
• Dải Đo Nồng Độ Oxy: Khoảng 0% đến 100% SpO2
• Độ Chính Xác: Có thể ảnh hưởng bởi yếu tố như ánh sáng môi trường, độ sạch của da, và cách đặt cảm biến.
Hình 1.5 Sơ đồ chân MAX30100
Sơ đồ chân module MAX30100:
• VIN - Đầu vào cấp điện áp
• SCL I2C - Xung clock nối tiếp
• SDA I2C - Chân dữ liệu nối tiếp
• INT - Ngừng hoạt động khi cấp mức logic thấp vào chân này
• IRD - Chân Cathode LED hồng ngoại kết nối với IC điều khiển LED (Mắc kiểu Floating)
• RD - LED đỏ Cathode và Điểm kết nối trình điều khiển LED (Mắc kiểu Floating)
Ưu nhược điểm của module MAX30100
Chức năng đo nhịp tim và Oxy: MAX30100 kết hợp cảm biến đo nhịp tim (PPG
- Photoplethysmography) và cảm biến đo nồng độ oxy (SpO2) trong cùng một module, giúp tiết kiệm không gian và giảm chi phí.
Kích thước nhỏ gọn: Module có kích thước nhỏ, dễ tích hợp vào các thiết bị điện tử và dự án IoT.
Cảm biến quang học chính xác cung cấp khả năng đo nhịp tim và nồng độ oxy với độ chính xác cao, rất phù hợp cho các ứng dụng theo dõi sức khỏe cá nhân Công nghệ này còn nổi bật với mức tiêu thụ năng lượng thấp, giúp người dùng dễ dàng theo dõi sức khỏe mà không lo lắng về việc sạc pin thường xuyên.
MAX30100 được tối ưu hóa để tiêu thụ năng lượng thấp, lý tưởng cho các thiết bị sử dụng pin và ứng dụng di động, đồng thời dễ dàng sử dụng.
Giao tiếp I2C: Module giao tiếp qua giao thức I2C, đơn giản hóa việc kết nối và giao tiếp với các vi điều khiển như Arduino hoặc ESP32.
Thư viện phần mềm có sẵn: Có nhiều thư viện và tài liệu hỗ trợ cho việc lập trình và tích hợp module vào các dự án.
Chế độ điều chỉnh đầu vào cho phép người dùng tùy chỉnh cường độ đèn LED và độ nhạy của cảm biến, từ đó nâng cao độ chính xác trong nhiều điều kiện ánh sáng khác nhau.
Nhược điểm của module đo là yêu cầu đặt vị trí chính xác trên cơ thể, thường là ngón tay hoặc cổ tay, để đảm bảo kết quả đo chính xác và cần sự ổn định trong quá trình đo Ngoài ra, module cũng bị ảnh hưởng bởi điều kiện môi trường như ánh sáng, chuyển động của người dùng và các yếu tố ngoại cảnh khác, dẫn đến độ chính xác có thể giảm trong điều kiện không lý tưởng Hơn nữa, module này không hỗ trợ đo tần suất cao.
Mặc dù MAX30100 là lựa chọn tốt cho các ứng dụng theo dõi sức khỏe thông thường, nhưng nó có thể không đáp ứng được yêu cầu đo nhịp tim hoặc nồng độ oxy với tần suất cao.
Hạn chế tích hợp trong một số ứng dụng sức khỏe có thể gây khó khăn khi chỉ cung cấp hai chỉ số như nhịp tim và oxy Ngoài ra, độ chính xác của dữ liệu có thể biến đổi tùy thuộc vào cách sử dụng, chất lượng da và các yếu tố cá nhân khác.
Màn Hình LCD Oled 0.96 Inch
Các tính năng chính
Ánh sáng tự phát sáng của công nghệ OLED sử dụng diodes phát sáng hữu cơ, cho phép mỗi điểm ảnh phát sáng độc lập mà không cần đèn nền, mang lại màu sắc sắc nét và độ tương phản cao Điều đặc biệt là các điểm ảnh OLED có khả năng tắt hoàn toàn, tạo ra màu đen thật sự, giúp hình ảnh trở nên sắc nét hơn và dễ đọc hơn ngay cả trong điều kiện ánh sáng mạnh.
Màn hình OLED nổi bật với khả năng nhìn rộng, cho phép người dùng quan sát nội dung từ nhiều góc độ mà không gặp phải hiện tượng biến dạng màu sắc hay giảm độ sáng Đặc biệt, với độ phân giải 128 x 64 pixel, màn hình này cung cấp chất lượng hiển thị văn bản và đồ họa rõ nét, ngay cả trong thiết kế nhỏ gọn.
Kích Thước: 0.96 inch (diagonal), rất nhỏ gọn, phù hợp cho các dự án không gian hạn chế hoặc các thiết bị đeo tay.
Giao Tiếp: Thông thường sử dụng giao tiếp I2C hoặc SPI.
I2C: Dễ dàng kết nối với nhiều thiết bị và tiết kiệm số lượng dây nối Thường sử dụng các chân SDA (Dữ liệu) và SCL (Xung clock).
SPI: Cung cấp tốc độ truyền dữ liệu nhanh hơn so với I2C, nhưng cần nhiều chân nối hơn (MOSI, MISO, SCK, CS).
Màu sắc của sản phẩm thường là đơn sắc, như đen trắng hoặc trắng đen, nhưng một số phiên bản hỗ trợ nhiều màu sắc Độ sáng có thể điều chỉnh, giúp hiển thị rõ nét trong cả điều kiện ánh sáng yếu và mạnh.
Ưu điểm và Hạn chế
Ưu điểm: Độ Sáng và Tương Phản Cao: Cung cấp hình ảnh rõ nét và dễ đọc trong các điều kiện ánh sáng khác nhau.
Tiết Kiệm Năng Lượng: Tiêu thụ ít năng lượng hơn so với màn hình LCD khi hiển thị các hình ảnh tối.
Kích Thước Nhỏ Gọn: Phù hợp cho các ứng dụng yêu cầu không gian nhỏ.
Tuổi Thọ: Có thể gặp vấn đề về "burn-in" (hiện tượng điểm ảnh lưu lại dấu vết của hình ảnh cũ).
Chi Phí: Thường có giá cao hơn so với màn hình LCD truyền thống.
Sơ đồ chân màn hình OLED 0.96 I2C
• VCC: nguồn cấp cho màn hình, có thể là 3.3V hoặc 5V
Hình 1.7 Sơ đồ chân OLED 0.96 I2C
• SDA: chân dữ liệu nối tiếp
Giao thức kết nối I2C
Cấu Trúc Giao Tiếp
Giao thức I2C hoạt động dựa trên nguyên tắc Master-Slave, trong đó một thiết bị Master chịu trách nhiệm điều khiển quá trình truyền và nhận dữ liệu từ các thiết bị Slave Một Master có khả năng kết nối với nhiều Slave, với mỗi Slave được xác định bằng một địa chỉ duy nhất.
SDA (Dòng Dữ Liệu Tuần Tự) là đường truyền chính để gửi dữ liệu, trong khi SCL (Dòng Đồng Hồ Tuần Tự) cung cấp tín hiệu đồng hồ nhằm đồng bộ hóa quá trình truyền tải dữ liệu.
Hình 1.8 Mô hình giao tiếp I2C một MASTER với nhiều SLAVE Điện Trở Kéo Lên (Pull-up Resistors):
Cả hai dây SDA và SCL cần có điện trở kéo lên để duy trì mức cao khi không có tín hiệu, với giá trị thường dao động từ 1 kΩ đến 10 kΩ.
Cơ Chế Hoạt Động
Mỗi thiết bị trên bus I2C có một địa chỉ duy nhất Địa chỉ có thể là 7-bit (0-127) hoặc 10-bit (0-1023), tùy thuộc vào cấu hình hệ thống.
Thiết bị Master và Slave:
Master: Là thiết bị khởi xướng truyền thông và điều khiển giao thức Chỉ có một thiết bị Master trên bus I2C tại một thời điểm.
Slave: Là các thiết bị nhận lệnh từ Master và có thể gửi hoặc nhận dữ liệu Một bus I2C có thể có nhiều thiết bị Slave.
Hình 1.9 Giao thức truyền dữ liệu
Start Condition: Được tạo ra khi SDA chuyển từ mức cao xuống mức thấp trong khi SCL ở mức cao Điều này báo hiệu bắt đầu một giao dịch.
Stop Condition: Được tạo ra khi SDA chuyển từ mức thấp lên mức cao trong khi SCL ở mức cao Điều này báo hiệu kết thúc một giao dịch.
Sau mỗi byte dữ liệu, thiết bị nhận sẽ gửi tín hiệu xác nhận (ACK) ở mức thấp để đảm bảo rằng byte đã được nhận thành công Nếu tín hiệu ACK không được nhận, có thể xảy ra lỗi trong quá trình truyền thông.
Data Transfer: Dữ liệu được truyền theo từng byte, mỗi byte bao gồm 8 bit
Chế độ truyền thông
• Standard Mode: Tốc độ tối đa 100 kbps.
• Fast Mode: Tốc độ tối đa 400 kbps.
• Fast-mode Plus: Tốc độ tối đa 1 Mbps.
• High-speed Mode: Tốc độ tối đa 3.4 Mbps.
Ưu điểm và nhược điểm
Đơn giản và tiết kiệm là ưu điểm nổi bật của hệ thống này, khi chỉ cần sử dụng hai dây để truyền dữ liệu và đồng hồ Điều này giúp giảm thiểu số lượng dây kết nối so với các giao thức khác, mang lại sự tiện lợi và hiệu quả trong việc lắp đặt và vận hành.
Khả Năng Kết Nối Nhiều Thiết Bị: Cho phép kết nối nhiều thiết bị trên cùng một bus, với khả năng mở rộng dễ dàng.
Dễ Dàng Triển Khai: Đơn giản để lập trình và quản lý, phù hợp cho các ứng dụng điện tử cơ bản.
Khoảng Cách Truyền Ngắn: Thích hợp cho truyền thông trong khoảng cách ngắn(vài mét).
Tốc Độ Hạn Chế: Tốc độ truyền dữ liệu không cao như một số giao thức khác (nhưSPI hoặc UART).
Ngôn ngữ lập trình và phần mềm
ESP32 hỗ trợ đa dạng ngôn ngữ lập trình và công cụ phần mềm, trong đó C/C++ là ngôn ngữ phổ biến nhất Các phần mềm hỗ trợ lập trình cho ESP32 bao gồm Arduino IDE và ESP-IDF.
Trong học phần thiết kế đồ án II, tôi đã chọn ngôn ngữ C++ để lập trình cho vi điều khiển ESP32 C++ với các tính năng lập trình hướng đối tượng như lớp, đối tượng, kế thừa và đa hình giúp tổ chức mã nguồn hiệu quả hơn và tăng khả năng tái sử dụng mã Tôi cũng sử dụng phần mềm Arduino IDE làm trình biên dịch cho ESP32, vì đây là một lựa chọn phổ biến với giao diện đơn giản, dễ sử dụng và hỗ trợ nhiều thư viện.
Trong thiết kế và layout mạch trên PCB, phần mềm Altium Designer là lựa chọn hàng đầu, hoạt động trên hệ điều hành Windows Altium cung cấp môi trường tích hợp toàn diện cho thiết kế PCB, bao gồm các công cụ thiết kế mạch điện, thiết kế PCB và mô phỏng trong một giao diện duy nhất Điều này giúp tối ưu hóa quy trình thiết kế và giảm thiểu lỗi hiệu quả.
CHƯƠNG 2 THIẾT KẾ HỆ THỐNG
Trình tự hoạt động của mạch
Mạch hoạt động bắt đầu từ việc khởi động và bao gồm ba khối chính: khối khởi động cảm biến MAX30102, khối khởi động màn hình LCD SSD1306, và khối đọc và xử lý dữ liệu Khi khởi động, mạch tự động kiểm tra hệ thống để phát hiện lỗi Nếu có lỗi xảy ra, còi buzzer sẽ báo hiệu và người dùng cần kiểm tra lại cách đi dây trước khi khởi động lại.
Khởi động cảm biến MAX30102
Khi người dùng khởi động hệ thống, ESP32 sẽ bắt đầu khởi động cảm biến MAX30102, nếu:
Thành công: Sẽ hiển thị tin nhắn “SENSOR OK” lên trên màn hình và beep buzzer
2 tiếng liên tiếp để báo hiệu thành công.
Thất bại: Sẽ hiển thị tin nhắn “SENSOR ERROR” lên trên màn hình và beep buzzer 4 tiếng liên tiếp để báo hiệu thất bại.
Khởi động màn hình LCD SSD1306
Khi người dùng khởi động hệ thống, ESP32 sẽ bắt đầu khởi động màn hình LCD SSD1306, nếu:
Thành công: Sẽ hiển thị tin nhắn “LCD OK” lên trên màn hình và beep buzzer 2 tiếng liên tiếp để báo hiệu thành công.
Thất bại: Beep buzzer 4 tiếng liên tiếp để báo hiệu thất bại. Đọc dữ liệu và xử lý
Sau khi khởi động thành công, ESP32 sẽ tiến hành đo lường dữ liệu từ cảm biến MAX30102 và xử lý thông tin, sau đó hiển thị kết quả trên màn hình LCD SSD1306 Nếu người dùng rời tay khỏi cảm biến trong quá trình đọc dữ liệu, hệ thống sẽ tự động ngắt và hiển thị thông báo yêu cầu đặt lại tay để tiếp tục đo đạc.
Mô phỏng mạch trên altium
Thiết kế khối nguồn
Khối nguồn được thiết kế để sử dụng nguồn DC 9-12V, hạ áp xuống 5V nhờ IC LM7805 Hệ thống còn được trang bị hai tụ hoá C1, C2 1000µF để lọc tín hiệu điện, đảm bảo cung cấp nguồn ổn định cho ESP32, module cảm biến MAX30102 và màn hình OLED SSD1306.
Hình 2.1 Mô phỏng khối nguồn
IC7805 là vi mạch điều chỉnh điện áp ổn định thuộc dòng IC 78xx, nổi bật trong số các IC điều chỉnh điện áp tuyến tính Nó thường được ứng dụng trong các mạch điện tử để cung cấp điện áp ổn định từ nguồn điện đầu vào không ổn định.
IC7805 là một bộ điều chỉnh điện áp được thiết kế để cung cấp điện áp đầu ra ổn định 5V DC Nó có khả năng duy trì sự ổn định của điện áp đầu ra ngay cả khi điện áp đầu vào thay đổi hoặc có sự dao động.
• Pin 1 (Input): Chân đầu vào điện áp Điện áp đầu vào cần phải cao hơn điện áp đầu ra khoảng 2V (điện áp đầu vào thường là 7-12V DC).
• Pin 2 (Ground): Chân nối đất (GND).
• Pin 3 (Output): Chân đầu ra điện áp ổn định, thường là 5V DC.
• Điện Áp Đầu Ra: 5V DC±5% (thường là 5V chính xác).
• Dòng Điện Đầu Ra Tối Đa: Khoảng 1A (tuỳ thuộc vào tản nhiệt và điều kiện hoạt động).
Điện áp đầu vào tối đa không nên vượt quá 35V, và cần phải cao hơn điện áp đầu ra ít nhất 2V để đảm bảo hoạt động chính xác của thiết bị.
Tụ C1 được sử dụng để lọc điện áp đầu vào cho chân Vi của IC 7805, giúp cung cấp điện áp tạm thời khi nguồn điện đột ngột bị sụt áp.
Hình 2.2 Sơ đồ chân LM7805
Tụ C3 được sử dụng để lọc điện áp từ chân Vo của IC 7805, giúp cung cấp điện áp tạm thời cho tải tiêu thụ khi xảy ra hiện tượng sụt áp đột ngột.
Khối cảm biến và hiển thị
Trong khối này sẽ bao gồm kết nối của vi xử lí ESP32, module cảm biến MAX30102, màn hình OLED SSD1306 và còi buzzer.
Còi Buzzer được nối vào chân D5 của vi xử lí ESP32 để điều khiển kêu báo hiệu.
Màn hình OLED SSD1306 và module cảm biến MAX30102 sử dụng giao thức I2C để truyền nhận dữ liệu từ vi xử lý ESP32 Cả hai thiết bị đều kết nối với chân SDA ở D21 và chân SCL ở D22 của ESP32 Việc phân biệt giữa hai thiết bị này được thực hiện thông qua địa chỉ I2C mà chúng kết nối với vi xử lý.
Sơ đồ mạch hoàn chỉnh
Mạch PCB
Sau khi đã hoàn thành thiết kế Schematic, em tiến hành layout mạch trên PCB bằng phần mềm Altium.(Hình 2.5)
Lập trình cho VĐK
Khối hiển thị
Khối hiển thị sử dụng thư viện Adafruit SSD1306 để điều khiển màn hình OLED SSD1306 Đối tượng "display" được khởi tạo ở đầu chương trình code, cho phép sử dụng các chức năng điều khiển màn hình từ thư viện này.
Khối cảm biến
Khối cảm biến được khởi tạo từ lớp MAX30105 trong thư viện cảm biến, cho phép sử dụng các hàm điều khiển cảm biến Các biến được định nghĩa bên dưới nhằm lưu trữ thông tin buffer đo đạc từ cảm biến.
Khối setup
Sau khi khai báo các cảm biến và màn hình, tôi viết hàm setup() để khởi động ESP32, kiểm tra kết nối với các thiết bị ngoại vi.
Quá trình kiểm tra mạch sẽ bắt đầu khi nguồn điện được cắm vào và mạch bắt đầu hoạt động Nếu phát sinh lỗi trong quá trình kết nối, mạch sẽ dừng lại và không tiếp tục chạy Ngược lại, nếu không có lỗi, mạch sẽ báo kiểm tra thành công và tiếp tục thực hiện các chương trình đã được lập trình.
Hàm hoạt động chính
Sau khi hàm setup() hoàn tất, mạch sẽ chuyển sang thực hiện hàm loop(), nơi liên tục đo lường dữ liệu từ cảm biến Nếu chưa phát hiện tay người dùng đặt lên cảm biến, màn hình LCD sẽ hiển thị thông báo “Please place your finger”.
Khi người dùng chạm vào cảm biến, mạch sẽ tự động thu thập 100 mẫu tín hiệu để tính toán nhịp tim và nồng độ oxy trong máu.
Hình 2.4 Sơ đồ mạch trên altium
Mạch layout trên PCB được sử dụng để hiển thị kết quả trên màn hình LCD Quá trình lấy mẫu tín hiệu diễn ra trong khoảng 15-30 giây nhằm đảm bảo kết quả ổn định nhất.
Hình 2.6 Khởi tạo khối hiển thị
Hình 2.7 Khởi tạo khối cảm biến
Hình 2.9 Hàm hoạt động chính
KẾT QUẢ VÀ PHÁT TRIỂN 23
Kết quả thử nghiệm
Sau khi đã hoàn thành công đoạn thiết kế và code, em tiến hành nạp code vào ESP32.
Kết quả mạch chạy ổn định và chính xác theo thiết kế ban đầu Thuật toán đo nhịp tim và nồng độ oxy trong máu cần khoảng 15 đến 30 giây để cung cấp kết quả đo ổn định cho người dùng.
Hướng phát triển
Dựa trên kết quả nghiên cứu, tôi đề xuất một số hướng phát triển nhằm tối ưu hóa và nâng cao khả năng ứng dụng của đề tài.
Khuếch Đại Tín Hiệu: Thêm mạch khuếch đại để cải thiện độ chính xác của tín hiệu nếu cần.
Tản Nhiệt:Thêm các thiết bị tản nhiệt để đảm bảo rằng mạch không bị quá nhiệt, đặc biệt khi cảm biến hoạt động liên tục.
Lọc Tín Hiệu: Sử dụng các thuật toán lọc để loại bỏ nhiễu và cải thiện độ chính xác của dữ liệu.
Tính Toán Nhịp Tim: Áp dụng các thuật toán để tính toán nhịp tim từ tín hiệu quang học thu được.
3.2.3 Tính Năng Hiển Thị và Giao Tiếp
Giao tiếp không dây thông qua Bluetooth hoặc Wi-Fi cho phép truyền dữ liệu đến các thiết bị như điện thoại thông minh và máy tính Để tối ưu hóa trải nghiệm người dùng, việc phát triển ứng dụng di động giúp nhận dữ liệu từ cảm biến, hiển thị thông tin và lưu trữ lịch sử đo là rất cần thiết.
3.2.4 Tối Ưu Hóa Năng Lượng
Tiết kiệm năng lượng là yếu tố quan trọng đối với ứng dụng di động và thiết bị đeo, giúp tối ưu hóa việc sử dụng pin và kéo dài tuổi thọ của thiết bị.
Chế Độ Ngủ: Cung cấp các chế độ ngủ để tiết kiệm năng lượng khi cảm biến không hoạt động.
3.2.5 Bảo Mật và Bảo Vệ Dữ Liệu
Bảo Mật Dữ Liệu: Đảm bảo rằng dữ liệu cá nhân và sức khỏe được bảo vệ khi truyền qua mạng.
3.2.6 Hiệu Chỉnh và Kiểm Tra
Hiệu Chỉnh Cảm Biến: Thực hiện hiệu chỉnh để đảm bảo độ chính xác của cảm biến MAX30100 trong các điều kiện khác nhau.
Kiểm Tra Thực Tế: Thực hiện kiểm tra thực tế để đảm bảo rằng hệ thống hoạt động đúng như mong đợi trong các tình huống thực tế.
3.2.7 Tích Hợp và Ứng Dụng Thực Tế
Tích hợp với các hệ thống y tế chuyên nghiệp là cần thiết để nâng cao hiệu quả theo dõi sức khỏe Việc phát triển các ứng dụng chăm sóc sức khỏe, như thiết bị đeo tay cho bệnh nhân cần theo dõi nhịp tim liên tục, sẽ mang lại lợi ích lớn trong việc quản lý sức khỏe cá nhân.
Xác Thực Người Dùng: Phát triển hệ thống xác thực để đảm bảo rằng chỉ những người dùng được phép mới có thể truy cập dữ liệu.
3.2.8 Giao Diện Người Dùng và Phản Hồi
Giao diện thân thiện là yếu tố quan trọng trong phát triển sản phẩm, giúp người dùng cuối dễ dàng hiểu và sử dụng thiết bị Việc thiết kế giao diện người dùng dễ sử dụng không chỉ nâng cao trải nghiệm người dùng mà còn thúc đẩy sự tương tác hiệu quả.
Phản Hồi Người Dùng: Thu thập phản hồi từ người dùng để cải thiện thiết kế và chức năng của thiết bị.
Qua quá trình nghiên cứu đề tài “Thiết kế mạch đo nhịp tim bằng module MAX30100“, tôi nhận thấy kết quả khảo sát hoàn toàn phù hợp với lý thuyết đã tính toán Thực hiện đề tài này giúp tôi áp dụng kiến thức đã học vào sản phẩm thực tế, từ đó củng cố hiểu biết về vi điều khiển và kỹ năng thiết kế mạch điện tử cũng như layout trên PCB bằng phần mềm Altium.
Qua đồ án này, tôi nhận thấy đề tài không chỉ mang lại lợi ích thực tiễn mà còn giúp tôi tiếp thu nhiều kiến thức cơ bản về ngành điện tử Đồng thời, nó cũng nâng cao khả năng thuyết trình và tìm kiếm, nghiên cứu tài liệu cho sinh viên Đây là nền tảng vững chắc hỗ trợ tôi trong quá trình học tập và nghiên cứu sau này.
Em xin chân thành cảm ơn thầy Vũ Sinh Thượng đã nhiệt tình hướng dẫn và tạo điều kiện thuận lợi giúp em hoàn thành đồ án này!