สารบัญ:

เซ็นเซอร์อุณหภูมิสำหรับ Arduino ที่ใช้สำหรับ COVID 19: 12 ขั้นตอน (พร้อมรูปภาพ)
เซ็นเซอร์อุณหภูมิสำหรับ Arduino ที่ใช้สำหรับ COVID 19: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เซ็นเซอร์อุณหภูมิสำหรับ Arduino ที่ใช้สำหรับ COVID 19: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เซ็นเซอร์อุณหภูมิสำหรับ Arduino ที่ใช้สำหรับ COVID 19: 12 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Arduino & Microcontroller การพัฒนาระบบอัตโนมัติด้วย Tinkercad ตอนที่ 10 เซนเซอร์วัดอุณหภูมิ 2024, พฤศจิกายน
Anonim
เซ็นเซอร์อุณหภูมิสำหรับ Arduino ใช้สำหรับ COVID 19
เซ็นเซอร์อุณหภูมิสำหรับ Arduino ใช้สำหรับ COVID 19

เซ็นเซอร์อุณหภูมิสำหรับ Arduino เป็นองค์ประกอบพื้นฐานเมื่อเราต้องการวัดอุณหภูมิของโปรเซสเซอร์ของร่างกายมนุษย์

เซ็นเซอร์อุณหภูมิกับ Arduino จะต้องสัมผัสหรืออยู่ใกล้เพื่อรับและวัดระดับความร้อน นั่นเป็นวิธีที่เทอร์โมมิเตอร์ทำงาน

อุปกรณ์เหล่านี้ใช้วัดอุณหภูมิร่างกายของผู้ป่วยอย่างมาก เนื่องจากอุณหภูมิเป็นหนึ่งในปัจจัยแรกที่เปลี่ยนแปลงในร่างกายมนุษย์เมื่อมีความผิดปกติหรือโรค

โรคหนึ่งที่เปลี่ยนอุณหภูมิของร่างกายมนุษย์คือ COVID 19 ดังนั้นเราจึงนำเสนออาการหลัก:

ไอ เหนื่อยหอบ หายใจลำบาก (กรณีรุนแรง) ไข้ ไข้เป็นอาการที่มีลักษณะเฉพาะคืออุณหภูมิร่างกายสูงขึ้น ในโรคนี้เราจำเป็นต้องติดตามอาการเหล่านี้อย่างต่อเนื่อง

ดังนั้น เราจะพัฒนาโครงการเพื่อตรวจสอบอุณหภูมิและจัดเก็บข้อมูลนี้ในการ์ดหน่วยความจำผ่าน JLCPCB Datalogger โดยใช้เซ็นเซอร์อุณหภูมิกับ Arduino

ดังนั้น ในบทความนี้คุณจะได้เรียนรู้:

  • JLCPCB Datalogger พร้อมเซ็นเซอร์อุณหภูมิกับ Arduino เป็นอย่างไร
  • เซ็นเซอร์อุณหภูมิทำงานอย่างไรกับ Arduino
  • เซ็นเซอร์อุณหภูมิ DS18B20 ทำงานอย่างไรกับ Arduino
  • ใช้ปุ่มที่มีหลายฟังก์ชัน

ต่อไป เราจะแสดงให้คุณเห็นว่าคุณจะพัฒนา JLCPCB Datalogger ของคุณอย่างไรโดยใช้เซ็นเซอร์อุณหภูมิ Arduino

เสบียง

Arduino UNO

แผงวงจรพิมพ์ JLCPCB

DS18B20 เซ็นเซอร์อุณหภูมิ

Arduino Nano R3

จัมเปอร์

จอ LCD 16 x 2

สวิตช์ปุ่มกด

ตัวต้านทาน 1kR

โมดูลการ์ด SD สำหรับ Arduino

ขั้นตอนที่ 1: การสร้าง JLCPCB Datalogger พร้อมเซ็นเซอร์อุณหภูมิด้วย Arduino

การสร้าง JLCPCB Datalogger พร้อมเซ็นเซอร์อุณหภูมิด้วย Arduino
การสร้าง JLCPCB Datalogger พร้อมเซ็นเซอร์อุณหภูมิด้วย Arduino

ดังที่ได้กล่าวไว้ก่อนหน้านี้ โปรเจ็กต์นี้ประกอบด้วยการสร้าง JLCPCB Datalogger พร้อมเซ็นเซอร์อุณหภูมิกับ Arduino และด้วยข้อมูลนี้ เราสามารถตรวจสอบอุณหภูมิของผู้ป่วยที่รับการรักษาได้

ดังนั้นวงจรจะแสดงในรูปด้านบน

ดังที่คุณเห็นวงจรนี้มีเซ็นเซอร์อุณหภูมิ DS18B20 พร้อม Arduino ซึ่งมีหน้าที่ในการวัดอุณหภูมิของผู้ป่วย

นอกจากนี้ Arduino Nano จะรับผิดชอบในการเก็บรวบรวมข้อมูลนี้และจัดเก็บไว้ในการ์ดหน่วยความจำของโมดูลการ์ด SD

ข้อมูลแต่ละรายการจะถูกบันทึกตามเวลาที่เกี่ยวข้อง ซึ่งจะถูกอ่านจากโมดูล RTC DS1307

ดังนั้นหากต้องการบันทึกข้อมูลของเซ็นเซอร์อุณหภูมิกับ Arduino ผู้ใช้จะต้องดำเนินการผ่านเมนูควบคุมด้วย LCD ขนาด 16x2

ขั้นตอนที่ 2:

ภาพ
ภาพ

แต่ละปุ่มมีหน้าที่ควบคุมตัวเลือกดังที่แสดงบนหน้าจอ LCD ขนาด 16x2 ในรูปที่ 2

แต่ละตัวเลือกมีหน้าที่ในการทำหน้าที่ในระบบดังที่แสดงด้านล่าง

  • ตัวเลือก M รับผิดชอบในการเริ่มการวัดและบันทึกข้อมูลในการ์ดหน่วยความจำ
  • ตัวเลือก H มีหน้าที่ในการปรับชั่วโมงของระบบ
  • ตัวเลือก O/P ใช้เพื่อยืนยันการป้อนข้อมูลในระบบหรือหยุดการเขียนข้อมูลลงในการ์ดหน่วยความจำชั่วคราว

เพื่อให้เข้าใจกระบวนการควบคุมระบบ เราจะจัดเตรียมโค้ดด้านล่างและหารือเกี่ยวกับระบบควบคุมทีละขั้นตอนของ JLCPCB Datalogger พร้อมเซ็นเซอร์อุณหภูมิกับ Arduino

#include //ไลบรารีพร้อมฟังก์ชันทั้งหมดของ DS18B20 Sensor

#include #include //Biblioteca I2C ทำ LCD 16x2 #include //Biblioteca de Comunicacao I2C #include //OneWire Library สำหรับเซ็นเซอร์ DS18B20 #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // กำหนดค่าและกำหนดค่าสำหรับ LCD 16x2 สำหรับ 0x27 #define ONE_WIRE_BUS 8 // Digital Pin เพื่อเชื่อมต่อเซ็นเซอร์ DS18B20 // กำหนดการตั้งค่าเริ่มต้นสำหรับเซ็นเซอร์ OneWire oneWire oneWire (ONE_WIRE_BUS); เซ็นเซอร์อุณหภูมิดัลลัส (& oneWire); เซ็นเซอร์ที่อยู่อุปกรณ์1; ไฟล์ myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 การวัดบูล = 0, ปรับชั่วโมง = 0, ตกลง = 0; bool measure_state = 0, adjusthour_state = 0, ok_state = 0; bool measure_process = 0, adjust_process = 0; ไบต์ actualMin = 0, ก่อนหน้า Min = 0; ไบต์ actualHour = 0, ชั่วโมงก่อนหน้า = 0; ไบต์ minUpdate = 0; int pinoSS = 10; // พิน 53 สำหรับเมกะ / พิน 10 สำหรับ UNO int DataTime[7]; เป็นโมฆะ 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(ครั้ง); minUpdate = DataTime[5]; } } เป็นโมฆะ updateTemp () { DS1307.getDate (DataTime); if(DataTime[5] != minUpdate) { sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.clear(); lcd.setCursor(5, 0); lcd.print(ครั้ง); lcd.setCursor(0, 1); lcd.print("อุณหภูมิ: "); lcd.setCursor(14, 1); เซ็นเซอร์ ขออุณหภูมิ (); float TempSensor = sensors.getTempCByIndex(0); lcd.print (TempSensor); minUpdate = DataTime[5]; } } การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); DS1307.begin(); sensors.begin(); โหมดพิน (pinoSS, เอาต์พุต); // ประกาศ pinoSS como saída Wire.begin(); //Inicializacao da Comunicacao I2C lcd.init(); //Inicializacao ทำ LCD lcd.backlight(); lcd.setCursor(3, 0); lcd.print("ระบบอุณหภูมิ"); lcd.setCursor(3, 1); lcd.print("เครื่องบันทึกข้อมูล"); ล่าช้า (2000); // Localiza และ Mostra enderecos dos sensores Serial.println("Localizando sensores DS18B20…"); Serial.print("การแปลภาษาของเซ็นเซอร์สำเร็จ!"); Serial.print(sensors.getDeviceCount(), ธ.ค.); Serial.println("เซนเซอร์"); if(SD.begin()) {// เริ่มต้น o การ์ด SD Serial.println ("การ์ด SD ทันทีสำหรับ uso"); // Imprime na tela } อื่น ๆ { Serial.println ("Falha na inicialização do SD Card"); กลับ; } DS1307.getDate (เวลาข้อมูล); lcd.clear(); sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 0); lcd.print(ครั้ง); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O/P"); } วงเป็นโมฆะ () { updateHour (); // ปุ่มอ่านสถานะการวัด = digitalRead (การวัดปุ่ม); ปรับชั่วโมง = digitalRead (ปุ่มปรับชั่วโมง); ตกลง = digitalRead (ปุ่ม); ถ้า (วัด == 0 && วัด_state == 1) { วัด_สถานะ = 0; } if(measure == 1 && Measuring_state == 0 && Measuring_process == 0) {measure_process = 1; วัด_state = 1; ถ้า (SD.exists ("temp.txt")) { Serial.println ("Apagou o arquivo ล่วงหน้า!"); SD.remove("temp.txt"); myFile = SD.open("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!"); } อื่น ๆ { Serial.println("Criou o arquivo!"); myFile = SD.open("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close(); } ล่าช้า (500); myFile.print("ชั่วโมง: "); myFile.println("อุณหภูมิ"); DS1307.getDate (เวลาข้อมูล); realMin = PreviousMin = DataTime[5]; sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.clear(); lcd.setCursor(5, 0); lcd.print(ครั้ง); lcd.setCursor(0, 1); lcd.print("อุณหภูมิ: "); lcd.setCursor(14, 1); เซ็นเซอร์ ขออุณหภูมิ (); float TempSensor = sensors.getTempCByIndex(0); lcd.print (TempSensor); } if(adjusthour == 0 && adjusthour_state == 1) { adjusthour_state = 0; } if(adjusthour == 1 && adjusthour_state == 0 && Measuring_process == 0) { adjust_process = 1; } //---------------------------------------------------------- ---ขั้นตอนการวัด--------------------------------------------- -------------- ถ้า (measure_process == 1) { updateTemp (); ไบต์ contMin = 0, contHour = 0; DS1307.getDate (เวลาข้อมูล); realMin = DataTime[5]; //------------------------------------------------ ---------------------- นับนาที ---------------------------------------- ------------------- if(actualMin != PreviousMin) { contMin++; PreviousMin = จริงขั้นต่ำ; } if(contMin == 5) { sprintf(times, "%02d:%02d ", DataTime[4], DataTime[5]); เซ็นเซอร์ ขออุณหภูมิ (); float TempSensor = sensors.getTempCByIndex(0); myFile.print(ครั้ง); myFile.println (เซ็นเซอร์อุณหภูมิ); contMin = 0; } //---------------------------------------------------------- --------------นับชั่วโมง----------------------------- ---------------------- if(actualHour != PreviousHour) { contHour++; PreviousHour = จริงชั่วโมง; } if(contHour == 5) { myFile.close(); lcd.clear(); lcd.setCursor(5, 0); lcd.print("เสร็จสิ้น"); lcd.setCursor(5, 1); lcd.print("กระบวนการ"); วัด_กระบวนการ = 0; contHour = 0; } //----------------------------------------------สภาพ เพื่อหยุดดาต้าล็อกเกอร์ ---------------------------------------------- ---- ถ้า (ตกลง == 1) { myFile.close (); lcd.clear(); lcd.setCursor(6, 0); lcd.print("หยุด"); lcd.setCursor(5, 1); lcd.print("กระบวนการ"); วัด_กระบวนการ = 0; ล่าช้า (2000); lcd.clear(); DS1307.getDate (เวลาข้อมูล); sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 0); lcd.print(ครั้ง); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O/P"); } } //---------------------------------------------------------- --------ปรับชั่วโมง----------------------------------------- ---------------------- //ปรับชั่วโมงถ้า (adjust_process == 1) { lcd.clear(); DS1307.getDate (เวลาข้อมูล); lcd.setCursor(0, 0); lcd.print("ปรับชั่วโมง:"); sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(ครั้ง); // ปรับชั่วโมงทำ { วัด = digitalRead (วัดปุ่ม); ปรับชั่วโมง = digitalRead (ปุ่มปรับชั่วโมง); ตกลง = digitalRead (ปุ่ม); ถ้า (วัด == 0 && วัด_state == 1) { วัด_สถานะ = 0; } if(measure == 1 && Measuring_state == 0) { DataTime[4]++; if(DataTime[4] > 23) { DataTime[4] = 0; } วัด_state = 1; sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(ครั้ง); 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]++; ถ้า (DataTime [5] > 59) { DataTime [5] = 0; } sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(ครั้ง); DS1307.setDate(DataTime[0], DataTime[1], DataTime[2], DataTime[3], DataTime[4], DataTime[5], 00); ปรับชั่วโมง_state = 1; } ถ้า (ตกลง == 1) { lcd.clear (); DS1307.getDate (เวลาข้อมูล); sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(0, 0); lcd.print(ครั้ง); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O"); ปรับ_กระบวนการ = 0; } }ในขณะที่(ตกลง != 1); } //---------------------------------------------------------- -------- สิ้นสุดการปรับชั่วโมง ---------------------------------------- ------------------- }

ขั้นแรก เรากำหนดไลบรารีทั้งหมดสำหรับควบคุมโมดูลและประกาศตัวแปรที่ใช้เมื่อตั้งโปรแกรม JLCPCB Datalogger ด้วยเซ็นเซอร์อุณหภูมิสำหรับ Arduino บล็อกรหัสแสดงอยู่ด้านล่าง

ขั้นตอนที่ 3:

#include //ไลบรารีพร้อมฟังก์ชันทั้งหมดของ DS18B20 Sensor

#include #include //Biblioteca I2C ทำ LCD 16x2 #include //Biblioteca de Comunicacao I2C #include //OneWire Library สำหรับเซ็นเซอร์ DS18B20 #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // กำหนดค่าและกำหนดค่าสำหรับ LCD 16x2 สำหรับ 0x27 #define ONE_WIRE_BUS 8 // Digital Pin เพื่อเชื่อมต่อเซ็นเซอร์ DS18B20 // กำหนดการตั้งค่าเริ่มต้นสำหรับเซ็นเซอร์ OneWire oneWire oneWire (ONE_WIRE_BUS); เซ็นเซอร์อุณหภูมิดัลลัส (& oneWire); เซ็นเซอร์ที่อยู่อุปกรณ์1; ไฟล์ myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 การวัดบูล = 0, ปรับชั่วโมง = 0, ตกลง = 0; bool measure_state = 0, adjusthour_state = 0, ok_state = 0; bool measure_process = 0, adjust_process = 0; ไบต์ actualMin = 0, ก่อนหน้า Min = 0; ไบต์ actualHour = 0, ชั่วโมงก่อนหน้า = 0; ไบต์ minUpdate = 0; int pinoSS = 10; // พิน 53 สำหรับเมกะ / พิน 10 สำหรับ UNO int DataTime[7];

ต่อจากนี้ไป เรามีฟังก์ชันการตั้งค่าเป็นโมฆะ ฟังก์ชันนี้ใช้เพื่อกำหนดค่าพินและการเริ่มต้นอุปกรณ์ ดังที่แสดงด้านล่าง

การตั้งค่าเป็นโมฆะ ()

{ Serial.begin(9600); DS1307.begin(); sensors.begin(); โหมดพิน (pinoSS, เอาต์พุต); // ประกาศ pinoSS como saída Wire.begin(); //Inicializacao da Comunicacao I2C lcd.init(); //Inicializacao ทำ LCD lcd.backlight(); lcd.setCursor(3, 0); lcd.print("ระบบอุณหภูมิ"); lcd.setCursor(3, 1); lcd.print("เครื่องบันทึกข้อมูล"); ล่าช้า (2000); // Localiza และ Mostra enderecos dos sensores Serial.println("Localizando sensores DS18B20…"); Serial.print("การแปลภาษาของเซ็นเซอร์สำเร็จ!"); Serial.print(sensors.getDeviceCount(), ธ.ค.); Serial.println("เซนเซอร์"); if(SD.begin()) {// เริ่มต้น o การ์ด SD Serial.println ("การ์ด SD ทันทีสำหรับ uso"); // Imprime na tela } อื่น ๆ { Serial.println ("Falha na inicialização do SD Card"); กลับ; } DS1307.getDate (เวลาข้อมูล); lcd.clear(); sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 0); lcd.print(ครั้ง); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O/P"); }

ขั้นแรก การสื่อสารแบบอนุกรม นาฬิกาแบบเรียลไทม์ และเซ็นเซอร์อุณหภูมิสำหรับ Arduino DS18B20 เริ่มต้นขึ้น หลังจากเริ่มต้นและทดสอบอุปกรณ์แล้ว ข้อความพร้อมตัวเลือกเมนูจะพิมพ์บนหน้าจอ LCD ขนาด 16x2 หน้าจอนี้แสดงในรูปที่ 1

ขั้นตอนที่ 4:

หลังจากนั้น ระบบจะอ่านชั่วโมงและอัปเดตค่าโดยเรียกใช้ฟังก์ชัน updateHour ดังนั้น ฟังก์ชันนี้มีจุดประสงค์เพื่อนำเสนอค่ารายชั่วโมงทุกนาที บล็อกรหัสฟังก์ชันแสดงอยู่ด้านล่าง

เป็นโมฆะ updateHour()

{ DS1307.getDate (เวลาข้อมูล); if(DataTime[5] != minUpdate) { sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(5, 0); lcd.print(ครั้ง); minUpdate = DataTime[5]; } }

ขั้นตอนที่ 5:

ภาพ
ภาพ

นอกจากการอัพเดทชั่วโมงแล้ว ผู้ใช้สามารถเลือกปุ่มใดปุ่มหนึ่งจากสามปุ่มเพื่อตรวจสอบผู้ป่วยด้วยเซ็นเซอร์อุณหภูมิกับ Arduino วงจรแสดงในรูปด้านบน

ขั้นตอนที่ 6: เมนูควบคุม JLCPCB Datalogger

JLCPCB Datalogger Control Menu
JLCPCB Datalogger Control Menu

ขั้นแรก ผู้ใช้ต้องตรวจสอบและปรับชั่วโมงของระบบ กระบวนการนี้ดำเนินการเมื่อกดปุ่มที่สอง

เมื่อกดปุ่ม หน้าจอต่อไปนี้จะปรากฏขึ้น ซึ่งแสดงใน Figureabove

ขั้นตอนที่ 7:

ภาพ
ภาพ

จากหน้าจอนี้ ผู้ใช้จะสามารถป้อนค่าชั่วโมงและนาทีจากปุ่มที่เชื่อมต่อกับขาดิจิตอล 2 และ 3 ของ Arduino ปุ่มต่างๆ จะแสดงในรูปด้านบน

ส่วนรหัสสำหรับควบคุมชั่วโมงแสดงอยู่ด้านล่าง

ถ้า (ปรับชั่วโมง == 0 && ปรับชั่วโมง_state == 1)

{ adjusthour_state = 0; } if(adjusthour == 1 && adjusthour_state == 0 && Measuring_process == 0) { adjust_process = 1; }

เมื่อกดปุ่มชั่วโมงและตัวแปรวัด_กระบวนการถูกตั้งค่าเป็น 0 เงื่อนไขจะเป็นจริงและตัวแปร adjust_process จะถูกตั้งค่าเป็น 1 ตัวแปร Measure_process ใช้เพื่อส่งสัญญาณว่าระบบกำลังตรวจสอบอุณหภูมิ เมื่อค่าเป็น 0 ระบบจะอนุญาตให้ผู้ใช้เข้าสู่เมนูการตั้งค่าเวลา ดังนั้น หลังจากที่ตัวแปร adjust_process ได้รับค่า 1 แล้ว ระบบจะเข้าสู่เงื่อนไขการปรับเวลา บล็อกรหัสนี้แสดงอยู่ด้านล่าง

//------------------------------------------------ ----- ปรับชั่วโมง ------------------------------------ --------------------

//ปรับชั่วโมงถ้า(adjust_process == 1) { lcd.clear(); DS1307.getDate (เวลาข้อมูล); lcd.setCursor(0, 0); lcd.print("ปรับชั่วโมง:"); sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(ครั้ง); // ปรับชั่วโมงทำ { วัด = digitalRead (วัดปุ่ม); ปรับชั่วโมง = digitalRead (ปุ่มปรับชั่วโมง); ตกลง = digitalRead (ปุ่ม); ถ้า (วัด == 0 && วัด_state == 1) { วัด_สถานะ = 0; } if(measure == 1 && Measuring_state == 0) { DataTime[4]++; if(DataTime[4] > 23) { DataTime[4] = 0; } วัด_state = 1; sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(ครั้ง); 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]++; ถ้า(DataTime[5] > 59) { DataTime[5] = 0; } sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(ครั้ง); DS1307.setDate(DataTime[0], DataTime[1], DataTime[2], DataTime[3], DataTime[4], DataTime[5], 00); ปรับชั่วโมง_state = 1; } ถ้า (ตกลง == 1) { lcd.clear (); DS1307.getDate (เวลาข้อมูล); sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(0, 0); lcd.print(ครั้ง); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O"); ปรับ_กระบวนการ = 0; } }ในขณะที่(ตกลง != 1); }

ในเงื่อนไขนี้ ระบบจะแสดงข้อความที่แสดงในรูปที่ 4 จากนั้นรอให้ค่าปรับภายในในลูป while เมื่อปรับชั่วโมง ปุ่มเหล่านี้จะมีการเปลี่ยนแปลงฟังก์ชัน กล่าวคือ เป็นมัลติฟังก์ชั่น

ซึ่งช่วยให้คุณใช้ปุ่มได้มากกว่าหนึ่งฟังก์ชัน และลดความซับซ้อนของระบบ

ด้วยวิธีนี้ผู้ใช้จะปรับค่าของชั่วโมงและนาทีแล้วบันทึกข้อมูลในระบบเมื่อกดปุ่มตกลง

อย่างที่คุณเห็นระบบจะอ่าน 3 ปุ่มดังที่แสดงด้านล่าง

วัด = digitalRead (วัดปุ่ม);

ปรับชั่วโมง = digitalRead (ปุ่มปรับชั่วโมง); ตกลง = digitalRead (ปุ่ม);

โปรดทราบว่าปุ่มวัด (Buttonmeasure) มีการเปลี่ยนแปลงฟังก์ชัน ตอนนี้จะใช้เพื่อปรับค่าชั่วโมงดังที่แสดงด้านล่าง เงื่อนไขสองข้อต่อไปนี้มีความคล้ายคลึงกันและใช้เพื่อปรับชั่วโมงและนาทีดังที่แสดงด้านบน

ถ้า (วัด == 0 && วัด_state == 1)

{ วัด_state = 0; } if(measure == 1 && Measuring_state == 0) { DataTime[4]++; if(DataTime[4] > 23) { DataTime[4] = 0; } วัด_state = 1; sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(ครั้ง); 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]++; ถ้า(DataTime[5] > 59) { DataTime[5] = 0; } sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(ครั้ง); DS1307.setDate(DataTime[0], DataTime[1], DataTime[2], DataTime[3], DataTime[4], DataTime[5], 00); ปรับชั่วโมง_state = 1; }

ดังนั้นทุกครั้งที่กดปุ่มหนึ่งในสองปุ่ม ค่าของตำแหน่ง 4 และ 5 ของเวกเตอร์ DataTime จะเปลี่ยนไป และประการที่สอง ค่าเหล่านี้จะถูกบันทึกไว้ในหน่วยความจำ DS1307

หลังจากปรับค่าแล้ว ผู้ใช้ต้องคลิกที่ปุ่ม Ok เพื่อสิ้นสุดกระบวนการ เมื่อเกิดเหตุการณ์นี้ขึ้น ระบบจะรันโค้ดต่อไปนี้

ถ้า (ตกลง == 1)

{ จอแอลซีดีชัดเจน (); DS1307.getDate (เวลาข้อมูล); sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(0, 0); lcd.print(ครั้ง); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O"); ปรับ_กระบวนการ = 0; }

จะเข้าสู่เงื่อนไขข้างต้นและแสดงข้อความชั่วโมงและเมนูตัวเลือกให้กับผู้ใช้

สุดท้าย ผู้ใช้ต้องเริ่มกระบวนการตรวจสอบผู้ป่วยผ่านเซ็นเซอร์อุณหภูมิด้วย Arduino JLCPCB Datalogger

ในการดำเนินการนี้ผู้ใช้จะต้องกดปุ่มวัดที่ต่อกับขาดิจิตอล 2

จากนั้นระบบจะทำการอ่านด้วยเซ็นเซอร์อุณหภูมิสำหรับ Arduino และบันทึกลงในการ์ดหน่วยความจำ พื้นที่วงจรแสดงในรูปด้านบน

ขั้นตอนที่ 8:

ภาพ
ภาพ

ดังนั้น เมื่อกดปุ่ม ส่วนของรหัสต่อไปนี้จะถูกดำเนินการ

ถ้า (วัด == 0 && วัด_state == 1)

{ วัด_state = 0; } if(measure == 1 && Measuring_state == 0 && Measuring_process == 0) {measure_process = 1; วัด_state = 1; ถ้า (SD.exists ("temp.txt")) { Serial.println ("Apagou o arquivo ล่วงหน้า!"); SD.remove("temp.txt"); myFile = SD.open("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!"); } อื่น ๆ { Serial.println("Criou o arquivo!"); myFile = SD.open("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close(); } ล่าช้า (500); myFile.print("ชั่วโมง: "); myFile.println("อุณหภูมิ"); DS1307.getDate (เวลาข้อมูล); realMin = PreviousMin = DataTime[5]; sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.clear(); lcd.setCursor(5, 0); lcd.print(ครั้ง); lcd.setCursor(0, 1); lcd.print("อุณหภูมิ: "); lcd.setCursor(14, 1); เซ็นเซอร์ ขออุณหภูมิ (); float TempSensor = sensors.getTempCByIndex(0); lcd.print (TempSensor); }

ในส่วนโค้ดด้านบน ระบบจะกำหนดค่า 1 ให้กับตัวแปร Measure_process มีหน้าที่อนุญาตให้บันทึกข้อมูลลงในการ์ด SD

นอกจากนี้ระบบจะตรวจสอบว่ามีไฟล์ข้อความที่มีบันทึกข้อมูลอยู่หรือไม่ หากมีไฟล์ ระบบจะลบและสร้างไฟล์ใหม่เพื่อเก็บข้อมูล

หลังจากนั้นจะสร้างสองคอลัมน์: คอลัมน์หนึ่งสำหรับชั่วโมงและอีกคอลัมน์สำหรับอุณหภูมิภายในไฟล์ข้อความ

หลังจากนั้นจะแสดงชั่วโมงและอุณหภูมิบนหน้าจอ LCD ดังแสดงใน Figureabove

หลังจากนั้น โค้ดโฟลว์จะดำเนินการบล็อกโปรแกรมต่อไปนี้

ถ้า(measure_process == 1)

{ updateTemp(); ไบต์ contMin = 0, contHour = 0; DS1307.getDate (เวลาข้อมูล); realMin = DataTime[5]; //------------------------------------------------ ---------------------- นับนาที ---------------------------------------- ------------------- if(actualMin != PreviousMin) { contMin++; PreviousMin = จริงขั้นต่ำ; } if(contMin == 5) { sprintf(times, "%02d:%02d ", DataTime[4], DataTime[5]); เซ็นเซอร์ ขออุณหภูมิ (); float TempSensor = sensors.getTempCByIndex(0); myFile.print(ครั้ง); myFile.println (เซ็นเซอร์อุณหภูมิ); contMin = 0; } //---------------------------------------------------------- --------------นับชั่วโมง----------------------------- ---------------------- if(actualHour != PreviousHour) { contHour++; PreviousHour = จริงชั่วโมง; } if(contHour == 5) { myFile.close(); lcd.clear(); lcd.setCursor(5, 0); lcd.print("เสร็จสิ้น"); lcd.setCursor(5, 1); lcd.print("กระบวนการ"); วัด_กระบวนการ = 0; contHour = 0; } //----------------------------------------------สภาพ เพื่อหยุดดาต้าล็อกเกอร์ -----

ขั้นแรก ฟังก์ชัน updateTemp() จะถูกดำเนินการ คล้ายกับฟังก์ชัน updateHour() แต่จะแสดงอุณหภูมิทุกๆ 1 นาที

หลังจากนั้นระบบจะรวบรวมข้อมูลเวลาจากนาฬิกาเรียลไทม์และเก็บค่านาทีปัจจุบันไว้ในตัวแปร currentMin

จากนั้นจะตรวจสอบว่าตัวแปร min มีการเปลี่ยนแปลงหรือไม่ตามเงื่อนไขที่แสดงด้านล่าง

if(actualMin != PreviousMin)

{ ต่อ มิน ++; PreviousMin = จริงขั้นต่ำ; }

ดังนั้น หากตัวแปรนาทีปัจจุบันแตกต่างจากค่าก่อนหน้า แสดงว่ามีการเปลี่ยนแปลงค่า วิธีนี้เงื่อนไขจะเป็นจริงและค่าของจำนวนนาทีจะเพิ่มขึ้น (contMin) และค่าปัจจุบัน จะถูกกำหนดให้กับตัวแปร PreviousMin เพื่อเก็บค่าก่อนหน้า

ดังนั้นเมื่อค่าของการนับนี้เท่ากับ 5 หมายความว่าผ่านไป 5 นาที และระบบต้องทำการอ่านอุณหภูมิใหม่และบันทึกค่าชั่วโมงและอุณหภูมิไว้ในไฟล์บันทึกของการ์ด SD

ถ้า(ต่อนาที == 5)

{ sprintf(ครั้ง, "%02d:%02d", DataTime[4], DataTime[5]); เซ็นเซอร์ ขออุณหภูมิ (); float TempSensor = sensors.getTempCByIndex(0); myFile.print(ครั้ง); myFile.println (เซ็นเซอร์อุณหภูมิ); contMin = 0; }

ด้วยวิธีนี้ กระบวนการนี้จะทำซ้ำจนกว่าจะถึงค่า 5 ชั่วโมงของการตรวจสอบอุณหภูมิของผู้ป่วยด้วยเซ็นเซอร์อุณหภูมิกับ Arduino

ส่วนรหัสแสดงอยู่ด้านล่างและคล้ายกับการนับนาทีซึ่งแสดงไว้ด้านบน

//------------------------------------------------ ------------ นับชั่วโมง -------------------------------------------- ---------------------

ถ้า (actualHour != ชั่วโมงก่อนหน้า) { contHour ++; PreviousHour = จริงชั่วโมง; } if(contHour == 5) { myFile.close(); lcd.clear(); lcd.setCursor(5, 0); lcd.print("เสร็จสิ้น"); lcd.setCursor(5, 1); lcd.print("กระบวนการ"); วัด_กระบวนการ = 0; contHour = 0; }

หลังจากตรวจสอบครบ 5 ชั่วโมงแล้ว ระบบจะปิดไฟล์บันทึกและแสดงข้อความ "Finished Process" แก่ผู้ใช้

นอกจากนี้ ผู้ใช้สามารถกดปุ่ม Ok/Pause เพื่อหยุดการบันทึกข้อมูล เมื่อสิ่งนี้เกิดขึ้น บล็อกรหัสต่อไปนี้จะถูกดำเนินการ

//---------------------------------------------------------- เงื่อนไข หยุดดาต้าล็อกเกอร์ ---------------------------------------------- ---

ถ้า (ตกลง == 1) { myFile.close (); lcd.clear(); lcd.setCursor(6, 0); lcd.print("หยุด"); lcd.setCursor(5, 1); lcd.print("กระบวนการ"); วัด_กระบวนการ = 0; ล่าช้า (2000); lcd.clear(); DS1307.getDate (เวลาข้อมูล); sprintf(ครั้ง "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 0); lcd.print(ครั้ง); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O/P"); }

ขั้นตอนที่ 9:

ภาพ
ภาพ

จากนั้นระบบจะปิดไฟล์และแสดงข้อความ "Stoped Process" ดังแสดงในรูปที่ 8

ขั้นตอนที่ 10:

ภาพ
ภาพ

หลังจากนั้นระบบจะพิมพ์หน้าจอเวลาและตัวเลือกเมนูดังแสดงในรูปที่ 9

ขั้นตอนที่ 11: การเข้าถึงข้อมูลโมดูลการ์ด SD ด้วย Arduino

การเข้าถึงข้อมูลโมดูลการ์ด SD ด้วย Arduino
การเข้าถึงข้อมูลโมดูลการ์ด SD ด้วย Arduino

หลังจากกระบวนการตรวจสอบ JLCPCB Datalogger ด้วยเซ็นเซอร์อุณหภูมิกับ Arduino จำเป็นต้องถอดการ์ดหน่วยความจำและเข้าถึงข้อมูลบนคอมพิวเตอร์

หากต้องการดูและวิเคราะห์ข้อมูลที่มีคุณภาพดีขึ้น ให้ส่งออก / คัดลอกข้อมูลทั้งหมดของไฟล์ข้อความไปยัง Excel หลังจากนั้นคุณสามารถพล็อตกราฟและวิเคราะห์ผลลัพธ์ที่ได้

ขั้นตอนที่ 12: บทสรุป

JLCPCB Datalogger ที่มีเซ็นเซอร์อุณหภูมิพร้อม Arduino ช่วยให้เราสามารถบันทึกข้อมูลพฤติกรรมอุณหภูมิของผู้ป่วยในช่วงเวลาหนึ่งได้ นอกเหนือจากการวัดอุณหภูมิ

ด้วยข้อมูลที่จัดเก็บไว้เหล่านี้ ทำให้สามารถวิเคราะห์และทำความเข้าใจว่าอุณหภูมิของผู้ป่วยที่ติดเชื้อ COVID 19 เป็นอย่างไร

นอกจากนี้ยังสามารถประเมินระดับอุณหภูมิและเชื่อมโยงมูลค่ากับการใช้ยาบางชนิดได้

ดังนั้น ด้วยข้อมูลเหล่านี้ JLCPCB Datalogger พร้อมเซ็นเซอร์อุณหภูมิสำหรับ Arduino จึงมีวัตถุประสงค์เพื่อช่วยแพทย์และพยาบาลในการศึกษาพฤติกรรมของผู้ป่วย

สุดท้ายนี้ ขอขอบคุณบริษัท JLCPCB ที่สนับสนุนการพัฒนาโครงการและหวังว่าคุณจะสามารถใช้งานได้

ไฟล์ทั้งหมดสามารถดาวน์โหลดและใช้งานได้อย่างอิสระโดยผู้ใช้ทุกคน

แนะนำ: