ዝርዝር ሁኔታ:
- አቅርቦቶች
- ደረጃ 1: ከአርዱዲኖ ጋር የሙቀት ዳሳሽ ያለው የ JLCPCB ዳታሎገር ግንባታ
- ደረጃ 2
- ደረጃ 3
- ደረጃ 4
- ደረጃ 5
- ደረጃ 6: JLCPCB Datalogger መቆጣጠሪያ ምናሌ
- ደረጃ 7
- ደረጃ 8
- ደረጃ 9
- ደረጃ 10
- ደረጃ 11: ከአርዱዲኖ ጋር የ SD ካርድ ሞዱል ውሂብን መድረስ
- ደረጃ 12 መደምደሚያ
ቪዲዮ: የአርዱዲኖ የሙቀት ዳሳሽ ለኮቪድ 19 ተተገበረ 12 ደረጃዎች (ከስዕሎች ጋር)
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:30
የሰው አካል ማቀነባበሪያውን የሙቀት መጠን ለመለካት ስንፈልግ ለአርዱዲኖ የሙቀት መጠን ዳሳሽ መሠረታዊ አካል ነው።
ከአሩዱኖ ጋር ያለው የሙቀት ዳሳሽ የሙቀት መጠኑን ለመቀበል እና ለመለካት በእውቂያ ውስጥ መሆን ወይም ቅርብ መሆን አለበት። ያ ነው ቴርሞሜትሮች የሚሰሩት።
ያልተለመደ ወይም በሽታ በሚኖርበት ጊዜ በሰው አካል ውስጥ ከሚለወጡ የመጀመሪያ ምክንያቶች አንዱ እነዚህ መሣሪያዎች የታመሙ ሰዎችን የሰውነት ሙቀት ለመለካት እጅግ በጣም ያገለግላሉ።
የሰውን አካል የሙቀት መጠን ከሚቀይሩት በሽታዎች አንዱ COVID 19 ነው። ስለዚህ ዋና ዋናዎቹን ምልክቶች እናቀርባለን-
ሳል ድካም የአተነፋፈስ ችግር (ከባድ ሁኔታዎች) ትኩሳት ትኩሳት ዋናው ባህሪው የሰውነት ሙቀት መጨመር ምልክት ነው። በዚህ በሽታ ውስጥ እነዚህን ምልክቶች ያለማቋረጥ መከታተል አለብን።
ስለዚህ ፣ የሙቀት መጠኑን ለመቆጣጠር እና ይህንን መረጃ በ JLCPCB Datalogger በኩል ከአርዱዲኖ ጋር የሙቀት ዳሳሽ በመጠቀም አንድ ፕሮጀክት እናዘጋጃለን።
ስለዚህ ፣ በዚህ ጽሑፍ ውስጥ ይማራሉ-
- እንዴት JLCPCB Datalogger ከአሩዲኖ ጋር የሙቀት ዳሳሽ ያለው?
- ከአሩዱኖ ጋር የሙቀት ዳሳሽ እንዴት ይሠራል።
- የ DS18B20 የሙቀት ዳሳሽ ከአርዱዲኖ ጋር እንዴት ይሠራል
- በርካታ ተግባራት ያላቸው አዝራሮችን ይጠቀሙ።
በመቀጠልም የአርዲኖን የሙቀት ዳሳሽ በመጠቀም የእርስዎን JLCPCB Datalogger እንዴት እንደሚያሳድጉ እናሳይዎታለን።
አቅርቦቶች
አርዱዲኖ UNO
JLCPCB የታተመ የወረዳ ቦርድ
DS18B20 የሙቀት ዳሳሽ
አርዱዲኖ ናኖ አር 3
መዝለሎች
ኤልሲዲ ማሳያ 16 x 2
Ushሽቡተን ማብሪያ / ማጥፊያ
ተከላካይ 1 ኪ
የ SD ካርድ ሞዱል ለአርዱዲኖ
ደረጃ 1: ከአርዱዲኖ ጋር የሙቀት ዳሳሽ ያለው የ JLCPCB ዳታሎገር ግንባታ
ቀደም ሲል እንደተጠቀሰው ፕሮጀክቱ ከአርዱዲኖ ጋር የሙቀት ዳሳሽ ያለው የ JLCPCB Datalogger መፍጠርን ያጠቃልላል ፣ እናም በዚህ መረጃ አማካይነት የታከመውን ህመምተኛ የሙቀት መጠን መከታተል እንችላለን።
ስለዚህ ወረዳው ከላይ ባለው ስእል ላይ ይታያል።
ስለዚህ ፣ እርስዎ እንደሚመለከቱት ፣ ይህ ወረዳ የታካሚውን የሙቀት ንባብ የመለካት ኃላፊነት ካለው ከአርዱዲኖ ጋር የ DS18B20 የሙቀት ዳሳሽ አለው።
በተጨማሪም አርዱዲኖ ናኖ ይህንን ውሂብ የመሰብሰብ እና በ SD ካርድ ሞዱል የማስታወሻ ካርድ ላይ የማከማቸት ኃላፊነት አለበት።
እያንዳንዱ መረጃ በየራሱ ጊዜ ይቀመጣል ፣ ይህም ከ RTC ሞዱል DS1307 ይነበባል።
ስለዚህ ፣ ከአሩዲኖ ጋር ያለው የሙቀት ዳሳሽ መረጃ እንዲቀመጥ ተጠቃሚው ሂደቱን ከ 16x2 ኤልሲዲ ጋር በመቆጣጠሪያ ምናሌው በኩል ማከናወን አለበት።
ደረጃ 2
በስእል 2 በ LCD ማያ 16x2 ላይ እንደሚታየው እያንዳንዱ ቁልፍ አንድን አማራጭ የመቆጣጠር ኃላፊነት አለበት።
ከዚህ በታች እንደሚታየው እያንዳንዱ አማራጭ በስርዓቱ ውስጥ አንድ ተግባር የማከናወን ኃላፊነት አለበት።
- አማራጭ ኤም በማስታወሻ ካርድ ላይ ያለውን መረጃ መለካት እና መቅዳት የመጀመር ሃላፊነት አለበት።
- አማራጭ H የስርዓት ሰዓቶችን የማስተካከል ሃላፊነት አለበት።
- አማራጭ ኦ/ፒ በስርዓቱ ውስጥ የውሂብ መግባትን ለማረጋገጥ ወይም የጽሑፍ መረጃን ወደ ማህደረ ትውስታ ካርድ ለማቆም ያገለግላል።
የስርዓት ቁጥጥር ሂደቱን ለመረዳት ከዚህ በታች ያለውን ኮድ እናቀርባለን እና የ JLCPCB ዳታሎገርን ከአየር ሙቀት ዳሳሽ ጋር በአርዱኢኖ ደረጃ በደረጃ ቁጥጥር ስርዓት እንወያይበታለን።
#ያካትቱ // ቤተ -መጽሐፍት በሁሉም የ DS18B20 ዳሳሽ ተግባር
#ያካትቱ #ያካትቱ // Biblioteca I2C do LCD 16x2 #ያካትቱ // Biblioteca de Comunicacao I2C #ያካትቱ // OneWire ቤተ -መጽሐፍት ለ DS18B20 ዳሳሽ #ያካተተ #ያካትታል LiquidCrystal_I2C lcd (0x27 ፣ 16 ፣ 2); // Configurando o endereco do LCD 16x2 para 0x27 #define ONE_WIRE_BUS 8 // DS18B20 ዳሳሹን ለማገናኘት ዲጂታል ፒን/// አንድ ኢንተርኔት ለ com comicicacao com o አነፍናፊ OneWire oneWire (ONE_WIRE_BUS); የዳላስ የሙቀት ዳሳሾች (& oneWire); የመሣሪያ አድራሻ አነፍናፊ 1; MyFile ፋይል ያድርጉ; #የጥራት አዝራር መለኪያ 2 #ገላጭ Buttonadjusthour 3 #ገላጭ Buttonok 4 bool ልኬት = 0 ፣ ማስተካከያ ሰዓት = 0 ፣ እሺ = 0; bool measure_state = 0 ፣ adjusthour_state = 0 ፣ ok_state = 0; bool measure_process = 0 ፣ ማስተካከያ_ሂደት = 0; ባይት ትክክለኛው ሚን = 0 ፣ ቀዳሚ ሚን = 0; ባይት ተጨባጭ ሰዓት = 0 ፣ ቀዳሚ ሰዓት = 0; ባይት minUpdate = 0; int pinoSS = 10; // ፒን 53 ለሜጋ / ፒን 10 ለ UNO int DataTime [7]; ባዶነት ዝማኔ ሰዓት () {DS1307.getDate (DataTime); ከሆነ (DataTime [5]! = minUpdate) {sprintf (ጊዜዎች ፣ “%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) ፤ ከሆነ (DataTime [5]! = minUpdate) {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); sensors.requestTemperatures (); ተንሳፋፊ TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} ባዶነት ማዋቀር () {Serial.begin (9600); DS1307.begin (); sensors.begin (); pinMode (pinoSS ፣ OUTPUT); // ዲክራላ pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Temp System"); 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 ("ዳሳሽ"); ከሆነ (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso"); // Imprime na tela} ሌላ {Serial.println ("Falha in inicialização do SD Card."); መመለስ; } DS1307.getDate (DataTime); 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"); } ባዶነት loop () {updateHour (); // የንባብ አዝራሮች ግዛቶች መለኪያ = ዲጂታል አንብብ (የአዝራር መለኪያ); adjusthour = digitalRead (Buttonadjusthour); እሺ = digitalRead (Buttonok); ከሆነ (ልኬት == 0 && measure_state == 1) {measure_state = 0; } ከሆነ (መለኪያ == 1 && measure_state == 0 && measure_process == 0) {measure_process = 1; መለኪያ_ክልል = 1; (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!"); } ሌላ {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); 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); sensors.requestTemperatures (); ተንሳፋፊ TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); } ከሆነ (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } ከሆነ (adjusthour == 1 && adjusthour_state == 0 && measure_process == 0) {adjust_process = 1; } // ---------------------------------------------- --- የመለኪያ ሂደት ---------------------------------------------------- -------------- ከሆነ (የመለኪያ_ሂደት == 1) {updateTemp (); ባይት contMin = 0 ፣ contHour = 0; DS1307.getDate (DataTime); realMin = DataTime [5]; // ------------------------------------------------ --------- ደቂቃዎችን መቁጠር -------------------------------------- ------------------- ከሆነ (realMin! = previousMin) {contMin ++; previousMin = realMin; } ከሆነ (contMin == 5) {sprintf (ጊዜያት ፣ "%02d:%02d" ፣ DataTime [4] ፣ DataTime [5]) ፤ sensors.requestTemperatures (); ተንሳፋፊ TempSensor = sensors.getTempCByIndex (0); myFile.print (ጊዜያት); myFile.println (TempSensor); contMin = 0; } // ---------------------------------------------- ------------ ሰዓት ቆጠራ ------------------------------------ ---------------------- ከሆነ (realHour! = previousHour) {contHour ++; previousHour = realHour; } ከሆነ (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("ተጠናቀቀ"); lcd.setCursor (5, 1); lcd.print ("ሂደት"); የመለኪያ_ሂደት = 0; contHour = 0; } // ---------------------------------------------- ሁኔታ መረጃ ሰሪውን ለማቆም ---------------------------------------------- ---- ከሆነ (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("ቆሟል"); lcd.setCursor (5, 1); lcd.print ("ሂደት"); የመለኪያ_ሂደት = 0; መዘግየት (2000); lcd.clear (); DS1307.getDate (DataTime); 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"); }} // ---------------------------------------------- ------- ሰዓቶችን አስተካክል ----------------------------------------- ---------------------- // ሰዓት ከሆነ (ማስተካከያ_ሂደት == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("ሰዓት አስተካክል"); sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 1); lcd.print (ጊዜያት); // ሰዓት ያስተካክሉ ያድርጉ {measure = digitalRead (የአዝራር መለኪያ); adjusthour = digitalRead (Buttonadjusthour); እሺ = digitalRead (Buttonok); ከሆነ (ልኬት == 0 && measure_state == 1) {measure_state = 0; } ከሆነ (መለኪያ == 1 && measure_state == 0) {DataTime [4] ++; ከሆነ (DataTime [4]> 23) {DataTime [4] = 0; } መለኪያ_ክልል = 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]) ፤ } ከሆነ (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } ከሆነ (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]) ፤ adjusthour_state = 1; } ከሆነ (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); 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 ን ለአርዱዲኖ የሙቀት መጠን ዳሳሽ ሲያዘጋጁ ሞጁሎችን ለመቆጣጠር እና ጥቅም ላይ የዋሉ ተለዋዋጮችን ለማወጅ ሁሉንም ቤተመፃህፍት እንገልፃለን። የኮድ ማገጃው ከዚህ በታች ይታያል።
ደረጃ 3
#ያካትቱ // ቤተ -መጽሐፍት በሁሉም የ DS18B20 ዳሳሽ ተግባር
#ያካትቱ #ያካትቱ // Biblioteca I2C do LCD 16x2 #ያካትቱ // Biblioteca de Comunicacao I2C #ያካትቱ // OneWire ቤተ -መጽሐፍት ለ DS18B20 ዳሳሽ #ያካተተ #ያካትታል LiquidCrystal_I2C lcd (0x27 ፣ 16 ፣ 2); // Configurando o endereco do LCD 16x2 para 0x27 #define ONE_WIRE_BUS 8 // DS18B20 ዳሳሹን ለማገናኘት ዲጂታል ፒን/// አንድ ኢንተርኔት ለ com comicicacao com o አነፍናፊ OneWire oneWire (ONE_WIRE_BUS); የዳላስ የሙቀት ዳሳሾች (& oneWire); የመሣሪያ አድራሻ አነፍናፊ 1; MyFile ፋይል ያድርጉ; #የጥራት አዝራር መለኪያ 2 #ገላጭ Buttonadjusthour 3 #ገላጭ Buttonok 4 bool ልኬት = 0 ፣ ማስተካከያ ሰዓት = 0 ፣ እሺ = 0; bool measure_state = 0 ፣ adjusthour_state = 0 ፣ ok_state = 0; bool measure_process = 0 ፣ ማስተካከያ_ሂደት = 0; ባይት ትክክለኛው ሚን = 0 ፣ ቀዳሚ ሚን = 0; ባይት ተጨባጭ ሰዓት = 0 ፣ ቀዳሚ ሰዓት = 0; ባይት minUpdate = 0; int pinoSS = 10; // ፒን 53 ለሜጋ / ፒን 10 ለ UNO int DataTime [7];
ከዚህ በኋላ እኛ ባዶ የማዋቀር ተግባር አለን። ከዚህ በታች እንደሚታየው ይህ ተግባር ፒኖችን እና የመሣሪያ አጀማመርን ለማዋቀር ያገለግላል።
ባዶነት ማዋቀር ()
{Serial.begin (9600); DS1307.begin (); sensors.begin (); pinMode (pinoSS ፣ OUTPUT); // ዲክራላ pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Temp System"); 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 ("ዳሳሽ"); ከሆነ (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso"); // Imprime na tela} ሌላ {Serial.println (“Falha in inicialização do SD Card.”) ፤ መመለስ; } DS1307.getDate (DataTime); 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"); }
በመጀመሪያ ፣ ተከታታይ ግንኙነት ፣ የእውነተኛ ሰዓት ሰዓት እና የአርዱዲኖ DS18B20 የሙቀት ዳሳሽ ተጀምሯል። መሣሪያዎቹን ከጀመሩ እና ከሞከሩ በኋላ ከምናሌ አማራጮች ጋር ያለው መልእክት በ 16x2 ኤልሲዲ ማያ ገጽ ላይ ታትሟል። ይህ ማያ ገጽ በስእል 1 ይታያል።
ደረጃ 4
ከዚያ በኋላ ስርዓቱ ዝመናውን ተግባር በመደወል ሰዓቶቹን ያነባል እና ዋጋውን ያዘምናል። ስለዚህ ይህ ተግባር በየደቂቃው የሰዓት እሴቱን የማቅረብ ዓላማ አለው። የተግባር ኮድ እገዳ ከዚህ በታች ይታያል።
ባዶነት ዝመና ሰዓት ()
{DS1307.getDate (DataTime) ፤ ከሆነ (DataTime [5]! = minUpdate) {sprintf (ጊዜዎች ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]) ፤ lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (ጊዜያት); minUpdate = DataTime [5]; }}
ደረጃ 5
ሰዓቶቹን ከማዘመን በተጨማሪ ታካሚው ከአርዱዲኖ ጋር ካለው የሙቀት ዳሳሽ ጋር ለመቆጣጠር ከሶስቱ አዝራሮች ውስጥ አንዱን መምረጥ ይችላል። ወረዳው ከላይ በስዕሉ ላይ ይታያል።
ደረጃ 6: JLCPCB Datalogger መቆጣጠሪያ ምናሌ
በመጀመሪያ ተጠቃሚው የስርዓቱን ሰዓታት መፈተሽ እና ማስተካከል አለበት። ሁለተኛው ሂደት ሲጫን ይህ ሂደት ይከናወናል።
አዝራሩ ሲጫን የሚከተለው ማያ ገጽ መታየት አለበት ፣ ይህም ከላይ በስዕሉ ላይ ይታያል።
ደረጃ 7
ከዚህ ማያ ገጽ ተጠቃሚው ከ Arduino ዲጂታል ፒን 2 እና 3 ጋር ከተገናኙት አዝራሮች የሰዓት እና ደቂቃ እሴቶችን ማስገባት ይችላል። አዝራሮቹ ከላይ በስዕሉ ላይ ይታያሉ።
ሰዓቶችን ለመቆጣጠር የኮድ ክፍል ከዚህ በታች ይታያል።
ከሆነ (adjusthour == 0 && adjusthour_state == 1)
{adjusthour_state = 0; } ከሆነ (adjusthour == 1 && adjusthour_state == 0 && measure_process == 0) {adjust_process = 1; }
የሰዓቶች አዝራር ሲጫን እና የመለኪያ_ሂደቱ ተለዋዋጭ ወደ 0 ሲዋቀር ፣ ሁኔታው እውነት ይሆናል እና የማስተካከያ_ሂደቱ ተለዋዋጭ ወደ 1. ይስተካከላል። የመለኪያ_ሂደቱ ተለዋዋጭ ስርዓቱ የሙቀት መጠንን እየተቆጣጠረ መሆኑን ለማመልከት ያገለግላል። እሴቱ 0 በሚሆንበት ጊዜ ስርዓቱ ተጠቃሚው የጊዜ ቅንብር ምናሌውን እንዲገባ ያስችለዋል። ስለዚህ ፣ የማስተካከያ_ሂደቱ ተለዋዋጭ 1 እሴት ከተቀበለ በኋላ ስርዓቱ የጊዜ ማስተካከያ ሁኔታ ውስጥ ይገባል። ይህ የኮድ እገዳ ከዚህ በታች ይታያል።
// ------------------------------------------------ ----- ሰዓቶችን አስተካክል ------------------------------------------- --------------------
// ሰዓቱን ያስተካክሉ (ማስተካከያ_ሂደት == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("ሰዓት አስተካክል"); sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 1); lcd.print (ጊዜያት); // ሰዓት ያስተካክሉ ያድርጉ {measure = digitalRead (የአዝራር መለኪያ); adjusthour = digitalRead (Buttonadjusthour); እሺ = digitalRead (Buttonok); ከሆነ (ልኬት == 0 && measure_state == 1) {measure_state = 0; } ከሆነ (መለኪያ == 1 && measure_state == 0) {DataTime [4] ++; ከሆነ (DataTime [4]> 23) {DataTime [4] = 0; } መለኪያ_ክልል = 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]) ፤ } ከሆነ (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } ከሆነ (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]) ፤ adjusthour_state = 1; } ከሆነ (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); 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 ላይ የሚታየውን መልእክት ያሳያል ከዚያም እሴቶቹ በውስጥ ዑደት ውስጥ እስኪስተካከሉ ድረስ ይጠብቁ። ሰዓቶችን ሲያስተካክሉ እነዚህ አዝራሮች ተግባሮቻቸው ተለውጠዋል ፣ ማለትም እነሱ ሁለገብ ናቸው።
ይህ ከአንድ በላይ ተግባር አንድ አዝራር እንዲጠቀሙ እና የስርዓቱን ውስብስብነት እንዲቀንሱ ያስችልዎታል።
በዚህ መንገድ ተጠቃሚው የሰዓቶችን እና የደቂቃዎች ዋጋን ያስተካክላል እና ከዚያ እሺ ቁልፍ ሲጫን በሲስተሙ ውስጥ ያለውን ውሂብ ያስቀምጣል።
እንደሚመለከቱት ፣ ስርዓቱ ከዚህ በታች እንደሚታየው 3 ቱ አዝራሮችን ያነባል።
መለኪያ = digitalRead (የአዝራር መለኪያ);
adjusthour = digitalRead (Buttonadjusthour); እሺ = digitalRead (Buttonok);
የመለኪያ ቁልፍ (የአዝራር መለኪያ) ተግባሩን እንደለወጠ ልብ ይበሉ። ከዚህ በታች እንደሚታየው አሁን የሰዓት እሴቶችን ለማስተካከል ጥቅም ላይ ይውላል። የሚከተሉት ሁለት ሁኔታዎች ተመሳሳይ ናቸው እና ከላይ እንደሚታየው ሰዓቶችን እና ደቂቃዎችን ለማስተካከል ያገለግላሉ።
ከሆነ (መለኪያ == 0 && measure_state == 1)
{measure_state = 0; } ከሆነ (መለኪያ == 1 && measure_state == 0) {DataTime [4] ++; ከሆነ (DataTime [4]> 23) {DataTime [4] = 0; } መለኪያ_ክልል = 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]) ፤ } ከሆነ (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } ከሆነ (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]) ፤ adjusthour_state = 1; }
ስለዚህ ፣ ከሁለቱ አዝራሮች አንዱ በተጫነ ቁጥር የ DataTime ቬክተር 4 እና 5 የአቀማመጦች ዋጋ ይለወጣል እና በሁለተኛ ደረጃ እነዚህ እሴቶች በ DS1307 ማህደረ ትውስታ ውስጥ ይቀመጣሉ።
ከማስተካከያዎቹ በኋላ ተጠቃሚው ሂደቱን ለማጠናቀቅ እሺ የሚለውን ቁልፍ ጠቅ ማድረግ አለበት። ይህ ክስተት ሲከሰት ስርዓቱ የሚከተሉትን የኮድ መስመሮች ያስፈጽማል።
ከሆነ (እሺ == 1)
{lcd.clear (); DS1307.getDate (DataTime); 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; }
ከላይ ወደተጠቀሰው ሁኔታ ገብቶ የሰዓት መልዕክቱን እና የአማራጮች ምናሌን ለተጠቃሚው ያቀርባል።
በመጨረሻም ፣ ተጠቃሚው በአሩዲኖ ጄሲሲሲቢ ዳታሎገር አማካኝነት በሙቀት ዳሳሽ በኩል የታካሚውን የክትትል ሂደት መጀመር አለበት።
ይህንን ለማድረግ ተጠቃሚው ከዲጂታል ፒን 2 ጋር የተገናኘውን የመለኪያ ቁልፍን መጫን አለበት።
ከዚያ ስርዓቱ ንባብን ለአርዱዲኖ የሙቀት ዳሳሽ ያካሂዳል እና በማስታወሻ ካርድ ላይ ያስቀምጠዋል። የወረዳው ክልል ከላይ በስዕሉ ላይ ይታያል።
ደረጃ 8
ስለዚህ ፣ አዝራሩ ሲጫን የሚከተለው የኮድ ክፍል ይፈጸማል።
ከሆነ (መለኪያ == 0 && measure_state == 1)
{measure_state = 0; } ከሆነ (መለኪያ == 1 && measure_state == 0 && measure_process == 0) {measure_process = 1; መለኪያ_ክልል = 1; (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!"); } ሌላ {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); 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); sensors.requestTemperatures (); ተንሳፋፊ TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }
ከላይ ባለው የኮድ ክፍል ውስጥ ስርዓቱ የመለኪያ_ሂደት ተለዋዋጭውን የ 1 እሴት ይመድባል። መረጃው በ SD ካርድ ላይ እንዲቀመጥ የመፍቀድ ኃላፊነት አለበት።
በተጨማሪም ፣ ስርዓቱ የውሂብ ምዝግብ ማስታወሻ ያለው የጽሑፍ ፋይል መኖር አለመኖሩን ይፈትሻል። ፋይል ካለ ፣ ስርዓቱ ይሰርዘዋል እና ውሂቡን ለማከማቸት አዲስ ይፈጥራል።
ከዚያ በኋላ ሁለት ዓምዶችን ይፈጥራል -አንደኛው ለሰዓታት እና አንዱ በጽሑፉ ፋይል ውስጥ ባለው የሙቀት መጠን።
ከዚያ በኋላ ፣ በስዕሉ ላይ እንደሚታየው ሰዓቶቹን እና የሙቀት መጠኑን በኤልሲዲ ማያ ገጽ ላይ ያሳያል።
ከዚያ በኋላ የኮዱ ፍሰት የሚከተለውን የፕሮግራም እገዳ ያስፈጽማል።
ከሆነ (የመለኪያ_ሂደት == 1)
{updateTemp (); ባይት contMin = 0 ፣ contHour = 0; DS1307.getDate (DataTime); realMin = DataTime [5]; // ------------------------------------------------ --------- ደቂቃዎችን መቁጠር -------------------------------------- ------------------- ከሆነ (realMin! = previousMin) {contMin ++; previousMin = realMin; } ከሆነ (contMin == 5) {sprintf (ጊዜያት ፣ "%02d:%02d" ፣ DataTime [4] ፣ DataTime [5]) ፤ sensors.requestTemperatures (); ተንሳፋፊ TempSensor = sensors.getTempCByIndex (0); myFile.print (ጊዜያት); myFile.println (TempSensor); contMin = 0; } // ---------------------------------------------- ------------ ሰዓት ቆጠራ ------------------------------------ ---------------------- ከሆነ (realHour! = previousHour) {contHour ++; previousHour = realHour; } ከሆነ (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("ተጠናቀቀ"); lcd.setCursor (5, 1); lcd.print ("ሂደት"); የመለኪያ_ሂደት = 0; contHour = 0; } // ---------------------------------------------- ሁኔታ መረጃ ሰሪውን ለማቆም -----
በመጀመሪያ ፣ የ updateTemp () ተግባር ይፈጸማል። እሱ ከዝማኔ ሰዓት () ተግባር ጋር ተመሳሳይ ነው ፣ ሆኖም ፣ በየ 1 ደቂቃው የሙቀት መጠኑን ያሳያል።
ከዚያ በኋላ ስርዓቱ የእውነተኛ-ሰዓት ሰዓቱን የጊዜ መረጃን ይሰበስባል እና የአሁኑን ደቂቃ እሴት አሁን ባለው ተለዋዋጭ ውስጥ ያከማቻል።
ከዚያ ፣ ከዚህ በታች በተገለጸው ሁኔታ መሠረት የሚን ተለዋዋጭው ተለውጦ እንደሆነ ይፈትሻል
ከሆነ (realMin! = previousMin)
{contMin ++; previousMin = realMin; }
ስለዚህ ፣ የአሁኑ ደቂቃ ተለዋዋጭ ከቀዳሚው እሴት የተለየ ከሆነ ፣ የዋጋው ለውጥ ተከሰተ ማለት ነው። በዚህ መንገድ ፣ ሁኔታው እውነት ይሆናል እና የደቂቃው ቆጠራ ዋጋ ይጨምራል (contMin) እና የአሁኑ እሴት የቀደመውን እሴት ለማከማቸት ለተለዋዋጭ ቀዳሚው ሚን ይመደባል።
ስለዚህ ፣ የዚህ ቆጠራ ዋጋ ከ 5 ጋር እኩል ሲሆን ፣ ይህ ማለት 5 ደቂቃዎች አልፈዋል እና ስርዓቱ አዲስ የሙቀት ንባብ ማከናወን እና የሰዓት እና የሙቀት እሴቱን በ SD ካርድ መዝገብ ፋይል ውስጥ ማስቀመጥ አለበት ማለት ነው።
ከሆነ (contMin == 5)
{sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]) ፤ sensors.requestTemperatures (); ተንሳፋፊ TempSensor = sensors.getTempCByIndex (0); myFile.print (ጊዜያት); myFile.println (TempSensor); contMin = 0; }
በዚህ መንገድ ፣ የሕመምተኛውን የሙቀት መጠን ከአርዱዲኖ ጋር የሙቀት መቆጣጠሪያውን የ 5 ሰዓታት ዋጋ እስከሚደርስ ድረስ ይህ ሂደት ይደገማል።
የኮዱ ክፍል ከዚህ በታች ይታያል እና ከላይ ከቀረበው የደቂቃ ቆጠራ ጋር ተመሳሳይ ነው።
// ------------------------------------------------ ----------- ሰዓት ቆጠራ -------------------------------------------- ---------------------
ከሆነ (realHour! = previousHour) {contHour ++; previousHour = realHour; } ከሆነ (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("ተጠናቀቀ"); lcd.setCursor (5, 1); lcd.print ("ሂደት"); የመለኪያ_ሂደት = 0; contHour = 0; }
ክትትል ለ 5 ሰዓታት ከደረሰ በኋላ ስርዓቱ የምዝግብ ማስታወሻውን ፋይል ይዘጋል እና “የተጠናቀቀ ሂደት” የሚለውን መልእክት ለተጠቃሚው ያቀርባል።
በተጨማሪም ፣ መረጃን መቅዳት ለማቆም ተጠቃሚው እሺ/ለአፍታ አቁም ቁልፍን መጫን ይችላል። ይህ በሚሆንበት ጊዜ የሚከተለው የኮድ ማገጃ ይፈጸማል።
// ---------------------------------------------- ቅድመ ሁኔታ ወደ መረጃ ሰሪውን ያቁሙ ------------------------------------------------------ ---
ከሆነ (እሺ == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("ቆሟል"); lcd.setCursor (5, 1); lcd.print ("ሂደት"); የመለኪያ_ሂደት = 0; መዘግየት (2000); lcd.clear (); DS1307.getDate (DataTime); 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
ከዚያ ስርዓቱ በስዕሉ 8 ላይ እንደሚታየው ፋይሉን ይዘጋል እና “የቆመ ሂደት” የሚለውን መልእክት ያቀርባል።
ደረጃ 10
ከዚያ በኋላ በስእል 9 እንደሚታየው ስርዓቱ የጊዜ ማያ ገጹን እና የምናሌ አማራጮችን ያትማል።
ደረጃ 11: ከአርዱዲኖ ጋር የ SD ካርድ ሞዱል ውሂብን መድረስ
የ JLCPCB Datalogger ን ከአርዱዲኖ ጋር ካለው የሙቀት ዳሳሽ ጋር ከተከታተለ በኋላ የማስታወሻ ካርዱን ማስወገድ እና በኮምፒተር ላይ ያለውን ውሂብ መድረስ አስፈላጊ ነው።
ውሂቡን በተሻለ ጥራት ለማየት እና ለመተንተን የጽሑፍ ፋይሉን ሁሉንም መረጃ ወደ ውጭ ይላኩ / ይቅዱ ከዚያ በኋላ ግራፎችን ማሴር እና የተገኙትን ውጤቶች መተንተን ይችላሉ።
ደረጃ 12 መደምደሚያ
የ JLCPCB ዳታሎገር ከአሩዲኖ ጋር የሙቀት ዳሳሽ ያለው ፣ የሙቀት መጠኑን ከመለካት በተጨማሪ በበሽተኛው የሙቀት ባህሪ ላይ መረጃን በተወሰነ ጊዜ ውስጥ እንድንመዘግብ ያስችለናል።
በእነዚህ የተከማቹ መረጃዎች አማካኝነት በኮቪድ 19 የተያዘው የሕመምተኛ ሙቀት እንዴት እንደሚሠራ መተንተንና መረዳት ይቻላል።
በተጨማሪም ፣ የሙቀት መጠኑን ደረጃ መገምገም እና ዋጋውን ከአንዳንድ የመድኃኒት ዓይነቶች አተገባበር ጋር ማያያዝ ይቻላል።
ስለዚህ ፣ በእነዚህ መረጃዎች አማካይነት ፣ የ JLCPCB Datalogger ለ Arduino የሙቀት ዳሳሽ ያለው የታካሚዎችን ባህሪ በማጥናት ሐኪሞችን እና ነርሶችን ለመርዳት ያለመ ነው።
በመጨረሻም የኩባንያውን JLCPCB የፕሮጀክቱን ልማት በመደገፉ እናመሰግናለን እና እርስዎ ሊጠቀሙበት እንደሚችሉ ተስፋ እናደርጋለን።
ሁሉም ፋይሎች በማንኛውም ተጠቃሚ በነፃ ሊወርዱ እና ሊጠቀሙባቸው ይችላሉ።
የሚመከር:
LM35 የሙቀት ዳሳሽ በመጠቀም ከአርዱዲኖ ኡኖ ጋር ንባብ የሙቀት መጠን - 4 ደረጃዎች
LM35 ን የሙቀት መጠን ዳሳሽ በመጠቀም ከአርዱዲኖ ኡኖ ጋር - ንባብ በዚህ አስተማሪዎች ውስጥ LM35 ን ከአርዱዲኖ ጋር እንዴት መጠቀም እንደሚቻል እንማራለን። Lm35 የሙቀት መጠን እሴቶችን ከ -55 ° ሴ እስከ 150 ° ሴ ማንበብ የሚችል የሙቀት ዳሳሽ ነው። ከአየሩ ሙቀት ጋር ተመጣጣኝ የአናሎግ ቮልቴጅን የሚያቀርብ ባለ 3-ተርሚናል መሣሪያ ነው። ከፍተኛ
ESP8266 NodeMCU የመድረሻ ነጥብ (ኤፒ) ለድር አገልጋይ በ DT11 የሙቀት ዳሳሽ እና በአሳሹ ውስጥ የሙቀት መጠን እና እርጥበት ማተም 5 ደረጃዎች
ESP8266 NodeMCU የመድረሻ ነጥብ (ኤፒ) ለድር አገልጋይ በ DT11 የሙቀት ዳሳሽ እና የማተሚያ ሙቀት እና እርጥበት በአሳሽ ውስጥ - ሠላም ወንዶች በአብዛኛዎቹ ፕሮጄክቶች ውስጥ ESP8266 ን እንጠቀማለን እና በአብዛኛዎቹ ፕሮጄክቶች ውስጥ ESP8266 ን እንደ ድር አገልጋይ እንጠቀማለን ፣ ስለዚህ መረጃ በ በ ESP8266 የተስተናገደውን ዌብሳይቨርን በመድረስ በ wifi ላይ ያለ ማንኛውም መሣሪያ ግን ብቸኛው ችግር ለሥራ የሚሰራ ራውተር ያስፈልገናል
የ DHT11 የሙቀት ዳሳሽ በአርዱዲኖ እንዴት እንደሚጠቀም እና የሙቀት ሙቀት እና እርጥበት ማተም -5 ደረጃዎች
የ DHT11 የሙቀት ዳሳሽ በአርዱዲኖ እና በሕትመት የሙቀት መጠን እና እርጥበት እንዴት እንደሚጠቀሙ - የ DHT11 ዳሳሽ የሙቀት መጠንን እና እርጥበት ለመለካት ጥቅም ላይ ይውላል። እነሱ በጣም ተወዳጅ የኤሌክትሮኒክስ የትርፍ ጊዜ ማሳለፊያዎች ናቸው። የ DHT11 እርጥበት እና የሙቀት ዳሳሽ በእራስዎ የኤሌክትሮኒክስ ፕሮጄክቶች ላይ የእርጥበት እና የሙቀት መጠን መረጃን በእውነቱ ማከል ቀላል ያደርገዋል። በየ
የአርዱዲኖ የሙቀት ዳሳሽ (ኤልኤም 35) - 4 ደረጃዎች
የአርዱዲኖ የሙቀት መጠን ዳሳሽ (LM35) - በዚህ ፕሮጀክት ውስጥ LM35 ን እና የአርዱዲኖ በይነገጽን በመጠቀም የሙቀት መጠንን እንዴት እንደሚለኩ አሳያችኋለሁ። እንጀምር
LM35 ን በመጠቀም የአርዱዲኖ የሙቀት መጠን ዳሳሽ 3 ደረጃዎች
LM35 ን በመጠቀም የአርዲኖ የሙቀት መጠን ዳሳሽ-መግቢያ የ LM35 ተከታታይ ከሴንትሪግሬድ የሙቀት መጠን ጋር ተመጣጣኝ በሆነ የውጤት voltage ልቴጅ ተመጣጣኝ ትክክለኛ የተቀናጀ-የወረዳ የሙቀት መሣሪያዎች ናቸው። LM35 ከብሔራዊ ሴሚኮንዳክተሮች ሦስት ተርሚናል መስመራዊ የሙቀት ዳሳሽ ነው። ሊለካ ይችላል