সুচিপত্র:

IOT হার্ট রেট মনিটর (ESP8266 এবং Android App): 5 টি ধাপ
IOT হার্ট রেট মনিটর (ESP8266 এবং Android App): 5 টি ধাপ

ভিডিও: IOT হার্ট রেট মনিটর (ESP8266 এবং Android App): 5 টি ধাপ

ভিডিও: IOT হার্ট রেট মনিটর (ESP8266 এবং Android App): 5 টি ধাপ
ভিডিও: Learn Arduino in 30 Minutes: Examples and projects 2024, নভেম্বর
Anonim
Image
Image

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

শারীরিক সার্কিটের বিশদ বিবরণ উপরে দেখা যাবে। প্রকল্পের জন্য সমস্ত কোড আমার Github এ পাওয়া যাবে।

ধাপ 1: সার্কিট

সার্কিট
সার্কিট

হার্টবিট পরিমাপ করার দুটি প্রধান পদ্ধতি আছে কিন্তু এই প্রকল্পের জন্য আমি ফটোপলেথিসমোগ্রাফি (পিপিজি) ব্যবহার করার সিদ্ধান্ত নিয়েছি যা একটি ইনফ্রারেড বা লাল আলোর উৎস ব্যবহার করে যা ত্বকের প্রথম কয়েকটি স্তরের মাধ্যমে প্রতিসরণ হয়। আলোর তীব্রতার পরিবর্তন পরিমাপ করতে একটি ফটো সেন্সর ব্যবহার করা হয় (যখন একটি জাহাজ দিয়ে রক্ত প্রবাহিত হয়)। পিপিজি সিগন্যালগুলি অবিশ্বাস্যভাবে শোরগোল করে তাই আমি নির্দিষ্ট ব্যয়ের ফ্রিকোয়েন্সি ফিল্টার করার জন্য একটি ব্যান্ড পাস ফিল্টার ব্যবহার করেছি। মানুষের হার্ট 1 থেকে 1.6 Hz ফ্রিকোয়েন্সি এর মধ্যে বিট করে। আমি যে অপ-এ্যাম্পটি ব্যবহার করেছি তা ছিল lm324 যা আমার কাছে উপলব্ধ সমস্ত অপ-এম্পসের সেরা ভোল্টেজ-অফসেট ছিল। যদি আপনি এই প্রকল্পটি পুনreatনির্মাণ করছেন তবে একটি স্পষ্টতা অপ-amp আরও ভাল পছন্দ হবে।

মাত্র দুইটি লাভ ব্যবহার করা হয়েছিল কারণ ESP8266 এ সর্বাধিক ভোল্টেজ সহনশীলতা 3.3v এবং আমি আমার বোর্ডকে ক্ষতি করতে চাইনি!

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

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

ধাপ 2: সিগন্যাল প্রসেসিং কোড এবং সার্ভার যোগাযোগ

Image
Image
সিগন্যাল প্রসেসিং কোড এবং সার্ভার যোগাযোগ
সিগন্যাল প্রসেসিং কোড এবং সার্ভার যোগাযোগ

আমি ESP8266 এ Arduino IDE ব্যবহার করার সিদ্ধান্ত নিয়েছি কারণ এটি ব্যবহার করা খুব সহজ। যখন সিগন্যালটি প্লট করা হয়েছিল তখনও এটি খুব শোরগোল ছিল তাই আমি দশটি নমুনা নম্বর সহ একটি এফআইআর মুভিং-এভারেজ ফিল্টার দিয়ে এটি পরিষ্কার করার সিদ্ধান্ত নিয়েছি। আমি এটি করার জন্য "স্মুথিং" নামক আরডুইনো প্রোগ্রামের একটি উদাহরণ সংশোধন করেছি। হৃৎপিন্ডের চারটি ভিন্ন ধরনের ডাল এবং পিপিজি সংকেতগুলির বৈশিষ্ট্যের কারণে ডালগুলি বিভিন্ন দৈর্ঘ্য এবং প্রশস্ততার ছিল। আমি একটি পরিচিত মধ্যম মান বেছে নিয়েছি যা সিগন্যাল সবসময় প্রতিটি পালসের রেফারেন্স পয়েন্ট হিসেবে অতিক্রম করে। সিগন্যালের opeাল কখন ধনাত্মক বা নেতিবাচক তা নির্ধারণ করতে আমি একটি রিং বাফার ব্যবহার করেছি। এই দুটি সংমিশ্রণ আমাকে ডালগুলির মধ্যে সময় গণনা করার অনুমতি দেয় যখন সংকেত ইতিবাচক ছিল এবং একটি নির্দিষ্ট মানের সমান ছিল।

সফ্টওয়্যারটি একটি মোটামুটি ভুল BPM তৈরি করেছে যা আসলে ব্যবহার করা যায়নি। অতিরিক্ত পুনরাবৃত্তির সাথে একটি ভাল প্রোগ্রাম ডিজাইন করা যেতে পারে কিন্তু সময়ের সীমাবদ্ধতার কারণে এটি একটি বিকল্প ছিল না। কোডটি নীচের লিঙ্কে পাওয়া যাবে।

ESP8266 সফটওয়্যার

ধাপ 3: সার্ভার এবং ডেটা কমিউনিকেশনস

সার্ভার এবং ডেটা কমিউনিকেশনস
সার্ভার এবং ডেটা কমিউনিকেশনস

আমি তথ্য সংরক্ষণের জন্য ফায়ারবেস ব্যবহার করার সিদ্ধান্ত নিয়েছি কারণ এটি একটি বিনামূল্যে পরিষেবা এবং মোবাইল অ্যাপ্লিকেশনগুলির সাথে ব্যবহার করা খুব সহজ। ESP8266 এর সাথে ফায়ারবেসের জন্য কোন অফিসিয়াল API নেই কিন্তু আমি দেখেছি Arduino লাইব্রেরি খুব ভাল কাজ করেছে।

একটি উদাহরণ প্রোগ্রাম রয়েছে যা ESP8266WiFi.h লাইব্রেরিতে পাওয়া যাবে যা আপনাকে SSID এবং পাসওয়ার্ড দিয়ে রাউটারের সাথে সংযোগ করতে দেয়। এটি বোর্ডকে ইন্টারনেটে সংযুক্ত করতে ব্যবহার করা হয়েছিল যাতে ডেটা পাঠানো যায়।

যদিও ডেটা সংরক্ষণ করা খুব সহজেই করা হয়েছিল তবুও HTTP POST রিকোয়েস্টের মাধ্যমে পুশ নোটিফিকেশন পাঠাতে বেশ কিছু সমস্যা রয়েছে। আমি গিথুবের একটি মন্তব্য পেয়েছি যা গুগল ক্লাউড মেসেজিং এবং ইএসপি 8266 এর জন্য HTTP লাইব্রেরির মাধ্যমে এটি করার একটি উত্তরাধিকার পদ্ধতি ব্যবহার করেছে। এই পদ্ধতিটি আমার গিথুবের কোডে দেখা যাবে।

ফায়ারবেসে আমি একটি প্রকল্প তৈরি করেছি এবং সফ্টওয়্যারে API এবং নিবন্ধন কী ব্যবহার করেছি। ফায়ারবেস ক্লাউড মেসেজিং ব্যবহারকারীর কাছে পুশ বিজ্ঞপ্তি পাঠানোর জন্য অ্যাপের সাথে ব্যবহার করা হয়েছিল। ESP8266 চলাকালীন যখন যোগাযোগগুলি পরীক্ষা করা হয়েছিল ডাটাবেসে ডেটা দেখা যায়।

ধাপ 4: অ্যান্ড্রয়েড অ্যাপ

অ্যান্ড্রয়েড অ্যাপ
অ্যান্ড্রয়েড অ্যাপ

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

ক্লাউড মেসেজিংয়ের কার্যক্রম এবং পদ্ধতিগুলির সমস্ত কোড আমার গিথুব রিপোজিটরিতে পাওয়া যাবে।

ধাপ 5: উপসংহার

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

বাকি সিস্টেমটি কার্যকরী ছিল কিন্তু এটি একটি খুব পরীক্ষামূলক ডিভাইস যা আমি তৈরি করতে চেয়েছিলাম বস্তুটি সম্ভব কিনা তা দেখতে। পুশ নোটিফিকেশন পাঠানোর জন্য যে লিগ্যাসি কোড ব্যবহার করা হয়েছিল তা শীঘ্রই অব্যবহারযোগ্য হবে তাই আপনি যদি 2018 এর শেষের দিকে বা দেরিতে পড়ছেন তবে একটি ভিন্ন পদ্ধতির প্রয়োজন হবে। এই সমস্যাটি শুধুমাত্র ESP এর সাথে ঘটে যদিও আপনি যদি WiFi সক্ষম Arduino এ এটি বাস্তবায়ন করতে চান তবে এটি কোন সমস্যা হবে না।

যদি আপনার কোন প্রশ্ন বা সমস্যা থাকে তবে অনুগ্রহ করে আমাকে Instructables এ মেসেজ করুন।

প্রস্তাবিত: