Sunscreen reminder with Arduino Lilypad | সানস্ক্রিন রিমাইন্ডার
ই-টেক্সটাইল অর্থ্যাৎ, কাপড়ে পরিধানযোগ্য ইলেক্ট্রনিক ডিভাইসের চাহিদা এখন উর্ধমুখী। বিশ্বের লাক্সারি ব্র্যান্ডগুলো স্মার্ট পোশাক তৈরিতে আগ্রহ দেখাচ্ছে।
বর্তমানে পরীক্ষার-নিরীক্ষার পর্যায়ে থাকলেও স্মার্ট স্পোর্টসওয়্যার বিক্রি হচ্ছে বিশ্বজুড়ে। সব মিলিয়ে স্মার্ট পোশাকের বৈশ্বিক বাজার বর্তমানে ২ হাজার ৫০০ থেকে ৩ হাজার কোটি মার্কিন ডলারের। ২০২৫ সালে বাজারটি বেড়ে ১৩ হাজার কোটি বা ১৩০ বিলিয়ন ডলার হবে। (সূত্রঃ দৈনিক প্রথম আলো ১৩ মে ২০১৯)।
স্মার্ট পোশাকের বাজারে হাঁটি হাঁটি পা পা করে বাংলাদেশও যাত্রা শুরু করছে। আমরা যারা ইলেক্ট্রনিক্সের ছাত্রছাত্রী বা হবিস্ট, তারাই বা পিছিয়ে থাকবো কেন? আমাদের কাছে সহজলভ্য সীমিত যন্ত্রাংশ দিয়েই আমরা তৈরী করা শিখব স্মার্ট পোশাক-পরিচ্ছদ। ইতোমধ্যে আমরা ব্লুটুথ টিশার্ট তৈরী করছি।
এই টিউটোরিয়ালে আমরা তৈরী করব একটি সানস্ক্রিন রিমাইন্ডার হ্যাট।
সময় পেলেই সমূদ্র বা পাহাড়ে বেড়ানো আমাদের অনেকেরই প্রিয় শখ। আর বেড়াতে গেলে অনেকেই রোদ থেকে বাঁচার জন্য বেছে নেন ক্যাজুয়ালের মধ্যে ফ্যাশনেবল হ্যাট। রোদ থেকে বাঁচতে হ্যাটই কিন্তু যথেষ্ট না। প্রয়োজন সময়মতো সানস্ক্রিন ব্যবহার করা। শুধু বেড়ানোর সময়ই না, প্রতিদিন আমরা যারা হেঁটে , রিকশায় বা বাইকে চলাচল করি, পেশাগত কারণে আউটডোরেই প্রায় সারাদিন ঘুরি, তাদের জন্যও সূর্যের আল্ট্রাভায়োলেট রশ্মি থেকে ত্বক বাঁচাতে সানস্ক্রিন খুবই জরুরী। কারন , সূর্যের আল্ট্রাভায়োলেট রশ্মির কারনেই স্কিন ক্যান্সার আর অকালে ত্বকে বলিরেখা পড়ে যাবার মতন সমস্যাগুলো দেখা দেয়। ব্যস্ত জীবনে সবসময় কি আর নিজের যত্ন নেবার কথা মনে থাকে? তাই এই টিউটোরিয়ালটি আমাদের ব্যক্তিগত যত্নের প্রতিই উৎসর্গ করা হল।
এই টিউটোরিয়ালে আমরা তৈরী করব লিলিপ্যাড আরডুইনোভিত্তিক একটি সানস্ক্রিন রিমাইন্ডার যা একটি হ্যাটে সেলাই করা থাকবে এবং রোদে বের হলে একটি নির্দিষ্ট সময় পরপর আমাদের সানস্ক্রিন দেবার কথা মনে করিয়ে দেবে।
সেন্সর হিসেবে এখানে আমরা ব্যবহার করব Gravity Analog UV Sensor V2। অ্যালার্ম হিসেবে ব্যবহৃত হবে LilyPad Vibe Board। এটি কাপড়ে সেলাইযোগ্য ছোট্ট একটি ভাইব্রেশন মোটর। মোবাইলের ভাইব্রেশন যেমন যার পকেটে মোবাইল থাকে শুধু সে-ই টের পায়; এই মোটরটির ভাইব্রেশনও সেরকম। সানস্ক্রিন দেবার সময় হলে এই মোটরটি কাঁপতে শুরু করবে এবই হ্যাট পরা ব্যক্তি মোটরের কম্পন অনুভব করে বুঝতে পারবেন সানস্ক্রিন দেবার সময় হয়ে গেছে।
পোশাকে এই ধরনের যেকোনো অ্যালার্ম হিসেবে ভাইব্রেশন মোটরটি ব্যবহার করা যায়। এর বড় সুবিধা হল, যে পোশাক পরে আছে সে ছাড়া আর কেউ অ্যালার্ম টের পেয়ে বিরক্ত হবার সম্ভাবনা নেই।
সার্কিটের ইলেট্রিক্যাল কানেকশনের জন্য ব্যবহৃত হবে স্টেইনলেস স্টিলের তৈরী কন্ডাকটিভ সুতা।
সার্কিটটি যে শুধু হ্যাটেই সেলাই করতে হবে এমন কোনো কথা নেই। কেউ চাইলে ব্যাগেও সেলাই করে নিতে পারেন।
প্রয়োজনীয় যন্ত্রপাতি | পরিমাণ | লিংক |
LilyPad Arduino 328 Main Board | 1 | এখানে ক্লিক করুন |
LilyPad Vibe Board | 1 | এখানে ক্লিক করুন |
LilyPad Coin Cell Battery Holder – Switched – 20mm | 1 | এখানে ক্লিক করুন |
Conductive Thread Bobbin – 30ft (Stainless Steel) | 1 | এখানে ক্লিক করুন |
Lithium Battery CR2025 | 1 | এখানে ক্লিক করুন |
Gravity Analog UV Sensor V2 | 1 | এখানে ক্লিক করুন |
Male To Female Jumper Wire – Single | 5 | এখানে ক্লিক করুন |
Male to male jumper | 1 | এখানে ক্লিক করুন |
FTDI USB to serial converter 3V3-5V | 1 | এখানে ক্লিক করুন |
USB A to mini B cable | 1 | এখানে ক্লিক করুন |
Needle | 1 | |
Normal thread (Optional) | 1 | |
Hat | 1 |
প্রোগ্রামঃ
লিলিপ্যাড আরডুইনোতে প্রোগ্রাম আপলোড করার জন্য FTDI USB to serial converter ব্যবহার করা প্রয়োজন।
ইতোমধ্যে এই ধাপটি এই টিউটোরিয়ালে বিস্তারিতভাবেই দেখানো হয়েছে। প্রদর্শিত নিয়মে লিলিপ্যাডে প্রোগ্রামটি আপলোড করুন।
uint32_t sinceTime;
uint32_t markerTime;
uint32_t reapplyInterval = 10000;
boolean vibration = false;
void setup()
{
Serial.begin(9600);// open serial port, set the baud rate to 9600 bps
pinMode(6,OUTPUT);
digitalWrite(6,LOW);
}
void loop()
{
int sensorValue;
int analogValue = analogRead(0);//connect UV sensors to Analog 0
if (analogValue<20)
{
sensorValue = 0;
}
else
{
sensorValue = 0.05*analogValue-1;
}
Serial.println(sensorValue);//print the value to serial
sinceTime = millis()-markerTime;
if(sensorValue>1 && vibration)
{
digitalWrite(6,HIGH);
vibration = false;
resetTimer();
}
if (sinceTime > reapplyInterval) { //check to see if we've exceeded the time limit
vibration = true;
resetTimer;
}
}
void resetTimer(){
markerTime = millis();
sinceTime = 0;
}
সার্কিটঃ
কন্ডাকটিভ সুতা দিয়ে হ্যাটের উপর নিচের সার্কিটটি সেলাই করুন। তারপর ব্যাটারি হোল্ডারে ব্যাটারি প্রবেশ করান।
আমাদের ব্যবহৃত ইউভি সেন্সরটি কাপড়ে সেলাইযোগ্য নয়। তাই জাম্পার ওয়্যারের মাধ্যমে একে আরডুইনোর সাথে সংযোগ দিতে হবে।
লিলিপ্যাড এবং সেন্সরের মধ্যে নিচের কানেকশনটি সম্পন্ন করুন।
Lilypad | UV sensor |
VCC | VCC |
GND | GND |
A0 | SIgnal |
কাপড়ে সেলাইযোগ্য UV সেন্সর আছে, তবে টেকশপে পাওয়া যায় না। Adafruit থেকে কেউ আমাদের মাধ্যমে আনাতে চাইলে sourcing@techshopbd.com এ মেইল করুন।
বিশেষ দ্রষ্টব্যঃ আমরা মোটর, লিলিপ্যাড ও ব্যাটারি হোল্ডার হ্যাটের কোনায় সেলাই করেছি এর মানে এই না যে এভাবেই সেলাই করতে হবে। আপনারা চাইলে পুরো সার্কিটটাই আরও উপরে সেলাই করে ফিতার নিচে লুকিয়ে রাখতে পারেন। এতে হ্যাটটা দেখতে আরেকটু সুন্দর লাগবে। বিশেষ করে, মোটরটা যদি মাথার ত্বকের সংস্পর্শে থাকে তাহলে মোটরের কম্পন আরও ভালোভাবে টের পাওয়া যাবে।
সার্কিট শেষ। এবার কোডে ফিরে আসি। আমাদের কোডের এই লাইনটি লক্ষ্য করুনঃ
uint32_t reapplyInterval = 10000;
এই কোড অনুযায়ী ১০০০০ মিলিসেকেন্ড অর্থ্যাৎ, ১০ সেকেন্ড পরপর সার্কিটটি আমাদেরকে সানস্ক্রিন দেবার কথা মনে করিয়ে দেবে। সার্কিট পরীক্ষা করার জন্য ১০ সেকেন্ড সুবিধাজনক। কিন্তু বাস্তবে আমাদের এতো ঘনঘন রিমাইন্ডারের মোটেও প্রয়োজন নেই। সার্কিটটি কাজ করলে কোডের এই লাইনে সময়টি পরিবর্তন করে দিন। আউটডোরে থাকলে ২ ঘন্টা পরপর সানস্ক্রিন দেওয়া জরুরি। যদি আমরা দুই ঘন্টা পরপর রিমাইন্ডার পেতে চাই তাহলে লাইনটি পরিবর্তন করে লিখতে হবে
uint32_t reapplyInterval = 7200000;
//(2x60x60=7200 second=7200000 milisecond)
আমাদের কোড অনুযায়ী ইউভি ইন্ডেক্স ১ এর চেয়ে বেশি হলেই আমরা রিমাইন্ডার পাব।
if(sensorValue>1 && vibration)
{
digitalWrite(6,HIGH);
vibration = false;
resetTimer();
}
ইউভি ইন্ডেক্স সম্পর্কে আমরা ইতোমধ্যে ইউভি ইন্ডেক্স মিটার টিউটোরিয়ালে আলোচনা করেছি। আপনারা যদি 1 এর চেয়ে আরও বেশি ইউভি ইন্ডেক্সে রিমাইন্ডার পেতে চান তাহলে উল্লিখিত লুপটিতে 1 এর জায়গায় আপনার কাঙ্ক্ষিত ইউভি ইন্ডেক্স লিখুন।