Mục lục:

Cảm biến nhiệt độ cho Arduino Được áp dụng cho COVID 19: 12 Bước (có Hình ảnh)
Cảm biến nhiệt độ cho Arduino Được áp dụng cho COVID 19: 12 Bước (có Hình ảnh)

Video: Cảm biến nhiệt độ cho Arduino Được áp dụng cho COVID 19: 12 Bước (có Hình ảnh)

Video: Cảm biến nhiệt độ cho Arduino Được áp dụng cho COVID 19: 12 Bước (có Hình ảnh)
Video: [Arduino basic #18] Cảm biến độ ẩm, nhiệt độ DHT11 2024, Tháng mười một
Anonim
Cảm biến nhiệt độ cho Arduino Được áp dụng cho COVID 19
Cảm biến nhiệt độ cho Arduino Được áp dụng cho COVID 19

Cảm biến nhiệt độ cho Arduino là một yếu tố cơ bản khi chúng ta muốn đo nhiệt độ của bộ vi xử lý của cơ thể con người.

Cảm biến nhiệt độ với Arduino phải tiếp xúc hoặc gần để nhận và đo mức nhiệt. Đó là cách hoạt động của nhiệt kế.

Những thiết bị này cực kỳ được sử dụng để đo nhiệt độ cơ thể của người bệnh, vì nhiệt độ là một trong những yếu tố đầu tiên thay đổi trong cơ thể con người khi có bất thường hoặc bệnh tật.

Một trong những bệnh làm thay đổi nhiệt độ của cơ thể con người là bệnh COVID 19. Do đó, chúng tôi xin đưa ra các triệu chứng chính:

Ho Mệt mỏi Khó thở (Trường hợp nặng) Sốt Sốt là một triệu chứng có đặc điểm chính là tăng nhiệt độ cơ thể. Ở bệnh này, chúng ta cần theo dõi liên tục các triệu chứng này.

Vì vậy, chúng tôi sẽ phát triển một dự án theo dõi nhiệt độ và lưu trữ dữ liệu này trên thẻ nhớ thông qua JLCPCB Datalogger sử dụng cảm biến nhiệt độ với Arduino.

Do đó, trong bài viết này bạn sẽ học:

  • Làm thế nào để một JLCPCB Datalogger với cảm biến nhiệt độ với Arduino?
  • Cách hoạt động của cảm biến nhiệt độ với Arduino.
  • Cách hoạt động của cảm biến nhiệt độ DS18B20 với Arduino
  • Sử dụng các nút với nhiều chức năng.

Tiếp theo, chúng tôi sẽ chỉ cho bạn cách bạn sẽ phát triển JLCPCB Datalogger của mình bằng cách sử dụng cảm biến nhiệt độ Arduino.

Quân nhu

Arduino UNO

Bảng mạch in JLCPCB

Cảm biến nhiệt độ DS18B20

Arduino Nano R3

Người nhảy

Màn hình LCD 16 x 2

Nút nhấn chuyển đổi

Điện trở 1kR

Mô-đun thẻ SD cho Arduino

Bước 1: Xây dựng Bộ dữ liệu JLCPCB với cảm biến nhiệt độ với Arduino

Cấu tạo của Bộ dữ liệu JLCPCB với cảm biến nhiệt độ với Arduino
Cấu tạo của Bộ dữ liệu JLCPCB với cảm biến nhiệt độ với Arduino

Như đã đề cập trước đó, dự án bao gồm việc tạo một Máy đo dữ liệu JLCPCB với Cảm biến nhiệt độ với Arduino và thông qua dữ liệu này, chúng tôi có thể theo dõi nhiệt độ của bệnh nhân đang được điều trị.

Như vậy, mạch được hiển thị trong Hình trên.

Do đó, như bạn thấy, mạch này có cảm biến nhiệt độ DS18B20 với Arduino, có nhiệm vụ đo chỉ số nhiệt độ của bệnh nhân.

Ngoài ra, Arduino Nano sẽ chịu trách nhiệm thu thập dữ liệu này và lưu trữ trên thẻ nhớ của Mô-đun thẻ SD.

Mỗi thông tin sẽ được lưu với thời gian tương ứng, sẽ được đọc từ Mô-đun RTC DS1307.

Vì vậy, để dữ liệu của cảm biến nhiệt độ với Arduino được lưu lại, người dùng phải thực hiện quá trình thông qua Menu điều khiển với màn hình LCD 16x2.

Bước 2:

Hình ảnh
Hình ảnh

Mỗi nút chịu trách nhiệm điều khiển một tùy chọn, như thể hiện trên màn hình LCD 16x2 trong Hình 2.

Mỗi tùy chọn chịu trách nhiệm thực hiện một chức năng trong hệ thống, như hình dưới đây.

  • Tùy chọn M chịu trách nhiệm bắt đầu đo và ghi dữ liệu trên Thẻ nhớ.
  • Phương án H chịu trách nhiệm điều chỉnh giờ hệ thống.
  • Tùy chọn O / P được sử dụng để xác nhận việc nhập dữ liệu vào hệ thống hoặc để tạm dừng ghi dữ liệu vào thẻ nhớ.

Để hiểu quy trình điều khiển hệ thống, chúng tôi sẽ cung cấp mã bên dưới và thảo luận về hệ thống điều khiển từng bước của Bộ dữ liệu JLCPCB với Cảm biến nhiệt độ với Arduino.

#include // Thư viện với tất cả chức năng của Cảm biến DS18B20

#include #include // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // Configurando o endereco do LCD 16x2 para 0x27 #define ONE_WIRE_BUS 8 // Chân kỹ thuật số để kết nối Cảm biến DS18B20 // Xác định uma instancia do oneWire para comunicacao com o sensor OneWire oneWire (ONE_WIRE_BUS); Cảm biến nhiệt độ Dallas (& oneWire); Cảm biến DeviceAddress1; Tệp myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool Measure = 0, Adjusthour = 0, ok = 0; bool Measure_state = 0, Adjusthour_state = 0, ok_state = 0; bool Measure_process = 0, Adjust_process = 0; byte realMin = 0, beforeMin = 0; byte realHour = 0, beforeHour = 0; byte minUpdate = 0; int pinoSS = 10; // Pin 53 para Mega / Pin 10 para UNO int DataTime [7]; void updateHour () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (times, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (lần); minUpdate = DataTime [5]; }} void updateTemp () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (times, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (lần); lcd.setCursor (0, 1); lcd.print ("Nhiệt độ:"); lcd.setCursor (14, 1); cảm biến.requestTempe Nhiệt độ (); float TempSensor = sensor.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} void setup () {Serial.begin (9600); DS1307.begin (); cảm biến.begin (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Hệ thống Nhiệt độ"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); chậm trễ (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Bản địa hóa cảm biến thành công!"); Serial.print (sensor.getDeviceCount (), DEC); Serial.println ("Cảm biến"); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card."); trở lại; } DS1307.getDate (DataTime); lcd.clear (); sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (lần); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); } void loop () {updateHour (); // Đọc trạng thái nút đo lường = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (Measure == 0 && Measure_state == 1) {Measure_state = 0; } if (Measure == 1 && Measure_state == 0 && Measure_process == 0) {Measure_process = 1; số đo = 1; if (SD.exists ("temp.txt")) {Serial.println ("Apagou o arquivo anterior!"); SD.remove ("temp.txt"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!"); } else {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close (); } delay (500); myFile.print ("Giờ:"); myFile.println ("Nhiệt độ"); DS1307.getDate (DataTime); realMin = beforeMin = DataTime [5]; sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (lần); lcd.setCursor (0, 1); lcd.print ("Nhiệt độ:"); lcd.setCursor (14, 1); cảm biến.requestTempe Nhiệt độ (); float TempSensor = sensor.getTempCByIndex (0); lcd.print (TempSensor); } if (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0 && Measure_process == 0) {Adjust_process = 1; } // ----------------------------------------------- --- Quy trình đo lường --------------------------------------------- -------------- if (Measure_process == 1) {updateTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); realMin = DataTime [5]; // ------------------------------------------------ --------- Tính số phút --------------------------------------- ------------------- if (realMin! = beforeMin) {contMin ++; beforeMin = thực tếMin; } if (contMin == 5) {sprintf (times, "% 02d:% 02d", DataTime [4], DataTime [5]); cảm biến.requestTempe Nhiệt độ (); float TempSensor = sensor.getTempCByIndex (0); myFile.print (lần); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Đếm giờ ------------------------------------ ---------------------- if (realHour! = beforeHour) {contHour ++; trước đóHour = thực tếHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Đã hoàn thành"); lcd.setCursor (5, 1); lcd.print ("Quy trình"); biện_pháp = 0; contHour = 0; } //----------------------------------------------Tình trạng để dừng bộ ghi dữ liệu ---------------------------------------------- ---- if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Đã dừng"); lcd.setCursor (5, 1); lcd.print ("Quy trình"); biện_pháp = 0; chậm trễ (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (lần); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); }} // ---------------------------------------------- ------- Điều chỉnh giờ ----------------------------------------- ---------------------- // Điều chỉnh Giờ if (Adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Điều chỉnh Giờ:"); sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (lần); // Điều chỉnh giờ do {Measure = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (Measure == 0 && Measure_state == 1) {Measure_state = 0; } if (Measure == 1 && Measure_state == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } số đo = 1; sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (lần); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } if (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (lần); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; } if (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (lần); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); điều_ chỉnh = 0; }} while (ok! = 1); } // ----------------------------------------------- ------- Kết thúc giờ điều chỉnh ---------------------------------------- -------------------}

Đầu tiên, chúng tôi xác định tất cả các thư viện để điều khiển các mô-đun và khai báo các biến được sử dụng khi lập trình JLCPCB Datalogger với cảm biến nhiệt độ cho Arduino. Khối mã được hiển thị bên dưới.

Bước 3:

#include // Thư viện với tất cả chức năng của Cảm biến DS18B20

#include #include // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // Configurando o endereco do LCD 16x2 para 0x27 #define ONE_WIRE_BUS 8 // Chân kỹ thuật số để kết nối Cảm biến DS18B20 // Xác định uma instancia do oneWire para comunicacao com o sensor OneWire oneWire (ONE_WIRE_BUS); Cảm biến nhiệt độ Dallas (& oneWire); Cảm biến DeviceAddress1; Tệp myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool Measure = 0, Adjusthour = 0, ok = 0; bool Measure_state = 0, Adjusthour_state = 0, ok_state = 0; bool Measure_process = 0, Adjust_process = 0; byte realMin = 0, beforeMin = 0; byte realHour = 0, beforeHour = 0; byte minUpdate = 0; int pinoSS = 10; // Pin 53 para Mega / Pin 10 para UNO int DataTime [7];

Sau đó, chúng ta có chức năng thiết lập void. Chức năng này được sử dụng để cấu hình các chân và khởi tạo thiết bị, như hình dưới đây.

void setup ()

{Serial.begin (9600); DS1307.begin (); cảm biến.begin (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Hệ thống Nhiệt độ"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); chậm trễ (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Bản địa hóa cảm biến thành công!"); Serial.print (sensor.getDeviceCount (), DEC); Serial.println ("Cảm biến"); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card."); trở lại; } DS1307.getDate (DataTime); lcd.clear (); sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (lần); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); }

Đầu tiên, giao tiếp nối tiếp, đồng hồ thời gian thực và cảm biến nhiệt độ cho Arduino DS18B20 đã được bắt đầu. Sau khi khởi tạo và kiểm tra thiết bị, thông báo với các tùy chọn menu được in trên màn hình LCD 16x2. Màn hình này được hiển thị trong Hình 1.

Bước 4:

Sau đó, hệ thống đọc giờ và cập nhật giá trị bằng cách gọi hàm updateHour. Vì vậy, chức năng này có mục đích hiển thị giá trị giờ mỗi phút. Khối mã chức năng được hiển thị bên dưới.

void updateHour ()

{DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (times, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (lần); minUpdate = DataTime [5]; }}

Bước 5:

Hình ảnh
Hình ảnh

Ngoài việc cập nhật giờ, người dùng có thể chọn một trong ba nút để theo dõi bệnh nhân bằng cảm biến nhiệt độ với Arduino. Mạch được hiển thị trong hình trên.

Bước 6: Menu điều khiển JLCPCB Datalogger

Menu điều khiển bộ dữ liệu JLCPCB
Menu điều khiển bộ dữ liệu JLCPCB

Đầu tiên, người dùng phải kiểm tra và điều chỉnh giờ hệ thống. Quá trình này được thực hiện khi nút thứ hai được nhấn.

Khi nhấn nút, màn hình sau sẽ xuất hiện, được hiển thị trong Hình trên.

Bước 7:

Hình ảnh
Hình ảnh

Từ màn hình này, người dùng sẽ có thể nhập giá trị giờ và phút từ các nút kết nối với chân kỹ thuật số 2 và 3 của Arduino. Các nút được hiển thị trong Hình trên.

Phần mã để kiểm soát giờ được hiển thị bên dưới.

if (Adjusthour == 0 && Adjusthour_state == 1)

{Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0 && Measure_process == 0) {Adjust_process = 1; }

Khi nhấn nút giờ và biến số đo_sản phẩm được đặt thành 0, điều kiện sẽ là true và biến số_công việc điều chỉnh sẽ được đặt thành 1. Biến số đo_sản phẩm được sử dụng để báo hiệu rằng hệ thống đang theo dõi nhiệt độ. Khi giá trị của nó bằng 0, hệ thống sẽ cho phép người dùng vào menu cài đặt thời gian. Do đó, sau khi biến Adjust_process nhận giá trị 1, hệ thống sẽ đưa vào điều kiện điều chỉnh thời gian. Khối mã này được hiển thị bên dưới.

// ------------------------------------------------ ----- Điều chỉnh giờ ------------------------------------------- --------------------

// Điều chỉnh Giờ if (Adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Điều chỉnh Giờ:"); sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (lần); // Điều chỉnh giờ do {Measure = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (Measure == 0 && Measure_state == 1) {Measure_state = 0; } if (Measure == 1 && Measure_state == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } Measure_state = 1; sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (lần); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } if (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (lần); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; } if (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (lần); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); điều_ chỉnh = 0; }} while (ok! = 1); }

Trong điều kiện này, hệ thống sẽ hiển thị thông báo như hình 4 sau đó đợi các giá trị điều chỉnh bên trong vòng lặp while. Khi điều chỉnh giờ, các nút này sẽ thay đổi chức năng, tức là chúng đa chức năng.

Điều này cho phép bạn sử dụng một nút cho nhiều chức năng và giảm độ phức tạp của hệ thống.

Với cách này, người dùng sẽ điều chỉnh giá trị của giờ và phút rồi lưu dữ liệu vào hệ thống khi nhấn nút Ok.

Như bạn thấy, hệ thống sẽ đọc 3 nút, như hình dưới đây.

đo lường = digitalRead (Nút đo);

Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok);

Lưu ý rằng nút đo lường (Buttonmeasure) đã thay đổi chức năng của nó. Bây giờ nó sẽ được sử dụng để điều chỉnh giá trị giờ, như hình dưới đây. Hai điều kiện sau đây tương tự nhau và được sử dụng để điều chỉnh giờ và phút, như được hiển thị ở trên.

nếu (đo lường == 0 && Measure_state == 1)

{số đo = 0; } if (Measure == 1 && Measure_state == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } Measure_state = 1; sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (lần); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } if (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (lần); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; }

Do đó, mỗi lần nhấn một trong hai nút, giá trị của vị trí 4 và 5 của vectơ DataTime sẽ bị thay đổi và thứ hai, các giá trị này sẽ được lưu trong bộ nhớ DS1307.

Sau khi điều chỉnh, người dùng phải nhấp vào nút Ok để kết thúc quá trình. Khi sự kiện này xảy ra, hệ thống sẽ thực thi các dòng mã sau.

nếu (ok == 1)

{lcd.clear (); DS1307.getDate (DataTime); sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (lần); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); điều_ chỉnh = 0; }

Nó sẽ nhập điều kiện trên và hiển thị thông báo giờ và Menu Tùy chọn cho người dùng.

Cuối cùng, người dùng phải bắt đầu quá trình theo dõi bệnh nhân thông qua cảm biến nhiệt độ với Arduino JLCPCB Datalogger.

Để thực hiện việc này, người dùng phải nhấn nút đo được kết nối với chân số 2.

Sau đó, hệ thống sẽ thực hiện việc đọc bằng cảm biến nhiệt độ cho Arduino và lưu vào thẻ nhớ. Vùng mạch được hiển thị trong Hình trên.

Bước 8:

Hình ảnh
Hình ảnh

Do đó, khi nút được nhấn, phần mã sau sẽ được thực thi.

nếu (đo lường == 0 && Measure_state == 1)

{Measure_state = 0; } if (Measure == 1 && Measure_state == 0 && Measure_process == 0) {Measure_process = 1; số đo = 1; if (SD.exists ("temp.txt")) {Serial.println ("Apagou o arquivo anterior!"); SD.remove ("temp.txt"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!"); } else {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close (); } delay (500); myFile.print ("Giờ:"); myFile.println ("Nhiệt độ"); DS1307.getDate (DataTime); realMin = beforeMin = DataTime [5]; sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (lần); lcd.setCursor (0, 1); lcd.print ("Nhiệt độ:"); lcd.setCursor (14, 1); cảm biến.requestTempe Nhiệt độ (); float TempSensor = sensor.getTempCByIndex (0); lcd.print (TempSensor); }

Trong phần mã ở trên, hệ thống sẽ gán giá trị 1 cho biến Measure_process. Nó chịu trách nhiệm cho phép dữ liệu được lưu trên Thẻ SD.

Ngoài ra, hệ thống sẽ kiểm tra xem tệp văn bản có nhật ký dữ liệu có tồn tại hay không. Nếu có tập tin, hệ thống sẽ xóa và tạo mới để lưu trữ dữ liệu.

Sau đó, nó sẽ tạo ra hai cột: một cho giờ và một cho nhiệt độ bên trong tệp văn bản.

Sau đó, nó sẽ hiển thị giờ và nhiệt độ trên màn hình LCD, như trong Hình trên.

Sau đó, luồng mã sẽ thực thi khối chương trình sau.

if (Measure_process == 1)

{updateTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); realMin = DataTime [5]; // ------------------------------------------------ --------- Tính số phút --------------------------------------- ------------------- if (realMin! = beforeMin) {contMin ++; beforeMin = thực tếMin; } if (contMin == 5) {sprintf (times, "% 02d:% 02d", DataTime [4], DataTime [5]); cảm biến.requestTempe Nhiệt độ (); float TempSensor = sensor.getTempCByIndex (0); myFile.print (lần); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Đếm giờ ------------------------------------ ---------------------- if (realHour! = beforeHour) {contHour ++; trước đóHour = thực tếHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Đã hoàn thành"); lcd.setCursor (5, 1); lcd.print ("Quy trình"); biện_pháp = 0; contHour = 0; } //----------------------------------------------Tình trạng để dừng bộ ghi dữ liệu -----

Đầu tiên, hàm updateTemp () sẽ được thực thi. Nó tương tự như hàm updateHour (); tuy nhiên, nó hiển thị nhiệt độ sau mỗi 1 phút.

Sau đó, hệ thống sẽ thu thập dữ liệu thời gian từ Đồng hồ thời gian thực và lưu trữ giá trị phút hiện tại trong biến currentMin.

Sau đó, nó sẽ kiểm tra xem biến min đã được thay đổi hay chưa, theo điều kiện được trình bày bên dưới

nếu (thực tếMin! = trướcMin)

{contMin ++; beforeMin = thực tếMin; }

Do đó, nếu biến số phút hiện tại khác với giá trị trước đó, điều đó có nghĩa là giá trị đã thay đổi. Bằng cách này, điều kiện sẽ đúng và giá trị của số phút sẽ được tăng lên (contMin) và giá trị hiện tại sẽ được gán cho biến beforeMin, để lưu trữ giá trị trước đó của nó.

Do đó, khi giá trị của số đếm này bằng 5, có nghĩa là 5 phút đã trôi qua và hệ thống phải thực hiện đọc nhiệt độ mới và lưu giá trị giờ và nhiệt độ trong tệp nhật ký Thẻ SD.

nếu (contMin == 5)

{sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); cảm biến.requestTempe Nhiệt độ (); float TempSensor = sensor.getTempCByIndex (0); myFile.print (lần); myFile.println (TempSensor); contMin = 0; }

Bằng cách này, quá trình này sẽ được lặp lại cho đến khi đạt giá trị 5 giờ theo dõi nhiệt độ của bệnh nhân bằng cảm biến nhiệt độ với Arduino.

Phần mã được hiển thị bên dưới và tương tự như số phút, đã được trình bày ở trên.

// ------------------------------------------------ ----------- Đếm giờ ------------------------------------- ---------------------

if (realHour! = beforeHour) {contHour ++; trước đóHour = thực tếHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Đã hoàn thành"); lcd.setCursor (5, 1); lcd.print ("Quy trình"); biện_pháp = 0; contHour = 0; }

Sau khi đạt 5 giờ theo dõi, hệ thống sẽ đóng tệp nhật ký và đưa ra thông báo "Quá trình hoàn tất" cho người dùng.

Ngoài ra, người dùng có thể nhấn nút Ok / Pause để dừng ghi dữ liệu. Khi điều này xảy ra, khối mã sau sẽ được thực thi.

// ---------------------------------------------- Điều kiện để dừng bộ ghi dữ liệu ----------------------------------------------- ---

if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Đã dừng"); lcd.setCursor (5, 1); lcd.print ("Quy trình"); biện_pháp = 0; chậm trễ (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (lần, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (lần); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); }

Bước 9:

Hình ảnh
Hình ảnh

Sau đó, hệ thống sẽ đóng tệp và hiển thị thông báo "Quá trình đã dừng", như trong Hình 8.

Bước 10:

Hình ảnh
Hình ảnh

Sau đó, hệ thống sẽ in ra màn hình thời gian và các tùy chọn menu, như trong Hình 9.

Bước 11: Truy cập dữ liệu mô-đun thẻ SD với Arduino

Truy cập dữ liệu mô-đun thẻ SD với Arduino
Truy cập dữ liệu mô-đun thẻ SD với Arduino

Sau quá trình theo dõi JLCPCB Datalogger bằng cảm biến nhiệt độ với Arduino, cần tháo thẻ nhớ và truy cập dữ liệu trên máy tính.

Để xem và phân tích dữ liệu với chất lượng tốt hơn, hãy xuất / sao chép tất cả thông tin của tệp văn bản sang Excel, sau đó, bạn có thể vẽ biểu đồ và phân tích kết quả thu được.

Bước 12: Kết luận

JLCPCB Datalogger với cảm biến nhiệt độ với Arduino cho phép chúng tôi, ngoài việc đo nhiệt độ, còn ghi lại thông tin về hành vi nhiệt độ của bệnh nhân trong một khoảng thời gian.

Với những dữ liệu được lưu trữ này, có thể phân tích và hiểu được nhiệt độ của bệnh nhân bị nhiễm COVID 19 hoạt động như thế nào.

Ngoài ra, có thể đánh giá mức nhiệt độ và liên kết giá trị của nó với việc áp dụng một số loại thuốc.

Do đó, thông qua những dữ liệu này, JLCPCB Datalogger với cảm biến nhiệt độ cho Arduino nhằm mục đích hỗ trợ các bác sĩ và y tá trong việc nghiên cứu hành vi của bệnh nhân.

Cuối cùng, chúng tôi cảm ơn công ty JLCPCB đã hỗ trợ phát triển dự án và hy vọng rằng bạn có thể sử dụng nó

Tất cả các tệp có thể được tải xuống và sử dụng miễn phí bởi bất kỳ người dùng nào.

Đề xuất: