সুচিপত্র:

একটি পরিধানযোগ্য মোশন ট্র্যাকার তৈরি করুন (BLE Arduino থেকে একটি কাস্টম অ্যান্ড্রয়েড স্টুডিও অ্যাপে): 4 টি ধাপ
একটি পরিধানযোগ্য মোশন ট্র্যাকার তৈরি করুন (BLE Arduino থেকে একটি কাস্টম অ্যান্ড্রয়েড স্টুডিও অ্যাপে): 4 টি ধাপ

ভিডিও: একটি পরিধানযোগ্য মোশন ট্র্যাকার তৈরি করুন (BLE Arduino থেকে একটি কাস্টম অ্যান্ড্রয়েড স্টুডিও অ্যাপে): 4 টি ধাপ

ভিডিও: একটি পরিধানযোগ্য মোশন ট্র্যাকার তৈরি করুন (BLE Arduino থেকে একটি কাস্টম অ্যান্ড্রয়েড স্টুডিও অ্যাপে): 4 টি ধাপ
ভিডিও: চোরের দিন শেষ😱এক মিনিটে চোর ধরুন🤔মাত্র একটি ডিভাইস ব্যবহার করে Security alarm price in Bangladesh23 2024, জুলাই
Anonim
একটি পরিধানযোগ্য মোশন ট্র্যাকার তৈরি করুন (BLE Arduino থেকে একটি কাস্টম অ্যান্ড্রয়েড স্টুডিও অ্যাপে)
একটি পরিধানযোগ্য মোশন ট্র্যাকার তৈরি করুন (BLE Arduino থেকে একটি কাস্টম অ্যান্ড্রয়েড স্টুডিও অ্যাপে)

ব্লুটুথ লো এনার্জি (BLE) হল লো পাওয়ার ব্লুটুথ কমিউনিকেশনের একটি রূপ। পরিধানযোগ্য ডিভাইস, যেমন স্মার্ট গার্মেন্টস যেমন আমি Predictive Wear এ ডিজাইন করতে সাহায্য করি, ব্যাটারির আয়ু বাড়ানোর জন্য যেখানেই সম্ভব বিদ্যুত ব্যবহার সীমিত করতে হবে এবং ঘন ঘন BLE ব্যবহার করতে হবে। ব্লুটুথ স্পেশাল ইন্টারেস্ট গ্রুপ (এসআইজি) একটি ব্লুটুথ ডিভাইসের সাথে ইন্টারঅ্যাক্ট করার জন্য একটি ডিভাইসের প্রয়োগ করা উচিত এমন বেশ কিছু স্পেসিফিকেশন সংজ্ঞায়িত করে, যাকে তারা "প্রোফাইল" বলে। বেশিরভাগ অ্যাপ্লিকেশন প্রোফাইলগুলি BLE লিঙ্কে ডেটা পাঠানোর জন্য জেনারেল অ্যাট্রিবিউট প্রোফাইল (GATT) ব্যবহার করে। BLE- তে তিনটি মৌলিক ধারণা রয়েছে: প্রোফাইল, পরিষেবা এবং বৈশিষ্ট্য।

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

এই টিউটোরিয়ালের উদ্দেশ্য হল ব্যাখ্যা করা:

  1. কাস্টম জিএটিটি পরিষেবা এবং বৈশিষ্ট্যগুলি কীভাবে ডিজাইন করবেন
  2. কিভাবে Adafruit Bluefruit LE SPI ফ্রেন্ডকে এই কাস্টম পরিষেবা এবং বৈশিষ্ট্যগুলির জন্য GATT সার্ভার হিসেবে কাজ করার জন্য প্রোগ্রাম করা যায়
  3. GATT সার্ভার থেকে ডেটা পড়ার জন্য GATT ক্লায়েন্ট হিসেবে কাজ করার জন্য একটি Android ডিভাইস কিভাবে প্রোগ্রাম করবেন

এই টিউটোরিয়ালটি একটি উত্পাদন -প্রস্তুত অ্যাপ্লিকেশনে অনুবাদযোগ্য হওয়ার উদ্দেশ্যে নয় - এটি কেবল BLE এর একটি ভূমিকা।

পটভূমি পড়া:

  • Adafruit Bluefruit LE SPI Friend ডকুমেন্টেশন
  • আপনি যদি GATT বা BLE এর সাথে পরিচিত না হন

সরবরাহ

  • 1x - একটি Arduino ডিভাইস (আমি এই টিউটোরিয়ালের জন্য UNO ব্যবহার করছি)
  • 1x - Adafruit Bluefruit LE SPI বন্ধু
  • 8x - পুরুষ থেকে পুরুষ জাম্পার তার
  • বেসিক সোল্ডারিং সরঞ্জাম (এসপিআই ফ্রেন্ডের সোল্ডার হেডার পিনগুলিতে)
  • একটি কম্পিউটার (Arduino ডিভাইস এবং অ্যান্ড্রয়েড ডিভাইস প্রোগ্রাম করার জন্য)

ধাপ 1: নকশা কাস্টম পরিষেবা এবং বৈশিষ্ট্য

ভূমিকা

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

GATT পরিষেবাগুলি বৈশিষ্ট্যগুলির একটি সংগ্রহ।

GATT বৈশিষ্ট্যে একটি সম্পত্তি, একটি মান এবং শূন্য বা তার বেশি বর্ণনাকারী থাকে।

  • সম্পত্তি: কিভাবে ক্লায়েন্ট দ্বারা ডেটা পরিচালনা করা উচিত (অ্যান্ড্রয়েড অ্যাপ) উদা পড়ুন, লিখুন, প্রতিক্রিয়া ছাড়াই লিখুন, অবহিত করুন এবং নির্দেশ করুন।
  • মান: বৈশিষ্ট্যের প্রকৃত মূল্য যেমন 1089
  • বর্ণনাকারী: এটি মান সম্পর্কে তথ্য যেমন একক, মিলিসেকেন্ড

ডিজাইন

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

1. আমরা কি কোন স্ট্যান্ডার্ড সার্ভিস এবং বৈশিষ্ট্য ব্যবহার করতে পারি?

ব্লুটুথ এসআইজি অনেক সাধারণ পরিষেবা এবং বৈশিষ্ট্যের মান নির্ধারণ করেছে। প্রথমে, এগুলি পরীক্ষা করে দেখুন যে আপনি মানসম্মত পরিষেবা এবং বৈশিষ্ট্যগুলির মধ্যে কোনটি বেছে নিতে পারেন কিনা। স্ট্যান্ডার্ড পরিষেবা এবং বৈশিষ্ট্যগুলি অনেক ছোট ডেটা প্যাকেট ব্যবহার করতে পারে কারণ ইউনিভার্সালি ইউনিক আইডেন্টিফায়ার (ইউইউআইডি) 16 বিট এবং কাস্টম পরিষেবা এবং বৈশিষ্ট্যগুলি তাদের ইউইউআইডিগুলির জন্য 128 বিট ব্যবহার করতে হবে। পরে UUIDs সম্পর্কে আরো। আমাদের অনুসন্ধান থেকে, আমরা একটি প্রমিত "ব্যাটারি পরিষেবা" খুঁজে পেয়েছি যার মধ্যে একটি বৈশিষ্ট্যযুক্ত "ব্যাটারি স্তর" রয়েছে।

2. সমস্ত ডেটা মান যা আপনি BLE- এ পাঠাতে চান বৈশিষ্ট্য এবং পরিষেবার মধ্যে আলাদা করুন

আমরা একটি কাস্টম সার্ভিসের মধ্যে আমাদের কাস্টম ডেটা পয়েন্টকে সাতটি কাস্টম বৈশিষ্ট্যে বিভক্ত করতে পারি। আমরা এই পরিষেবাটিকে "এজিএম পরিষেবা" বলব। এতে 7 টি বৈশিষ্ট্য থাকবে: x- ত্বরণ, y- ত্বরণ, z- ত্বরণ, x-gyroscope, y-gyroscope, z-gyroscope, এবং একটি সময় রেফারেন্স।

3. প্রতিটি বৈশিষ্ট্যের জন্য প্রয়োজনীয় বৈশিষ্ট্য নির্ধারণ করুন

একটি বৈশিষ্ট্যের বেশ কিছু বৈশিষ্ট্য থাকতে পারে।

  1. পড়ুন: ক্লায়েন্ট (অ্যান্ড্রয়েড অ্যাপ) GATT সার্ভার (Arduino) থেকে একটি মান পড়তে পারে
  2. লিখুন: ক্লায়েন্ট GATT সার্ভার থেকে একটি মান পরিবর্তন করতে পারে
  3. নির্দেশ করুন: GATT সার্ভার থেকে একটি মান পরিবর্তন হলে ক্লায়েন্টকে অবহিত করা হবে এবং ক্লায়েন্ট GATT সার্ভারে নিশ্চিতকরণ পাঠাবে বলে আশা করা হচ্ছে
  4. GATT সার্ভার থেকে মান পরিবর্তন হলে এবং ক্লায়েন্ট GATT সার্ভারে কনফার্মেশন পাঠানোর আশা না করলে ক্লায়েন্টকে জানানো হবে

এই টিউটোরিয়ালের জন্য, আমরা আমাদের সমস্ত বৈশিষ্ট্য পড়ার জন্য সেট করব, ব্যাটারি স্তর ব্যতীত যেখানে বিজ্ঞপ্তি এবং পড়ার বৈশিষ্ট্য উভয়ই থাকবে।

4. কাস্টম পরিষেবা এবং বৈশিষ্ট্যগুলির জন্য UUID তৈরি করুন এবং স্ট্যান্ডার্ড UUIDs খুঁজুন

যেমন আমি পূর্বে সংক্ষেপে উল্লেখ করেছি, ব্লুটুথ SIG প্রমিত পরিষেবা এবং বৈশিষ্ট্যগুলি 16 বিট UUID ব্যবহার করে যখন কাস্টম পরিষেবা এবং বৈশিষ্ট্যগুলি 128 বিট UUID ব্যবহার করে। উদাহরণস্বরূপ, ব্লুটুথ SIG- এ ব্যাটারি পরিষেবা নির্ধারিত নম্বর দেখুন। নির্ধারিত নম্বর 0x180F 128 বিট UUID "0000180F-0000-1000-8000-00805F9B34FB" প্রতিনিধিত্ব করে। বোল্ডে চারটি সংখ্যা (16 বিট) নির্দিষ্ট মানসম্পন্ন পরিষেবা বা বৈশিষ্ট্যের জন্য অনন্য যখন অন্য অক্ষরগুলি সমস্ত মানসম্পন্ন পরিষেবা এবং বৈশিষ্ট্যের মধ্যে সংরক্ষিত থাকে। যেহেতু ক্লায়েন্ট এবং GATT সার্ভার উভয়ই জানে যে মানসম্মত পরিষেবা এবং বৈশিষ্ট্যগুলি শুধুমাত্র বোল্ড ডিজিটের দ্বারা পরিবর্তিত হয়, তাই প্যাকেটের আকারের আকারগুলি উল্লেখযোগ্যভাবে হ্রাস করা যেতে পারে। যাইহোক, কাস্টম পরিষেবা এবং বৈশিষ্ট্য এই একই ধারণার অধীনে কাজ করতে পারে না।

পরিবর্তে, কাস্টম পরিষেবা এবং বৈশিষ্ট্যগুলি অবশ্যই 128 বিট UUID গুলি ব্যবহার করতে হবে। এখানে একটি অনলাইন UUID জেনারেটর আছে। মানসম্মত UUID ব্যতীত অন্য কোন UUID একটি কাস্টম UUID এর জন্য গ্রহণযোগ্য। যাইহোক, একটি সাধারণ নামকরণের প্রচলন হল একটি কাস্টম পরিষেবা 00000001- বোঝানো এবং সেই কাস্টম সার্ভিসের বৈশিষ্ট্যগুলি 00000002- …

এখানে তাদের পরিষেবা এবং বৈশিষ্ট্যগুলির একটি সারসংক্ষেপ স্প্রেডশীট রয়েছে যা আমরা তাদের UUIDs সহ বাস্তবায়ন করব।

ধাপ 2: Arduino কোড

ব্লুফ্রুট লে স্পাই বন্ধু আপডেট করুন

প্রথমে, Adafruit Bluefruit LE SPI ফ্রেন্ডকে হুক আপ করুন যেহেতু তারা তাদের হুকআপ গাইডে নির্দিষ্ট করে এবং Arduino ডিভাইসটিকে শক্তিশালী করে। ব্লুটুথ ডিভাইসের জন্য স্ক্যান করার সময় নিশ্চিত করুন যে আপনি আপনার অ্যান্ড্রয়েড ডিভাইসে Adafruit Bluefruit LE SPI বন্ধু খুঁজে পেতে পারেন। ব্লুফ্রুট কানেক্ট অ্যাপটি ডাউনলোড করুন, অ্যাডাফ্রুট ব্লুফ্রুট এলই এসপিআই ফ্রেন্ডের সাথে সংযোগ করুন এবং ডিভাইসে ফার্মওয়্যার আপডেট করার অনুমতি দিন। এই পদক্ষেপটি গুরুত্বপূর্ণ। যদি আপনি ফার্মওয়্যার আপডেট না করেন, Arduino এর মাধ্যমে আপনি যে ডিভাইসটি ইস্যু করেন তা সম্ভবত ব্যর্থ হবে এবং সমস্যাটি কী তা আবিষ্কার করার জন্য আপনার জন্য একটি স্পষ্ট ত্রুটি থাকবে না।

এই প্রকল্পের জন্য এখানে আমার রেপো। আপনি এখানে সম্পূর্ণ Arduino কোড দেখতে পারেন।

পর্যালোচনা

কয়েকটি গুরুত্বপূর্ণ বিষয় খেয়াল করুন:

  1. সেটআপ () পদ্ধতিতে, সমস্ত কাস্টম UUID গুলিতে অবশ্যই প্রতি দুটি অক্ষরের মধ্যে "-" থাকতে হবে। উদাহরণস্বরূপ, "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" কাজ করবে। "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" কাজ করবে না।
  2. লক্ষ্য করুন যে সেটআপ () পদ্ধতিতে, "battery.begin (true);" কল "ble.reset ();" স্বয়ংক্রিয়ভাবে. আপনি যদি আমার মতো ব্যাটারি পরিষেবা ব্যবহার না করেন, তাহলে আপনাকে ble মডিউল পুনরায় সেট করতে হবে ("ble.reset ();" ব্যবহার করুন) যেখানে আমার "ব্যাটারি.বিগিন (সত্য);" কমান্ড আছে।
  3. সেটআপ () পদ্ধতিতে, যদি আপনি ডিবাগ করতে চান তবে "if (! Ble.begin (false))" থেকে "if (! Ble.begin (true))" এ পরিবর্তন করুন।

এই কোডটি বেশ স্ব-ব্যাখ্যামূলক। আমি প্রতিটি কাস্টম পদ্ধতির বর্ণনা অন্তর্ভুক্ত করেছি। সেটআপ পদ্ধতিটি BLE মডিউলকে GATT সার্ভার হিসাবে কাজ করার জন্য প্রস্তুত করে। লুপ পদ্ধতি অ্যাকসিলরোমিটার জাইরোস্কোপ মডিউল (এজিএম) এর একটি জাল সুইপের মধ্য দিয়ে যায় এবং এই মানগুলির জন্য 1 থেকে 100 পর্যন্ত একটি এলোমেলো সংখ্যা তৈরি করে। ব্যাটারি ব্যবহারের অনুকরণে ব্যাটারি 1% দ্বারা নিষ্কাশিত হয়। আপনি এই কোডটিকে প্রকৃত সেন্সর মান দিয়ে সহজেই প্রতিস্থাপন করতে পারেন। এই কোডটি ধরে নেয় যে আপনি একক পরিমাপের পরিবর্তে AGM ডেটা, 6 পরিমাপের একটি অ্যারে প্রেরণ করবেন কারণ AGM ডেটার একটি উইন্ডো বিশ্লেষণ করা সম্ভবত ডেটার একক বিন্দুর চেয়ে বেশি উপযোগী। আপনি যদি অ্যারের আকার পরিবর্তন করেন, মনে রাখবেন যে অ্যান্ড্রয়েড স্টুডিও কোডে প্রয়োজনীয় পরিবর্তনগুলি হবে। ডেটার একটি অ্যারে ক্যাপচার করতে, আপনাকে অবশ্যই যে ডেটা পাঠাতে চান তার সাথে একটি কাউন্টার পাস করতে হবে। এই কাউন্টারটি আপনাকে অ্যান্ড্রয়েড স্টুডিও অ্যাপ্লিকেশন থেকে উইন্ডোতে কোথায় তা খুঁজে পেতে দেয় যাতে আপনি উইন্ডোতে অনুপস্থিত ডেটা পয়েন্টগুলি শোনার জন্য অপেক্ষা করতে পারেন। কাউন্টার ছাড়া বা ভিন্ন আকারের অ্যারে সহ, অ্যান্ড্রয়েড স্টুডিও প্রকল্পটি হয় ডেটা পয়েন্ট মিস করবে অথবা অবশিষ্ট ডেটা পয়েন্টের প্রত্যাশায় লুপে আটকে যাবে।

ধাপ 3: অ্যান্ড্রয়েড স্টুডিও কোড

এই প্রকল্পের জন্য এখানে আমার রেপো। আপনি সম্পূর্ণ অ্যান্ড্রয়েড স্টুডিও কোড দেখতে পারেন এখানে।

পর্যালোচনা

আরডুইনো এবং অ্যান্ড্রয়েড কোড বিস্তারিতভাবে কিভাবে কাজ করে তার বিস্তারিত পুঙ্খানুপুঙ্খ বিবরণ দিয়ে আমি এটি আপডেট করতে থাকব … অ্যাপটি সম্পূর্ণ কার্যকরী তাই এই সময়ে কোডটি নিজেরাই নির্দ্বিধায় দেখুন।

ধাপ 4: চূড়ান্ত আবেদন

চূড়ান্ত আবেদন
চূড়ান্ত আবেদন
চূড়ান্ত আবেদন
চূড়ান্ত আবেদন
চূড়ান্ত আবেদন
চূড়ান্ত আবেদন

অভিনন্দন! আপনার অ্যাপ্লিকেশনটি আপনার ফোনে ডাউনলোড করা হয় এবং আপনার পরিধানযোগ্য ডিভাইস চার্জ করা হয় এবং ডেটা প্রেরণ করা হয়।

অ্যাপটি চালু করুন

শুরু করতে, অ্যাপ্লিকেশনের জন্য লঞ্চার আইকনে ক্লিক করুন।

গ্রান্ট পারমিশন

অ্যাপটি সঠিকভাবে কাজ করার জন্য আপনাকে কিছু অনুমতি ব্যবহারের অনুমতি দিতে হবে।

ডিভাইসের জন্য স্ক্যান

পরবর্তী, অ্যাপের উপরের বাম কোণে "স্ক্যান" বোতামে ক্লিক করুন।

আপনার পরিধানযোগ্য ডিভাইস নির্বাচন করুন

পরবর্তী, উপলব্ধ BLE ডিভাইসের তালিকা থেকে আপনার পরিধানযোগ্য ডিভাইস নির্বাচন করুন। এর নাম হল "BLE Arduino Hardware"। GET DATAWait যখন অ্যাপটি AGM ডেটা পায় এবং নির্ধারণ করে যে ব্যবহারকারী কোথায় আছে বা চলে যাচ্ছে। আপনার ফলাফল দেখুন স্ক্রিনে ফলাফল দেখুন! আরেকটি ডেটা পড়ার জন্য সিঙ্ক বাটনে ক্লিক করুন।

প্রস্তাবিত: