Arduino based stress/discomfort alert | স্ট্রেস/ডিসকম্ফোর্ট অ্যালার্ট

এই প্রজেক্টটি করা হচ্ছে অসুস্থ শিশু ও শয্যাশায়ী বৃদ্ধ বিশেষত প্যারালাইসিস রোগীদের জন্য। যারা বিছানা থেকে উঠে টয়লেটে যেতে পারে না, কাউকে কোনো প্রয়োজনের কথা বলতে পারে না। যাদের সারাক্ষনই একজন পরিচর্যাকারীর তত্বাবধানে থাকতে হয়। এই প্রজেক্টটির সেন্সিং পার্টে থাকছে একটি জিএসআর সেন্সর।


জিএসআর কী?

জিএসআরের পূর্ণরুপ হচ্ছে গ্যালভানিক স্কিন রেসপন্স। এটি স্কিন কন্ডাকটেন্স নামেও পরিচিত। এর একক মাইক্রোসিমেন্স কিংবা মাইক্রোমোহ।

আমরা জানি, আমাদের শরীরে রয়েছে অসংখ্য ঘর্মগ্রন্থি। যেগুলো থেকে ক্রমাগত ঘাম নিঃসৃত হয়। আমরা যখন কোনোকারনে মানসিকভাবে উত্তেজিত বা বিরক্ত হই, তখন এই ঘর্মগ্রন্থিগুলো থেকে ঘামের নিঃসরন বেড়ে যায়। ঘামের নিঃসরন বাড়ার সাথে সাথে পরিবর্তিত হয় আমাদের জিএসআর।

এই টিউটোরিয়ালে আমরা ব্যবহার করব Grove-GSR sensor.

এই সেন্সরটির আছে দুটি ইলেক্ট্রোড। ইলেক্ট্রোডদুটি একজন মানুষের তর্জনী ও মধ্যমায় লাগানো থাকবে। এই সেন্সরটি অ্যানালগ ভ্যালু আউটপুট দেয়।কাজেই এর আউটপুট পিন যদি আমরা আরডুইনোর একটি অ্যানালগ পিনে যুক্ত করি, তাহলে অ্যানালগ পিনের ভ্যালুর পরিবর্তন লক্ষ্য করলেই আমরা ব্যবহারকারীর স্ট্রেস লেভেলের পরিবর্তনটা বুঝতে পারবো। এই এক্সপেরিমেন্টে আমরা যে প্রজেক্টটি তৈরী করব সেটি ব্যবহারকারীর স্ট্রেস লেভেল ক্রমাগত পর্যবেক্ষন করবে এবং ব্যবহারকারীর যখন প্রস্রাবের বেগ আসবে তখন একটি অ্যালার্ম দেবে।

প্যারালাইজড ব্যক্তি বা শিশু রোগীদের জন্য এই প্রজেক্টটি উপকারী। কারন, অ্যালার্ম শুনে তাদের পরিচর্যাকারী জলদি এসে তাদেরকে সহযোগীতা করবেন। এক্ষেত্রে ডায়াপারের উপর নির্ভরতা কমবে। ডায়পার বাবদ খরচ এবং সময়মতো রোগীদের ডায়পার না বদলানোর কারনে নতুন করে তাদের যেসব চর্মরোগ হবার সম্ভাবনা থাকে তা-ও কমে আসবে।


ডেঙ্গু রোগীর ফ্লুইড ম্যানেজমেন্টের ক্ষেত্রে রোগী কয়বার প্রস্রাব করলো সেটি জানাও খুবই জরুরী।

কথা বলতে অপারগ শিশু ও বৃদ্ধ রোগীদের ক্ষেত্রে এটি নির্ণয় করা বেশ অসুবিধাজনক। কারন, তারা নিজেরা কিছু গুনে বলতে পারে না। রোগীর ডায়াপার পরা থাকলে ঠিক কতবার প্রস্রাব হল তা অন্যের পক্ষে গুনে বলা যায় না। আবার, ডায়াপার খুলে রোগীকে শুইয়ে রাখলেও বারবার জামাকাপড়, চাদর-তোশক ভিজে গিয়ে খুবই অসুবিধার সৃষ্টি হয়। যেহেতু, এই প্রজেক্টে প্রস্রাবের বেগ আসার সাথে সাথেই অ্যালার্ম বাজছে এবং জিএসআরের পরিবর্তনও দেখা যাচ্ছে, সেহেতু রোগী কতবার প্রস্রাব করেছে এই প্রশ্নের উত্তরও সহজে দেওয়া যাবে।

প্রয়োজনীয় যন্ত্রপাতি পরিমাণ প্রডাক্ট লিংক
Arduino UNO-R3(China) 1 এখানে ক্লিক করুন
Grove-GSR sensor 1 এখানে ক্লিক করুন
OLED Display Blue I2C 128×64 0.96″  (Optional) 1 এখানে ক্লিক করুন
Mini breadboard 1 এখানে ক্লিক করুন
Buzzer 1 এখানে ক্লিক করুন
Male to male jumpers 9 এখানে ক্লিক করুন
2s li-ion battery 1 এখানে ক্লিক করুন

সার্কিট:

প্রথমে জিএসআর সেন্সরের কানেকটরে তিনটি মেল-মেল জাম্পার প্রবেশ করান।

 

আরডুইনো এবং জিএসআর সেন্সরের ভেতর নিচের কানেকশনটি সম্পন্ন করুন।

Arduino UNO-R3(China) Grove-GSR sensor
5V VCC(Red)
GND GND(GND)
A0 Signal(Yellow)

বাযার এবং আরডুইনো উনোর মধ্যে নিচের কানেকশনটি সম্পন্ন করুন।

Arduino UNO-R3(China) Buzzer
3 +
GND

নিচের অংশটি ঐচ্ছিক। তবে থাকলে অবশ্যই ভালো। আরডুইনো এবং ওলেডের মধ্যে নিচের কানেকশনটি সম্পন্ন করুন।

Arduino UNO-R3(China) OLED Display Blue I2C 128×64 0.96″  
3.3V VCC
GND GND
A4 SDA
A5 SCL

প্রোগ্রামঃ

নিচের প্রোগ্রামটি আপলোড করুন। ওলেড ব্যবহার করতে চাইলে অবশ্যই Adafruit_GFX.h এবং Adafruit_SSD1306.h লাইব্রেরিদুটি ইন্সটল করা থাকতে হবে।

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display;
const int BUZZER=3;
const int GSR=A0;
int threshold=0;
int sensorValue;
void setup(){
 long sum=0;
 Serial.begin(9600);
 pinMode(BUZZER,OUTPUT);
 digitalWrite(BUZZER,LOW);
 
 delay(1000);
 for(int i=0;i<500;i++)
 {
 sensorValue=analogRead(GSR);
 sum += sensorValue;
 delay(5);

 }
 threshold = sum/500;
 
 Serial.print("threshold =");
 Serial.println(threshold);
}
void loop(){
 int temp;
 sensorValue=analogRead(GSR);
 
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

  // Clear the buffer.
 display.clearDisplay();
 display.display();

 display.setTextSize(1);
 display.setTextColor(WHITE);
 display.setCursor(0,0);
 display.print("Threshold =");
 display.println(threshold);
 display.print("sensorValue =");
 display.print(sensorValue);
 display.display();
 display.clearDisplay();
 Serial.print("sensorValue=");
 Serial.println(sensorValue);
 Serial.print(",");
 Serial.print("Threshold=");
 Serial.println(threshold);
 
 temp = threshold - sensorValue;
if(abs(temp)>80)
 {
 sensorValue=analogRead(GSR);
 temp = threshold - sensorValue;
 if(abs(temp)>80){
 digitalWrite(BUZZER,HIGH);
 Serial.println("Go to toilet");
 delay(3000);
 digitalWrite(BUZZER,LOW);
 delay(1000);}
 }
}


ইলেক্ট্রোডদুটি আঙ্গুলে পরুন কিংবা পরান।


ব্যাটারি দিয়ে আরডুইনোতে পাওয়ার দিন।


পুরো সার্কিটটা হবে নিচের ছবির মতো।

ইলেক্ট্রোড পরিধানকারীর প্রস্রাবের বেগ আসলে বাযারটি বেজে উঠবে।


কোডের ব্যাখ্যা এবং ফাইন টিউনিংঃ


আরডুইনো চালু করার পর আরডুইনো A0 পিনের প্রথম পাঁচশোটি অ্যানালগ ভ্যালু গড় করবে।প্রাপ্ত গড় ভ্যালু Threshold নামক ভ্যারিয়েবলে সেইভ করা থাকবে।

for(int i=0;i<500;i++)
 {
 sensorValue=analogRead(GSR);
 sum += sensorValue;
 delay(5);

 }
 threshold = sum/500;

এই Thresold এর সাথে সারাক্ষন অ্যানালগ ভ্যালুকে তুলনা করেই আরডুইনো বাযার বাজাবে কিংবা বাজাবে না। এই টিউটোরিয়ালের লেখক এবং কয়েকজন স্বেচ্ছাসেবীকে ইলেক্ট্রোডদুটি পরিয়ে ডেটা নিয়ে দেখা গেছে প্রস্রাবের বেগ থাকা অবস্থায় Threshold এর সাথে A0 পিনের অ্যানালগ ভ্যালুর পার্থক্য থাকে আশির কাছাকাছি। তাই আমাদের কোডটি এমনভাবে লেখা হয়েছে যাতে করে Threshold এর সাথে অ্যানালগ ভ্যালুর পার্থক্য + বা -৮০ বা তার বেশি হলেই বাযারটি বেজে উঠবে। এক্ষেত্রে বিশেষভাবে উল্লেখ করা প্রয়োজন যে এই পার্থক্য সব মানুষের ক্ষেত্রে একই রকম না-ও হতে পারে। এই ভ্যালু মানুষের শারীরিক ও পারিপার্শি্বক অবস্থার উপর এটি বিশেষভাবে নির্ভরশীল। নিজের উপরেই এই এক্সপেরিমেন্ট চালাতে হলে ব্লাডার খালি অবস্থায় একটি শান্ত পরিবেশে চুপচাপ বসে অ্যানালগ ভ্যালু পর্যবেক্ষন করুন এবং ব্লাডার পূর্ণ হবার পর অ্যানালগ ভ্যালুর পার্থক্য দেখে প্রয়োজনে কোড পরিবর্তন করুন। ওলেড এবং সিরিয়াল মনিটরে ভ্যালু দেখা যাবে।


আরেকটা কথা, অনেকসময় সেন্সর আঙ্গুলে পরিহিত রোগীর প্রস্রাব করার প্রয়োজন না থাকলেও বাযার বেজে উঠতে পারে। ভুল না বুঝে, বিরক্ত না হয়ে তার কাছে যান। তার কোনো না কোনো সমস্যা বা প্রয়োজন অবশ্যই আছে


ইচ্ছে করলে আরডুইনোর সাথে একটি এসডি কার্ড কানেক্ট করে অ্যানালগ ভ্যালুগুলো সেইভ করে রাখা সম্ভব। ডেটাগুলো নিয়ে এক্সেলে গ্রাফ প্লট করলে জিএসআরের পরিবর্তন খুব স্পষ্টই বোঝা যায়। নিচে কয়েকটি বিশেষ অবস্থায় প্রাপ্ত গ্রাফের উদাহরণ দেওয়া হল।

 

 

5/5 - (1 vote)
Share with your friends
Default image
A. R
Articles: 116

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.