- مطلوبہ مواد:
- سرکٹ ڈایاگرام:
- آپ کے سیٹ اپ کو طاقتور بنانا:
- آپ آرڈینو کو پروگرام کر رہے ہیں:
- پروسیسنگ کا استعمال کرتے ہوئے اینڈرائڈ ایپلی کیشن کی تیاری:
- ارڈینوو انکلیوومیٹر کا کام کرنا:
MPU6050 ایک آایسی ہے 3 محور accelerometer اور مل کر ایک 3 محور gyroscope ایک یونٹ میں. اس میں ایک درجہ حرارت سینسر اور ایک پیچیدہ کام انجام دینے کے لئے ڈی سی ایم بھی موجود ہے۔ MPU6050 عام طور پر ڈرون اور دیگر ریموٹ روبوٹ جیسے خود توازن رکھنے والے روبوٹ کی تعمیر میں استعمال ہوتا ہے۔ اس پروجیکٹ میں ہم سیکھیں گے کہ MPU6050 کو استعمال کرنے کا طریقہ ایک انکلیوومیٹر یا اسپریٹ لیولر بنایا گیا ہے ۔ جیسا کہ ہم جانتے ہیں کہ ایک انکلوومیٹر یہ جانچنے کے لئے استعمال کیا جاتا ہے کہ سطح بالکل ٹھیک ہے یا نہیں ، وہ اسپرٹ بلبلے یا ڈیجیٹل میٹر کی حیثیت سے دستیاب ہیں۔ اس پروجیکٹ میں ، ہم ایک ڈیجیٹل انکلوومیٹر بنانے جارہے ہیں جس پر اینڈروئیڈ ایپلی کیشن کا استعمال کرکے نگرانی کی جاسکتی ہے. موبائل فون کی طرح ریموٹ ڈسپلے استعمال کرنے کی وجہ یہ ہے کہ ہم MPU6050 سے ہارڈ ویئر کو دیکھے بغیر ہی ان کی قدروں کی نگرانی کرسکتے ہیں ، جب MPU6050 کو کسی ڈرون یا کسی اور قابل رسائی جگہ پر رکھا جائے تو یہ بہت کارآمد ہوگا۔
مطلوبہ مواد:
- اردوینو پرو منی (5V)
- MPU6050 گیرو سینسر
- HC-05 یا HC-06 بلوٹوتھ ماڈیول
- ایف ٹی ڈی آئی بورڈ
- بریڈ بورڈ
- مربوط تاروں
- اسمارٹ فون
سرکٹ ڈایاگرام:
اس اردوینو ٹلٹ سینسر پروجیکٹ کے لئے مکمل سرکٹ ڈایاگرام ذیل میں دکھایا گیا ہے۔ اس میں صرف تین اجزاء ہیں اور بریڈ بورڈ پر آسانی سے بنایا جاسکتا ہے۔
ایم پی یو 6050 آئی 2 سی کی مدد سے بات کرتا ہے اور اسی لئے ایس ڈی اے پن ارڈینو کے اے 4 پن سے جڑا ہوا ہے جو ایس ڈی اے پن ہے اور ایس سی ایل پن اردوینو کے A5 پن سے جڑا ہوا ہے۔ HC-06 بلوٹوت ماڈیول سیریل مواصلات اس وجہ سے بلوٹوت کے Rx کی پن پن D11 اور بلوٹوت کی محفلین پن Arduino کے کے پن D10 سے منسلک ہے سے منسلک ہے کی مدد کے ساتھ کام کرتا ہے. یہ پن D10 اور D11 اردوینو کو پروگرام کر کے سیریل پن کی طرح تشکیل دیں گے۔ HC-05 ماڈیول اور MSP6050 ماڈیول + 5V پر کام کرتا ہے اور اسی وجہ سے وہ اوپر کی طرح دکھائے گئے Ardino کے Vcc پن سے چلتے ہیں۔
میں نے کچھ بری بورڈ کو جوڑنے والی تاروں کا استعمال کیا اور ایک چھوٹی سی بریڈ بورڈ پر سیٹ اپ بنایا۔ کنکشن مکمل ہوجانے پر میرا بورڈ نیچے اس طرح لگتا ہے۔
آپ کے سیٹ اپ کو طاقتور بنانا:
یا تو آپ اپنے سرکٹ کو ایف ٹی ڈی آئی پروگرامنگ بورڈ کے ذریعہ طاقت کے ساتھ بناسکتے ہیں جیسا کہ میں نے کیا ہے ، یا 9 وی بیٹری یا 12 وی اڈاپٹر استعمال کریں اور اسے ارڈینو پرو منی کے را پن سے جوڑیں۔ اردوینو پرو منی میں ایک بلٹ وولٹیج ریگولیٹر ہے جو اس بیرونی وولٹیج کو ریگولیٹڈ + 5V میں تبدیل کرتا ہے۔
آپ آرڈینو کو پروگرام کر رہے ہیں:
ایک بار جب ہارڈ ویئر تیار ہوجاتا ہے ، تو ہم اپنے آرڈینو کا پروگرامنگ شروع کرسکتے ہیں۔ ہمیشہ کی طرح اس منصوبے کا مکمل کوڈ اس صفحے کے نیچے پایا جاسکتا ہے۔ لیکن اس منصوبے کو بہتر طور پر سمجھنے کے لئے میں نے چھوٹے کوڑے کوڈ کو توڑ دیا ہے اور ان کو ذیل مراحل کی طرح بیان کیا ہے۔
پہلا قدم ایم پی یو 6050 کو ارڈینو کے ساتھ مداخلت کرے گا ۔ اس پروجیکٹ کے ل K ہم کورنیلئس نے تیار کردہ لائبریری استعمال کرنے جارہے ہیں جو نیچے دیئے گئے لنک سے ڈاؤن لوڈ کیا جاسکتا ہے
MPU6050 لبرٹی - کورنیلیوس جارزبسکی
زپ فائل ڈاؤن لوڈ کریں اور اسے اپنے اردوینو IDE میں شامل کریں۔ اس کے بعد فائل-> مثالوں-> آرڈینو_مپی یو 6050_ ماسٹر -> MPU6050_gyro_pitch_rol_yaw پر جائیں ۔ یہ مثال کے پروگرام کو کھولے گا جو لائبریری کا استعمال کرتا ہے جسے ہم نے ابھی ڈاؤن لوڈ کیا ہے۔ لہذا اپلوڈ پر کلیک کریں اور انتظار کریں کہ پروگرام آپ کی اردوینو پرو منی پر اپ لوڈ ہوجائے۔ ایک بار جب ایسا ہوجائے تو اپنے سیریل مانیٹر کو کھولیں اور اپنے باڈ ریٹ کو 115200 پر سیٹ کریں اور چیک کریں کہ کیا آپ مندرجہ ذیل چیزیں حاصل کررہے ہیں۔
ابتدائی طور پر ، یہ تینوں قدریں صفر کی طرح ہوں گی ، لیکن جب آپ اپنا روٹ بورڈ منتقل کریں گے تو آپ ان اقدار کو بدلتے ہوئے دیکھ سکتے ہیں۔ اگر وہ بدل جاتے ہیں تو اس کا مطلب ہے کہ آپ کا کنکشن درست ہے ، بصورت دیگر اپنے کنیکشن کو چیک کریں۔ یہاں کچھ وقت نکالیں کہ آپ اپنے سینسر کو جھکانے کے انداز کے مطابق پچ رول اور یاوا جیسے تین اقدار میں کس طرح مختلف ہوتی ہیں۔ اگر آپ الجھن میں پڑ جاتے ہیں تو آرڈینو پر ری سیٹ والے بٹن کو دبائیں اور اقدار کو پھر سے صفر کردیا جائے گا ، پھر سینسر کو ایک سمت میں جھکائیں اور دیکھیں کہ کون سی اقدار مختلف ہیں۔ نیچے دی گئی تصویر آپ کو بہتر سمجھنے میں مدد دے گی۔
ان تین پیرامیٹرز میں سے ہم صرف رول اور پچ میں دلچسپی رکھتے ہیں ۔ رول ویلیو ہمیں ایکس محور میں مائل ہونے کے بارے میں بتائے گی اور پچ ویلیو ہمیں Y-Axis میں مائل ہونے کے بارے میں بتائے گی ۔ اب جب ہم بنیادی باتوں کو سمجھ چکے ہیں تو اصل میں ان اقدار کو پڑھنے کے لئے آرڈینو کا پروگرامنگ شروع کرنے دیتا ہے تاکہ اسے بلوٹوتھ کے ذریعہ اردوینو پر بھیج دیا جائے۔ ہمیشہ کی طرح اس پروجیکٹ کے لئے درکار تمام لائبریریوں کو شامل کرکے شروع کریں
# شامل کریں
پھر ہم بلوٹوتھ ماڈیول کے لئے سافٹ ویئر سیریل شروع کرتے ہیں ۔ یہ ممکن ہے کیونکہ آرڈینوو میں سافٹ ویئر سیریل لائبریری کی وجہ سے ، IO پنوں کو سیریل پنوں کی طرح کام کرنے کا پروگرام بنایا جاسکتا ہے۔ یہاں ہم ڈیجیٹل پنوں D10 اور D11 استعمال کررہے ہیں ، جہاں D10 id Rx اور D11 Tx ہے۔
سافٹ ویئرشیر بی ٹی (10 ، 11)؛ // آر ایکس ، ٹی ایکس
ہم اس کی طرف سے کے بعد متغیر اور اشیاء پروگرام کے لئے ضرورت کی ابتدا پر اور اس اقدام سے سیٹ اپ () تقریب ہم سیریل مانیٹر اور بلوٹوت کے لئے بوڈ کی شرح کی وضاحت جہاں. HC-05 اور HC-06 کے لئے بوڈ کی شرح 9600 ہے لہذا اسے استعمال کرنا لازمی ہے۔ پھر ہم چیک کرتے ہیں کہ آیا اروڈینو کی IIC بس MPU6050 سے منسلک ہے یا نہیں اگر ہم کوئی انتباہی پیغام نہیں چھاپتے ہیں اور جب تک ڈیوائس سے منسلک ہوتا ہے وہاں موجود رہتے ہیں۔ اس کے بعد ، ہم گیرو کیلیبریٹ کرتے ہیں اور ذیل میں دکھائے جانے والے اس کے متعلقہ افعال کا استعمال کرتے ہوئے اس کی حد اقدار طے کرتے ہیں۔
باطل سیٹ اپ () {سیریل.بیگین (115200)؛ بی ٹی بیگین (9600)؛ // بلوٹوتھ مواصلت کو 9600 بائوڈریٹ سے شروع کریں // MPU6050 کو شروع کریں جبکہ (! mpu.begin (MPU6050_SCALE_2000DPS، MPU6050_RANGE_2G)) {Serial.println ("ایک درست MPU6050 سینسر نہیں مل سکا ، وائرنگ کی جانچ پڑتال کریں!")؛ تاخیر (500)؛ p mpu.calibrateGyro ()؛ // اسٹارٹ mpu.setThreshold (3) کے دوران جیروسکوپ کیلیبریٹ کریں۔ // حساسیت کو کنٹرول کرتا ہے}
لائن " mpu.calibrateGyro ()؛" فی الحال جس پوزیشن پر ہے اس کے لئے MPU6050 کیلیبریٹ کریں ۔ اس لائن کو پروگرام کے اندر متعدد بار کہا جاسکتا ہے جب بھی MPU6050 کیلیبریٹ کرنے کی ضرورت ہو اور تمام اقدار کو صفر پر سیٹ کیا جائے۔ "mpu.setThreshold (3)" اس فنکشن پر قابو پایا جاتا ہے کہ سینسر پر حرکت کے ل value قدر میں کتنا فرق ہوتا ہے ایک بہت ہی کم قیمت سے شور میں اضافہ ہوتا ہے لہذا محتاط رہنا جب اس کے ساتھ ادھر ادھر ادھر ادھر ادھر ادھر ادھر ادھر مبتلا ہوتے رہو۔
باطل لوپ () کے اندر ، ہم بار بار جیروسکوپ اور درجہ حرارت سینسر کی قدریں پڑھتے ہیں ، پچ ، رول اور یا کی قدر کا حساب لگاتے ہیں ، اسے بلوٹوتھ ماڈیول پر بھیجتے ہیں۔ درج ذیل دو لائنیں خام گیرو اقدار اور درجہ حرارت کی قیمت کو پڑھیں گی
ویکٹر کا معمول = mpu.readNormalizeGyro ()؛ عارضی = mpu.readTemperature ()؛
اگلا ، ہم پچ ، رول ، اور یاو کا حساب کتاب وقت کے ساتھ ضرب کرتے ہوئے اور اسے پچھلی اقدار میں شامل کرکے کرتے ہیں۔ ایک ٹائم اسٹپ ، لگاتار پڑھنے کے درمیان وقفہ کے سوا کچھ نہیں ہوتا ہے۔
پچ = پچ + نورم۔ YAxis * ٹائم اسٹپ؛ رول = رول + نورم۔ ایکسس * ٹائم اسٹپ؛ yaw = yaw + نورم۔ ZAxis * ٹائم اسٹپ؛
وقت کو بہتر طور پر سمجھنے کے ل let's نیچے دیئے گئے سطر پر ایک نظر ڈالیں۔ اس لائن کو MPU6050 سے 10mS یا 0.01 سیکنڈ کے وقفے سے بالکل درست پڑھنے کے ل. رکھا گیا ہے۔ لہذا ہم وقت کی قیمت کو 0.01 کے طور پر اعلان کرتے ہیں۔ اور اگر مزید وقت باقی ہے تو پروگرام کو منعقد کرنے کے لئے نیچے دی گئی لائن کا استعمال کریں۔ (ملیس () - ٹائمر ()) پروگرام کو اب تک عمل میں لانے کے لئے لیا ہوا وقت دیتا ہے۔ ہم اسے صرف 0.01 سیکنڈ کے ساتھ گھٹا دیتے ہیں اور بقیہ وقت کے لئے ہم تاخیر کی تقریب کا استعمال کرتے ہوئے اپنے پروگرام کو وہاں روکتے ہیں۔
تاخیر ((ٹائم اسٹیپ * 1000) - (ملیس () - ٹائمر))؛
ایک بار جب ہم اقدار کو پڑھنے اور حساب کتاب کرنے کے بعد ، ہم بلوٹوتھ کے ذریعہ ان کو اپنے فون پر بھیج سکتے ہیں۔ لیکن یہاں ایک کیچ ہے۔ بلوٹوتھ ماڈیول جس کا ہم استعمال کر رہے ہیں وہ صرف 1 بائٹ (8 بٹس) بھیج سکتا ہے جو ہمیں صرف 0 سے 255 تک نمبر بھیجنے کی اجازت دیتا ہے۔ لہذا ہمیں اپنی اقدار کو تقسیم کرنا ہوگا اور اس کو اس حدود میں نقشہ بنانا ہوگا۔ یہ مندرجہ ذیل لائنوں کے ذریعہ کیا گیا ہے
اگر (رول> -100 && << 100) x = نقشہ (رول ، -100 ، 100 ، 0 ، 100)؛ اگر (پچ> -100 && پچ <100) y = نقشہ (پچ، -100، 100، 100، 200)؛ اگر (عارضی> 0 && << 50) t = 200 + انٹ (عارضی)؛
جیسا کہ آپ اندازہ لگا سکتے ہیں ، رول کی ویلیو کو 0 سے 100 میں متغیر X میں نقشہ دیا جاتا ہے اور پچ کو 100 سے 200 تک متغیر y میں نقشہ کیا جاتا ہے اور عارضی 200 میں اور اس سے اوپر متغیر ٹی میں نقشہ لگایا جاتا ہے۔ ہم نے جو بھیجا ہے اس سے اعداد و شمار کو بازیافت کرنے کے لئے ہم وہی معلومات استعمال کرسکتے ہیں۔ آخر کار ہم ان اقدار کو بلوٹوتھ کے ذریعہ درج ذیل لائنوں کا استعمال کرتے ہوئے لکھتے ہیں۔
بی ٹی ڈرائٹ (x)؛ بی ٹی ڈرائٹ (y)؛ بی ٹی ڈرائٹ (ٹی)؛
اگر آپ مکمل پروگرام سمجھ چکے ہیں تو ، پروگرام کو دیکھنے کے لئے نیچے سکرول کریں اور اسے ارڈینو بورڈ میں اپ لوڈ کریں۔
پروسیسنگ کا استعمال کرتے ہوئے اینڈرائڈ ایپلی کیشن کی تیاری:
اس اریڈوینو انکلیوومیٹر کیلئے اینڈروئیڈ ایپلی کیشن کو پروسیسنگ آئی ڈی ای کا استعمال کرتے ہوئے تیار کیا گیا تھا ۔ یہ بہت زیادہ آردوینو سے ملتا جلتا ہے اور سسٹم ایپلی کیشن ، اینڈرائڈ ایپلی کیشن ، ویب ڈیزائن اور بہت کچھ بنانے کے لئے استعمال کیا جاسکتا ہے۔ ہم نے اپنے کچھ دوسرے عمدہ منصوبوں کو تیار کرنے کے لئے پہلے ہی پروسیسنگ کا استعمال کیا ہے جو ذیل میں درج ہیں
- پنگ پونگ گیم آرڈوینو کا استعمال کرتے ہوئے
- پروسیسنگ کا استعمال کرتے ہوئے اسمارٹ فون کنٹرول ایف ایم ریڈیو.
- پروسیسنگ اور الٹراسونک سینسر کا استعمال کرتے ہوئے ایردوینو ریڈار سسٹم
تاہم ، اس ایپلی کیشن کو تخلیق کرنے کے بارے میں مکمل کوڈ کی وضاحت ممکن نہیں ہے۔ تو آپ کے پاس اس کے اوپر جانے کے لئے دو راستے ہیں۔ یا تو آپ نیچے دیئے گئے لنک سے APK فائل ڈاؤن لوڈ کرسکتے ہیں اور اپنے فون پر براہ راست اینڈروئیڈ ایپلی کیشن انسٹال کرسکتے ہیں۔ یا مکمل پراسیسنگ کوڈ تلاش کرنے کے لئے نیچے سکرول کریں اور خود سیکھیں کہ یہ کیسے کام کرتا ہے
زپ فائل کے اندر ، آپ کو ڈیٹا نامی ایک فولڈر مل سکتا ہے جس میں تمام تصاویر اور دیگر ذرائع پر مشتمل ہوتا ہے جسے android ڈاؤن لوڈ کے ایپلی کیشن میں لادا جانا ہے۔ نیچے والی لائن فیصلہ کرتی ہے کہ بلوٹوت خود بخود کس نام سے جڑنا چاہئے
bt.connectToDeviceByName ("HC-06")؛
قرعہ اندازی () فنکشن کے اندر ، چیزیں بار بار سرانجام دی جائیں گی یہاں ہم تصاویر کھینچتے ہیں ، متن ڈسپلے کرتے ہیں اور قدروں کی بنیاد پر سلاخوں کو متحرک کرتے ہیں جس سے بلوٹوتھ ماڈیول تشکیل پاتا ہے۔ آپ پروگرام کے ذریعے پڑھ کر ہر فنکشن کے اندر کیا ہوتا ہے جانچ کر سکتے ہیں۔
باطل ڈرا () // لامحدود لوپ {پس منظر (0)؛ امیج موڈ (سینٹر)؛ تصویر (لوگو ، چوڑائی / 2 ، قد / 1.04 ، چوڑائی ، قد / 12)؛ لوڈ_ایمیز ()؛ ٹیکسٹفن ()؛ گیول ()؛ }
آخر میں ، ایک اور اہم بات کی وضاحت کرنے کی ضرورت ہے ، یاد رکھیں کہ ہم نے پچ ، رول اور ٹیمپ کی قدر کو 0 سے 255 میں تقسیم کردیا ہے۔ لہذا یہاں ہم اسے عام قدروں میں ریورس میپنگ کرکے اسے عام قدروں میں واپس لاتے ہیں۔
اگر (معلومات <100 &&>> 0) x = نقشہ (معلومات ، 0 ، 100 ، - (چوڑائی / 1.5) / 3 ، + (چوڑائی / 1.5) / 3)؛ // x = معلومات؛ ورنہ اگر (معلومات <200 &&>> 100) y = نقشہ (معلومات ، 100 ، 200 ، - (چوڑائی / 4.5) /0.8 ، + (چوڑائی / 4.5) /0.8)؛ // y = معلومات؛ ورنہ اگر (معلومات> 200) عارضی = معلومات -200؛ پرنٹلن (عارضی، ایکس، وائی)؛
بلوٹوتھ ماڈیول سے فون تک ڈیٹا حاصل کرنے کے بہت سارے بہتر طریقے موجود ہیں ، لیکن چونکہ یہ محض ایک مشغلہ پروجیکٹ ہے جسے ہم نے ان سے نظرانداز کیا ہے ، لہذا اگر دلچسپی ہو تو آپ گہری کھود سکتے ہیں۔
ارڈینوو انکلیوومیٹر کا کام کرنا:
جب آپ ہارڈ ویئر اور ایپلی کیشن کے ساتھ تیار ہوجائیں ، تو وقت آگیا ہے کہ ہم نے جو کچھ بنایا ہے اس سے لطف اندوز ہوں۔ بورڈ میں ارڈینو کوڈ اپ لوڈ کریں ، آپ سیریل ڈاٹ پرنٹس لائنوں پر دیئے گئے تبصرے بھی دور کرسکتے ہیں اور چیک کرسکتے ہیں کہ سیریل مانیٹر کے ذریعہ ہارڈویئر توقع کے مطابق کام کررہا ہے۔ بہر حال ، یہ مکمل طور پر اختیاری ہے۔
کوڈ اپ لوڈ ہوجانے کے بعد ، اپنے موبائل فون پر اینڈروئیڈ ایپلی کیشن لانچ کریں۔ ایپلی کیشن کو خود بخود آپ کے HC-06 ماڈیول سے منسلک ہونا چاہئے اور یہ درخواست کے اوپری حصے میں "سے رابطہ کریں: HC-06" دکھائے گا جیسا کہ ذیل میں دکھایا گیا ہے۔
ابتدائی طور پر ، درجہ حرارت کی قیمت کے علاوہ ، تمام قدریں صفر ہوں گی۔ اس کی وجہ یہ ہے کہ ارڈینو نے MPU-6050 کو بطور حوالہ اس پوزیشن کے لئے درجہ بندی کیا ہے ، اب آپ ہارڈ ویئر کو جھکائیں اور چیک کرسکتے ہیں کہ حرکت پذیری کے ساتھ ساتھ موبائل ایپلیکیشن کی قدریں بھی تبدیل ہو رہی ہیں۔ درخواست کا مکمل کام نیچے دیئے گئے ویڈیو پر پایا جاسکتا ہے ۔ لہذا اب آپ بریڈ بورڈ کو کہیں بھی رکھ سکتے ہیں اور چیک کرسکتے ہیں کہ سطح بالکل ٹھیک ہے۔
امید ہے کہ آپ اس منصوبے کو سمجھ گئے ہوں گے اور اس میں سے کچھ مفید سیکھیں گے۔ اگر آپ کو کوئی شک ہے تو براہ کرم ذیل میں دیئے گئے کمنٹ سیکشن یا فورمز کو حل کرنے کیلئے استعمال کریں۔