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

Nghiên cứu, xây dựng thiết bị theo dõi nhịp tim và nồng độ oxy trong máu sử dụng ESP32

52 234 8
Tài liệu đã được kiểm tra trùng lặp

Đ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 52
Dung lượng 4,07 MB

Cấu trúc

  • LỜI NÓI ĐẦU

  • DANH MỤC HÌNH ẢNH

  • DANH MỤC BẢNG BIỂU

  • PHẦN 1: THỰC HÀNH

    • BÀI THỰC HÀNH 1: THIẾT KẾ MẠCH THEO SƠ ĐỒ

    • BÀI THỰC HÀNH 2: VIẾT PHẦN MỀM TẠI CHỖ CHO THIẾT BỊ

      • Bài 2.1: Bài điều khiển đơn giản: Viết chương trình cho mạch điều khiển bật tắt LED (Bóng đèn).

      • Bài 2.2: Bài giám sát đơn giản: Viết chương trình giám sát thông số cảm biến hiển thị lên LCD.

      • Bài 2.3: Bài toán giao tiếp: Viết chương trình kết nối ESP và Arduino thông qua giao tiếp UART.

    • BÀI THỰC HÀNH 3: ĐIỀU KHIỂN GIÁM SÁT QUA INTERNET

      • Bài 3.1: Điều khiển bật tắt LED và giám sát thông số cảm biến từ xa hiển thị trên ứng dụng.

  • PHẦN 2: BÁO CÁO MÔN HỌC

    • CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI

      • 1.1 Mục đích, yêu cầu

      • 1.2 Sơ đồ khối, chức năng

        • 1.2.1 Sơ đồ khối

        • 1.2.2 Chức năng các khối

      • 1.3 Nguyên lý hoạt động của thiết bị

        • 1.3.1 Cách đo nhịp tim bằng nhận biết sự thay đổi cường độ ánh sáng

        • 1.3.2 Tổng quan về hoạt động của cảm biến

        • 1.3.3 Xây dựng công thức xác định nhịp tim trong cảm biến MAX30100

        • 1.3.4 Sơ lược về chỉ số SpO2 và nhịp tim

    • CHƯƠNG 2: TỔNG QUAN VỀ ESP32

      • 2.1 Sơ lược về ESP32

      • 2.2 Cấu hình ESP32

      • 2.3 Sơ đồ chân, chức năng

    • CHƯƠNG 3: CÁC LINH KIỆN LIÊN QUAN, APPBLINK, WEBSERVER

      • 3.1 Cảm biến nhịp tim MAX30100

        • 3.1.1 Khái niệm

        • 3.1.2 Thông số kỹ thuật

        • 3.1.3 Sơ đồ chân

        • 3.1.4 Các đèn LED_thu và LED_nhận trong cảm biến MAX30100

      • 3.2 Còi chip

      • 3.3 LCD1602

      • 3.4 AppBlynk

      • 3.5 Webserver

    • CHƯƠNG 4: THIẾT KẾ, XÂY DỰNG THIẾT BỊ

      • 4.1 Thiết kế mạch

        • 4.1.1 Mạch nguyên lý

        • 4.1.2 Thiết kế mạch in, đi dây, sắp xếp linh kiện

      • 4.2 Lưu đồ thuật toán

      • 4.3 Mã nguồn

      • 4.4 Kết quả

    • KẾT LUẬN

    • TÀI LIỆU THAM KHẢO

Nội dung

MỤC LỤC LỜI NÓI ĐẦU 4 DANH MỤC HÌNH ẢNH 5 PHẦN 1: THỰC HÀNH 8 BÀI THỰC HÀNH 1: THIẾT KẾ MẠCH THEO SƠ ĐỒ 8 BÀI THỰC HÀNH 2: VIẾT PHẦN MỀM TẠI CHỖ CHO THIẾT BỊ 9 Bài 2.1: Bài điều khiển đơn giản: Viết chương trình cho mạch điều khiển bật tắt LED (Bóng đèn). 9 Bài 2.2: Bài giám sát đơn giản: Viết chương trình giám sát thông số cảm biến hiển thị lên LCD. 10 Bài 2.3: Bài toán giao tiếp: Viết chương trình kết nối ESP và Arduino thông qua giao tiếp UART. 12 BÀI THỰC HÀNH 3: ĐIỀU KHIỂN GIÁM SÁT QUA INTERNET 14 Bài 3.1: Điều khiển bật tắt LED và giám sát thông số cảm biến từ xa hiển thị trên ứng dụng. 14 PHẦN 2: BÁO CÁO MÔN HỌC 16 CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 16 1.1 Mục đích, yêu cầu 16 1.2 Sơ đồ khối, chức năng 16 1.3 Nguyên lý hoạt động của thiết bị 17 CHƯƠNG 2: TỔNG QUAN VỀ ESP32 21 2.1 Sơ lược về ESP32 21 2.2 Cấu hình ESP32 21 2.3 Sơ đồ chân, chức năng 24 CHƯƠNG 3: CÁC LINH KIỆN LIÊN QUAN, APPBLINK, WEBSERVER 30 3.1 Cảm biến nhịp tim MAX30100 30 3.2 Còi chip 35 3.3 LCD1602 36 3.4 AppBlynk 38 3.5 Webserver 39 CHƯƠNG 4: THIẾT KẾ, XÂY DỰNG THIẾT BỊ 41 4.1 Thiết kế mạch 41 4.2 Lưu đồ thuật toán 43 4.3 Mã nguồn 44   LỜI NÓI ĐẦU Ngày nay cùng với sự phát triển của nhanh chóng của khoa học kỹ thuật thì các lĩnh vực ứng dụng kỹ thuật công nghệ cao ngày càng phát triển và ngành Điện tử Viễn thông đang ngày càng khẳng định vai trò to lớn của mình. Trong cuộc sống hiện nay có rất nhiều yếu tố ảnh hưởng tới sức khỏe của con người, trong đó nhịp tim và lượng oxi trong máu có thể cho chúng ta dự đoán được tình hình sức khỏe của bản thân. Vì vậy việc theo dõi nhịp tim và lượng oxi trong máu là hết sức cần thiết. Vậy nên nhóm chúng em chọn đề tài: “Nghiên cứu, xây dựng thiết bị theo dõi nhịp tim và nồng độ oxy trong máu sử dụng ESP32”

THỰC HÀNH

BÀI THỰC HÀNH 1: THIẾT KẾ MẠCH THEO SƠ ĐỒ

Thiết kế mạch trên Proteus

Các linh kiện sử dụng:

- Cảm biến nhiệt độ DHT11

BÀI THỰC HÀNH 2: VIẾT PHẦN MỀM TẠI CHỖ CHO THIẾT BỊ

Bài điều khiển đơn giản: Viết chương trình cho mạch điều khiển bật tắt

To control a push button connected to pin 4, initialize the switch state variables with `int switchState = 0;` for the current state, `int oldSwitchState = 0;` for the previous state, and `int lightsOn = 0;` to indicate whether the switch is on (1) or off (0) In the `setup()` function, configure the button pin as an input with `pinMode(BUTTON, INPUT);` and set the LED or any device you wish to control as an output using `pinMode(LED, OUTPUT);`.

} void loop() { switchState = digitalRead(BUTTON); // read the pushButton State if (switchState != oldSwitchState) // catch change

{ oldSwitchState = switchState; if (switchState == HIGH)

{ digitalWrite(LED, HIGH); // set the LED on

} else { digitalWrite(LED, LOW); // set the LED off

Bài giám sát đơn giản: Viết chương trình giám sát thông số cảm biến hiển thị lên LCD

DHT dht(DHTPIN, DHTTYPE); float humidity, temp_f; unsigned long previousMillis = 0; // bien luu tam thoi de doc const long interval = 2000; // khoang thoi gian doc cam bien void setup(void)

Serial.begin(115200); dht.begin(); void loop(void)

String hs="HUMIDITY: "+String((int)humidity)+" % ";

String ts="TEMP: "+String((int)temp_f)+" C "; lcd.setCursor(0, 0); lcd.print(ts); lcd.setCursor(0, 1); lcd.print(hs);

To obtain the temperature and humidity readings, the function checks if the specified interval has elapsed If so, it updates the previous time and retrieves the humidity and temperature values from the DHT sensor In case of a reading error, it sets the humidity and temperature values to zero.

Serial.println("Failed to read from DHT sensor!"); return;

Bài toán giao tiếp: Viết chương trình kết nối ESP và Arduino thông qua

#define Rx 11 //Định nghĩa chân 11 là Rx

#define Tx 12 //Định nghĩa chân 12 là Tx

SoftwareSerial mySerial(Rx, Tx); //Khởi tạo cổng serial mềm

#define button 10 //Định nghĩa chân 10 là button boolean buttonstate = 1; //Chống dội và đè phím boolean ledstate = 0; //Trạng thái led void setup() {

To initialize the serial communication, use `Serial.begin(9600);` and `mySerial.begin(9600);` Set the button pin mode to `INPUT_PULLUP` to enable the pull-up resistor In the loop function, check if the button is pressed by reading its digital state If the button state changes from not pressed, send "ON" via the serial port if the LED is off, or send "OFF" if the LED is already on.

Serial.print(char(mySerial.read())); //Gửi ký tự nhận được ra cổng serial

#define LED 2 //Định nghĩa chân 2 là Led void setup() {

Serial.begin(9600); //Khởi tạo cổng serial pinMode(LED,OUTPUT);

} void loop() { if(Serial.available()){

String RxBuffer=""; while(Serial.available()){

RxBuffer = Serial.readString();//Đọc tất cả bộ đệm

} if(RxBuffer=="ON"){ //Kiểm tra chuỗi nhận digitalWrite(LED,LOW);

}else if(RxBuffer=="OFF"){ digitalWrite(LED,HIGH);

BÀI THỰC HÀNH 3: ĐIỀU KHIỂN GIÁM SÁT QUA INTERNET

Điều khiển bật tắt LED và giám sát thông số cảm biến từ xa hiển thị trên ứng dụng

Sơ đồ đấu nối và AppBlynk

LiquidCrystal lcd(12, 11, 6, 5, 4, 3); char auth[] = "UG-dtwJFH-iNTuVXpKT5bq9_akdzKk-b"; const int DHTPIN = 2; const int DHTTYPE = DHT11;

{ float h = dht.readHumidity(); float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit if (isnan(h) || isnan(t)) { esp.println("Failed to read from DHT sensor!"); return;

In the setup function, the LCD is initialized with a 16x2 configuration, displaying the message "Phat trien UD IoT" and "Do nhiet do do am" on separate lines After a one-second delay, the display is cleared, and it shows "Nhiet do: " on the first line while "Do am: " is positioned on the second line The ESP module is then initialized to communicate at a baud rate of 9600.

Blynk.begin(Serial, auth); dht.begin(); timer.setInterval(1000L, sendSensor); pinMode(led2, OUTPUT);

} void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit if (isnan(t) || isnan(h)) {

}else{ lcd.setCursor(10,0); lcd.print(round(t)); lcd.print(" "); lcd.write(1); lcd.print("C"); lcd.setCursor(10,1); lcd.print(round(h)); lcd.print(" %");

} if (led1.getValue()) { led1.off(); esp.println("LED on V1: off");

} else { led1.on(); esp.println("LED on V1: on");

} if(t>50 || h>80){ digitalWrite(led2, HIGH); delay(1000); digitalWrite(led2, LOW); delay(1000); lcd.clear(); lcd.print("canh bao !!!!!"); lcd.noDisplay(); delay(500); lcd.display(); delay(500); return;

TỔNG QUAN VỀ ĐỀ TÀI

Mục đích, yêu cầu

- Củng cố về kiến thức của môn học về mô hình, thành phần, các đặc điểm, … của một hệ thống IOT.

- Tìm hiểu về các chip nhúng phổ biến và ứng dụng của nó

- Xây dựng một sản phẩm IOT dựa trên các kiến thức đã tiếp thu.

Sơ đồ khối, chức năng

Hình 1.1: Sơ đồ khối1.2.2 Chức năng các khối

- Khối nguồn: cung cấp nguồn cho toàn mạch.

- Khối ESP32: xử lý tín hiệu từ cảm biến, gửi và nhận dữ liệu với khối Internet

- Khối cảm biến: thu thập dữ liệu nhịp tim và nồng độ oxi trong máu gửi lại ESP32.

- Khối Internet: nhận dữ liệu từ ESP32 hiện thị lên AppBlink và Web, cảnh báo khi nhịp tim không ở trong khoảng an toàn.

Nguyên lý hoạt động của thiết bị

1.3.1 Cách đo nhịp tim bằng nhận biết sự thay đổi cường độ ánh sáng

Nguyên tắc hoạt động của cảm biến là sử dụng một LED phát và một LED thu Khi cung cấp nguồn V++ cho cảm biến, LED phát phát ra bức xạ hồng ngoại với bước sóng λIR = 880 nm Khi người đo đặt ngón tay vào cảm biến, bức xạ hồng ngoại sẽ được khuếch tán sâu vào ngón tay và bị phản xạ, khúc xạ, tán xạ và hấp thụ bởi các mô và lớp bì của da Mặc dù bức xạ bị tiêu hao, một phần vẫn được phản xạ trở lại và LED thu có khả năng phát hiện ngay cả những thay đổi nhỏ Thay đổi này liên quan đến lượng máu đi qua ngón tay qua các mạch máu, phản ánh nhịp tim của cơ thể theo từng “đợt” bơm máu của tim.

1.3.2 Tổng quan về hoạt động của cảm biến

Một bộ phận của cảm biến có khả năng đọc và phân biệt sự thay đổi của bức xạ trước và sau khi khuếch tán vào da Các tín hiệu quang này được chuyển đổi thành tín hiệu điện và gửi đến ESP32, từ đó hiển thị kết quả trên màn hình và gửi lên ứng dụng Blink và Web Bộ biến đổi ADC được tích hợp trên cảm biến, cho phép nó đọc những thay đổi của bức xạ khuếch tán vào da và chuyển đổi tín hiệu quang thành tín hiệu điện, giúp nó nhạy cảm với những biến đổi do bức xạ từ môi trường xung quanh.

1.3.3 Xây dựng công thức xác định nhịp tim trong cảm biến MAX30100

Ngay khi tín hiệu tại LED thu bị suy giảm, thời điểm này sẽ được ghi lại, và sau đó tần số sẽ chuyển sang tần số cắt (cut-off frequency) Việc lưu dấu thời gian cho phép chúng ta so sánh độ trễ giữa hai thời điểm quan trọng: thời điểm ban đầu và thời điểm bắt đầu suy giảm, theo công thức đã được xác định.

Nhịp tim được đo bằng số lần đập trong một phút, và chỉ số SpO2 phản ánh mức độ bão hòa oxy trong máu Hình 1.2 mô tả quá trình ánh sáng từ LED phát ra chiếu vào mao mạch và sau đó phản xạ trở lại LED thu để đọc tín hiệu.

SpO2 là viết tắt của cụm từ Saturation of peripheral oxygen - độ bão hòa oxy trong máu ngoại vi.

SpO2 từ 97 - 99%: Chỉ số oxy trong máu tốt;

SpO2 từ 94 - 96%: Chỉ số oxy trong máu trung bình, cần thở thêm oxy;

SpO2 từ 90% - 93%: Chỉ số oxy trong máu thấp, cần xin ý kiến của bác sĩ chủ trị;

SpO2 dưới 92% không thở oxy hoặc dưới 95% có thở oxy: Dấu hiệu suy hô hấp rất nặng; SpO2 dưới 90%: Biểu hiện của một ca cấp cứu trên lâm sàng.

Hình 1.3: Tiêu chuẩn nhịp tim

TỔNG QUAN VỀ ESP32

Sơ lược về ESP32

ESP32 là một dòng vi điều khiển giá rẻ, tiết kiệm năng lượng, hỗ trợ WiFi và Bluetooth dual-mode, sử dụng bộ vi xử lý Tensilica Xtensa LX6 với cả hai biến thể lõi kép và lõi đơn Dòng sản phẩm này bao gồm các tính năng như công tắc antenna tích hợp, RF, bộ khuếch đại công suất, bộ khuếch đại thu nhiễu thấp, bộ lọc và module quản lý năng lượng Được phát triển bởi Espressif Systems, một công ty có trụ sở tại Thượng Hải, ESP32 được sản xuất bởi TSMC với công nghệ 40 nm và là sản phẩm kế thừa của vi điều khiển ESP8266.

Cấu hình ESP32

Hình 2.5: Sơ đồ khối ESP32

- CPU: Bộ vi xử lý Xtensa lõi kép (hoặc lõi đơn) 32-bit LX6, hoạt động ở tần số 160 hoặc 240 MHz và hoạt động ở tối đa 600 DMIPS

- Bộ đồng xử lý (co-processor) công suất cực thấp (Ultra low power, viết tắt: ULP)

- 448 KB bộ nhớ ROM cho việc booting và các tính năng lõi

- 520 KB bộ nhớ SRAM trên chip cho dữ liệu và tập lệnh

- Bluetooth: v4.2 BR/EDR và BLE (chia sẻ sóng vô tuyến với Wi-Fi)

34 GPIO pad vật lý với các giao diện ngoại vi:

- 10 cảm biến cảm ứng (touch sensor) (GPIO cảm ứng điện dung)

- SD/SDIO/CE-ATA/MMC/eMMC host controller

- Ethernet MAC interface cho DMA và IEEE 1588 Precision Time Protocol

(tạm dịch: Giao thức thời gian chính xác IEEE 1588)

- Bộ điều khiển hồng ngoại từ xa (TX/RX, lên đến 8 kênh)

- PWM cho điều khiển động cơ

- LED PWM (lên đến 16 kênh)

- Cảm biến hiệu ứng hall

- Bộ tiền khuếch đại analog công suất cực thấp (Ultra low power analog pre-amplifier)

- Hỗ trợ tất cả các tính năng bảo mật chuẩn IEEE 802.11, bao gồm WFA,

- Secure boot (tạm dịch: khởi động an toàn)

- 1024-bit OTP, lên đến 768-bit cho khách hàng

Accelerate hardware encryption with advanced algorithms such as AES, SHA-2, RSA, and Elliptic Curve Cryptography (ECC) Additionally, implement a robust Random Number Generator (RNG) to enhance security measures.

- Bộ ổn áp nội với điện áp rơi thấp (internal low-dropout regulator)

- Miền nguồn riêng (individual power domain) cho RTC

- Dòng 5 μA cho chế độ deep sleep

- Trở lại hoạt động từ ngắt GPIO, timer, đo ADC, ngắt với cảm ứng điện dung

Sơ đồ chân, chức năng

Hình 2.6: Sơ đồ chân ESP32

GPIO từ 34 đến 39 là GPI - chân chỉ đầu vào

Các chân này không có điện trở kéo lên hoặc kéo xuống bên trong và không thể được sử dụng làm đầu ra Do đó, chỉ nên sử dụng các chân này làm đầu vào.

SPI flash tích hợp ESP-WROOM-32

GPIO cảm ứng điện dung

ESP32 được trang bị 10 cảm biến cảm ứng điện dung, cho phép phát hiện cử chỉ từ mọi vật thể có điện tích, bao gồm cả da người Điều này cho phép người dùng tương tác với GPIO bằng cách chạm ngón tay, dễ dàng tích hợp vào miếng đệm điện dung và thay thế các nút cơ học Ngoài ra, các chân cảm ứng điện dung còn có khả năng đánh thức ESP32 từ chế độ ngủ, mang lại sự tiện lợi trong việc sử dụng.

Bộ chuyển đổi tương tự sang kỹ thuật số (ADC)

ESP32 có các kênh đầu vào ADC 18 x 12 bit (trong khi ESP8266 chỉ có ADC 1x

Chuyển đổi kỹ thuật số sang tương tự (DAC)

Có các kênh DAC 2 x 8bit trên ESP32 để chuyển đổi tín hiệu kỹ thuật số thành đầu ra tín hiệu điện áp tương tự

ESP32 hỗ trợ 16 kênh PWM độc lập, cho phép cấu hình tín hiệu PWM với các thuộc tính khác nhau Tất cả các chân có thể hoạt động như đầu ra đều có thể được sử dụng để tạo tín hiệu PWM, ngoại trừ GPIOs 34 đến 39 Để thiết lập tín hiệu PWM, cần xác định các tham số trong mã lập trình.

- Tần số tín hiệu-Signal’s frequency

- Chu kỳ nhiệm vụ-Duty cycle

- GPIO được chọn khi bạn muốn xuất tín hiệu.

ESP32 có hai kênh I2C và bất kỳ pin nào cũng có thể được đặt là SDA hoặc SCL Các chân I2C mặc định là.:

Theo mặc định các chân được sử dụng cho module SPI:

Tất cả các chân đều có thể cấu hình thành ngắt.

Chân cấu hình chế khởi động

GPIO 5 (phải CAO trong khi khởi động)

GPIO 12 (phải THẤP trong khi khởi động)

GPIO 15 (phải CAO trong khi khởi động)

Chúng được sử dụng để đặt ESP32 vào bộ nạp khởi động hoặc chế độ nhấp nháy

Chân ở mức cao khi khởi động

Một số chân GPIO trên ESP32 có thể chuyển đổi trạng thái thành tín hiệu CAO hoặc đầu ra khi khởi động hoặc đặt lại Điều này có thể dẫn đến việc nhận được kết quả không mong muốn nếu đầu ra được kết nối với các chân GPIO này trong quá trình khởi động hoặc reset.

GPIO 6 đến GPIO 11 (được kết nối với bộ nhớ flash SPI tích hợp ESP32 – không nên sử dụng).

Chân EN là chân kích hoạt của bộ điều chỉnh 3.3V và được kéo lên để vô hiệu hóa bộ điều chỉnh này khi kết nối với mặt đất Điều này cho phép bạn sử dụng chân EN kết nối với một nút bấm, giúp khởi động lại ESP32 của bạn như một nút reset.

Giới hạn dòng điện trên các chân GPIO

Dòng điện tối đa tuyệt được cung cấp trên mỗi GPIO là 40mA theo phần

Cảm biến Hall tích hợp ESP32

ESP32 cũng có cảm biến hiệu ứng hội trường tích hợp giúp phát hiện các thay đổi trong từ trường trong môi trường xung quanh.

CÁC LINH KIỆN LIÊN QUAN, APPBLINK, WEBSERVER

Cảm biến nhịp tim MAX30100

Module cảm biến MAX30100 của Maxim có khả năng đo nồng độ oxy trong máu và nhịp tim thông qua công nghệ quang học Cảm biến này sử dụng hai bước sóng ánh sáng từ một LED đỏ và một LED hồng ngoại để đo sự hấp thụ của máu đang lưu thông Tín hiệu được thu thập bởi một bộ cảm biến ánh sáng, cho phép đọc dữ liệu chính xác tại đầu ngón tay.

Cảm biến nhịp tim và Oxy trong máu MAX30100 được ứng dụng rộng rãi trong lĩnh vực y sinh nhờ vào phương pháp đo quang phổ hiện đại Với thiết kế và chất liệu mắt đo chính hãng từ Maxim, cảm biến này đảm bảo độ chính xác cao, độ bền tốt và độ nhiễu thấp Hơn nữa, cảm biến tích hợp giao tiếp I2C, giúp dễ dàng kết nối với Arduino cho các ứng dụng phát triển.

Cảm biến nhịp tim MAX30100 tích hợp ADC sigma delta 16-bit và bộ xử lý tín hiệu tương tự với độ nhiễu thấp, đảm bảo độ chính xác và ổn định cao Thiết kế nhỏ gọn của nó cho phép sử dụng như thiết bị đeo tay và dễ dàng kết nối với các MCU, Arduino và Raspberry Pi.

MAX30100 là cảm biến đo nhịp tim tích hợp với 2 đèn LED (1 LED thu và 1 LED phát), cho phép đo nồng độ oxy và nhịp tim một cách chính xác và ổn định nhờ vi xử lý tín hiệu tương tự độ nhiễu thấp Thiết bị hoạt động với nguồn điện 1,8V và 3,3V, có thời gian chờ không đáng kể, thích hợp cho các ứng dụng như thiết bị trợ lý thể dục và giám sát y tế Với kích thước nhỏ gọn 5,6mm x 2,8mm x 1,2mm, MAX30100 cung cấp hiệu suất cao với mức tiêu thụ năng lượng thấp, kéo dài tuổi thọ hoạt động Tính năng tiết kiệm năng lượng thông qua tỷ lệ mẫu có thể lập trình và dòng điện LED tối ưu hóa, cùng với khả năng phục hồi chuyển động mạnh mẽ nhờ SNR cao, giúp giảm thiểu nhiễu ánh sáng xung quanh Thiết bị cũng có khả năng xuất dữ liệu nhanh chóng, nâng cao hiệu suất đo đạc.

Hình 3.8: Sơ đồ nguyên lý của cảm biến MAX30100

MAX 30100 là hệ thống cảm biến nhịp tim nhạy bén, được thiết kế để tích hợp trong các thiết bị đo nhịp tim Với diện tích bề mặt nhỏ gọn, MAX 30100 mang lại giải pháp đo nhịp tim hiệu quả mà không ảnh hưởng đến hiệu suất quang học và tiêu thụ điện Thiết bị này có khả năng cấu hình toàn diện qua phần mềm, đồng thời lưu trữ dữ liệu đầu ra kỹ thuật số ở mức sâu 16 FIFO, giúp tối ưu hóa quá trình thu thập và phân tích dữ liệu.

30100 được kết nối với vi điều khiển hoặc bộ khối vi xử lý Ngoài ra cảm biến còn có 2 chức năng đặc biệt khác:

Cảm biến nhiệt độ trên chip giúp điều chỉnh sự phụ thuộc nhiệt độ của hệ thống SpO2 Thuật toán SpO2 ít nhạy cảm với bước sóng của đèn LED_IR, nhưng lại rất nhạy cảm với bước sóng của đèn LED_R, điều này rất quan trọng cho việc giải thích và phân tích dữ liệu.

Trình điều khiển LED của MAX30100 bao gồm các thành phần LED_R và LED_IR, cho phép điều khiển dòng điện để đo SpO2 và nhịp tim Đèn LED có khả năng lập trình từ 0 mA đến 50 mA, với điện áp cung cấp phù hợp Độ rộng xung LED cũng có thể được điều chỉnh từ 200 µs đến 1,6 ms, nhằm tối ưu hóa độ chính xác trong đo lường và giảm mức tiêu thụ điện năng theo từng trường hợp sử dụng.

Hình 3.9: Sơ đồ khối mô tả một cách đơn giản hoạt động của cảm biến

FIFO (First-In-First-Out) là một loại bộ nhớ đệm quan trọng trong các hệ thống truyền dẫn số, thường được sử dụng trong các thiết bị lưu trữ Như tên gọi, dữ liệu được ghi vào trước sẽ được đọc ra trước FIFO không sử dụng địa chỉ mà chỉ có các cổng điều khiển để đọc và ghi dữ liệu Khi có tín hiệu cho phép ghi, dữ liệu từ bên ngoài sẽ được lưu trữ trong bộ nhớ đệm, và khi có tín hiệu cho phép đọc, dữ liệu sẽ được xuất ra theo thứ tự đã ghi Tùy thuộc vào yêu cầu cụ thể, FIFO có thể được thiết kế theo nhiều cách khác nhau, trong đó sơ đồ đơn giản nhất thường sử dụng khối RAM đồng bộ với hai cổng đọc và ghi độc lập.

Hình 3.10: Hình vẽ mô tả sơ đồ nguyên lý hoạt động của FIFO

- Điện áp hoạt động: 1.8V - 3.3V (DC)

- Ultra-Low Shutdown Current (0.7àA)

- 16-deep FIFO được tích hợp bên trong thiết bị

- Tốc độ đọc dữ liệu 50Hz to 1kHz

- Cảm biến quang: IR, led hồng ngoại & bộ tách sóng quang

- Hổ trợ giao tiếp I2C với chân INT

- Nhiệt độ hoạt động: -40°C đến +85°C

Hình 3.11: Sơ đồ chân MAX30100 Bảng 3.1: Chức năng các chân MAX30100

Ký hiệu Loại Mô tả

1 VIN Power Nguồn cấp 1.8V - 5.5V (khuyên dùng 5V)

4 INT Outpu t Chân INT của MAX30100

5 IRD Chân IR_DRV của MAX30100

6 RD Chân R_DRV của MAX30100

7 GND Power Điện áp đất 0V

Chân VIN cung cấp năng lượng cho cảm ứng, trong khi chân SCL đóng vai trò là chân clock, giúp đồng bộ hóa truyền dữ liệu giữa các thiết bị với xung clock từ thiết bị chủ Chân SDA là chân truyền dữ liệu, cả hai chân này luôn hoạt động ở chế độ mở và cần có trở nối với +5V để các thiết bị giao tiếp I2C hoạt động ở mức thấp Chân INT cho phép dòng điện đi ra với chế độ trở kháng thấp, chân IRD là chân của LED hồng ngoại, chân RD là chân của LED đỏ thường, và chân GND là chân nối đất của cảm biến.

3.1.4 Các đèn LED_thu và LED_nhận trong cảm biến MAX30100

Để tiết kiệm năng lượng, nguồn điện LED cần được thiết kế để xử lý dòng điện thất thoát tại đỉnh sóng, ngăn chặn tín hiệu nhiễu quang Điện trở và điện cảm từ nguồn điện (pin, bộ chuyển đổi DC/DC hoặc LDO) phải có giá trị nhỏ hơn 1Ω, và cần có ít nhất 1µF sai số điện dung để đảm bảo hoạt động hiệu quả trong các dòng điện có trở kháng thấp Trong chế độ chỉ có nhịp tim, đèn LED màu đỏ không hoạt động, chỉ có đèn LED hồng ngoại được sử dụng để thu thập dữ liệu quang và xác định nhịp tim, giúp tiết kiệm năng lượng tối ưu.

Còi chip

Loa Buzzer 5V (còi chíp, còi bíp) là một sản phẩm còi báo hiệu thường được sử dụng trong các mạch điện tử Với thiết kế nhỏ gọn và chân cắm tiện lợi, sản phẩm này rất phù hợp cho các ứng dụng báo động và tạo âm thanh cho tín hiệu.

Thông số kỹ thuật Loa Buzzer 5V

- Dòng điện tiêu thụ: 80 dB

- Nhiệt độ hoạt động: -20 °C đến +70 °C

- Kích thước: Đường kính 12mm, cao 9,7mm

LCD1602

Màn hình LCD1602A đơn sắc với khả năng hiển thị 2x16 ký tự là lựa chọn phổ biến trong các ứng dụng vừa và nhỏ nhờ vào sự đơn giản trong giao tiếp và điều khiển Trong những năm gần đây, màn hình LCD ngày càng được ưa chuộng và dần thay thế các đèn LED.

- Màn hình LCD có giá thành thấp

- Khả năng hiển thị số, kí tự và đồ hoạ tốt hơn nhiều so với đèn LED.

Các chân giao tiếp của LCD1602A

VDD, GND và Vo là các chân kết nối quan trọng trong việc cấp nguồn cho màn hình LCD, với VDD cung cấp điện áp 5V và GND là đất Chân Vo được sử dụng để điều chỉnh độ tương phản của màn hình, thường thông qua một biến trở có giá trị từ 5K đến 10K để điều chỉnh mức điện áp vào chân này Mặc dù màn hình LCD hoạt động với điện áp nguồn 5V, nhưng nó vẫn có khả năng giao tiếp với FPGA ở mức điện áp 3.3V.

- Hai chân LED+, LED- dùng để cấp nguồn cho đèn Back Light tích hợp phía sau LCD để tăng độ sáng cho màn hình, có thể nối hoặc không

LCD_RS (Register Select) là tín hiệu dùng để chọn giữa hai loại thanh ghi trong LCD: thanh ghi lệnh và thanh ghi dữ liệu Khi RS = 1, thanh ghi lệnh được chọn, trong khi khi RS = 0, thanh ghi dữ liệu sẽ được truy cập.

- LCD_R/W: Tín hiệu quy định chiều trao đổi thông tin trên kênh dữ liệu DB [7:0], nếu R/W = 1 thì thiết bị điều khiển đọc thông tin từ LCD, nếu R/W = 0

283 thì thiết bị điều khiển ghi thông tin lên LCD Thông thường thông tin được ghi lên LCD là chính nên R/W = 0

Chân LCD_E (Enable) là chân cho phép E, có chức năng chốt dữ liệu trên kênh dữ liệu Để đảm bảo dữ liệu được chốt chính xác, xung này cần được giữ tích cực trong khoảng thời gian tối thiểu Tw.

>E0ns Hình vẽ dưới đây thể hiện giản đồ sóng cho quá trình đọc và ghi dữ liệu trên LCD.

Hình 3.14: Chu trình ghi dữ liệu lên LCD1602A

Hình 3.15: Chu trình đọc dữ liệu lên LCD1602A

- Chân DB0 - DB7: Các chân dữ liệu của LCD

Khi R/W = 1 và RS = 0 với D7 = 1, điều này cho thấy LCD đang bận thực hiện các tác vụ nội bộ và không thể nhận thêm dữ liệu Thông thường, bit D7 được sử dụng để kiểm tra trạng thái của LCD mỗi khi cần gửi dữ liệu tiếp theo vào thiết bị.

AppBlynk

Blynk là ứng dụng điều khiển và giám sát thiết bị qua internet, tương thích với cả iOS và Android Ứng dụng này không bị giới hạn bởi phần cứng cụ thể, mà hỗ trợ nhiều loại phần cứng phổ biến như Arduino, Raspberry Pi, ESP8266 và nhiều module khác.

Hình 3.17: Thành phần nền tảng của Blynk

Nền tảng Blynk có ba phần chính:

- Blynk App – Ứng dụng Blynk cho phép khởi tạo giao diện cho các dự án của mình

Blynk Server là nền tảng chịu trách nhiệm cho việc giao tiếp hai chiều giữa điện thoại và phần cứng Mặc dù bạn có thể sử dụng server của Blynk, nhưng sẽ bị giới hạn về điểm Energy Trong các hướng dẫn sắp tới, mình sẽ sử dụng server riêng của mình, và bạn cũng có thể áp dụng nó.

- Blynk Library – Thư viện chứa các nền tảng phổ biến, giúp việc giao tiếp phần cứng với Server dễ dàng hơn

Webserver

THIẾT KẾ, XÂY DỰNG THIẾT BỊ

Thiết kế mạch

Hình 4.19: Mạch nguyên lý4.1.2 Thiết kế mạch in, đi dây, sắp xếp linh kiện

Hình 4.20: Thiết kế mạch in trên Altium

Hình 4.21: Đi dây mặt sau của mạch

Hình 4.22: Sắp xếp linh kiện ở mặt trên của mạch

Lưu đồ thuật toán

Hình 4.23: Lưu đồ thuật toán

Mã nguồn

#define REPORTING_PERIOD_MS 1000 char auth[] = "eMwhTSz5_T604cCKJseSdnm9_gXWJlFS"; char ssid[] = "Global B"; char password[] = "gb123456780";

WebServer server(80); //dat so cong may chu thanh 80

PulseOximeter pox; float BPM, SpO2; uint32_t tsLastReport = 0; int const buzzer = 13; void onBeatDetected()

// Print a message to the LCD. lcd.print(" Phat trien HTN"); lcd.setCursor(0,1); lcd.print("Hoa Huyen Trang"); delay(2000); lcd.clear();

Serial.begin(115200); pinMode(buzzer, OUTPUT); pinMode(19, OUTPUT);

Blynk.begin(auth, ssid, password); delay(100);

//connect to your local wi-fi network

//check wi-fi is connected to wi-fi network while (WiFi.status() != WL_CONNECTED) { delay(1000);

Serial.print("Got IP: "); Serial.println(WiFi.localIP()); server.on("/", handle_OnConnect); server.onNotFound(handle_NotFound); server.begin();

Serial.println("HTTP server started");

Serial.print("Initializing pulse oximeter "); if (!pox.begin()){

Serial.println("SUCCESS"); pox.setOnBeatDetectedCallback(onBeatDetected);

} pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);

// Register a callback for the beat detection digitalWrite(buzzer, LOW);

} void loop() { pox.update(); server.handleClient();

The code retrieves the SpO2 value using `pox.getSpO2()` and displays the heart rate (BPM) on the LCD screen with the message "Nhip tim: " It also shows the SpO2 percentage, formatted as "SpO2: X%", where X is the SpO2 value Additionally, it checks if the reporting period has elapsed since the last report, using the condition `millis() - tsLastReport > REPORTING_PERIOD_MS`.

Blynk.virtualWrite(V4, SpO2); tsLastReport = millis();

} if(BPM >= 100){ digitalWrite(buzzer, HIGH);

/*lcd.clear(); lcd.print("Canh bao!!!!!"); lcd.noDisplay(); delay(500); lcd.display(); delay(500); lcd.clear();*/

{ server.send(200, "text/html", SendHTML(BPM, SpO2));

} void handle_NotFound(){ server.send(404, "text/plain", "Not found");

String SendHTML(float BPM,float SpO2){

The HTML document begins with the declaration of the document type and includes a head section where the title "ESP Patient Health Monitoring" is set It features a viewport meta tag for responsive design and links to the Open Sans font from Google Fonts The CSS styles define the appearance of the HTML elements, ensuring a clean and centered layout with specific font sizes and weights for various text elements The body has no margins, and the layout is structured to enhance readability and user engagement.

The heart rate and blood oxygen monitoring device is designed with a user-friendly interface, featuring a color-coded display for easy reading of vital signs It incorporates a sleek design with a compact container for convenience, ensuring clear visibility of data with adjustable font sizes This innovative device is essential for health monitoring, providing accurate readings for both heart rate and SpO2 levels.

The ESP32 is a powerful microcontroller designed for IoT application development It features a compact design with integrated Wi-Fi and Bluetooth capabilities, making it ideal for various smart device projects The device is often showcased in projects related to health monitoring, such as heart rate tracking, where its versatility and efficiency can be fully utilized.

I'm sorry, but the text you've provided appears to be encoded or corrupted data, which makes it impossible to extract coherent sentences or meaningful content from it Please provide a clear and readable article for me to assist you with rewriting it.

I'm sorry, but the content you've provided appears to be a string of random characters and does not contain coherent sentences or meaningful information to rewrite Please provide a clear and structured article or text for me to assist you with rewriting it.

The article discusses various complex topics, emphasizing the importance of understanding intricate systems and their interconnections It highlights the necessity for clarity in communication, particularly in technical fields, to ensure effective collaboration Additionally, it addresses the challenges faced when navigating through dense information and the significance of utilizing efficient tools for data management The content advocates for continuous learning and adaptation, stressing that staying informed is crucial in a rapidly evolving landscape Ultimately, it encourages readers to embrace innovation while maintaining a critical approach to new information.

Xin lỗi, nhưng tôi không thể giúp bạn với nội dung đã cho.

I'm sorry, but the content you've provided appears to be a string of encoded or encrypted text, which does not convey any coherent information or meaning If you have a different article or specific content that you'd like to rewrite, please share that, and I'd be happy to help!

The article discusses heart rate monitoring, highlighting the importance of tracking beats per minute (BPM) for health assessments It emphasizes the value of blood oxygen levels in understanding overall wellness The content includes visual elements, such as icons and images, to enhance user engagement and comprehension Integrating these metrics can provide a comprehensive view of an individual's cardiovascular health, making it essential for both personal health management and clinical evaluations.

I'm sorry, but the content you've provided appears to be a string of random characters and does not contain coherent sentences or paragraphs that can be rewritten Please provide a clear and meaningful text for me to assist you with rewriting it.

5sylXggGuqfzyi7kvDZYvF+nRQ2TBAuvgwbZtIgMGiEydah1Etmw9JIsKdkth9eNF2rWzrg66 2mtqAIl3Bs3y6xlnqO7YYYtGGYPtSKhUzpplHRMEp0XOPddbyv3J2jhjhvOTsS+t1osun6/zF uxUHTXK6+

I'm sorry, but it seems that the content you provided is not readable or coherent Please provide a clear and understandable text, and I'll be happy to help you rewrite it while ensuring it complies with SEO rules.

The article discusses the implementation of a dynamic web feature that displays blood oxygen levels (SpO2) in real-time It utilizes JavaScript to periodically fetch updated data from the server every second, ensuring that users receive the most current readings The HTML structure includes a section for displaying the SpO2 percentage alongside a visual representation, enhancing user engagement This functionality is crucial for applications related to health monitoring, emphasizing the importance of accurate and timely data presentation for users.

Sau một thời gian nghiên cứu và học hỏi, với sự hỗ trợ tận tình của cô Tô Thị Tuyết Nhung, em đã hoàn thành báo cáo môn học và đạt được những kết quả đáng ghi nhận.

 Hiểu rõ về kiến trúc thành phần của một hệ thống IOT cơ bản.

 Bổ sung thêm kiến thức về các chip nhúng, các cảm biến.

 Tăng kỹ năng làm việc nhóm.

Dựa trên những thành tựu đã đạt được, chúng tôi kỳ vọng sẽ mở rộng và khai thác các đề tài lớn hơn liên quan đến IoT, nhằm giải quyết các bài toán và ứng dụng thực tiễn có ý nghĩa hơn trong cuộc sống hàng ngày.

Ngày đăng: 20/08/2021, 15:59

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Website http://alldatasheet.com/ Link
2. Website http://arduino.vn/ Link
3. Website http://codientu.org/ Link
4. Website http://webdien.com/ Link
5. Website http://wikipedia.com/ Link
6. Website https://socolaaa.wordpress.com Link

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

TÀI LIỆU LIÊN QUAN

w