فهرست مطالب:

نمایش اتومبیل آردوینو: 7 مرحله (همراه با تصاویر)
نمایش اتومبیل آردوینو: 7 مرحله (همراه با تصاویر)

تصویری: نمایش اتومبیل آردوینو: 7 مرحله (همراه با تصاویر)

تصویری: نمایش اتومبیل آردوینو: 7 مرحله (همراه با تصاویر)
تصویری: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, جولای
Anonim
Image
Image
نمایش اتومبیل آردوینو
نمایش اتومبیل آردوینو
نمایش اتومبیل آردوینو
نمایش اتومبیل آردوینو

من یک صفحه نمایش مبتنی بر تشخیص (OBD-II) با استفاده از یک LCD TFT 7 اینچی از Adafruit ، Teensy 3.6 ، Adaptter Freematics OBD-II I2C و برخی از سنسورهای پشتیبان تهیه کردم که در آمازون پیدا کردم. صفحه نمایش دو صفحه دارد: یکی برای زمانی که هوندا آکورد من در حال رانندگی است و دیگری برای زمانی که معکوس است.

هنگامی که ماشین من در حال حرکت است ، RPM ، MPH ، درصد بار موتور ، ولتاژ باتری ، دمای کابین و دمای خنک کننده موتور نمایش داده می شود (اگر کسی این موارد را نمی خواهد ، چندین آمار دیگر از خودروها برای نمایش وجود دارد).

وقتی ماشین من در حالت دنده عقب است ، Teensy 3.6 سازگار با Arduino IDE یک تصویر متحرک از ماشین من را که آنلاین پیدا کردم می خواند ، نمایش می دهد و سپس سنسورهای پشتیبان را می خواند. فاصله هر چهار سنسور از نظر فوت به همراه یک تصویر متحرک پشت خودرو است که بر اساس نزدیک بودن شی به خودرو تغییر رنگ می دهد (فقط سبز به معنی <5 پا ، سبز و زرد به معنی <2.6 پا و سبز ، زرد ، و قرمز به معنی <1 پا) است.

در نهایت ، من قابلیت تاری صفحه نمایش را در شب اضافه کردم.

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

1) Freematics OBD -II Adapter - 35 دلار

2) سنسورهای پشتیبان - 15 دلار

3) صفحه نمایش TFT LCD 7 اینچی - 38 دلار

4) درایور نمایشگر LCD مبتنی بر SPI - 35 دلار

5) Teensy 3.6 - 30 دلار

6) تغییر سطح - 4 دلار

7) IC 74HC125 Tri State Buffer -6 دلار برای 2 بسته (مطمئن هستم که می توانید این جارو را در جاهای دیگر پیدا کنید)

8) کارت MicroSD> = 1 گیگابایت - 4 دلار

9) سیم ، خازن ها و مقاومت ها.

10) LP3470-2.93 IC on Reset IC - 2 دلار

11) (اختیاری): سنسور دما DS18B20 - 8 دلار

12) (اختیاری): OBD -II Splitter - 10 دلار

13) (اختیاری): یک سیم فیوز مدار اضافه کنید - 8 دلار برای بسته 5 تایی

مرحله 1: خواندن سنسورهای پشتیبان

خواندن سنسورهای پشتیبان
خواندن سنسورهای پشتیبان
خواندن سنسورهای پشتیبان
خواندن سنسورهای پشتیبان
خواندن سنسورهای پشتیبان
خواندن سنسورهای پشتیبان
خواندن سنسورهای پشتیبان
خواندن سنسورهای پشتیبان

این مرحله دشوار است زیرا این سنسورهای پشتیبان با فرستنده گیرنده و سپس با یک LCD کوچک ارتباط برقرار می کنند. من راهی برای خلاص شدن از صفحه نمایش آنها و استفاده از نمایشگر آنها می خواستم. با کمک وب سایتی که بعد از گوگل (هک سنسورهای پارک معکوس) پیدا کردم ، توانستم پروتکل ارتباطی اختصاصی را که فرستنده گیرنده به صفحه LCD ارسال می کند بخوانم. به دلایلی ، پروتکل ارتباطی یک پروتکل معمولی مانند I2C ، UART ، CAN ، USB و غیره نیست و بسته به تامین کننده پروتکل متفاوت است. اگر می خواهید از کد من استفاده کنید ، توصیه می کنم مجموعه ای را که در بالا پیوند دادید خریداری کنید زیرا به طور خاص برای آن سنسورها نوشته شده است.

قبل از قطع ال سی دی ارائه شده توسط آنها ، سه سیم اتصال گیرنده گیرنده و ال سی دی را بررسی کردم. سیم قرمز +5 ولت ، سیم سیاه زمینی و سیم آبی وجود داشت. بعد از اتصال اسیلوسکوپ به سیم آبی و زمین ، اثری شبیه به تصویر بالا مشاهده کردم اما دقیقاً (از تصویر وب سایت پیوند داده شده در بالا استفاده کردم). ردیابی من دارای یک بیت شروع طولانی مدت طولانی تر بود ، و 17 بیت کوتاهتر دیگر دنبال شد. بیت های 0-5 بعد از بیت شروع اطلاعات مفیدی نداشتند. بیت های 6-8 مربوط به سنسور A ، B ، C ، یا D. بیت های 9-16 مربوط به طول بر حسب متر است. من یک طرح آردوینو IDE را قرار دادم که سنسورها را می خواند و داده ها را روی کنسول سریال خروجی می دهد.

مرحله 2: ایجاد تصویر Bitmap و قرار دادن آن روی کارت MicroSD

ایجاد تصویر Bitmap و قرار دادن آن روی کارت MicroSD
ایجاد تصویر Bitmap و قرار دادن آن روی کارت MicroSD
ایجاد تصویر Bitmap و قرار دادن آن روی کارت MicroSD
ایجاد تصویر Bitmap و قرار دادن آن روی کارت MicroSD

من از یک نرم افزار ویرایش عکس رایگان به نام GIMP برای برش و تغییر اندازه تصویر ماشین خود از نمای بالا استفاده کردم. سپس تصویر را به عنوان تصویر bitmap 24 بیتی با نام "car.bmp" صادر کردم که 110 پیکسل در 250 پیکسل است. این را روی کارت microSD بارگذاری کردم و کارت microSD را در میکروکنترلر Teensy 3.6 قرار دادم.

دلایل اصلی که من با Teensy 3.6 به جای UNO رفتم این بود که Teensy می توانست یک کارت SD را بخواند و تصویر را با استفاده از درایور صفحه نمایش RA8875 نمایش دهد. با استفاده از UNO ، این روند حدود 8 ثانیه طول کشید ، در حالی که Teensy 3.6 1.8 ثانیه به طول انجامید.

مرحله 3: اتصال سخت افزار

اتصال سخت افزار
اتصال سخت افزار

Adafruit دارای صفحه نمایش TFT 7 اینچی واقعاً خوب است که توسط IC به نام RA8875 هدایت می شود. من به دو دلیل این درایور صفحه نمایش و صفحه نمایش را انتخاب کردم. اول ، کتابخانه های گسترده ای برای صفحه نمایش پیش نویس شده است. دوم ، راننده صفحه نمایش می تواند با آنها صحبت کند هر میکروکنترلری با SPI ، به این معنی که سیمهای زیادی وجود ندارد که میکروکنترلر را به RA8875 وصل کنند.

این راه اندازی دو نکته منفی دارد. اول این واقعیت وجود دارد که یک اشکال سخت افزاری با برد RA8875 از Adafruit وجود دارد که در صورت تمایل به استفاده از هر دستگاه مبتنی بر SPI مانند کارت SD ، نیاز به استفاده از IC 74HC125 بافر IC دارد. برای درک کامل اشکال سخت افزاری ، انجمن زیر را مطالعه کنید. دوم ، مدت زمان نسبتاً طولانی است که طول می کشد تا تصاویر به LCD ارسال شوند. همچنین مدت زمان زیادی که طول می کشد تا یک تصویر به LCD ارسال شود به دلیل اتصال SPI است که با سرعت کلاک کنترلرهای میکروکنترلر و حجم زیادی از داده هایی که باید درایور صفحه نمایش ارسال شود ، محدود می شود. سیم بسیار کمی

من یک طرحواره Fritzing ایجاد کردم تا هرکسی که مایل به ایجاد این صفحه نمایش است بتواند به راحتی بخواند که پین های Teensy 3.6 به چه وصل می شوند. من یک فایل.frz در زیر قرار دادم. تنها دو جزء که برچسب گذاری نشده اند خازن ها هستند که یک خازن الکترولیتی 1F 16V و یک خازن سرامیکی 100μF هستند. برای اطمینان از اینکه میکروکنترلر Teensy DC +5V ثابت است و هیچ گونه افزایش ولتاژی در آن وجود ندارد (ممکن است لازم نباشد اما آنها را شامل می شوم زیرا منبع تغذیه خودرو بسته به بار باتری می تواند به سرعت نوسان کند) این موارد را اضافه کردم.

چند نکته در مورد اجزا ذکر شود. اول ، تغییر سطح هر سیگنال 5V را گرفته و آن را به ولتاژ ایمن 3.3V Teensy 3.6 تبدیل می کند. این برای آداپتور OBD I2C و همچنین گیرنده سنسور پشتیبان ضروری است. ثانیاً ، خطوط I2C نوجوانان به مقاومت های 4.7 کیلو وات نیاز دارند. ثالثاً ، چهار مقاومت متصل کننده "سیم شب" (سیم کم نور) و "سیم درگیر پشتیبان" برای تقسیم ولتاژ لازم است تا سیگنالهای 12V-13V را به سیگنالهای 2.5-3V کاهش دهد.

به روز رسانی 7/22/18: من دریافتم که سنسور دمای داخلی ماژول OBD-I2C اعداد بسیار عجیبی را ارائه می دهد. گاهی اوقات کار می کرد ، اما بیشتر اوقات ، ماژول دمای بالاتر از 400 درجه فارنهایت را نشان می داد. به همین دلیل ، تصمیم گرفتم سنسور دما ds18b20 خودم را اضافه کنم. از استفاده از هر نوع سنسور دما در اینجا استقبال می کنید ، اما باید کد آردوینو را ویرایش کنید.

UPDATE 3/1/19: Teensy 3.6 وقتی بسیار سرد است شروع نمی شود. برای اطمینان از بوت شدن صحیح مدار ، منبع تغذیه را تنظیم مجدد کردم.

مرحله 4: درایور نمایش RA8875 و طراحی گرافیک

درایور نمایش RA8875 و طراحی گرافیک
درایور نمایش RA8875 و طراحی گرافیک

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

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

از نظر فونت ، کتابخانه Adafruit_RA8875 فقط از یک کتابخانه پشتیبانی می کند مگر اینکه در مورد بخشی از کتابخانه نظر بدهید ، که به شما امکان می دهد از فونت های کتابخانه Adafruit_GFX استفاده کنید. من کتابخانه اصلاح شده Adafruit_RA8875 را در زیر قرار دادم. من فقط چند خط کد را کامنت کردم و سپس توانستم از فونت های موجود در کتابخانه Adafruit_GFX استفاده کنم. همچنین ، برای استفاده از فونت 7 قسمتی که در این پروژه استفاده کردم ، لطفاً فایل "FreeSevenSegNumFont.h" را که در پوشه فونت ها در کتابخانه Adafruit_GFX قرار دارد ، مطمئن شوید.

مرحله 5: بارگذاری طرح

بارگذاری طرح
بارگذاری طرح
بارگذاری طرح
بارگذاری طرح

برای بارگذاری طرح در Teensy 3.6 ، باید Teensyduino را نصب کنید. سپس باید کتابخانه های Adafruit_RA8875 و Adafruit_GFX را در محل کتابخانه نوجوانان (نه محل معمول شما در اسناد) جایگزین کنید. در مک ، مجبور شدم روی نماد برنامه Arduino در برنامه ها راست کلیک کرده و سپس به مسیر/Contents/Java/hardware/teensy/avr/libraries بروم. در ویندوز ، من مطمئن هستم که در درایو C شما در فایل های Program x86 ، Arduino و سپس پوشه سخت افزار موجود است. هنگامی که این کار را انجام می دهید ، باید مکان طرح کتاب را در برنامه آردوینو با ویرایش آن در تنظیمات دلخواه به مکانهایی که کتابخانه های نوجوان شما هستند (به عنوان مثال/برنامه ها/Arduino.app/Contents/Java/hardware/teensy/avr) تغییر دهید.

به روز رسانی 7/22/16: به دلیل مشکل سنسور دمای داخلی که قبلاً در مورد آن صحبت کردم ، مجبور شدم سنسور دما ماژول DS18B20 را نصب کنم. 4 طرح آردوینو را در فایل زیپ مشاهده خواهید کرد. لطفاً اگر می خواهید از سنسور دمای داخلی ماژول OBD-II I2C استفاده کنید ، طرح display_code را بارگذاری کنید. لطفاً اگر می خواهید از ماژول DS18B20 که در بالا پیوند دادم استفاده کنید ، صفحه نمایش_کد را با طرح سنسور_ جدید

به روز رسانی 17/11/17: من چندین اشکال در نرم افزار از جمله DS18B20 که دمای 185 فارنهایت را نشان می دهد ، صفحه نمایش به هیچ عنوان در هوای سرد روشن نمی شود و پیکسل ها در تاریکی صفحه نمایش در رنگ اشتباه گیر می کنند ، برطرف کردم.

سپس ، از عکسی که در بالا دارم استفاده کنید تا مطمئن شوید تنظیمات نوجوان شما با تصویر مطابقت دارد. دریافتم که اورکلاک کردن teensy تا 240 مگاهرتز به آداپتور I2C OBD-II اجازه ارتباط با نوجوانان را نمی دهد. در نهایت ، فقط روی بارگذاری کلیک کنید.

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

مرحله 6: چاپ سه بعدی قاب LCD

چاپ سه بعدی قاب LCD
چاپ سه بعدی قاب LCD
چاپ سه بعدی قاب LCD
چاپ سه بعدی قاب LCD
چاپ سه بعدی قاب LCD
چاپ سه بعدی قاب LCD

برای محافظت از صفحه نمایش 7 اینچی ، یک صفحه چاپگر سه بعدی LCD بالا و پایین ایجاد کردم. من فایل های قسمت مخترع. IPT و همچنین فایل های. STL را ضمیمه کرده ام.

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

مرحله 7: تقسیم پورت OBD-II به گونه ای که آردوینو فقط در زمان کارکردن ماشین قدرت دارد

تقسیم بندر OBD-II بنابراین آردوینو فقط در هنگام کارکردن خودرو دارای قدرت است
تقسیم بندر OBD-II بنابراین آردوینو فقط در هنگام کارکردن خودرو دارای قدرت است
تقسیم بندر OBD-II بنابراین آردوینو فقط در هنگام کارکردن خودرو دارای قدرت است
تقسیم بندر OBD-II بنابراین آردوینو فقط در هنگام کارکردن خودرو دارای قدرت است
تقسیم بندر OBD-II بنابراین آردوینو فقط در هنگام کارکردن خودرو دارای قدرت است
تقسیم بندر OBD-II بنابراین آردوینو فقط در هنگام کارکردن خودرو دارای قدرت است

مدت کوتاهی پس از نصب صفحه نمایش خود متوجه شدم که صفحه نمایش همیشه روشن است ، حتی زمانی که ماشین خاموش است. با نگاهی به pinout OBD-II ، متوجه شدم که خط برق 12 ولت به کانکتور OBD-II همیشه مستقیماً به باتری متصل است.

برای حل این مشکل ، من یک اسپلیتر OBD-II خریدم ، سیم را در یکی از دو کانکتور شکاف به پین 16 بریدم ، و سپس آن سیم برش را به یک سیم مدار اضافه کردم.

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

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

توصیه شده: