สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: การสร้าง JLCPCB Datalogger พร้อมเซ็นเซอร์อุณหภูมิด้วย Arduino
- ขั้นตอนที่ 2:
- ขั้นตอนที่ 3:
- ขั้นตอนที่ 4:
- ขั้นตอนที่ 5:
- ขั้นตอนที่ 6: เมนูควบคุม JLCPCB Datalogger
- ขั้นตอนที่ 7:
- ขั้นตอนที่ 8:
- ขั้นตอนที่ 9:
- ขั้นตอนที่ 10:
- ขั้นตอนที่ 11: การเข้าถึงข้อมูลโมดูลการ์ด SD ด้วย Arduino
- ขั้นตอนที่ 12: บทสรุป
วีดีโอ: เซ็นเซอร์อุณหภูมิสำหรับ Arduino ที่ใช้สำหรับ COVID 19: 12 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
เซ็นเซอร์อุณหภูมิสำหรับ 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 และด้วยข้อมูลนี้ เราสามารถตรวจสอบอุณหภูมิของผู้ป่วยที่รับการรักษาได้
ดังนั้นวงจรจะแสดงในรูปด้านบน
ดังที่คุณเห็นวงจรนี้มีเซ็นเซอร์อุณหภูมิ 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
ขั้นแรก ผู้ใช้ต้องตรวจสอบและปรับชั่วโมงของระบบ กระบวนการนี้ดำเนินการเมื่อกดปุ่มที่สอง
เมื่อกดปุ่ม หน้าจอต่อไปนี้จะปรากฏขึ้น ซึ่งแสดงใน 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
หลังจากกระบวนการตรวจสอบ JLCPCB Datalogger ด้วยเซ็นเซอร์อุณหภูมิกับ Arduino จำเป็นต้องถอดการ์ดหน่วยความจำและเข้าถึงข้อมูลบนคอมพิวเตอร์
หากต้องการดูและวิเคราะห์ข้อมูลที่มีคุณภาพดีขึ้น ให้ส่งออก / คัดลอกข้อมูลทั้งหมดของไฟล์ข้อความไปยัง Excel หลังจากนั้นคุณสามารถพล็อตกราฟและวิเคราะห์ผลลัพธ์ที่ได้
ขั้นตอนที่ 12: บทสรุป
JLCPCB Datalogger ที่มีเซ็นเซอร์อุณหภูมิพร้อม Arduino ช่วยให้เราสามารถบันทึกข้อมูลพฤติกรรมอุณหภูมิของผู้ป่วยในช่วงเวลาหนึ่งได้ นอกเหนือจากการวัดอุณหภูมิ
ด้วยข้อมูลที่จัดเก็บไว้เหล่านี้ ทำให้สามารถวิเคราะห์และทำความเข้าใจว่าอุณหภูมิของผู้ป่วยที่ติดเชื้อ COVID 19 เป็นอย่างไร
นอกจากนี้ยังสามารถประเมินระดับอุณหภูมิและเชื่อมโยงมูลค่ากับการใช้ยาบางชนิดได้
ดังนั้น ด้วยข้อมูลเหล่านี้ JLCPCB Datalogger พร้อมเซ็นเซอร์อุณหภูมิสำหรับ Arduino จึงมีวัตถุประสงค์เพื่อช่วยแพทย์และพยาบาลในการศึกษาพฤติกรรมของผู้ป่วย
สุดท้ายนี้ ขอขอบคุณบริษัท JLCPCB ที่สนับสนุนการพัฒนาโครงการและหวังว่าคุณจะสามารถใช้งานได้
ไฟล์ทั้งหมดสามารถดาวน์โหลดและใช้งานได้อย่างอิสระโดยผู้ใช้ทุกคน
แนะนำ:
หมวกนิรภัย Covid ส่วนที่ 1: บทนำสู่ Tinkercad Circuits!: 20 ขั้นตอน (พร้อมรูปภาพ)
Covid Safety Helmet ตอนที่ 1: บทนำสู่ Tinkercad Circuits!: สวัสดีเพื่อน ๆ ในชุดสองตอนนี้ เราจะเรียนรู้วิธีใช้วงจรของ Tinkercad - เครื่องมือที่สนุก ทรงพลัง และให้ความรู้สำหรับการเรียนรู้เกี่ยวกับวิธีการทำงานของวงจร! หนึ่งในวิธีที่ดีที่สุดในการเรียนรู้คือการทำ ดังนั้น อันดับแรก เราจะออกแบบโครงการของเราเอง: th
COVID-19 WHO Dashboard: 8 ขั้นตอน (พร้อมรูปภาพ)
COVID-19 WHO Dashboard: คำแนะนำนี้แสดงวิธีใช้ ESP8266 / ESP32 และ LCD เพื่อสร้างแดชบอร์ด WHO สถานการณ์ COVID-19
เครื่องตรวจจับหน้ากาก COVID-19: 6 ขั้นตอน (พร้อมรูปภาพ)
เครื่องตรวจจับหน้ากาก COVID-19: เนื่องจากผลกระทบของการแพร่ระบาดของ coronavirus (COVID 19) พนักงานเท่านั้นที่สามารถผ่านเข้าและออกจากอาคารสำนักงาน Makerfabs และต้องสวมหน้ากาก NFC ที่ Makerfabs ปรับแต่งเป็นพิเศษซึ่งบุคคลภายนอกไม่สามารถเข้าถึงได้ . แต่คนบางคน
โปรแกรม MicroPython: อัปเดตข้อมูลโรค Coronavirus (COVID-19) แบบเรียลไทม์: 10 ขั้นตอน (พร้อมรูปภาพ)
โปรแกรม MicroPython: อัปเดตข้อมูลโรคโคโรนาไวรัส (COVID-19) แบบเรียลไทม์: ในช่วงไม่กี่สัปดาห์ที่ผ่านมา จำนวนผู้ป่วยที่ได้รับการยืนยันว่าเป็นโรค coronavirus (COVID 19) ทั่วโลกเกิน 100,000 รายและองค์การอนามัยโลก (WHO) ได้ประกาศ การระบาดของโรคปอดบวม coronavirus ใหม่จะเป็นการแพร่ระบาดทั่วโลก ฉันเป็นอย่างมาก
ติดตามการระบาดของ COVID-19 โดย ESP8266: 11 ขั้นตอน (พร้อมรูปภาพ)
ติดตามการระบาดของไวรัส COVID-19 โดย ESP8266: อุปกรณ์ขนาดเล็กนี้จะช่วยให้คุณรับทราบข้อมูลล่าสุดเกี่ยวกับการระบาดของโรค coronavirus และสถานการณ์ในประเทศของคุณ นี่เป็นโครงการที่ใช้ IoT ซึ่งแสดงข้อมูลผู้ป่วย ผู้เสียชีวิต และผู้ที่หายจากไวรัสโคโรน่า (โควิด-19) แบบเรียลไทม์