فهرست مطالب:
- مرحله 1: طراحی عملکرد پروژه
- مرحله 2: راه اندازی و نمودار سیم
- مرحله 3: آزمایش قطعات و کد اصلی
- مرحله 4: کالیبراسیون MPU
- مرحله 5: کد نهایی
تصویری: قطب نما دیجیتال و سرفصل یاب: 6 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:51
نویسندگان:
کالان ویلان
اندرو لوفت
بلیک جانسون
تقدیر و تشکر:
آکادمی دریانوردی کالیفرنیا
ایوان چانگ سیو
معرفی:
اساس این پروژه یک قطب نمای دیجیتال با ردیابی سرفصل است. این امر کاربر را قادر می سازد تا با استفاده از دستگاه دیجیتالی یک سرفصل را در مسافت های طولانی دنبال کند. عنوان عامیانه زاویه ای است که در جهت عقربه های ساعت از شمال اندازه گیری می شود و همانطور که قطب نما نشان می دهد صفر درجه در نظر گرفته می شود. این دستگاه دارای دو عملکرد اصلی است: اول نمایش سرفصل فعلی دستگاه بر روی یک مرجع نمایشگر دیجیتالی ، و دوم توانایی وارد کردن عنوان مورد درخواست کاربر ، که در حلقه LED ها در بالای صفحه نمایش داده می شود. محفظه قطب نما سپس کاربر جهت دستگاه مربوط به LED روشن را تنظیم می کند. با تغییر جهت دستگاه ، LED به LED مرکزی منتقل می شود ، بنابراین نشان می دهد که عنوان درست تعیین شده است.
تدارکات:
- ماژول GPS DIYmall 6M
- HiLetgo MPU9250/6500 9-Axis 9 DOF 16 بیت
- Adafruit NeoPixel Ring 16
- MakerFocus 4pcs 3.7V باتری لیتیوم قابل شارژ
- برد ELEGOO MEGA 2560 R3
- Adafruit Mini Lipo w/Mini -B USB jack - USB LiIon/LiPoly charger - v1
- LCD 2.8 اینچی TFT با صفحه لمسی Breakout Board با سوکت MicroSD
مرحله 1: طراحی عملکرد پروژه
اولین قدم درک منطق و آخرین عملکرد عملیاتی است. این نمودار منطقی سه حالت دستگاه و دو حالت سنسور را نشان می دهد.
حالت 1: حالت بارگیری
از حالت بارگذاری برای آردوینو مگا استفاده می شود تا هنگام راه اندازی اطلاعات را از دو سنسور پس بگیرد. دستگاه بارگذاری روی صفحه را نشان می دهد ، تمام مقادیر عددی روی صفحه را پاک می کند و LED های حلقه NeoPixel بصورت دایره ای روشن می شوند.
حالت 2: حالت قطب نما
در این حالت دستگاه مانند قطب نمای دیجیتالی عمل می کند. حلقه NeoPixel روشن می شود تا جهت شمال را با توجه به جهت دستگاه نشان دهد. عنوان اصلی دستگاه نیز به همراه عرض جغرافیایی و طول دستگاه در صفحه LCD نمایش داده می شود. همچنین در این حالت است که کاربر می تواند عنوان کاربر را برای نمایش در حالت 3 وارد کند.
حالت 3: حالت ردیابی سرفصل
در این حالت ، دستگاه اکنون به کاربر کمک می کند تا در عنوان مورد نظر خود مستقر شود. این دستگاه اکنون عنوان دستگاهها و سربرگ کاربران را روی صفحه LCD به همراه داده های عرض و عرض جغرافیایی نشان می دهد. حلقه NeoPixel اکنون روشن می شود تا نشان دهد کاربران با توجه به جهت دستگاه ها در حال حرکت هستند.
در هر دو حالت 2 و 3 حالت دو حالت سنسور وجود دارد که این حالت های حسگر به دستگاه اجازه می دهد تا داده ها را از سنسور خارج کند که دقیق ترین داده ها را بسته به وضعیت عملکرد دستگاه ارائه می دهد.
سنسور حالت 1: MPU
اگر دستگاه حرکت نمی کند ، داده های عنوان از MPU خارج می شوند ، زیرا دقیق ترین داده ها در هنگام حرکت دستگاه نیست.
سنسور حالت 2: GPS
اگر دستگاه در حال حرکت است ، داده های عنوان از تراشه GPS خارج می شود ، زیرا دقیق ترین داده در این شرایط است.
دستگاه می تواند در هر زمان بین این موارد به حالت های حسگر تغییر وضعیت دهد تا شرایط استفاده از واحد تغییر کند. این برای عملکرد دستگاه مهم است زیرا هر دو سنسور مورد استفاده در دستگاه دارای شرایطی هستند که بر دقت داده های ارائه شده تأثیر می گذارد. در مورد MPU ، تراشه به راحتی می تواند تحت تأثیر میدانهای مغناطیسی محلی قرار گیرد که توسط ماشینها و مصالح ساختمانی فلزی در ساختمانها ایجاد می شود. بنابراین از تراشه GPS استفاده می شود که می تواند عنوان بسیار دقیق تری را ارائه دهد که تحت تأثیرات مشابه قرار نگیرد. با این حال ، GPS تنها می تواند داده های سرفصل را هنگام حرکت ارائه دهد زیرا عنوان را با استفاده از تغییر داده های عرض و طول جغرافیایی محاسبه می کند. بنابراین تراشه ها مکمل یکدیگر هستند و با استفاده از دو حالت حسگر دقیق ترین و قابل اطمینان ترین عملکرد دستگاه را ارائه می دهند.
مرحله 2: راه اندازی و نمودار سیم
این پروژه از تخته شبیه سازی Arduino Mega مشابه برد بالا استفاده می کند. تمام اجزای پروژه به این برد متصل می شوند. در بالا نمودارهای دقیق نحوه اتصال اجزای این پروژه آمده است. دکمه ها مدار مفصلی ندارند زیرا می توان آنها را به روش های مختلف تنظیم کرد. در این پروژه آنها از یک مقاومت کششی 100K و یک دکمه ساده برای ارسال یک سیگنال 3 ولت به پین اختصاصی خود استفاده می کنند.
مرحله 3: آزمایش قطعات و کد اصلی
این پروژه همانطور که قبلاً توضیح داده شد داده ها را از تراشه MPU و GPS بیرون می آورد. سه کد ضمیمه شده است که آزمایش داده های MPU ، GPS و MPU با صفحه را برای بررسی عملکرد قطعات امکان پذیر می کند. عملکرد قطعات در این مرحله بسیار مهم است زیرا کد برای هر تراشه جدا است و هر گونه مشکلی را می توان بدون ترس از ایجاد خطاهای پیش بینی نشده در کد نهایی برطرف کرد.
کتابخانه های مورد نیاز:
Adafruit_ILI9341_Albert.h
SPI.h
Adafruit_GFX.h
Adafruit_ILI9341.h
TinyGPS ++. ساعت
Adafruit_NeoPixel.h
MPU9250.h
همه اینها را می توان با جستجوی عناوین بالا پیدا کرد. من پیوندها را ارسال نخواهم کرد زیرا نسخه های زیادی از این کتابخانه ها از منابع متعدد وجود دارد و با رعایت استاندارد جامعه فقط پیوند به نسخه اصلی ، به شما اجازه می دهم اینها را خودتان پیدا کنید.
مرحله 4: کالیبراسیون MPU
سرفصل یافت شده از طریق MPU در ایالت 2 و ایالت 3 به چهار رده تقسیم شد. این امر ضروری بود زیرا روش کالیبراسیون ما مستلزم یافتن حداقل و حداکثر مقادیر مغناطیس سنج در امتداد محورهای x و y آن بود. این امر با چرخاندن دستگاه به طور تصادفی در سه محور خود ، عاری از هرگونه میدان الکترومغناطیسی مهم به غیر از زمین انجام شد. سپس حداقل و حداکثر مقادیر را در محور x و y در نظر گرفتیم و آنها را به یک معادله مقیاس بندی وصل کردیم تا مقادیر بین مقادیر منفی یک و یک را محدود کنیم. در شکل بالا ، BigX و BigY حداکثر مقادیر داده مغناطیس سنج در طول محور x و y هستند ، LittleX و LittleY حداقل مقادیر داده های مغناطیس سنج در طول محور x و y هستند ، IMU.getMagX_uT () و IMU.getMagY_uT () مقادیری است که از مغناطیس سنج در هر زمان به ترتیب در طول محور x و y بیرون کشیده می شود و Mx و My مقادیر جدید مقیاس بندی شده برای محاسبه عنوان هستند.
مرحله 5: کد نهایی
آخرین مرحله ایجاد کد نهایی است. من یک کپی از کد نهایی پروژه ها را ضمیمه کرده ام. در داخل یادداشت ها برای کمک به حرکت در کد ساخته شده است. بزرگترین چالش این بخش ، کارکرد درست چهارگوش ها بود. اجرای چهارگوشه خسته کننده تر و منطقی تر از آن چیزی بود که می توانستیم تصور کنیم. ما در ابتدا یک آرکتان پایه (My/Mx) را پیاده سازی کردیم و سپس از رادیان به درجه تبدیل کردیم ، زیرا آردوینو به طور پیش فرض به رادیان خروجی می دهد. با این حال ، تنها چهارمعی که در آن کار کرد از 90 درجه تا 180 درجه بود ، که خروجی منفی به ما داد و در نهایت به ربع سوم رسید. راه حل این مسئله گرفتن مقدار مطلق است ، زیرا هنوز به درستی افزایش یافته است. این مقدار سپس از 360 کم می شود تا LED درست NeoPixel در حالت 2 روشن شود و یک عملیات ریاضی مشابه در حالت 3 بر اساس این که عنوان عنوان بزرگتر یا کوچکتر از عنوان ورودی کاربر است استفاده شود ، که هر دو را می توانید در کد بالا در شکل های بالا ، Heading مربوط به نور NeoPixel است که بر اساس تفاوت بین عنوان دستگاه و انحراف از شمال در مورد حالت 2 و از عنوان کاربر مشخص می شود. در این حالت ، 90 تا 180 درجه مربوط به ربع سوم است. در هر دو مورد ، tft.print باعث می شود صفحه نمایش دستگاه را از شمال بخواند.
برای سه ربع دیگر ، پیاده سازی آرکتان (My/Mx) منجر به وارونگی افزایش با چرخش دستگاه شد ، یعنی زاویه عنوان هنگام شمارش معکوس شمارش می شود و برعکس. راه حل این مشکل این بود که آرکتانژانت را به شکل آرکتان (Mx/My) برگردانیم. در حالی که این امر وارونگی افزایشی را حل می کند ، عنوان دستگاه صحیح را مشخص نمی کند ، جایی که چهارگوش ها وارد بازی می شوند. راه حل ساده برای این کار اضافه کردن یک تغییر بر اساس چهارم مربوطه بود. این را می توان در شکل های زیر مشاهده کرد ، که بار دیگر قطعاتی از کد های 2 و 3 هر ربع هستند.
اولین دستور if در صورتی انجام می شود که سرفصل محاسبه شده توسط معادله MPU بیشتر از عنوان کاربر باشد. در این شرایط عنوان ورودی کاربر به عنوان دستگاه اضافه می شود و مقدار مربوطه از 360 کم می شود. اگر دستور else انجام شود ، معادله سرفصل MPU از عنوان ورودی کاربر کم می شود. این شرایط به منظور به دست آوردن یک مقدار دقیق برای NeoPixel ، بلکه برای به دست آوردن مقداری خارج از محدوده قابل قبول ، که از 0 تا 359 درجه است ، اجتناب شد.
توصیه شده:
قطب نما کوچک با ATtiny85: 12 مرحله (همراه با تصاویر)
قطب نما کوچک با ATtiny85: این اولین پروژه ما با ATtiny85 است. یک قطب نمای دیجیتال جیبی ساده (با همکاری J. Arturo Espejel Báez). ATtiny85 یک میکروکنترلر با کارایی بالا و قدرت کم است. دارای 8 کیلوبایت حافظه فلش قابل برنامه ریزی است. به همین دلیل ، چال
ربات قطب نما DIY: 14 مرحله
ربات قطب نما DIY: سلام! امروز من قصد دارم یک ربات قطب نما بسازم. این ایده را با تفکر در مورد اینکه رسم یک حلقه کامل بدون جعبه ریاضی چقدر دشوار است به دست آوردم. خوب من راه حل شما را دریافت کردم؟. همانطور که می دانید یک دایره دقیقاً 360 درجه است ، بنابراین این ربات می تواند یک sha بکشد
آموزش رابط سنسور قطب نما HMC5883L با آردوینو: 10 مرحله (همراه با تصاویر)
آموزش رابط سنسور قطب نما HMC5883L با آردوینو: توضیحات HMC5883L یک قطب نمای دیجیتالی 3 محوره است که برای دو منظور کلی استفاده می شود: برای اندازه گیری مغناطش یک ماده مغناطیسی مانند فرومغناطیس ، یا برای اندازه گیری قدرت و در برخی موارد جهت جهت میدان مغناطیسی در نقطه ای در
کمربند قطب نما Haptic: 9 مرحله
کمربند هپتیک قطب نما: یک کمربند مجهز به آردوینو که به سمت شمال ارتعاش می کند. درک انسان همیشه محدود به حواس بیولوژیکی ما بوده است ، اما اگر بتوانیم آن را تغییر دهیم ، چطور؟ در طبیعت ، حیواناتی وجود دارند که می توانند میدانهای مغناطیسی ، فشار فشار ، آمبی
قطب نما دیجیتال با استفاده از آردوینو و مغناطیس سنج HMC5883L: 6 مرحله
قطب نما دیجیتال با استفاده از آردوینو و مغناطیس سنج HMC5883L: سلام بچه ها ، این سنسور می تواند شمال ، جنوب ، شرق و غرب جغرافیایی را نشان دهد ، ما انسان ها نیز می توانیم در مواقع مورد نیاز از آن استفاده کنیم. بنابراین. در این مقاله اجازه دهید بفهمیم چگونه سنسور مغناطیس سنج کار می کند و چگونه می توان آن را با میکروکنترلر