فهرست مطالب:

موتورسیکلت هوشمند HUD نمونه اولیه (ناوبری گام به گام و موارد دیگر): 9 مرحله
موتورسیکلت هوشمند HUD نمونه اولیه (ناوبری گام به گام و موارد دیگر): 9 مرحله

تصویری: موتورسیکلت هوشمند HUD نمونه اولیه (ناوبری گام به گام و موارد دیگر): 9 مرحله

تصویری: موتورسیکلت هوشمند HUD نمونه اولیه (ناوبری گام به گام و موارد دیگر): 9 مرحله
تصویری: فناوریهایی برای سواری بهتر و ایمن تر - hi-tech 2024, نوامبر
Anonim
نمونه اولیه موتورسیکلت هوشمند HUD (ناوبری به نوبه خود و موارد دیگر)
نمونه اولیه موتورسیکلت هوشمند HUD (ناوبری به نوبه خود و موارد دیگر)
موتورسیکلت هوشمند HUD نمونه اولیه (ناوبری به نوبه خود و موارد دیگر)
موتورسیکلت هوشمند HUD نمونه اولیه (ناوبری به نوبه خود و موارد دیگر)
موتورسیکلت هوشمند HUD نمونه اولیه (ناوبری به نوبه خود و موارد دیگر)
موتورسیکلت هوشمند HUD نمونه اولیه (ناوبری به نوبه خود و موارد دیگر)
موتورسیکلت هوشمند HUD نمونه اولیه (ناوبری به نوبه خود و موارد دیگر)
موتورسیکلت هوشمند HUD نمونه اولیه (ناوبری به نوبه خود و موارد دیگر)

سلام !

This Instructables داستان نحوه طراحی و ساخت یک پلت فرم HUD (Heads-Up Display) است که برای نصب روی کلاه ایمنی موتور سیکلت طراحی شده است. در زمینه مسابقه "نقشه" نوشته شده است. متأسفانه ، من نتوانستم این پروژه را به موقع و در مهلت مسابقه به طور کامل به پایان برسانم ، اما همچنان می خواستم پیشرفت خود را در مورد آن به اشتراک بگذارم ، و همچنین تمام آزمایشات و خطاهایی را که در انجام آن انجام دادم ، ثبت کنم.

ایده این پروژه برای اولین بار چند سال پیش ، هنگامی که سوار موتورسیکلت شدم ، به ذهن من رسید و من شروع به بررسی این کردم که چه وسایلی را باید بخرم تا لذت بیشتری را برای سواری خود داشته باشم. در آن زمان ، من را گیج کرد که بهترین راه برای دستیابی به GPS اصلی هنگام رانندگی این بود که اساساً تلفن هوشمند خود را به دسته دوچرخه خود وصل کنید. من با خودم می گویم که مطمئناً می توان راه بهتری برای به دست آوردن چنین اطلاعاتی در پرواز داشت.

در آن زمان بود که به من رسید: یک صفحه نمایش پیش فرض می تواند راهی برای دستیابی به مسیریابی هنگام سوار شدن ، بدون خالی کردن باتری تلفن و قرار دادن آن در معرض عناصر باشد.

با گذشت زمان ، این ایده در ذهن من بالغ شد ، و من تصور می کردم که داشتن HUD در مقابل من در هر زمان ، استفاده های بیشتری را نسبت به ناوبری ساده امکان پذیر می کند. به همین دلیل است که برنامه من این است که پلت فرم را عمومی و مدولار کنم ، بنابراین هر کسی می تواند ماژولی ایجاد کند که اطلاعات مورد نیاز خود را در HUD خود نمایش دهد.

اگرچه محصولات تجاری موجود هستند که این وظیفه را برآورده می کنند ، اما هیچ کدام به اندازه پلت فرم من مدولار نیستند ، و همچنین گران قیمت هستند. به هر حال به این پروژه خوش آمدید.

آنچه که در حال حاضر کار می کند

همانطور که گفته شد ، این پروژه هنوز در حالت توسعه است و این همان چیزی است که در حال حاضر کار می کند.

- ارتباط بین تلفن هوشمند و برد مبتنی بر ESP32 (تلفن بیدار)

- طراحی اپتیک انجام شده است (ممکن است در دراز مدت نیاز به تعدیلات کوچک داشته باشد)

- برنامه ناوبری Android با استفاده از SDK ناوبری Mapbox:

- قابلیت محاسبه و نمایش موقعیت کاربر روی نقشه و همچنین مسیری از آن به مقصد

- قابلیت اتصال به دستگاه بلوتوث (آدرس MAC دستگاه در حال حاضر کدگذاری شده است)

- قابلیت ناوبری در زمان واقعی ، از جمله استخراج و ارسال اطلاعات مانور آینده از طریق بلوتوث سریال (در حال حاضر فقط از نوبت ها پشتیبانی می شود)

آنچه نیاز به کار دارد

این لیست شامل مواردی است که برای استفاده HUD کاملاً ضروری هستند ، اما هنوز آماده اجرا نیستند.

- طراحی کلی (اتصال کلاه ایمنی ، مکانیزم تنظیم زاویه بازتابنده ،..)

- برنامه اندروید:

- پیاده سازی تشخیص و تصحیح خارج از مسیر

- امکان ورود کاربر به آدرس مقصد

- نقاط راه؟

- ارگونومی / زیبایی شناسی

تدارکات:

ملزومات

- یک برد توسعه مبتنی بر esp32

- هر گونه گوشی هوشمند اندرویدی تا حدودی (بلوتوث فعال است)

- یک SSD1306 یا صفحه دیگر 96 اینچی OLED (صفحه من 128x64 پیکسل بود ، قسمت "مغزها: میکروکنترلر و صفحه" را ببینید)

- یک بازتابنده (هر قطعه ای از اکریلیک/شیشه/پلکسی گلاس مناسب خواهد بود)

- لنز فرنل (طول من حدود 13 سانتی متر بود ، قسمت "انتخاب لنز" را ببینید)

ابزارها

- آهن لحیم کاری

- تخته نان

- چند عدد کابل بلوز

- چاپگر سه بعدی / خدمات چاپ سه بعدی

مرحله 1: چگونه همه کار می کند: انتخاب های طراحی توضیح داده شده است

چگونه کار می کند: انتخاب طرح توضیح داده شده است
چگونه کار می کند: انتخاب طرح توضیح داده شده است
چگونه کار می کند: انتخاب طرح توضیح داده شده است
چگونه کار می کند: انتخاب طرح توضیح داده شده است
چگونه کار می کند: انتخاب طرح توضیح داده شده است
چگونه کار می کند: انتخاب طرح توضیح داده شده است

ایده اصلی یک Heads Up Display این است که یک تصویر را در مقابل دید دیگران نمایش دهید ، بنابراین مجبور نیستید از هر کاری که انجام می دهند چشم بپوشند (اعم از خلبان هواپیما یا رانندگی با موتور سیکلت ، این تصویر ما خواهد بود. مورد مثال)

اپتیک

از نظر فنی ، این را می توان با قرار دادن یک صفحه نمایش در جلوی چشم کاربر به دست آورد. با این حال ، صفحه نمایش شفاف نیست و بنابراین مانع دید کاربر می شود. سپس می توانید صفحه را در مقابل یک سطح بازتابنده قرار دهید ، که محتوای صفحه را منعکس می کند و در عین حال به اندازه کافی شفاف است تا کاربر بتواند آنچه را که در جلوی خود است ببیند.

با این حال ، این رویکرد دارای یک نقص بزرگ است: صفحه واقعی معمولاً بیشتر از آنچه کاربر باید روی آن تمرکز کند (به عنوان مثال جاده پیش رو) به چشم کاربر نزدیکتر است. این بدان معناست که برای خواندن آنچه در سطح بازتابنده است ، چشم های کاربر باید با فاصله صفحه نمایش از چشمان خود (فرض کنیم 20 سانتی متر) سازگار است و سپس برای تمرکز بر روی راه پیش رو باید دوباره تطبیق یابد. (/2/5 متر). زمانی که کل این عملیات طول می کشد ، زمان ارزشمندی است که باید در نگاه کردن به جاده صرف شود ، و تطبیق مکرر ممکن است پس از چند دقیقه برای کاربر ناراحت کننده باشد.

به همین دلیل تصمیم گرفتم یک لنز بین صفحه و بازتابنده اضافه کنم. اگر این لنز با دقت انتخاب شود ، باید تصویری مجازی از صفحه ایجاد کند (شکل بالا را ببینید) ، که به نظر می رسد در واقع از چشم کاربر دورتر است ، بنابراین به تطبیق ناگهانی کمتری نیاز دارد (یا به هیچ وجه ، در سناریوی کامل). این طراحی به کاربر اجازه می دهد تا به سرعت به بازتابنده نگاه کند ، اطلاعات مورد نیاز خود را بدست آورد و بلافاصله به عقب در جاده نگاه کند.

نقش گوشی های هوشمند

از آنجا که تلاش برای پیاده سازی یک برنامه ناوبری کامل در ESP32 غیر واقعی بود ، تصمیم گرفتم یک برنامه اندرویدی بسازم که از این کار مراقبت می کند. سپس برنامه فقط باید به ESP32 بگوید که کاربر برای رسیدن به مقصد خود باید چه کار کند ، و ESP32 این اطلاعات را با HUD منتقل می کند (شکل "نحوه کار ماژول" را ببینید).

مرحله 2: قطعات - مغزها: میکروکنترلر و صفحه

قطعات - مغزها: میکروکنترلر و صفحه نمایش
قطعات - مغزها: میکروکنترلر و صفحه نمایش
قطعات - مغزها: میکروکنترلر و صفحه نمایش
قطعات - مغزها: میکروکنترلر و صفحه نمایش

همانطور که در بالا گفته شد ، من قصد داشتم که ماژول من اطلاعات ناوبری را نمایش دهد ، در حالی که در واقع آن را محاسبه نمی کنم موقعیت واقعی ، ردیابی و ناوبری در زمان واقعی. تلفن کاربر در عوض با ماژول ارتباط برقرار می کند و اطلاعات را برای آن ارسال می کند تا سپس در HUD نمایش داده شود.

برای تسهیل ارتباط بین تلفن کاربر و ماژول ، من از یک برد مبتنی بر ESP32 برای این پروژه استفاده کردم. این انتخاب به این دلیل بود که این ماژول خاص دارای قابلیت های بلوتوث یکپارچه و همچنین چند ویژگی جالب دیگر بود (استفاده آسان از حافظه غیرفرار ، CPU دو هسته ای ، RAM کافی برای رانندگی صفحه نمایش OLED از طریق I2C ، …). طراحی PCB بر اساس ESP32 نسبتاً ساده است ، که من آن را در نظر گرفتم. من همچنین تجربه حرفه ای در استفاده و طراحی مدارها با ESP32 دارم ، که قطعاً بر انتخاب من تأثیر گذاشت.

انتخاب صفحه نمایش اساساً به هر چیزی که می توانستم پیدا کنم بر می گردد که اگرچه به اندازه کافی برای استفاده شما روشن است ، در حالی که تا حد ممکن کوچک است. من خیلی نگران تعداد پیکسل های صفحه نبودم ، زیرا هدف من داشتن یک رابط کاربری بسیار مینیمالیستی و ساده بود.

لازم به ذکر است که درایور صفحه باید توسط یک کتابخانه که امکان آینه سازی تصویر را دارد پشتیبانی شود. این به این دلیل است که تصویر نمایش داده شده وقتی از لنز عبور می کند و بر روی بازتابنده ظاهر می شود ، ورق می زند و نیازی نیست که آنچه را که نمایش داده می شود به صورت دستی برعکس کنیم ، سنگینی بزرگی بر دوش ما سازندگان است.

مرحله 3: قطعات - اپتیک: یافتن سازش

قطعات - اپتیک: یافتن سازش
قطعات - اپتیک: یافتن سازش
قطعات - اپتیک: یافتن سازش
قطعات - اپتیک: یافتن سازش
قطعات - اپتیک: یافتن سازش
قطعات - اپتیک: یافتن سازش

نزدیک شدن به نوری برای این پروژه بسیار دشوار بود ، زیرا من هیچ ایده ای نداشتم که در ابتدای شروع این پروژه حتی به دنبال چه چیزی بودم. پس از انجام برخی تحقیقات ، متوجه شدم که کاری که می خواهم انجام دهم ایجاد یک تصویر مجازی از صفحه نمایش OLED من است که به نظر می رسد از چشم دورتر از آن چیزی است که هست. فاصله ایده آل برای شکل گیری این تصویر مجازی در حدود 2-5 متر جلوتر از راننده خواهد بود ، به نظر می رسد این فاصله تا اشیایی باشد که هنگام رانندگی روی آنها تمرکز می کنیم (سایر خودروها ، دست اندازهای جاده ای و غیره …)

برای دستیابی به این هدف ، من از لنز فرنل استفاده کردم ، زیرا این لنزها بسیار بزرگ و ارزان هستند ، به نظر می رسید که فاصله کانونی مناسبی برای پروژه من ارائه می دهند و می توان آنها را با قیچی ساده برش داد (که در مورد لنزهای شیشه ای با شکل گرد تر) لنزهای فرنل را می توان نام هایی مانند "ذره بین جیبی" یا "ذره بین کارت خواندن" پیدا کرد ، زیرا برای کمک به افرادی که دارای بینایی ضعیف هستند بسیار مناسب است.

اساساً ، ترفند اینجا همه در مورد یافتن سازش مناسب بین موارد زیر بود:

- داشتن فاصله تصویری مجازی معقول (یعنی اینکه HUD چقدر برای کاربر به نظر می رسد ، یا اینکه کاربر تا چه حد باید چشمان خود را تنظیم کند تا آنچه در HUD است را ببیند)

- عدم بزرگنمایی متن روی صفحه توسط لنز (که اساساً یک ذره بین است)

- داشتن فاصله مناسب بین صفحه OLED و لنز ، که در غیر این صورت منجر به یک ماژول بسیار حجیم می شود

من شخصاً چند لنز مختلف در آمازون سفارش دادم و فاصله کانونی آنها را قبل از انتخاب یکی با طول F. حدود 13 سانتی متر تعیین کردم. من این F.length را پیدا کردم ، با فاصله OLED-Lens از 9cm ، یک تصویر رضایت بخش از بازتابنده من به من داد (به چند تصویر گذشته در بالا نگاه کنید).

همانطور که در تصاویر من مشاهده خواهید کرد ، برای تمرکز مناسب بر روی متن نمایش داده شده ، دوربین مورد استفاده برای گرفتن این عکسها باید طوری تنظیم شود که انگار بر روی یک شیء دور تمرکز کرده است ، که باعث می شود همه چیز در همان سطح با بازتابنده تار به نظر برسد. به این دقیقاً همان چیزی است که ما برای HUD خود می خواهیم.

می توانید فایل های سه بعدی برای نگهدارنده لنز را در اینجا پیدا کنید.

مرحله 4: قطعات - یک ظرف برای نگه داشتن همه آنها

قطعات - یک ظرف برای نگه داشتن همه آنها
قطعات - یک ظرف برای نگه داشتن همه آنها
قطعات - یک ظرف برای نگه داشتن همه آنها
قطعات - یک ظرف برای نگه داشتن همه آنها

همانطور که من این دستورالعمل ها را می نویسم ، ظرف واقعی که همه قطعات صفحه نمایش بالا را نگه می دارد کاملاً طراحی نشده است. با این حال ، من چند ایده در مورد شکل کلی آن و نحوه برخورد با مشکلات خاص دارم (مانند نحوه نگه داشتن بازتابنده و تحمل آن در برابر بادهای بیش از 100 کیلومتر در ساعت). این هنوز بسیار در حال پیشرفت است.

مرحله 5: ایجاد یک پروتکل برای ماژول ما

به منظور ارسال دستورالعمل های ناوبری از تلفن به صفحه توسعه ، من باید یک پروتکل ارتباطی خودم تهیه کنم که به من امکان می دهد داده های مورد نیاز را به راحتی از تلفن ارسال کنم ، در حالی که پردازش آن را پس از دریافت تسهیل می کنم.

در زمان نگارش این دستورالعمل ها ، اطلاعاتی که برای حرکت با ماژول باید از تلفن منتقل می شد عبارت بودند از:

- نوع مانور آینده (پیچ ساده ، دوراهی ، ادغام در جاده ای دیگر ،…)

- دستورالعمل های دقیق مانور آینده (بستگی به نوع مانور دارد: راست/چپ برای دور زدن ؛ که برای دور زدن باید از آن خارج شوید ، …)

- فاصله باقی مانده قبل از مانور آینده (در حال حاضر در متر)

من تصمیم گرفتم این داده ها را با استفاده از ساختار قاب زیر سازماندهی کنم:

: type.instructions ، فاصله ؛

اگرچه راه حل زیبایی نیست ، این راه حل به ما اجازه می دهد تا به راحتی هر قسمت از پروتکل خود را جدا کرده و از هم متمایز کنیم ، که کدگذاری را در سمت ESP32 تسهیل کرده است.

این مهم است که به خاطر داشته باشید که برای ویژگی های آینده ، ممکن است اطلاعات دیگری به این پروتکل اضافه شود (مانند روز و ساعت دقیق یا موسیقی که در تلفن کاربر پخش می شود) ، که با استفاده از همان به راحتی امکان پذیر است. منطق فعلی را بسازید

مرحله 6: کد: سمت ESP32

کد: سمت ESP32
کد: سمت ESP32
کد: سمت ESP32
کد: سمت ESP32

کد ESP32 در حال حاضر بسیار ساده است. از کتابخانه U8g2lib استفاده می کند که کنترل آسان صفحه OLED را امکان پذیر می کند (در حالی که امکان آینه سازی تصویر نمایش داده شده).

اساساً ، تنها کاری که ESP32 انجام می دهد این است که وقتی برنامه آن را ارسال می کند ، داده های سریال را از طریق بلوتوث دریافت می کند ، تجزیه می کند و این داده ها یا تصاویر را بر اساس این داده ها نمایش می دهد (یعنی نمایش پیکان به جای جمله "گردش به چپ/راست"). این هم کد:

/*برنامه کنترل HUD از برنامه اندروید از طریق بلوتوث سریال*/#شامل "BluetoothSerial.h" // فایل سربرگ برای بلوتوث سریال ، به طور پیش فرض به Arduino اضافه می شود#شامل#شامل #ifdef U8X8_HAVE_HW_SPI#شامل#endif# ifdef U8X8_HAVE_HW_I2C #شامل #endif // سازنده کتابخانه OLED است ، باید متناسب با صفحه شما تغییر کند // وضعیت دولت مقدارهای میدان را تشخیص داد + متغیر#تعریف مانور میدان 1#دستورالعملها را تعریف کنید میدان 2#تعریف فاصله میدان 3#تعریف endOfFrame 4 در تشخیص_فیلد = endOfFrame ؛ بلوتوث سریال serialBT ؛ // شیء برای Bluetoothchar incoming_char ؛ مانور char [10] ؛ دستورالعمل char [10] ؛ فاصله char [10] ؛ char tempManeuver [10] ؛ char tempInstructions [10] ؛ char tempDistance [10] ؛ int nbr_char_maneuver = 0 ؛ int nbr_char_instructions = 0 ؛ int nbr_char_distance = 0 ؛ fullsentence boolean = false ؛ void setup () {Serial.begin (9600) ؛ // شروع سریال مانیتور در 9600 bauds u8g2.begin ()؛ // شروع کنترل OLED serialBT.begin ("ESP32_BT") ؛ // نام تأخیر سیگنال بلوتوث (20) ؛ Serial.println ("دستگاه بلوتوث آماده جفت شدن است")؛} حلقه void () {if (serialBT.available () &&! fullsentence) // کاراکترهایی که از طریق سریال بلوتوث دریافت می شوند {incoming_char = serialBT.read ()؛ Serial.print ("دریافت:") ؛ Serial.println (incoming_char) ؛ } سوئیچ (میدان تشخیص داده شده) {case manuverField: Serial.println ("میدان شناسایی شده: مانور") ؛ if (incoming_char == '.') // فیلد بعدی شناسایی شد {dete_field = دستورالعمل؛ } else {// مانور نوع آرایه نوع مانور را پر کنید [nbr_char_maneuver] = incoming_char؛ nbr_char_maneuver ++؛ } زنگ تفريح؛ دستورات موردی Field: Serial.println ("فیلد شناسایی شده: دستورالعمل")؛ if (incoming_char == '،') // فیلد بعدی شناسایی شد {dete_field = distanceField؛ } else {// دستورالعمل های دستورالعمل دستورالعمل های آرایه را پر کنید [nbr_char_instructions] = incoming_char؛ nbr_char_instructions ++؛ } زنگ تفريح؛ case caseField: Serial.println ("میدان شناسایی شده: فاصله")؛ if (incoming_char == '؛') // انتهای فریم شناسایی شد {dete_field = endOfFrame؛ Serial.print ("مانور:") ؛ Serial.println (مانور) ؛ Serial.print ("دستورالعمل:") ؛ Serial.println (دستورالعمل) ؛ Serial.print ("فاصله:")؛ Serial.println (فاصله) ؛ fullsentence = true؛ update_Display ()؛ // فریم کامل دریافت شده ، آن را تجزیه کرده و داده های گیرنده را نمایش دهید} در غیر اینصورت {// اطلاعات آرایه فاصله فاصله را پر کنید [nbr_char_distance] = incoming_char؛ nbr_char_distance ++؛ } زنگ تفريح؛ case endOfFrame: if (incoming_char == ':') detect_field = maneuverField؛ // قاب جدید شکست را تشخیص داد ؛ پیش فرض: // هیچ چیز را خراب نکنید ؛ } تاخیر (20) ؛} void update_Display () {// هر آرایه char را برای جلوگیری از memcpy احتمالی در حافظه پنهان (tempManeuver ، مانور ، nbr_char_maneuver) ؛ memcpy (tempInstructions ، دستورالعمل ها ، nbr_char_instructions) ؛ memcpy (tempDistance ، distance ، nbr_char_distance) ؛ parseCache ()؛ // تجزیه و پردازش آرایه char fullsentence = false؛ // جمله پردازش شد ، آماده برای بعدی} void parseCache () {u8g2.clearBuffer ()؛ // حافظه داخلی u8g2.setFont (u8g2_font_ncenB10_tr) را پاک کنید ؛ // فونت مناسب را انتخاب کنید دستورالعمل های رشته String = tempInstructions؛ // اجرای پروتکل در اینجا. در حال حاضر فقط از چرخش ها پشتیبانی می کند. if (maneuverString.substring (0 ، 4) == "چرخش") {// نوع مانور را بررسی کنید Serial.print ("TURN DETECTED") ؛ if (οδηγίεςString.substring (0 ، 5) == "راست") {// دستورالعمل های خاص را بررسی کرده و مطابق آن u8g2.drawStr (5 ، 15 ، "-") را نمایش دهید ؛ } else if (οδηγίεςString.substring (0 ، 4) == "چپ") {// دستورالعمل های خاص را بررسی کرده و مطابق آن u8g2.drawStr (5 ، 15 ، "<---") ؛ } else u8g2.drawStr (5 ، 15 ، "Err.") ؛ // فیلد دستورالعمل های نامعتبر}/ * انواع دیگر مانورها (دوربرگردان و غیره) را اجرا کنید * در غیر این صورت (tempManeuver == "rdbt") { * *] */ u8g2.drawStr (5 ، 30 ، tempDistance) ؛ // نمایش فاصله باقی مانده u8g2.sendBuffer ()؛ // انتقال حافظه داخلی به صفحه // تنظیم مجدد همه آرایه های char قبل از خواندن memset بعدی (مانور ، 0 ، 10) ؛ ممست (دستورالعمل ، 0 ، 10) ؛ ممست (فاصله ، 0 ، 10) ؛ ممست (tempManeuver ، 0 ، 10) ؛ memset (tempInstructions، 0، 10)؛ ممست (tempDistance ، 0 ، 10) ؛ // بازنشانی تعداد عناصر در آرایه ها nbr_char_distance = 0؛ nbr_char_instructions = 0؛ nbr_char_maneuver = 0؛}

مرحله 7: کد: Android Side

کد: اندروید
کد: اندروید
کد: سمت Android
کد: سمت Android
کد: سمت Android
کد: سمت Android

برای برنامه تلفن های هوشمند ، تصمیم گرفتم از SDK ناوبری Mapbox استفاده کنم ، زیرا هنگام ساختن نقشه ناوبری از ابتدا ویژگی های مفید زیادی ارائه می دهد. همچنین امکان استفاده از بسیاری از شنوندگان مفید را فراهم می کند که قطعاً به کارکردن این ماژول کمک می کند. من همچنین از کتابخانه سریال android-bluetooth-serial harry1453 برای اندروید استفاده کردم ، زیرا ارتباط سریال بلوتوث را بسیار آسان تر کرد.

اگر می خواهید این برنامه را در خانه بسازید ، باید یک نشانه دسترسی به Mapbox دریافت کنید ، که حداکثر تا تعداد مشخصی از درخواستها در ماه رایگان است. شما باید این رمز را در کد قرار دهید و برنامه را در کنار خود بسازید. همچنین باید در آدرس MAC بلوتوث ESP32 خود کدگذاری کنید.

به صورت فعلی ، برنامه می تواند شما را از مکان فعلی شما به هر مکانی که می توانید روی نقشه کلیک کنید ، راهنمایی کند. همانطور که در مقدمه ذکر شد ، با این حال ، هیچ مانور دیگری به غیر از پیچ ها پشتیبانی نمی کند و هنوز مسیرهای خارج از خط را اداره نمی کند.

می توانید کل کد منبع را در github من پیدا کنید.

مرحله 8: بعدی چیست؟

اکنون که برنامه به اندازه کافی کاربردی است تا بتواند کاربر خود را در یک مسیر مشخص هدایت کند (در صورت عدم انحراف از مسیر تعیین شده) ، تمرکز اصلی من بر بهبود برنامه تلفن های هوشمند و پیاده سازی چند قابلیت است که ماژول را به یک دستگاه ناوبری مناسب این شامل فعال کردن ارتباط بلوتوث از تلفن حتی در زمانی که صفحه نمایش خاموش است ، و همچنین پشتیبانی از انواع دیگر مانورها (دوربرگردان ، ادغام ، …) است. اگر کاربر از مسیر اصلی منحرف شود ، ویژگی تغییر مسیر را نیز پیاده سازی می کنم.

وقتی همه این کارها انجام شد ، ظرف و مکانیسم پیوست آن را بهبود می بخشم ، آن را به صورت سه بعدی چاپ می کنم و سعی می کنم برای اولین بار ماژول را بردارم.

اگر همه چیز خوب پیش برود ، هدف بلند مدت من طراحی PCB سفارشی برای قطعات الکترونیکی تعبیه شده در این پروژه است که باعث صرفه جویی زیادی در فضای نهایی محصول می شود.

همچنین ممکن است در آینده برخی ویژگی های دیگر را به این ماژول اضافه کنم ، از جمله نمایش زمان ، و همچنین زنگ هشدار از طریق تلفن ، که می تواند هنگام دریافت پیام متنی یا تماس توسط کاربر نمادی ظاهر شود. در نهایت دوست دارم قابلیت های Spotify را به عنوان یک طرفدار بزرگ موسیقی به این ماژول اضافه کنم. با این حال ، در این برهه از زمان ، این تنها داشتن آن خوب است.

مرحله 9: نتیجه گیری و تشکر ویژه

نتیجه گیری و تشکر ویژه!
نتیجه گیری و تشکر ویژه!

همانطور که در مقدمه گفته شد ، اگرچه این پروژه هنوز به پایان نرسیده است ، اما من واقعاً می خواستم آن را با جهان به اشتراک بگذارم ، به امید این که ممکن است به دیگران الهام بخش باشد.من همچنین می خواستم تحقیقات خود را در این زمینه مستند کنم ، زیرا علاقه زیادی به AR و HUD ندارد ، که به نظر من شرم آور است.

من می خواهم از Awall99 و Danel Quintana که پروژه واقعیت افزوده مربوط به آنها در ساخت این ماژول بسیار الهام بخش من بود تشکر کنم.

از همه شما برای توجه شما متشکرم ، مطمئناً وقتی این پروژه در آینده نزدیک بهبود یابد ، به روز رسانی خواهم کرد. در ضمن ، بعداً همگی را می بینیم!

توصیه شده: