সুচিপত্র:

ডিজিটাল কম্পাস এবং হেডিং ফাইন্ডার: 6 টি ধাপ
ডিজিটাল কম্পাস এবং হেডিং ফাইন্ডার: 6 টি ধাপ

ভিডিও: ডিজিটাল কম্পাস এবং হেডিং ফাইন্ডার: 6 টি ধাপ

ভিডিও: ডিজিটাল কম্পাস এবং হেডিং ফাইন্ডার: 6 টি ধাপ
ভিডিও: মোবাইল দিয়েই দিক নির্ণয় করুন? কিবলা কোন দিকে। How To Find Qibla Direction On Your Smartphone 2024, নভেম্বর
Anonim
ডিজিটাল কম্পাস এবং হেডিং ফাইন্ডার
ডিজিটাল কম্পাস এবং হেডিং ফাইন্ডার

লেখক:

কুলান হুইলান

অ্যান্ড্রু লুফ্ট

ব্লেক জনসন

স্বীকৃতি:

ক্যালিফোর্নিয়া মেরিটাইম একাডেমি

ইভান চ্যাং-সিউ

ভূমিকা:

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

সরবরাহ:

- DIYmall 6M GPS মডিউল

- HiLetgo MPU9250/6500 9-Axis 9 DOF 16 বিট

- Adafruit NeoPixel রিং 16

- MakerFocus 4pcs 3.7V লিথিয়াম রিচার্জেবল ব্যাটারি

- ELEGOO MEGA 2560 R3 বোর্ড

- Adafruit Mini Lipo w/Mini -B USB Jack - USB LiIon/LiPoly charger - v1

- 2.8 টাচস্ক্রিন ব্রেকআউট বোর্ড w/মাইক্রোএসডি সকেট সহ TFT LCD

ধাপ 1: প্রকল্পের কার্যকারিতা ডিজাইন করা

প্রকল্পের কার্যকারিতা ডিজাইন করা
প্রকল্পের কার্যকারিতা ডিজাইন করা

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

স্টেট 1: লোডিং স্টেট

আরডুইনো মেগা শুরু হওয়ার পরে দুটি সেন্সর থেকে ডেটা ফিরে পেতে লোড করার অবস্থা ব্যবহার করা হয়। ডিভাইসটি স্ক্রিনে লোডিং প্রদর্শন করবে, স্ক্রিনে সমস্ত সংখ্যার মান সাফ করবে এবং নিওপিক্সেল রিংয়ের LEDs একটি বৃত্তে আলোকিত হবে।

রাজ্য 2: কম্পাস মোড

এই অবস্থায় ডিভাইসটি ডিজিটাল কম্পাসের মতো কাজ করবে। নিওপিক্সেল রিংটি আলোকিত হবে যা ডিভাইসের দিকনির্দেশনার ক্ষেত্রে উত্তর দিক নির্দেশ করে। LCD স্ক্রিনে ডিভাইসের অক্ষাংশ এবং দ্রাঘিমাংশের সাথে আসল ডিভাইসের শিরোনামও প্রদর্শিত হবে। এটি এই রাজ্যের মধ্যেও হবে যে ব্যবহারকারী স্টেট 3 এ প্রদর্শিত হতে ব্যবহারকারী শিরোনাম প্রবেশ করতে সক্ষম হবে।

স্টেট 3: হেডিং ট্র্যাকিং মোড

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

রাজ্য 2 এবং রাজ্য 3 উভয়ের মধ্যেই দুটি সেন্সর রাজ্য রয়েছে এই সেন্সর রাজ্যগুলি ডিভাইসটিকে সেন্সর থেকে ডেটা টানতে দেয় যা ডিভাইসের কর্মক্ষম অবস্থার উপর নির্ভর করে সবচেয়ে সঠিক তথ্য সরবরাহ করে।

সেন্সর স্টেট 1: এমপিইউ

যদি ডিভাইসটি নড়াচড়া না করে তাহলে হেডিং ডেটা MPU থেকে টেনে আনা হবে কারণ ডিভাইসটি যখন নড়াচড়া করছে না তখন এটি সবচেয়ে সঠিক ডেটা।

সেন্সর স্টেট 2: জিপিএস

যদি ডিভাইসটি সরানো হয় শিরোনাম ডেটা জিপিএস চিপ থেকে টানা হবে কারণ এটি এই অবস্থার মধ্যে সবচেয়ে সঠিক তথ্য।

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

ধাপ 2: সেটআপ এবং ওয়্যার ডায়াগ্রাম

সেটআপ এবং ওয়্যার ডায়াগ্রাম
সেটআপ এবং ওয়্যার ডায়াগ্রাম
সেটআপ এবং ওয়্যার ডায়াগ্রাম
সেটআপ এবং ওয়্যার ডায়াগ্রাম
সেটআপ এবং ওয়্যার ডায়াগ্রাম
সেটআপ এবং ওয়্যার ডায়াগ্রাম

প্রকল্পটি ব্যবহার করে এবং উপরের বোর্ডের অনুরূপ Arduino মেগা ক্লোন বোর্ড। প্রকল্পের সমস্ত উপাদান এই বোর্ডের সাথে সংযুক্ত থাকবে। উপরে এই প্রকল্পের জন্য উপাদানগুলি কীভাবে সংযুক্ত করা যায় তার বিস্তারিত চিত্র রয়েছে। বোতামগুলির একটি বিস্তারিত সার্কিট নেই কারণ এটি অনেক উপায়ে সেট আপ করা যেতে পারে। এই প্রকল্পে তারা একটি 100K টান ডাউন প্রতিরোধক এবং একটি সাধারণ বোতাম ব্যবহার করে তার নির্ধারিত পিনে 3 ভোল্ট সংকেত পাঠায়।

ধাপ 3: পরীক্ষার উপাদান এবং মৌলিক কোড

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

প্রয়োজনীয় গ্রন্থাগার:

Adafruit_ILI9341_Albert.h

SPI.h

Adafruit_GFX.h

Adafruit_ILI9341.h

TinyGPS ++। জ

Adafruit_NeoPixel.h

MPU9250.h

উপরের শিরোনামগুলি অনুসন্ধান করে এই সবগুলি পাওয়া যাবে। আমি লিঙ্কগুলি পোস্ট করব না কারণ এই লাইব্রেরির অনেকগুলি অনুলিপি একাধিক উত্স থেকে এবং কেবলমাত্র মূলগুলির সাথে লিঙ্ক করার সম্প্রদায়ের মান মেনে চললে আমি আপনাকে এটি নিজের জন্য খুঁজে পেতে দেব।

ধাপ 4: MPU ক্রমাঙ্কন

এমপিইউ ক্রমাঙ্কন
এমপিইউ ক্রমাঙ্কন

রাজ্য 2 এবং রাজ্য 3 এ এমপিইউ এর মাধ্যমে পাওয়া শিরোনামটি চারটি চতুর্ভুজে বিভক্ত ছিল। এটি প্রয়োজনীয় ছিল কারণ আমাদের ক্রমাঙ্কনের পদ্ধতিতে ম্যাগনেটোমিটার থেকে তার x এবং y অক্ষ বরাবর সর্বনিম্ন এবং সর্বাধিক মাত্রা খুঁজে বের করা প্রয়োজন। এটি পৃথিবী ব্যতীত অন্য কোন উল্লেখযোগ্য ইলেক্ট্রোম্যাগনেটিক ক্ষেত্র থেকে মুক্ত, তার তিনটি অক্ষ সম্পর্কে এলোমেলোভাবে ডিভাইসটি ঘোরানোর মাধ্যমে করা হয়েছিল। তারপর আমরা x এবং y অক্ষ বরাবর সর্বনিম্ন এবং সর্বাধিক মান নিয়েছি এবং সেগুলিকে একটি স্কেলিং সমীকরণে প্লাগ করেছি যাতে negativeণাত্মক এক এবং একের মানগুলির মধ্যে মাত্রা সীমাবদ্ধ থাকে। উপরের চিত্রে, BigX এবং BigY হল যথাক্রমে x এবং y- অক্ষ বরাবর ম্যাগনেটোমিটার ডেটার সর্বোচ্চ মান, LittleX এবং LittleY হল যথাক্রমে x এবং y- অক্ষ বরাবর ম্যাগনেটোমিটার ডেটার ন্যূনতম মান, IMU.getMagX_uT () এবং IMU.getMagY_uT () হল যথাক্রমে x এবং y- অক্ষ বরাবর যে কোনো সময় ম্যাগনেটোমিটার থেকে টানা মান, এবং Mx এবং My হল শিরোনাম গণনার জন্য ব্যবহৃত নতুন স্কেল মান।

ধাপ 5: চূড়ান্ত কোড

চূড়ান্ত কোড
চূড়ান্ত কোড
চূড়ান্ত কোড
চূড়ান্ত কোড
চূড়ান্ত কোড
চূড়ান্ত কোড
চূড়ান্ত কোড
চূড়ান্ত কোড

চূড়ান্ত ধাপ হল চূড়ান্ত কোড তৈরি করা। আমি প্রকল্পের চূড়ান্ত কোডের একটি অনুলিপি সংযুক্ত করেছি। কোড নেভিগেট করতে সাহায্য করার জন্য নোট তৈরি করা হয়েছে। এই বিভাগের সবচেয়ে বড় চ্যালেঞ্জ ছিল চতুর্ভুজকে সঠিকভাবে কাজ করা। চতুর্ভুজের বাস্তবায়ন আমরা কখনোই অনুমান করতে পারতাম তার চেয়ে বেশি ক্লান্তিকর এবং যুক্তি-বিরোধী প্রমাণিত হয়েছে। আমরা প্রাথমিকভাবে একটি মৌলিক আর্কটান (মাই/এমএক্স) প্রয়োগ করেছি এবং তারপরে রেডিয়ান থেকে ডিগ্রিতে রূপান্তরিত হয়েছি, যেহেতু আরডুইনো ডিফল্টভাবে রেডিয়ানে আউটপুট করে। যাইহোক, একমাত্র চতুর্ভুজ এটি 90 ডিগ্রী থেকে 180 ডিগ্রী পর্যন্ত কাজ করেছিল, যা আমাদের একটি নেতিবাচক আউটপুট দিয়েছে এবং চতুর্ভুজ তৃতীয় হয়ে শেষ হয়েছে। এটির সমাধানটি পরম মান গ্রহণ করছিল, যেহেতু এটি এখনও সঠিকভাবে বৃদ্ধি পেয়েছে। এই মানটি তখন রাজ্য 2 এ সঠিক NeoPixel LED কে আলোকিত করার জন্য 360 থেকে বিয়োগ করা হয়েছিল এবং ব্যবহারকারীর ইনপুট শিরোনামের চেয়ে শিরোনামটি বড় বা ছোট ছিল তার উপর ভিত্তি করে রাজ্য 3 এ অনুরূপ গাণিতিক ক্রিয়াকলাপ ব্যবহার করা হয়েছিল, যা উভয়ই দেখা যাবে উপরের কোড। উপরোক্ত পরিসংখ্যানগুলিতে, শিরোনামটি নিওপিক্সেল আলোর সাথে মিলে যায় যা ডিভাইসের শিরোনাম এবং রাষ্ট্র 2 এর ক্ষেত্রে উত্তর থেকে বিচ্যুতি এবং ব্যবহারকারীর শিরোনামের পার্থক্যগুলির উপর ভিত্তি করে আলোকিত হবে। এই ক্ষেত্রে, 90 থেকে 180 ডিগ্রী চতুর্ভুজ III এর সাথে মিলে যায়। উভয় ক্ষেত্রেই, tft.print স্ক্রিনটিকে উত্তর থেকে শিরোনামের ডিভাইসটি পড়তে দেয়।

অন্য তিনটি চতুর্ভুজের জন্য, আর্কটান (মাই/এমএক্স) বাস্তবায়নের ফলে ডিভাইসটি ঘোরানো হওয়ায় ইনক্রিমেন্টের একটি বিপরীত রূপান্তরিত হয়েছিল, যেমন শিরোনাম কোণটি গণনা করার সময় গণনা করা হবে এবং বিপরীতভাবে গণনা করা হবে। এই সমস্যার সমাধান ছিল আর্কটানজেন্টকে আর্কটানের (Mx/My) আকারে উল্টানো। যদিও এটি ক্রমবর্ধমান বিপরীত সমাধান করেছে, এটি সঠিক ডিভাইস শিরোনাম দেয়নি, যেখানে চতুর্ভুজগুলি খেলার মধ্যে এসেছে। এর সহজ সমাধানটি ছিল সংশ্লিষ্ট চতুর্ভুজের উপর ভিত্তি করে একটি শিফট যুক্ত করা। এটি নিম্নলিখিত পরিসংখ্যানগুলিতে দেখা যায়, যা আবার প্রতিটি চতুর্ভুজের 2 এবং 3 রাজ্যের কোডের টুকরা।

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

প্রস্তাবিত: