সুচিপত্র:
- সরবরাহ
- ধাপ 1: আরডুইনো দিয়ে তাপমাত্রা সেন্সর সহ জেএলসিপিসিবি ডেটালগারের নির্মাণ
- ধাপ ২:
- ধাপ 3:
- ধাপ 4:
- ধাপ 5:
- ধাপ 6: JLCPCB ডেটালগার নিয়ন্ত্রণ মেনু
- ধাপ 7:
- ধাপ 8:
- ধাপ 9:
- ধাপ 10:
- ধাপ 11: আরডুইনো দিয়ে এসডি কার্ড মডিউল ডেটা অ্যাক্সেস করা
- ধাপ 12: উপসংহার
ভিডিও: আরডুইনো জন্য তাপমাত্রা সেন্সর কোভিড 19: 12 ধাপের জন্য প্রয়োগ করা হয়েছে (ছবি সহ)
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:58
Arduino জন্য তাপমাত্রা সেন্সর একটি মৌলিক উপাদান যখন আমরা মানব শরীরের একটি প্রসেসরের তাপমাত্রা পরিমাপ করতে চাই।
Arduino সহ তাপমাত্রা সেন্সর অবশ্যই তাপের মাত্রা গ্রহণ এবং পরিমাপের জন্য যোগাযোগে বা কাছাকাছি হতে হবে। এভাবেই থার্মোমিটার কাজ করে।
অসুস্থ মানুষের শরীরের তাপমাত্রা পরিমাপের জন্য এই যন্ত্রগুলি অত্যন্ত ব্যবহৃত হয়, কারণ অস্বাভাবিকতা বা রোগ হলে মানুষের শরীরে তাপমাত্রা প্রথম পরিবর্তন হয়।
মানব দেহের তাপমাত্রা পরিবর্তনকারী রোগগুলির মধ্যে একটি হল কোভিড ১ 19। অতএব, আমরা প্রধান উপসর্গগুলি উপস্থাপন করি:
কাশি ক্লান্তি শ্বাস নিতে অসুবিধা (গুরুতর ক্ষেত্রে) জ্বর জ্বর একটি উপসর্গ যার প্রধান বৈশিষ্ট্য হল শরীরের তাপমাত্রা বৃদ্ধি। এই রোগে আমাদের প্রতিনিয়ত এই লক্ষণগুলো পর্যবেক্ষণ করতে হবে।
এইভাবে, আমরা তাপমাত্রা নিরীক্ষণের জন্য একটি প্রকল্প তৈরি করব এবং এই ডেটাটি JLCPCB ডেটালগারের মাধ্যমে মেমরি কার্ডে সংরক্ষণ করব আরডুইনো সহ একটি তাপমাত্রা সেন্সর ব্যবহার করে।
অতএব, এই নিবন্ধে আপনি শিখবেন:
- কিভাবে একটি JLCPCB Datalogger Arduino সঙ্গে একটি তাপমাত্রা সেন্সর সঙ্গে?
- কিভাবে Arduino সঙ্গে তাপমাত্রা সেন্সর কাজ করে।
- Arduino এর সাথে DS18B20 তাপমাত্রা সেন্সর কিভাবে কাজ করে
- একাধিক ফাংশন সহ বোতাম ব্যবহার করুন।
এরপরে, আমরা আপনাকে দেখাব কিভাবে আপনি আপনার JLCPCB ডেটালোগারটি Arduino তাপমাত্রা সেন্সর ব্যবহার করে বিকাশ করবেন।
সরবরাহ
আরডুইনো ইউএনও
JLCPCB প্রিন্টেড সার্কিট বোর্ড
DS18B20 তাপমাত্রা সেন্সর
Arduino Nano R3
জাম্পার
LCD ডিসপ্লে 16 x 2
পুশবাটন সুইচ
প্রতিরোধক 1kR
Arduino এর জন্য SD কার্ড মডিউল
ধাপ 1: আরডুইনো দিয়ে তাপমাত্রা সেন্সর সহ জেএলসিপিসিবি ডেটালগারের নির্মাণ
পূর্বে উল্লিখিত হিসাবে, প্রকল্পটি Arduino এর সাথে তাপমাত্রা সেন্সর সহ একটি JLCPCB ডেটালগার তৈরি করে এবং এই ডেটার মাধ্যমে আমরা রোগীর চিকিত্সা করা তাপমাত্রা পর্যবেক্ষণ করতে পারি।
সুতরাং, সার্কিট উপরের চিত্রে দেখানো হয়েছে।
অতএব, আপনি দেখতে পাচ্ছেন, এই সার্কিটটিতে আরডুইনো সহ একটি DS18B20 তাপমাত্রা সেন্সর রয়েছে, যা রোগীর তাপমাত্রা পড়ার পরিমাপের জন্য দায়ী।
উপরন্তু, Arduino Nano এই ডেটা সংগ্রহ এবং SD কার্ড মডিউলের মেমরি কার্ডে সংরক্ষণের জন্য দায়ী থাকবে।
প্রতিটি তথ্য নিজ নিজ সময়ের সাথে সংরক্ষিত হবে, যা RTC মডিউল DS1307 থেকে পড়া হবে।
সুতরাং, আরডুইনো সহ তাপমাত্রা সেন্সরের ডেটা সংরক্ষণ করার জন্য, ব্যবহারকারীকে 16x2 LCD সহ নিয়ন্ত্রণ মেনুর মাধ্যমে প্রক্রিয়াটি সম্পাদন করতে হবে।
ধাপ ২:
প্রতিটি বোতাম একটি বিকল্প নিয়ন্ত্রণের জন্য দায়ী, যেমন চিত্র 2 এ LCD স্ক্রিন 16x2 এ দেখানো হয়েছে।
নীচে দেখানো হিসাবে প্রতিটি বিকল্প সিস্টেমে একটি ফাংশন সম্পাদনের জন্য দায়ী।
- অপশন এম মেমরি কার্ডে ডেটার পরিমাপ এবং রেকর্ডিং শুরু করার জন্য দায়ী।
- অপশন এইচ সিস্টেমের সময় সামঞ্জস্য করার জন্য দায়ী।
- অপশন O/P সিস্টেমে ডেটা এন্ট্রি নিশ্চিত করতে বা মেমরি কার্ডে ডেটা লেখার বিরতি দিতে ব্যবহৃত হয়।
সিস্টেম কন্ট্রোল প্রক্রিয়াটি বোঝার জন্য, আমরা নীচের কোডটি প্রদান করব এবং JLCPCB ডেটালগারের ধাপে ধাপে কন্ট্রোল সিস্টেমটি Arduino এর সাথে তাপমাত্রা সেন্সরের সাথে আলোচনা করব।
DS18B20 সেন্সরের সমস্ত ফাংশন সহ #অন্তর্ভুক্ত // লাইব্রেরি
#অন্তর্ভুক্ত #অন্তর্ভুক্ত // Biblioteca I2C do LCD 16x2 #অন্তর্ভুক্ত // Biblioteca de Comunicacao I2C #অন্তর্ভুক্ত // DS18B20 সেন্সরের জন্য OneWire লাইব্রেরি #অন্তর্ভুক্ত #অন্তর্ভুক্ত LiquidCrystal_I2C lcd (0x27, 16, 2); // Configurando o endereco do LCD 16x2 para 0x27 #Define ONE_WIRE_BUS 8 // DS18B20 Sensor সংযোগের জন্য ডিজিটাল পিন // সংজ্ঞায়িত করুন uma instancia do oneWire para comunicacao com o sensor OneWire oneWire (ONE_WIRE_BUS); ডালাস তাপমাত্রা সেন্সর (& oneWire); ডিভাইস অ্যাড্রেস সেন্সর 1; ফাইল myFile; #সংজ্ঞায়িত বাটন পরিমাপ 2 #সংজ্ঞায়িত করুন Buttonadjusthour 3 bool measure_state = 0, adjusthour_state = 0, ok_state = 0; bool measure_process = 0, adjust_process = 0; বাইট actualMin = 0, previousMin = 0; বাইট actualHour = 0, previousHour = 0; বাইট minUpdate = 0; int pinoSS = 10; // পিন 53 মেগা / পিন 10 ইউএনও ইন্ট ডেটাইম [7]; void updateHour () {DS1307.getDate (DataTime); যদি (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]; }} void updateTemp () {DS1307.getDate (DataTime); যদি (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); সেন্সর অনুরোধ তাপমাত্রা (); ভাসমান TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} অকার্যকর সেটআপ () {Serial.begin (9600); DS1307. শুরু (); sensors.begin (); পিনমোড (পিনোএসএস, আউটপুট); // 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 (sensors.getDeviceCount (), DEC); Serial.println ("সেন্সর"); যদি (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD card pronto para uso।"); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card।"); প্রত্যাবর্তন; } 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 (); // রিডিং বোতামের পরিমাপ = ডিজিটাল রিড (বাটনমেজার); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); যদি (পরিমাপ == 0 && মাপ_ স্টেট == 1) {পরিমাপ_স্টেট = 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 (ডেটাটাইম); actualMin = 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); সেন্সর অনুরোধ তাপমাত্রা (); ভাসমান 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 (ডেটাটাইম); actualMin = DataTime [5]; // ------------------------------------------------ --------- মিনিট গণনা করুন --------------------------------------- ------------------- যদি (actualMin! = previousMin) {contMin ++; previousMin = actualMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); সেন্সর অনুরোধ তাপমাত্রা (); ভাসমান TempSensor = sensors.getTempCByIndex (0); myFile.print (বার); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ ঘন্টা গণনা ------------------------------------ ---------------------- যদি (actualHour! = previousHour) {contHour ++; আগের ঘন্টা = প্রকৃত ঘন্টা; } যদি (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 (ডেটাটাইম); 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 (বার); // ঘন্টা সামঞ্জস্য করুন {পরিমাপ = ডিজিটাল রিড (বাটনমেজার); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); যদি (পরিমাপ == 0 && মাপ_ স্টেট == 1) {পরিমাপ_স্টেট = 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 (ডেটাটাইম); 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"); adjust_process = 0; }} যখন (ঠিক আছে! = 1); } // ----------------------------------------------- ------- এডজাস্ট আওয়ার ---------------------------------------- -------------------}
প্রথমত, আমরা মডিউলগুলি নিয়ন্ত্রণ করার জন্য সমস্ত লাইব্রেরি সংজ্ঞায়িত করি এবং JLCPCB ডেটালগারের প্রোগ্রামিং করার সময় ব্যবহৃত ভেরিয়েবলগুলি Arduino- এর জন্য একটি তাপমাত্রা সেন্সর সহ সংজ্ঞায়িত করি। কোড ব্লক নিচে দেখানো হয়েছে।
ধাপ 3:
DS18B20 সেন্সরের সমস্ত ফাংশন সহ #অন্তর্ভুক্ত // লাইব্রেরি
#অন্তর্ভুক্ত #অন্তর্ভুক্ত // Biblioteca I2C do LCD 16x2 #অন্তর্ভুক্ত // Biblioteca de Comunicacao I2C #অন্তর্ভুক্ত // DS18B20 সেন্সরের জন্য OneWire লাইব্রেরি #অন্তর্ভুক্ত #অন্তর্ভুক্ত তরল ক্রিস্টাল_আই 2 সি এলসিডি (0x27, 16, 2); // Configurando o endereco do LCD 16x2 para 0x27 #define ONE_WIRE_BUS 8 // DS18B20 Sensor সংযোগের জন্য ডিজিটাল পিন // সংজ্ঞায়িত করুন uma instancia do oneWire para comunicacao com o sensor OneWire oneWire (ONE_WIRE_BUS); ডালাস তাপমাত্রা সেন্সর (& oneWire); ডিভাইস অ্যাড্রেস সেন্সর 1; ফাইল myFile; #সংজ্ঞায়িত বাটন পরিমাপ 2 #সংজ্ঞায়িত করুন Buttonadjusthour 3 bool measure_state = 0, adjusthour_state = 0, ok_state = 0; bool measure_process = 0, adjust_process = 0; বাইট actualMin = 0, previousMin = 0; বাইট actualHour = 0, previousHour = 0; বাইট minUpdate = 0; int pinoSS = 10; // পিন 53 মেগা / পিন 10 ইউএনও -তে ডেটাটাইম [7];
এরপরে, আমাদের অকার্যকর সেটআপ ফাংশন রয়েছে। এই ফাংশনটি পিন এবং ডিভাইস ইনিশিয়ালাইজেশন কনফিগার করতে ব্যবহৃত হয়, যেমন নিচে দেখানো হয়েছে।
অকার্যকর সেটআপ()
{Serial.begin (9600); DS1307. শুরু (); sensors.begin (); পিনমোড (পিনোএসএস, আউটপুট); // 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 (sensors.getDeviceCount (), DEC); Serial.println ("সেন্সর"); যদি (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD card pronto para uso।"); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card।"); প্রত্যাবর্তন; } 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 এর তাপমাত্রা সেন্সর চালু করা হয়েছিল। ডিভাইসগুলি আরম্ভ এবং পরীক্ষা করার পরে, মেনু বিকল্প সহ বার্তাটি 16x2 LCD স্ক্রিনে মুদ্রিত হয়েছিল। এই পর্দাটি চিত্র 1 এ দেখানো হয়েছে।
ধাপ 4:
এর পরে, সিস্টেম ঘন্টাগুলি পড়ে এবং আপডেটহোর ফাংশনকে কল করে মান আপডেট করে। এইভাবে, এই ফাংশনটির প্রতি মিনিটে প্রতি ঘণ্টার মান উপস্থাপনের উদ্দেশ্য রয়েছে। ফাংশন কোড ব্লক নিচে দেখানো হয়েছে।
অকার্যকর আপডেট ঘন্টা ()
{DS1307.getDate (ডেটাটাইম); যদি (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:
ঘন্টা আপডেট করার পাশাপাশি, ব্যবহারকারী আরডুইনো দিয়ে তাপমাত্রা সেন্সর দিয়ে রোগীকে পর্যবেক্ষণ করতে তিনটি বোতামের মধ্যে একটি নির্বাচন করতে পারেন। সার্কিট উপরের চিত্রে দেখানো হয়েছে।
ধাপ 6: JLCPCB ডেটালগার নিয়ন্ত্রণ মেনু
প্রথমত, ব্যবহারকারীকে অবশ্যই সিস্টেমের সময়গুলি পরীক্ষা এবং সমন্বয় করতে হবে। দ্বিতীয় বোতাম টিপলে এই প্রক্রিয়াটি করা হয়।
যখন বোতামটি চাপানো হয়, নিচের স্ক্রিনটি উপস্থিত হওয়া উচিত, যা উপরের চিত্রে দেখানো হয়েছে।
ধাপ 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 হয়, সিস্টেম ব্যবহারকারীকে সময় নির্ধারণের মেনুতে প্রবেশের অনুমতি দেবে। অতএব, 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 (বার); // ঘন্টা সামঞ্জস্য করুন {পরিমাপ = ডিজিটাল রিড (বাটনমেজার); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); যদি (পরিমাপ == 0 && মাপ_ স্টেট == 1) {পরিমাপ_স্টেট = 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 (ডেটাটাইম); 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"); adjust_process = 0; }} যখন (ঠিক আছে! = 1); }
এই অবস্থায়, সিস্টেমটি চিত্র 4 এ দেখানো বার্তাটি প্রদর্শন করবে এবং তারপর লুপের সময় অভ্যন্তরীণভাবে মানগুলি মানিয়ে নেওয়ার জন্য অপেক্ষা করবে। ঘন্টাগুলি সামঞ্জস্য করার সময়, এই বোতামগুলির তাদের ফাংশন পরিবর্তিত হয়, অর্থাৎ এগুলি বহুমুখী।
এটি আপনাকে একাধিক ফাংশনের জন্য একটি বোতাম ব্যবহার করতে এবং সিস্টেমের জটিলতা কমাতে দেয়।
এইভাবে, ব্যবহারকারী ঘন্টা এবং মিনিটের মান সমন্বয় করবে এবং তারপরে ওকে বোতাম টিপলে সিস্টেমে ডেটা সংরক্ষণ করবে।
আপনি দেখতে পাচ্ছেন, সিস্টেমটি 3 টি বোতাম পড়বে, যেমনটি নীচে দেখানো হয়েছে।
পরিমাপ = ডিজিটাল রিড (বাটনমেজার);
adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok);
লক্ষ্য করুন যে পরিমাপ বোতাম (বাটনমেজার) এর কার্যকারিতা পরিবর্তন করেছে। এটি এখন ঘন্টার মানগুলি সামঞ্জস্য করতে ব্যবহার করা হবে, যেমন নীচে দেখানো হয়েছে।
যদি (পরিমাপ == 0 এবং & পরিমাপ_ স্টেট == 1)
{পরিমাপ_ রাজ্য = 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; }
অতএব, প্রতিবার দুটি বোতামের একটি চাপলে, ডেটাটাইম ভেক্টরের 4 এবং 5 অবস্থানের মান পরিবর্তন করা হবে এবং দ্বিতীয়ত, এই মানগুলি DS1307 মেমরিতে সংরক্ষণ করা হবে।
সমন্বয় করার পরে, ব্যবহারকারীকে অবশ্যই Ok বোতামে ক্লিক করতে হবে, প্রক্রিয়াটি শেষ করতে। যখন এই ইভেন্টটি ঘটে, সিস্টেমটি কোডের নিম্নলিখিত লাইনগুলি কার্যকর করবে।
যদি (ঠিক == 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"); adjust_process = 0; }
এটি উপরের শর্তে প্রবেশ করবে এবং ব্যবহারকারীর কাছে ঘন্টা বার্তা এবং বিকল্প মেনু উপস্থাপন করবে।
অবশেষে, ব্যবহারকারীকে Arduino JLCPCB Datalogger দিয়ে তাপমাত্রা সেন্সরের মাধ্যমে রোগী পর্যবেক্ষণ প্রক্রিয়া শুরু করতে হবে।
এটি করার জন্য, ব্যবহারকারীকে অবশ্যই পরিমাপ বোতাম টিপতে হবে, যা ডিজিটাল পিন 2 এর সাথে সংযুক্ত।
তারপরে, সিস্টেমটি আরডুইনোর জন্য তাপমাত্রা সেন্সর দিয়ে রিডিং করবে এবং মেমরি কার্ডে সেভ করবে। সার্কিট অঞ্চল উপরের চিত্রে দেখানো হয়েছে।
ধাপ 8:
অতএব, যখন বোতাম টিপুন, কোডের নিম্নলিখিত অংশটি কার্যকর করা হবে।
যদি (পরিমাপ == 0 এবং & পরিমাপ_ স্টেট == 1)
{পরিমাপ_ রাজ্য = 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 (ডেটাটাইম); actualMin = 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); সেন্সর অনুরোধ তাপমাত্রা (); ভাসমান TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }
উপরের কোড অংশে, সিস্টেম পরিমাপ_প্রক্রিয়া ভেরিয়েবলের জন্য 1 এর মান নির্ধারণ করবে। এটি SD কার্ডে ডেটা সংরক্ষণের অনুমতি দেওয়ার জন্য দায়ী।
উপরন্তু, সিস্টেম একটি তথ্য লগ সহ একটি টেক্সট ফাইল আছে কিনা তা পরীক্ষা করবে। যদি একটি ফাইল থাকে, সিস্টেমটি মুছে ফেলবে এবং তথ্য সংরক্ষণের জন্য একটি নতুন তৈরি করবে।
এর পরে, এটি দুটি কলাম তৈরি করবে: একটি ঘন্টার জন্য এবং একটি টেক্সট ফাইলের ভিতরের তাপমাত্রার জন্য।
এর পরে, এটি এলসিডি স্ক্রিনে ঘন্টা এবং তাপমাত্রা প্রদর্শন করবে, যেমন উপরের ছবিতে দেখানো হয়েছে।
এর পরে, কোড প্রবাহ নিম্নলিখিত প্রোগ্রাম ব্লকটি কার্যকর করবে।
যদি (পরিমাপ_প্রক্রিয়া == 1)
{updateTemp (); বাইট contMin = 0, contHour = 0; DS1307.getDate (ডেটাটাইম); actualMin = DataTime [5]; // ------------------------------------------------ --------- মিনিট গণনা করুন --------------------------------------- ------------------- যদি (actualMin! = previousMin) {contMin ++; previousMin = actualMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); সেন্সর অনুরোধ তাপমাত্রা (); ভাসমান TempSensor = sensors.getTempCByIndex (0); myFile.print (বার); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ ঘন্টা গণনা ------------------------------------ ---------------------- যদি (actualHour! = previousHour) {contHour ++; আগের ঘন্টা = প্রকৃত ঘন্টা; } যদি (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("সমাপ্ত"); lcd.setCursor (5, 1); lcd.print ("প্রক্রিয়া"); পরিমাপ_প্রক্রিয়া = 0; contHour = 0; } // ---------------------------------------------- অবস্থা ডেটালগার বন্ধ করতে -----
প্রথমত, updateTemp () ফাংশনটি কার্যকর করা হবে। এটি updateHour () ফাংশনের অনুরূপ; যাইহোক, এটি প্রতি 1 মিনিটে তাপমাত্রা প্রদর্শন করে।
তারপরে, সিস্টেমটি রিয়েল-টাইম ক্লক থেকে সময় ডেটা সংগ্রহ করবে এবং কারেন্ট মিনি ভেরিয়েবলে বর্তমান মিনিটের মান সংরক্ষণ করবে।
তারপরে, নীচে উপস্থাপিত শর্ত অনুযায়ী মিনি ভেরিয়েবল পরিবর্তন করা হয়েছে কিনা তা পরীক্ষা করবে
যদি (actualMin! = previousMin)
{contMin ++; previousMin = actualMin; }
অতএব, যদি বর্তমান মিনিটের পরিবর্তনশীলতা আগের মান থেকে আলাদা হয়, তাহলে এর মানে হল যে মানটিতে একটি পরিবর্তন ঘটেছে এইভাবে, শর্তটি সত্য হবে এবং মিনিটের গণনার মান বাড়ানো হবে (contMin) এবং বর্তমান মান ভেরিয়েবল previousMin এর জন্য নির্ধারিত হবে, এর আগের মান সংরক্ষণ করতে।
অতএব, যখন এই গণনার মান 5 এর সমান হয়, এর মানে হল যে 5 মিনিট কেটে গেছে এবং সিস্টেমটি অবশ্যই একটি নতুন তাপমাত্রা পড়বে এবং এসডি কার্ড লগ ফাইলে ঘন্টা এবং তাপমাত্রার মান সংরক্ষণ করবে।
যদি (contMin == 5)
{sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); সেন্সর অনুরোধ তাপমাত্রা (); ভাসমান TempSensor = sensors.getTempCByIndex (0); myFile.print (বার); myFile.println (TempSensor); contMin = 0; }
এভাবে, আরডুইনো দিয়ে তাপমাত্রা সেন্সর দিয়ে রোগীর তাপমাত্রা পর্যবেক্ষণের 5 ঘন্টার মান না পৌঁছানো পর্যন্ত এই প্রক্রিয়াটি পুনরাবৃত্তি হবে।
কোড অংশটি নীচে দেখানো হয়েছে এবং মিনিট গণনার অনুরূপ, যা উপরে উপস্থাপন করা হয়েছিল।
// ------------------------------------------------ ----------- ঘন্টা গণনা ------------------------------------- ---------------------
যদি (actualHour! = previousHour) {contHour ++; আগের ঘন্টা = প্রকৃত ঘন্টা; } যদি (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("সমাপ্ত"); lcd.setCursor (5, 1); lcd.print ("প্রক্রিয়া"); পরিমাপ_প্রক্রিয়া = 0; contHour = 0; }
পর্যবেক্ষণের 5 ঘন্টা পৌঁছানোর পরে, সিস্টেমটি লগ ফাইলটি বন্ধ করবে এবং ব্যবহারকারীর কাছে "সমাপ্ত প্রক্রিয়া" বার্তাটি উপস্থাপন করবে।
এছাড়াও, ডেটা রেকর্ড করা বন্ধ করার জন্য ব্যবহারকারী 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:
তারপরে, সিস্টেমটি ফাইলটি বন্ধ করবে এবং চিত্র 8 এ দেখানো হিসাবে "স্টপড প্রসেস" বার্তাটি উপস্থাপন করবে।
ধাপ 10:
তারপরে, সিস্টেমটি চিত্র 9 এ দেখানো সময় টাইম স্ক্রিন এবং মেনু বিকল্পগুলি মুদ্রণ করবে।
ধাপ 11: আরডুইনো দিয়ে এসডি কার্ড মডিউল ডেটা অ্যাক্সেস করা
আরডুইনো দিয়ে তাপমাত্রা সেন্সর সহ জেএলসিপিসিবি ডেটালগার পর্যবেক্ষণের প্রক্রিয়াটির পরে, মেমরি কার্ডটি সরিয়ে কম্পিউটারে ডেটা অ্যাক্সেস করা প্রয়োজন।
উন্নত মানের তথ্য দেখতে এবং বিশ্লেষণ করতে, এক্সেল -এ পাঠ্য ফাইলের সমস্ত তথ্য রপ্তানি / অনুলিপি করুন।
ধাপ 12: উপসংহার
আরএলডুইনো সহ একটি তাপমাত্রা সেন্সর সহ জেএলসিপিসিবি ডেটালগার আমাদের তাপমাত্রা পরিমাপের পাশাপাশি নির্দিষ্ট সময়ের মধ্যে রোগীর তাপমাত্রার আচরণের তথ্য রেকর্ড করার অনুমতি দেয়।
এই সংরক্ষিত ডেটার সাহায্যে, কোভিড -১ by দ্বারা আক্রান্ত রোগীর তাপমাত্রা কেমন আচরণ করে তা বিশ্লেষণ ও বোঝা সম্ভব।
এছাড়াও, তাপমাত্রার মাত্রা মূল্যায়ন করা এবং এর মানকে কিছু ধরণের ওষুধ প্রয়োগের সাথে যুক্ত করা সম্ভব।
অতএব, এই তথ্যের মাধ্যমে, আরডুইনোর তাপমাত্রা সেন্সর সহ জেএলসিপিসিবি ডেটালগারের লক্ষ্য রোগীদের আচরণের গবেষণায় ডাক্তার এবং নার্সদের সহায়তা করা।
পরিশেষে, আমরা JLCPCB কোম্পানিকে ধন্যবাদ জানাই প্রকল্পের উন্নয়নে সহায়তা করার জন্য এবং আশা করি আপনি এটি ব্যবহার করতে পারবেন।
সমস্ত ফাইল ডাউনলোড করে যেকোন ব্যবহারকারী অবাধে ব্যবহার করতে পারে।
প্রস্তাবিত:
Under 20 কোভিড -১ V ভেন্টিলেটরের নিচে আরডুইনো দিয়ে কীভাবে একটি সঠিক বায়ু প্রবাহ হার সেন্সর তৈরি করবেন: 7 টি পদক্ষেপ
Under 20 কোভিড -১ V ভেন্টিলেটরের নিচে আরডুইনো দিয়ে একটি সঠিক বায়ু প্রবাহ রেট সেন্সর কীভাবে তৈরি করবেন: অনুগ্রহ করে এই অরিফিস ফ্লো সেন্সরের সাম্প্রতিক ডিজাইনের জন্য এই প্রতিবেদনটি দেখুন: https://drive.google.com/file/d/1TB7rhnxQ6q6C1cNb .. এই নির্দেশাবলী দেখায় কিভাবে কম খরচে ডিফারেনশিয়াল প্রেসার সেন্সর ব্যবহার করে বায়ু প্রবাহ হার সেন্সর তৈরি করা যায় এবং সহজেই একটি
আপনার টিভিতে সংযুক্ত প্রতিটি ইনপুটের জন্য অ্যাম্বিলাইট সিস্টেম। WS2812B Arduino UNO Raspberry Pi HDMI (12.2019 আপডেট করা হয়েছে): 12 টি ধাপ (ছবি সহ)
আপনার টিভিতে সংযুক্ত প্রতিটি ইনপুটের জন্য অ্যাম্বিলাইট সিস্টেম। WS2812B Arduino UNO Raspberry Pi HDMI (12.2019 আপডেট করা হয়েছে): আমি সবসময় আমার টিভিতে অ্যাম্বিলাইট যোগ করতে চেয়েছিলাম। এটা খুব শান্ত দেখায়! আমি অবশেষে করেছি এবং আমি হতাশ হইনি! আমি আপনার টিভির জন্য একটি অ্যাম্বিলাইট সিস্টেম তৈরির জন্য অনেক ভিডিও এবং অনেক টিউটোরিয়াল দেখেছি কিন্তু আমি আমার সঠিক নী এর জন্য একটি সম্পূর্ণ টিউটোরিয়াল পাইনি
ESP8266 NodeMCU অ্যাক্সেস পয়েন্ট (AP) ওয়েব সার্ভারের জন্য DT11 তাপমাত্রা সেন্সর এবং মুদ্রণ তাপমাত্রা এবং ব্রাউজারে আর্দ্রতা সহ: 5 টি পদক্ষেপ
ওয়েব সার্ভারের জন্য ESP8266 NodeMCU অ্যাক্সেস পয়েন্ট (AP) DT11 তাপমাত্রা সেন্সর এবং মুদ্রণ তাপমাত্রা এবং ব্রাউজারে আর্দ্রতা: হাই বন্ধুরা আমরা বেশিরভাগ প্রকল্পে ESP8266 ব্যবহার করি এবং বেশিরভাগ প্রকল্পে আমরা ESP8266 ব্যবহার করি একটি ওয়েব সার্ভার হিসাবে যাতে ডেটা অ্যাক্সেস করা যায় ESP8266 দ্বারা হোস্ট করা ওয়েবসাইট সার্ভার অ্যাক্সেস করে ওয়াইফাই এর উপর যেকোনো ডিভাইস কিন্তু একমাত্র সমস্যা হল আমাদের জন্য একটি ওয়ার্কিং রাউটার দরকার
তাপমাত্রা সেন্সর পরীক্ষা করা - আমার জন্য কোনটি ?: 15 টি ধাপ (ছবি সহ)
তাপমাত্রা সেন্সর পরীক্ষা করা - আমার জন্য কোনটি ?: শারীরিক কম্পিউটিংয়ে নতুনরা যে প্রথম সেন্সরগুলি ব্যবহার করতে চান তা হল তাপমাত্রা পরিমাপের কিছু। চারটি জনপ্রিয় সেন্সর হল TMP36, যার এনালগ আউটপুট আছে এবং ডিজিটাল কনভার্টারের একটি এনালগ প্রয়োজন, DS18B20, wh
টাইম ল্যাপস পিকচারের জন্য ক্যামেরা সহজ করা হয়েছে ।: 22 ধাপ (ছবি সহ)
টাইম ল্যাপস পিকচারের জন্য ক্যামেরা সহজেই তৈরি করা হয়েছে।: আমি সময় ল্যাপস মুভি তৈরির বিষয়ে অন্যান্য নির্দেশাবলীর মধ্যে একটি পরীক্ষা করছিলাম। তিনি সিনেমার অংশটি বেশ ভালোভাবে কভার করেছেন। তিনি ফ্রি সফটওয়্যার সম্পর্কে বলেছেন যেগুলো আপনি সিনেমা বানানোর জন্য ডাউনলোড করতে পারেন। আমি নিজেকে বললাম, আমি মনে করি আমি দেখতে পারব যদি আমি পারি