Სარჩევი:
- მარაგები
- ნაბიჯი 1: JLCPCB მონაცემთა კატალოგის აგება ტემპერატურის სენსორით არდუინოსთან ერთად
- ნაბიჯი 2:
- ნაბიჯი 3:
- ნაბიჯი 4:
- ნაბიჯი 5:
- ნაბიჯი 6: JLCPCB Datalogger Control მენიუ
- ნაბიჯი 7:
- ნაბიჯი 8:
- ნაბიჯი 9:
- ნაბიჯი 10:
- ნაბიჯი 11: წვდომა SD ბარათის მოდულის მონაცემებზე Arduino– ით
- ნაბიჯი 12: დასკვნა
ვიდეო: ტემპერატურის სენსორი Arduino– სთვის გამოიყენება COVID 19: 12 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:16
ტემპერატურის სენსორი არდუინოსთვის არის ფუნდამენტური ელემენტი, როდესაც გვსურს გავზომოთ ადამიანის სხეულის პროცესორის ტემპერატურა.
ტემპერატურის სენსორი არდუინოსთან უნდა იყოს კონტაქტში ან ახლოს, რომ მიიღოთ და გაზომოთ სითბოს დონე. ასე მუშაობს თერმომეტრები.
ეს მოწყობილობები უკიდურესად გამოიყენება ავადმყოფი ადამიანების სხეულის ტემპერატურის გასაზომად, რადგანაც ტემპერატურა არის ერთ -ერთი პირველი ფაქტორი, რომელიც იცვლება ადამიანის ორგანიზმში პათოლოგიის ან დაავადების არსებობისას.
ერთ -ერთი დაავადება, რომელიც ცვლის ადამიანის სხეულის ტემპერატურას, არის COVID 19. ამიტომ, ჩვენ წარმოგიდგენთ ძირითად სიმპტომებს:
ხველა დაღლილობა სუნთქვის გაძნელება (მძიმე შემთხვევები) ცხელება ცხელება არის სიმპტომი, რომლის მთავარი მახასიათებელია სხეულის ტემპერატურის მომატება. ამ დაავადების დროს ჩვენ მუდმივად უნდა ვაკონტროლოთ ეს სიმპტომები.
ამრიგად, ჩვენ შევიმუშავებთ პროექტს ტემპერატურის მონიტორინგისთვის და ამ მონაცემების მეხსიერების ბარათზე შესანახად JLCPCB Datalogger მეშვეობით ტემპერატურის სენსორის გამოყენებით Arduino.
ამიტომ, ამ სტატიაში თქვენ შეისწავლით:
- როგორ მუშაობს JLCPCB მონაცემთა კატალოგი ტემპერატურის სენსორით არდუინოსთან ერთად?
- როგორ მუშაობს ტემპერატურის სენსორი არდუინოსთან.
- როგორ მუშაობს DS18B20 ტემპერატურის სენსორი არდუინოსთან
- გამოიყენეთ ღილაკები მრავალი ფუნქციით.
შემდეგი, ჩვენ გაჩვენებთ თუ როგორ განავითარებთ თქვენს JLCPCB მონაცემთა კატალოგს Arduino ტემპერატურის სენსორის გამოყენებით.
მარაგები
Arduino UNO
JLCPCB ბეჭდური მიკროსქემის დაფა
DS18B20 ტემპერატურის სენსორი
არდუინო ნანო R3
მხტუნავები
LCD ეკრანი 16 x 2
ღილაკზე გადამრთველი
რეზისტორი 1 კრ
SD ბარათის მოდული Arduino– სთვის
ნაბიჯი 1: JLCPCB მონაცემთა კატალოგის აგება ტემპერატურის სენსორით არდუინოსთან ერთად
როგორც უკვე აღვნიშნეთ, პროექტი შედგება JLCPCB Datalogger ტემპერატურის სენსორით Arduino– ით და ამ მონაცემების საშუალებით ჩვენ შეგვიძლია თვალყური ვადევნოთ მკურნალი პაციენტის ტემპერატურას.
ამრიგად, სქემა ნაჩვენებია ზემოთ მოცემულ ფიგურაში.
ამიტომ, როგორც ხედავთ, ამ წრეს აქვს DS18B20 ტემპერატურის სენსორი Arduino– ით, რომელიც პასუხისმგებელია პაციენტის ტემპერატურის მაჩვენებლის გაზომვაზე.
გარდა ამისა, Arduino Nano იქნება პასუხისმგებელი ამ მონაცემების შეგროვებასა და SD ბარათის მოდულის მეხსიერების ბარათზე შენახვაზე.
თითოეული ინფორმაცია შეინახება შესაბამისი დროით, რომელიც წაიკითხება RTC მოდულიდან DS1307.
ამრიგად, Arduino– სთან ერთად ტემპერატურის სენსორის მონაცემების შესანახად, მომხმარებელმა უნდა შეასრულოს პროცესი საკონტროლო მენიუს საშუალებით 16x2 LCD– ით.
ნაბიჯი 2:
თითოეული ღილაკი პასუხისმგებელია ვარიანტის კონტროლზე, როგორც ეს ნაჩვენებია LCD ეკრანზე 16x2 ფიგურაში 2.
თითოეული ვარიანტი პასუხისმგებელია სისტემის ფუნქციის შესასრულებლად, როგორც ქვემოთ მოცემულია.
- ვარიანტი M პასუხისმგებელია მეხსიერების ბარათზე მონაცემების გაზომვისა და ჩაწერის დასაწყებად.
- ვარიანტი H პასუხისმგებელია სისტემის საათების რეგულირებაზე.
- ვარიანტი O/P გამოიყენება სისტემაში მონაცემების შეყვანის დასადასტურებლად ან მეხსიერების ბარათზე მონაცემების ჩაწერის შესაჩერებლად.
სისტემის კონტროლის პროცესის გასაგებად, ჩვენ მოგაწვდით კოდს ქვემოთ და განვიხილავთ JLCPCB Datalogger– ის ნაბიჯ ნაბიჯ კონტროლის სისტემას ტემპერატურის სენსორით არდუინოსთან ერთად.
#მოიცავს // ბიბლიოთეკა DS18B20 სენსორის ყველა ფუნქციით
#მოიცავს #მოიცავს // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // კონფიგურაცია ეკრანზე LCD 16x2 პუნქტით 0x27 #განსაზღვრეთ ONE_WIRE_BUS 8 // ციფრული პინი DS18B20 სენსორთან დასაკავშირებლად // განსაზღვრეთ ერთი წამალზე კომუნიკაციისა და სენსორის OneWire oneWire (ONE_WIRE_BUS) გამოყენება; DallasTemperature სენსორები (& oneWire); DeviceAddress sensor1; ფაილის myFile; #განსაზღვრეთ Buttonmeasure 2 #განსაზღვრეთ Buttonadjusthour 3 #განსაზღვრეთ Buttonok 4 bool ღონისძიება = 0, adjusthour = 0, ok = 0; bool masë_state = 0, adjusthour_state = 0, ok_state = 0; bool ღონისძიება_პროცესი = 0, მორგება_პროცესი = 0; ბაიტი actualMin = 0, previousMin = 0; ბაიტი ფაქტობრივი საათი = 0, წინა საათი = 0; ბაიტი minUpdate = 0; int pinoSS = 10; // პინ 53 პუნქტი მეგა / პინ 10 პუნქტი UNO int DataTime [7]; void updateHour () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd. ბეჭდვა (ჯერ); minUpdate = DataTime [5]; }} void updateTemp () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd. წმინდა (); lcd.setCursor (5, 0); lcd. ბეჭდვა (ჯერ); lcd.setCursor (0, 1); lcd.print ("ტემპერატურა:"); lcd.setCursor (14, 1); სენსორები. მოითხოვეთ ტემპერატურა (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} void setup () {Serial.begin (9600); DS1307. დაწყება (); სენსორები.დაწყება (); 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 ("ტემპერატურის სისტემა"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); დაგვიანება (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print ("სენსორის ლოკალიზაცია წარმატებით!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("სენსორი"); if (SD.begin ()) {// Inicializa ან SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("SD Card ბარათის გაკეთება"); დაბრუნების; } DS1307.getDate (DataTime); lcd. წმინდა (); sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd. ბეჭდვა (ჯერ); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); } void loop () {updateHour (); // ღილაკის წაკითხვის მდგომარეობის ზომა = digitalRead (ღილაკის ზომა); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (ღილაკი); თუ (ღონისძიება == 0 && ღონისძიების_სახელი == 1) {ღონისძიების_სახელი = 0; } if (ღონისძიება == 1 && ღონისძიება_სახელმწიფო == 0 && ღონისძიება_პროცესი == 0) {ღონისძიების_პროცესი = 1; ღონისძიების_სახელი = 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 (); } დაყოვნება (500); myFile.print ("საათი:"); myFile.println ("ტემპერატურა"); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd. წმინდა (); lcd.setCursor (5, 0); lcd. ბეჭდვა (ჯერ); 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 && ღონისძიება_პროცესი == 0) {adjust_process = 1; } // -------------------------------------------------- --- გაზომვის პროცესი ------------------------------------------------- -------------- if (ღონისძიება_პროცესი == 1) {updateTemp (); ბაიტი contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ---------------------------------------------------- --------- დათვალეთ წუთი ------------------------------------------- ------------------- თუ (ფაქტობრივი მინ! = წინა წთ) {კონტმინ ++; previousMin = ფაქტობრივი Min; } if (contMin == 5) {sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); სენსორები. მოითხოვეთ ტემპერატურა (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (ჯერ); myFile.println (TempSensor); contMin = 0; } // -------------------------------------------------- ------------ საათების დათვლა ---------------------------------------- ---------------------- if (ფაქტობრივი საათი! = წინა საათი) {contHour ++; წინა საათი = ფაქტობრივი საათი; } if (contHour == 5) {myFile.close (); lcd. წმინდა (); lcd.setCursor (5, 0); lcd.print ("დასრულებულია"); lcd.setCursor (5, 1); lcd.print ("პროცესი"); ღონისძიება_პროცესი = 0; contHour = 0; } // ---------------------------------------------- მდგომარეობა მონაცემთა დამრიგებლის შესაჩერებლად -------------------------------------------------- ---- if (ok == 1) {myFile.close (); lcd. წმინდა (); lcd.setCursor (6, 0); lcd.print ("შეჩერებულია"); lcd.setCursor (5, 1); lcd.print ("პროცესი"); ღონისძიების_პროცესი = 0; დაგვიანება (2000); lcd. წმინდა (); DS1307.getDate (DataTime); sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd. ბეჭდვა (ჯერ); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }} // -------------------------------------------------- ------- საათების მორგება --------------------------------------------- ---------------------- // შეცვალე საათი თუ (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("საათის მორგება:"); sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd. ბეჭდვა (ჯერ); // Hour Adjust do {ღონისძიება = digitalRead (ღილაკის ზომა); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (ღილაკი); თუ (ღონისძიება == 0 && ღონისძიების_სახელი == 1) {ღონისძიების_სახელი = 0; } if (ღონისძიება == 1 && ღონისძიების_სახელი == 0) {მონაცემთა დრო [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } ღონისძიების_სახელი = 1; sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd. ბეჭდვა (ჯერ); 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 (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd. ბეჭდვა (ჯერ); 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 (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd. ბეჭდვა (ჯერ); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); adjust_process = 0; }} while (კარგი! = 1); } // -------------------------------------------------- ------- დასასრულს მორგება საათი -------------------------------------------- -------------------}}
პირველ რიგში, ჩვენ განვსაზღვრავთ ყველა ბიბლიოთეკას მოდულების გასაკონტროლებლად და ცვლადების გამოსაცხადებლად, რომლებიც გამოიყენება JLCPCB Datalogger– ის დაპროგრამებისას ტემპერატურის სენსორით Arduino– სთვის. კოდის ბლოკი ნაჩვენებია ქვემოთ.
ნაბიჯი 3:
#მოიცავს // ბიბლიოთეკა DS18B20 სენსორის ყველა ფუნქციით
#მოიცავს #მოიცავს // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // კონფიგურაცია ეკრანზე LCD 16x2 პუნქტით 0x27 #განსაზღვრეთ ONE_WIRE_BUS 8 // ციფრული პინი DS18B20 სენსორის დასაკავშირებლად // განსაზღვრეთ ერთი შაბლონი ერთი სხივის კომუნიკაციისთვის OneWire oneWire (ONE_WIRE_BUS); DallasTemperature სენსორები (& oneWire); DeviceAddress sensor1; ფაილის myFile; #განსაზღვრეთ ღილაკის ზომა 2 #განსაზღვრეთ ღილაკი ჯუსთური 3 #განსაზღვრეთ ღილაკი 4 bool ღონისძიება = 0, adjusthour = 0, ok = 0; bool masë_state = 0, adjusthour_state = 0, ok_state = 0; bool ღონისძიება_პროცესი = 0, მორგება_პროცესი = 0; ბაიტი actualMin = 0, previousMin = 0; ბაიტი ფაქტობრივი საათი = 0, წინა საათი = 0; ბაიტი minUpdate = 0; int pinoSS = 10; // pin 53 para Mega / pin 10 para UNO int DataTime [7];
შემდგომში ჩვენ გვაქვს ბათილი დაყენების ფუნქცია. ეს ფუნქცია გამოიყენება ქინძისთავების და მოწყობილობის ინიციალიზაციის კონფიგურაციისთვის, როგორც ქვემოთ მოცემულია.
ბათილად დაყენება ()
{Serial.begin (9600); DS1307. დაწყება (); სენსორები.დაწყება (); 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 ("ტემპერატურის სისტემა"); lcd.setCursor (3, 1); lcd.print ("მონაცემთა კატალოგი"); დაგვიანება (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print ("სენსორის ლოკალიზაცია წარმატებით!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("სენსორი"); if (SD.begin ()) {// Inicializa ან SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("SD ბარათის გაკეთების მცდელობა"); დაბრუნების; } DS1307.getDate (DataTime); lcd. წმინდა (); sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd. ბეჭდვა (ჯერ); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }
პირველი, დაიწყო სერიული კომუნიკაცია, რეალურ დროში საათი და ტემპერატურის სენსორი Arduino DS18B20– ისთვის. მოწყობილობების ინიციალიზაციისა და ტესტირების შემდეგ შეტყობინება მენიუს პარამეტრებით დაბეჭდილია 16x2 LCD ეკრანზე. ეს ეკრანი ნაჩვენებია ფიგურაში 1.
ნაბიჯი 4:
ამის შემდეგ, სისტემა კითხულობს საათებს და აახლებს მნიშვნელობას updateHour ფუნქციის გამოძახებით. ამრიგად, ამ ფუნქციას აქვს მიზანი ყოველ წუთში საათობრივი მნიშვნელობის წარმოდგენა. ფუნქციის კოდის ბლოკი ნაჩვენებია ქვემოთ.
void updateHour ()
{DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd. ბეჭდვა (ჯერ); minUpdate = DataTime [5]; }}
ნაბიჯი 5:
საათების განახლების გარდა, მომხმარებელს შეუძლია შეარჩიოს სამი ღილაკიდან ერთ -ერთი, რომელიც დააკვირდება პაციენტს ტემპერატურის სენსორით არდუინოსთან ერთად. წრე ნაჩვენებია ზემოთ მოცემულ ფიგურაში.
ნაბიჯი 6: JLCPCB Datalogger Control მენიუ
პირველ რიგში, მომხმარებელმა უნდა შეამოწმოს და დაარეგულიროს სისტემის საათები. ეს პროცესი ხორციელდება მეორე ღილაკზე დაჭერისას.
ღილაკზე დაჭერისას უნდა გამოჩნდეს შემდეგი ეკრანი, რომელიც ნაჩვენებია ზემოთ სურათზე.
ნაბიჯი 7:
ამ ეკრანიდან მომხმარებელს შეეძლება ჩაწეროს საათისა და წუთის მნიშვნელობა Arduino– ს ციფრული 2 – ე და 3 – ე პინებთან დაკავშირებული ღილაკებიდან. ღილაკები ნაჩვენებია ზემოთ მოცემულ ფიგურაში.
საათების კონტროლის კოდის ნაწილი ნაჩვენებია ქვემოთ.
თუ (adjusthour == 0 && adjusthour_state == 1)
{adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && ღონისძიება_პროცესი == 0) {adjust_process = 1; }
როდესაც საათის ღილაკს დააჭერთ და ღონისძიების_პროცესის ცვლადი დაყენებულია 0 -ზე, პირობა იქნება ჭეშმარიტი და adjust_process ცვლადი იქნება 1. ღონისძიების_პროცესის ცვლადი გამოიყენება სიგნალისთვის, რომ სისტემა აკონტროლებს ტემპერატურას. როდესაც მისი მნიშვნელობა არის 0, სისტემა საშუალებას მისცემს მომხმარებელს შევიდეს დროის პარამეტრების მენიუში. ამრიგად, მას შემდეგ, რაც adjust_process ცვლადი მიიღებს 1 მნიშვნელობას, სისტემა შეიყვანს დროის კორექტირების მდგომარეობას. ეს კოდი ბლოკი ნაჩვენებია ქვემოთ.
// ---------------------------------------------------- ----- საათების მორგება ---------------------------------------------- --------------------
// Adjust Hour if (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("საათის მორგება:"); sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd. ბეჭდვა (ჯერ); // Hour Adjust do {ღონისძიება = digitalRead (ღილაკის ზომა); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (ღილაკი); თუ (ღონისძიება == 0 && ღონისძიების_სახელი == 1) {ღონისძიების_სახელი = 0; } if (ღონისძიება == 1 && ღონისძიების_სახელი == 0) {მონაცემთა დრო [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } ღონისძიების_სახელმწიფო = 1; sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd. ბეჭდვა (ჯერ); 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 (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd. ბეჭდვა (ჯერ); 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 (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd. ბეჭდვა (ჯერ); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); adjust_process = 0; }} while (კარგი! = 1); }
ამ მდგომარეობაში სისტემა აჩვენებს შეტყობინებას, რომელიც ნაჩვენებია ფიგურა 4 -ში და შემდეგ დაელოდება მნიშვნელობების შინაგანად მორგებას, ხოლო მარყუჟში. საათების რეგულირებისას ამ ღილაკებს აქვთ ფუნქციები შეცვლილი, ანუ ისინი მრავალფუნქციურია.
ეს საშუალებას გაძლევთ გამოიყენოთ ღილაკი ერთზე მეტი ფუნქციისთვის და შეამციროთ სისტემის სირთულე.
ამ გზით, მომხმარებელი დაარეგულირებს საათებისა და წუთების მნიშვნელობას და შემდეგ შეინახავს მონაცემებს სისტემაში, როდესაც Ok ღილაკს დააჭერთ.
როგორც ხედავთ, სისტემა წაიკითხავს 3 ღილაკს, როგორც ქვემოთ მოცემულია.
ღონისძიება = digitalRead (ღილაკის ზომა);
adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (ღილაკი);
გაითვალისწინეთ, რომ ზომის ღილაკმა (Buttonmeasure) შეცვალა თავისი ფუნქცია. ის ახლა გამოყენებული იქნება საათის მნიშვნელობების შესაცვლელად, როგორც ქვემოთ არის ნაჩვენები. შემდეგი ორი პირობა მსგავსია და გამოიყენება საათებისა და წუთების შესაცვლელად, როგორც ეს ნაჩვენებია ზემოთ.
თუ (ღონისძიება == 0 && ღონისძიების_სახელი == 1)
{ღონისძიების_სახელი = 0; } if (ღონისძიება == 1 && ღონისძიების_სახელი == 0) {მონაცემთა დრო [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } ღონისძიების_სახელმწიფო = 1; sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd. ბეჭდვა (ჯერ); 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 (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd. ბეჭდვა (ჯერ); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; }
ამრიგად, ყოველ ჯერზე, როდესაც ორი ღილაკიდან ერთს დააჭირეთ, DataTime ვექტორის პოზიციების 4 და 5 მნიშვნელობა შეიცვლება და მეორეც, ეს მნიშვნელობები შეინახება DS1307 მეხსიერებაში.
კორექტირების შემდეგ, მომხმარებელმა უნდა დააჭიროს ღილაკს Ok, პროცესის დასასრულებლად. როდესაც ეს მოვლენა მოხდება, სისტემა შეასრულებს კოდის შემდეგ ხაზებს.
თუ (კარგი == 1)
{lcd.clear (); DS1307.getDate (DataTime); sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd. ბეჭდვა (ჯერ); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); adjust_process = 0; }
ის შეიყვანს ზემოაღნიშნულ მდგომარეობას და მომხმარებელს წარუდგენს საათის შეტყობინებას და პარამეტრების მენიუს.
დაბოლოს, მომხმარებელმა უნდა დაიწყოს პაციენტის მონიტორინგის პროცესი ტემპერატურის სენსორის საშუალებით Arduino JLCPCB Datalogger– ით.
ამისათვის მომხმარებელმა უნდა დააჭიროს გაზომვის ღილაკს, რომელიც დაკავშირებულია ციფრულ პინ 2 -თან.
შემდეგ, სისტემა შეასრულებს კითხვას ტემპერატურის სენსორით Arduino– სთვის და შეინახავს მას მეხსიერების ბარათზე. მიკროსქემის რეგიონი ნაჩვენებია ზემოთ მოცემულ ფიგურაში.
ნაბიჯი 8:
ამიტომ, ღილაკზე დაჭერისას, კოდის შემდეგი ნაწილი შესრულდება.
თუ (ღონისძიება == 0 && ღონისძიების_სახელი == 1)
{ღონისძიების_სახელი = 0; } if (ღონისძიება == 1 && ღონისძიება_სახელმწიფო == 0 && ღონისძიება_პროცესი == 0) {ღონისძიების_პროცესი = 1; ღონისძიების_სახელი = 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 (); } დაყოვნება (500); myFile.print ("საათი:"); myFile.println ("ტემპერატურა"); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd. წმინდა (); lcd.setCursor (5, 0); lcd. ბეჭდვა (ჯერ); lcd.setCursor (0, 1); lcd.print ("ტემპერატურა:"); lcd.setCursor (14, 1); სენსორები. მოითხოვეთ ტემპერატურა (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }
კოდის ნაწილში ზემოთ, სისტემა მიანიჭებს მნიშვნელობას 1 ღონისძიების_ პროცესის ცვლადს. ის პასუხისმგებელია მონაცემების SD ბარათზე შენახვის საშუალებას.
გარდა ამისა, სისტემა შეამოწმებს არსებობს თუ არა ტექსტური ფაილი მონაცემთა ჟურნალით თუ არა. თუ ფაილი არსებობს, სისტემა წაშლის და შექმნის ახალს მონაცემების შესანახად.
ამის შემდეგ, ის შექმნის ორ სვეტს: ერთი საათებისთვის და ერთი ტემპერატურისთვის ტექსტური ფაილის შიგნით.
ამის შემდეგ, ის აჩვენებს საათებსა და ტემპერატურას LCD ეკრანზე, როგორც ეს ნაჩვენებია ზემოთ სურათზე.
ამის შემდეგ, კოდის ნაკადი შეასრულებს შემდეგ პროგრამის ბლოკს.
თუ (ღონისძიების_ზომი == 1)
{updateTemp (); ბაიტი contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ---------------------------------------------------- --------- დათვალეთ წუთი ------------------------------------------- ------------------- თუ (ფაქტობრივი მინ! = წინა წთ) {კონტმინ ++; previousMin = ფაქტობრივი Min; } if (contMin == 5) {sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); სენსორები. მოითხოვეთ ტემპერატურა (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (ჯერ); myFile.println (TempSensor); contMin = 0; } // -------------------------------------------------- ------------ საათების დათვლა ---------------------------------------- ---------------------- if (ფაქტობრივი საათი! = წინა საათი) {contHour ++; წინა საათი = ფაქტობრივი საათი; } if (contHour == 5) {myFile.close (); lcd. წმინდა (); lcd.setCursor (5, 0); lcd.print ("დასრულებულია"); lcd.setCursor (5, 1); lcd.print ("პროცესი"); ღონისძიების_პროცესი = 0; contHour = 0; } // ---------------------------------------------- მდგომარეობა შეწყვიტოს მონაცემთა დამწერი -----
პირველი, განახლება Temp () ფუნქცია შესრულდება. მსგავსია updateHour () ფუნქცია; თუმცა, ის აჩვენებს ტემპერატურას ყოველ 1 წუთში.
ამის შემდეგ, სისტემა შეაგროვებს დროის მონაცემებს რეალურ დროში და შეინახავს მიმდინარე წუთის მნიშვნელობას currentMin ცვლადში.
შემდეგ, ის შეამოწმებს შეიცვალა თუ არა მინი ცვლადი, ქვემოთ წარმოდგენილი მდგომარეობის შესაბამისად
თუ (ფაქტობრივი წუთი! = წინა წუთი)
{contMin ++; previousMin = ფაქტობრივი Min; }
ამრიგად, თუ მიმდინარე წუთის ცვლადი განსხვავდება წინა მნიშვნელობისაგან, ეს ნიშნავს, რომ ღირებულების ცვლილება მოხდა. ამ გზით, მდგომარეობა იქნება ჭეშმარიტი და წუთების რაოდენობის მნიშვნელობა გაიზრდება (contMin) და მიმდინარე მნიშვნელობა გადაეცემა ცვლადი previousMin, მისი წინა მნიშვნელობის შესანახად.
ამრიგად, როდესაც ამ რიცხვის მნიშვნელობა 5 -ის ტოლია, ეს ნიშნავს, რომ გავიდა 5 წუთი და სისტემამ უნდა შეასრულოს ახალი ტემპერატურის კითხვა და შეინახოს საათი და ტემპერატურის მნიშვნელობა SD ბარათის ჟურნალის ფაილში.
თუ (contMin == 5)
{sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); სენსორები. მოითხოვეთ ტემპერატურა (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (ჯერ); myFile.println (TempSensor); contMin = 0; }
ამ გზით, ეს პროცესი განმეორდება მანამ, სანამ არ მიაღწევს 5 საათის განმავლობაში პაციენტის ტემპერატურის მონიტორინგს ტემპერატურის სენსორით არდუინოსთან ერთად.
კოდის ნაწილი ნაჩვენებია ქვემოთ და მსგავსია წუთის დათვლისა, რომელიც ზემოთ იყო წარმოდგენილი.
// ---------------------------------------------------- ----------- საათების დათვლა ----------------------------------------- ---------------------
if (ფაქტობრივი საათი! = წინა საათი) {contHour ++; წინა საათი = ფაქტობრივი საათი; } if (contHour == 5) {myFile.close (); lcd. წმინდა (); lcd.setCursor (5, 0); lcd.print ("დასრულებულია"); lcd.setCursor (5, 1); lcd.print ("პროცესი"); ღონისძიების_პროცესი = 0; contHour = 0; }
მონიტორინგის 5 საათის მიღწევის შემდეგ, სისტემა დახურავს ჟურნალის ფაილს და მომხმარებელს წარუდგენს შეტყობინებას "დასრულებული პროცესი".
გარდა ამისა, მომხმარებელს შეუძლია დააჭიროს Ok/Pause ღილაკს მონაცემების ჩაწერის შესაჩერებლად. როდესაც ეს მოხდება, შესრულდება შემდეგი კოდის ბლოკი.
// ------------------------------------------------ მდგომარეობა შეწყვიტე მონაცემთა დამწერი -------------------------------------------------- ---
if (ok == 1) {myFile.close (); lcd. წმინდა (); lcd.setCursor (6, 0); lcd.print ("შეჩერებულია"); lcd.setCursor (5, 1); lcd.print ("პროცესი"); ღონისძიების_პროცესი = 0; დაგვიანება (2000); lcd. წმინდა (); DS1307.getDate (DataTime); sprintf (ჯერ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd. ბეჭდვა (ჯერ); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }
ნაბიჯი 9:
შემდეგ, სისტემა დახურავს ფაილს და წარადგენს შეტყობინებას "შეჩერებული პროცესი", როგორც ეს ნაჩვენებია ფიგურაში 8.
ნაბიჯი 10:
ამის შემდეგ, სისტემა დაბეჭდავს დროის ეკრანს და მენიუს პარამეტრებს, როგორც ეს ნაჩვენებია ფიგურაში 9.
ნაბიჯი 11: წვდომა SD ბარათის მოდულის მონაცემებზე Arduino– ით
JLCPCB Datalogger– ის მონიტორინგის პროცესის შემდეგ ტემპერატურის სენსორით Arduino– ით, აუცილებელია მეხსიერების ბარათის ამოღება და მონაცემებზე წვდომა კომპიუტერზე.
მონაცემების უკეთესი ხარისხის სანახავად და გასაანალიზებლად, ექსპორტი / დააკოპირეთ ყველა ინფორმაცია ტექსტურ ფაილში Excel- ში. ამის შემდეგ შეგიძლიათ გრაფიკების შედგენა და მიღებული შედეგების ანალიზი.
ნაბიჯი 12: დასკვნა
JLCPCB Datalogger ტემპერატურის სენსორით Arduino– ით გვაძლევს საშუალებას, ტემპერატურის გაზომვის გარდა, ჩაწეროთ ინფორმაცია პაციენტის ტემპერატურული ქცევის შესახებ გარკვეული პერიოდის განმავლობაში.
ამ შენახული მონაცემებით შესაძლებელია გაანალიზდეს და გავიგოთ როგორ იქცევა COVID 19 -ით ინფიცირებული პაციენტის ტემპერატურა.
გარდა ამისა, შესაძლებელია ტემპერატურის დონის შეფასება და მისი ღირებულების დაკავშირება რაიმე სახის მედიკამენტის გამოყენებასთან.
ამ მონაცემების საშუალებით, JLCPCB Datalogger ტემპერატურის სენსორით Arduino– ს მიზანია დაეხმაროს ექიმებსა და ექთნებს პაციენტთა ქცევის შესწავლაში.
დაბოლოს, ჩვენ მადლობას ვუხდით კომპანიას JLCPCB პროექტის განვითარების ხელშეწყობისთვის და ვიმედოვნებთ, რომ თქვენ შეძლებთ მის გამოყენებას
ყველა ფაილის გადმოწერა და გამოყენება თავისუფალია ნებისმიერი მომხმარებლის მიერ.
გირჩევთ:
RC Thrust Vectoring Hovercraft (გამოიყენება Jet Fighters– ში): 4 ნაბიჯი (სურათებით)
RC Thrust Vectoring Hovercraft (გამოიყენება Jet Fighters– ში): დარეგისტრირდით ჩემს კურსზე „ელექტრონიკა მოკლედ“: https://www.udemy.com/electronics-in-a-nutshell/?couponCode=TINKERSPARK ასევე ნახეთ ჩემი youtube არხი აქ მეტი პროექტისთვის და ელექტრონიკის გაკვეთილებისთვის: https://www.youtube.com/channel/UCelOORs
დაბალი დაბალი გამავლობის ფილტრი RC გამოიყენება Arduino– ს პროექტებში: 4 ნაბიჯი
დაბალი დაბალი გამავლობის ფილტრი RC გამოიყენება Arduino– ს პროექტებში: დაბალი გავლის ფილტრი არის შესანიშნავი ელექტრონული სქემა თქვენი პროექტებიდან პარაზიტული სიგნალების გაფილტვრის მიზნით. Arduino– სთან დაკავშირებულ პროექტებსა და დენის სქემებთან ახლოს მომუშავე სენსორებთან დაკავშირებულ პრობლემებს წარმოადგენს „პარაზიტული“სიგნალების არსებობა. ისინი c
ESP32 NTP ტემპერატურის ზონდის მომზადების თერმომეტრი Steinhart-Hart კორექციით და ტემპერატურის სიგნალიზაციით .: 7 ნაბიჯი (სურათებით)
ESP32 NTP ტემპერატურის ზონდის მომზადების თერმომეტრი Steinhart-Hart კორექციით და ტემპერატურის სიგნალიზაციით: ჯერ კიდევ მოგზაურობთ " მომავალი პროექტის ", ", " ESP32 NTP ტემპერატურის ზონდის მომზადების თერმომეტრის Steinhart-Hart კორექციით და ტემპერატურის სიგნალიზაციით " არის ინსტრუქცია, რომელიც გვიჩვენებს, თუ როგორ დავამატო NTP ტემპერატურის ზონდი, პიეზო ბ
IoT ტემპერატურის სენსორი ESP8266– ით: 6 ნაბიჯი (სურათებით)
IoT ტემპერატურის სენსორი ESP8266– ით: მე ვიყავი შთაგონებული შევქმნა ტემპერატურის სენსორი, რომლის მონიტორინგიც შემიძლია wifi– ზე. ეს პროექტი არ არის ახალი, მაგრამ მე მომწონს იდეა, რომ მქონდეს შუალედური ფენა უსაფრთხოებისათვის და არ იყოს საჭირო როუტერში პორტის გახსნა თქვენს IoT მოწყობილობაზე. ძირითადი იდეა გამოყოფს
Arduino დაფუძნებული ციფრული ტემპერატურის სენსორი: 5 ნაბიჯი (სურათებით)
არდუინოზე დაფუძნებული ციფრული ტემპერატურის სენსორი: ტემპერატურის სენსორები ამ დღეებში ჩვეულებრივი მოვლენაა, მაგრამ მათი უმრავლესობა უკიდურესად გართულებულია ან ძალიან ძვირი იყიდება. ეს პროექტი გაძლევთ არდუინოზე დაფუძნებულ ციფრულ ტემპერატურის სენსორს, რომელიც არა მხოლოდ იაფი და ძალიან ადვილია მ