جدول المحتويات:

شاشة عرض سيارة اردوينو: 7 خطوات (بالصور)
شاشة عرض سيارة اردوينو: 7 خطوات (بالصور)

فيديو: شاشة عرض سيارة اردوينو: 7 خطوات (بالصور)

فيديو: شاشة عرض سيارة اردوينو: 7 خطوات (بالصور)
فيديو: الأردوينو ☑️ OLED مقدمة عن كيفية استخدام شاشة 2024, يوليو
Anonim
Image
Image
عرض سيارة اردوينو
عرض سيارة اردوينو
عرض سيارة اردوينو
عرض سيارة اردوينو

لقد صممت شاشة قائمة على التشخيصات (OBD-II) باستخدام شاشة TFT LCD مقاس 7 بوصات من Adafruit ، ومحول Teensy 3.6 ، ومحول Freematics OBD-II I2C ، وبعض مستشعرات النسخ الاحتياطي التي وجدتها في Amazon. تحتوي الشاشة على صفحتين: واحدة عندما تكون سيارة هوندا أكورد في القيادة والأخرى عندما تكون في الاتجاه المعاكس.

عندما تكون سيارتي في وضع القيادة ، يتم عرض عدد الدورات في الدقيقة ، و MPH ، ونسبة تحميل المحرك ، والجهد الكهربائي للبطارية ، ودرجة حرارة المقصورة ، ودرجة حرارة سائل تبريد المحرك (هناك العديد من إحصائيات السيارة الأخرى المتاحة للعرض إذا لم يرغب المرء في ذلك).

عندما تكون سيارتي في الاتجاه المعاكس ، يقرأ Teensy 3.6 المتوافق مع Arduino IDE صورة نقطية متحركة لسيارتي التي عثرت عليها عبر الإنترنت ، ويعرضها ، ثم يقرأ أجهزة الاستشعار الاحتياطية. كل من أجهزة الاستشعار الأربعة لها مسافة بالقدم بالإضافة إلى رسم متحرك خلف السيارة يتغير لونه بناءً على مدى قرب الكائن من السيارة (يعني اللون الأخضر فقط <5 أقدام والأخضر والأصفر يعني <2.6 قدم والأخضر والأصفر ، والأحمر يعني <1 قدم).

أخيرًا ، أضفت القدرة على تعتيم الشاشة في الليل.

تبدو النتيجة النهائية رائعة وتعمل جيدًا في سيارتي. لقد انتهى بي الأمر بتثبيته في وحدة التحكم المركزية ، والتي كانت عملية أخرى كاملة لن أخوض فيها في هذه التعليمات. قائمة الأجزاء التي استخدمتها لإنشاء شاشة LCD هذه مذكورة أدناه.

1) محول Freematics OBD-II - 35 دولارًا

2) أجهزة الاستشعار الاحتياطية - 15 دولارًا

3) شاشة TFT LCD مقاس 7 بوصات - 38 دولارًا

4) برنامج تشغيل شاشة LCD المستند إلى SPI - 35 دولارًا

5) Teensy 3.6 - 30 دولارًا

6) المستوى شيفتر - 4 دولارات

7) 74HC125 Tri State Buffer IC - 6 دولارات مقابل عبوتين (أنا متأكد من أنه يمكنك العثور على هذا البهجة في مكان آخر)

8) بطاقة MicroSD> = 1 جيجابايت - 4 دولارات

9) الأسلاك والمكثفات والمقاومات.

10) LP3470-2.93 الطاقة على إعادة تعيين IC - 2 دولار

11) (اختياري): مستشعر درجة الحرارة DS18B20 - 8 دولارات

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

13) (اختياري): أضف سلك فتيل دائرة - 8 دولارات للحزمة المكونة من 5

الخطوة الأولى: قراءة مجسات النسخ الاحتياطي

قراءة مجسات النسخ الاحتياطي
قراءة مجسات النسخ الاحتياطي
قراءة مجسات النسخ الاحتياطي
قراءة مجسات النسخ الاحتياطي
قراءة مجسات النسخ الاحتياطي
قراءة مجسات النسخ الاحتياطي
قراءة مجسات النسخ الاحتياطي
قراءة مجسات النسخ الاحتياطي

هذه الخطوة صعبة لأن أجهزة الاستشعار الاحتياطية هذه تتصل بجهاز الإرسال والاستقبال ثم إلى شاشة LCD صغيرة كما هو موضح في الصورة أعلاه. كنت أرغب في طريقة للتخلص من شاشة العرض الخاصة بهم واستخدام شاشتي الخاصة. بمساعدة أحد مواقع الويب التي عثرت عليها بعد بعض عمليات googling (اختراق مستشعرات وقوف السيارات العكسي) ، تمكنت من قراءة بروتوكول الاتصال الخاص الذي يرسله جهاز الإرسال والاستقبال إلى شاشة LCD. لسبب ما ، لا يعد بروتوكول الاتصال بروتوكولًا نموذجيًا مثل I2C و UART و CAN و USB وما إلى ذلك ، ويختلف البروتوكول اعتمادًا على المورد. أوصي بشدة بشراء المجموعة التي ربطتها أعلاه إذا كنت ستستخدم الكود الخاص بي لأنه تمت كتابته خصيصًا لتلك المستشعرات.

قبل فصل شاشة LCD التي قدموها ، قمت بفحص الأسلاك الثلاثة التي تربط جهاز الإرسال والاستقبال وشاشة LCD. كان هناك + 5V سلك أحمر وسلك أسود أرضي وسلك أزرق. بعد ربط مرسمة الذبذبات الخاصة بي بالسلك الأزرق والأرض ، رأيت أثرًا مشابهًا للصورة الموضحة أعلاه ولكن ليس بالضبط (لقد استخدمت الصورة من موقع الويب المرتبط أعلاه). كان لتتبعى بتة بدء ذات مدة أطول عالية ، متبوعة بـ 17 بتة أخرى ذات مدة أقصر. لا تحتوي البتات 0-5 بعد بت البداية على معلومات مفيدة. تتوافق البتات 6-8 مع المستشعر A أو B أو C أو D. تتوافق البتات 9-16 مع الطول بالأمتار. لقد قمت بتضمين رسم Arduino IDE يقرأ المستشعرات ويخرج البيانات عبر وحدة التحكم التسلسلية.

الخطوة 2: إنشاء صورة نقطية ووضعها على بطاقة MicroSD

إنشاء الصورة النقطية ووضعها على بطاقة MicroSD
إنشاء الصورة النقطية ووضعها على بطاقة MicroSD
إنشاء الصورة النقطية ووضعها على بطاقة MicroSD
إنشاء الصورة النقطية ووضعها على بطاقة MicroSD

لقد استخدمت برنامجًا مجانيًا لتحرير الصور يسمى GIMP لاقتصاص صورة لسيارتي وتغيير حجمها من العرض العلوي. ثم قمت بتصدير الصورة كصورة نقطية 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 LCD جيدة المظهر مقاس 7 بوصات يتم تشغيلها بواسطة IC يسمى RA8875. اخترت هذا العرض وبرنامج تشغيل العرض لسببين. أولاً ، هناك مكتبات واسعة مكتوبة مسبقًا للعرض. ثانيًا ، يمكن لبرنامج تشغيل العرض التحدث إلى أي متحكم دقيق فوق SPI ، مما يعني عدم وجود العديد من الأسلاك التي تربط المتحكم الدقيق بـ RA8875.

هناك نوعان من الجوانب السلبية لهذا الإعداد. الأول هو حقيقة وجود خلل في الجهاز في لوحة RA8875 من Adafruit يتطلب استخدام 74HC125 ثلاثي الحالة IC إذا كنت تريد استخدام أي جهاز قائم على SPI مثل بطاقة SD. لفهم خطأ الأجهزة بشكل كامل ، يرجى قراءة المنتدى التالي. ثانيًا ، هو مقدار الوقت الطويل نسبيًا الذي يستغرقه إرسال الصور إلى شاشة LCD. أيضًا ، يرجع مقدار الوقت الطويل الذي يستغرقه إرسال صورة إلى شاشة LCD إلى اتصال SPI ، والذي يقتصر على سرعة ساعة وحدات التحكم الدقيقة والكمية الكبيرة من البيانات التي يجب إرسالها إلى برنامج تشغيل العرض. عدد قليل جدًا من الأسلاك.

لقد قمت بإنشاء مخطط Fritzing بحيث يمكن لأي شخص يرغب في إنشاء هذه الشاشة أن يقرأ بسهولة ما يتصل به المسامير الموجودة على Teensy 3.6. لقد قمت بتضمين ملف.frz أدناه. المكونان الوحيدان اللذان لم يتم وصفهما هما المكثفات ، وهما مكثف إلكتروليتي 1F 16V ومكثف سيراميك 100μF. لقد قمت بتضمينها للتأكد من أن طاقة وحدة التحكم الدقيقة Teensy كانت ثابتة DC + 5V ولم تحتوي على أي طفرات في الجهد (قد لا تكون ضرورية ولكني قمت بتضمينها لأن مصدر جهد السيارة يمكن أن يتقلب بسرعة اعتمادًا على الحمل على البطارية).

بعض الأشياء لذكرها حول المكونات. أولاً ، يأخذ محول المستوى أي إشارة 5 فولت ويحولها إلى جهد 3.3 فولت Teensy 3.6 آمن. هذا ضروري لمحول OBD I2C وكذلك جهاز الإرسال والاستقبال المستشعر الاحتياطي. ثانيًا ، تتطلب خطوط I2C للمراهقين مقاومات سحب 4.7kΩ. ثالثًا ، تعتبر المقاومات الأربعة التي تربط "سلك الليل" (سلك التعتيم) و "سلك التعشيق الاحتياطي" ضرورية لتكون بمثابة مقسم للجهد لتخفيض إشارات 12V-13V إلى حوالي 2.5-3V إشارات.

تحديث 7/22/18: لقد وجدت أن مستشعر درجة الحرارة الداخلية لوحدة OBD-I2C ينتج أرقامًا غريبة جدًا. في بعض الأحيان ، ستنجح ، ولكن في معظم الأحيان ، كانت الوحدة تنتج درجات حرارة أعلى من 400 درجة فهرنهايت ، ولهذا السبب ، قررت إضافة مستشعر درجة الحرارة ds18b20 الخاص بي. مرحبًا بك لاستخدام أي نوع من مستشعرات درجة الحرارة هنا ، ولكن سيتعين عليك تحرير كود Arduino.

تحديث 3/1/19: لا يبدأ Teensy 3.6 عندما يكون الجو شديد البرودة. أضفت طاقة إلى دائرة إعادة التعيين للتأكد من أنها تعمل بشكل صحيح.

الخطوة 4: برنامج تشغيل شاشة RA8875 وتصميم الرسومات

برنامج تشغيل شاشة RA8875 وتصميم الرسومات
برنامج تشغيل شاشة RA8875 وتصميم الرسومات

يحتوي برنامج تشغيل العرض RA8875 على مكتبة تسمى Adafruit_RA8875 ، والتي استخدمتها عند إنشاء الأشكال التي تظهر في الصفحة الأولى والصفحة الثانية. يمكن لمكتبة RA8875 فقط إنشاء خطوط ومستطيلات ومستطيلات مستديرة الزوايا ومثلثات وأشكال بيضاوية ودوائر ، لذلك يجب تصميم الرسومات بطريقة ذكية لإنشاء أشكال أكثر تعقيدًا. على سبيل المثال ، الحلقة الرمادية في الصفحة الأولى هي في الواقع دائرة رمادية كاملة قطرها أكبر متبوعة بدائرة سوداء كاملة ذات قطر أصغر. أيضًا ، يحتوي قسم صغير من صفحة مستشعر النسخ الاحتياطي على مثلثين مرتبة بطريقة تجعلهم يشكلون شكلًا مضلعًا. لقد فعلت ذلك حتى أتمكن من تغيير لون قسم فردي من صفحة مستشعر النسخ الاحتياطي. يحتوي ملف Arduino الخاص بالشاشة على مجموعة من النقاط التي استخدمتها لتتبع مكان وجود المثلثات والأشكال الأخرى.

لقد استخدمت هذا الموقع الرائع لاختيار ألوان 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 في موقع المكتبة الصغير (وليس موقعك المعتاد في المستندات). في نظام التشغيل Mac ، كان علي النقر بزر الماوس الأيمن فوق رمز تطبيق Arduino في التطبيقات ، ثم الانتقال إلى / Contents / Java / Hardware / teensy / avr / libraries. في نظام التشغيل windows ، أنا متأكد من أنه موجود أسفل محرك الأقراص C في ملفات البرامج x86 و Arduino ثم مجلد الأجهزة هناك. بمجرد القيام بذلك ، ستحتاج إلى تغيير موقع كراسة الرسم في تطبيق Arduino عن طريق تحريره في التفضيلات إلى أي مكان توجد فيه مكتباتك الصغيرة (على سبيل المثال /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

تحديث 7/22/16: بسبب مشكلة مستشعر درجة الحرارة الداخلية التي تحدثت عنها سابقًا ، اضطررت إلى تثبيت مستشعر درجة حرارة وحدة DS18B20. سترى 4 رسومات اردوينو في ملف مضغوط. يرجى تحميل رسم رمز العرض إذا كنت تريد استخدام مستشعر درجة الحرارة الداخلية لوحدة OBD-II I2C. يرجى تحميل display_code_with_new_temperature_sensor Sketch إذا كنت تريد استخدام وحدة DS18B20 التي ربطتها أعلاه.

تحديث 11/17/17: لقد أصلحت العديد من الأخطاء في البرنامج بما في ذلك DS18B20 بإخراج درجة حرارة 185 فهرنهايت ، ولا يتم تشغيل الشاشة على الإطلاق في الطقس البارد ، وتتعطل وحدات البكسل باللون الخطأ عند تعتيم الشاشة.

بعد ذلك ، استخدم الصورة الموجودة أعلاه للتأكد من مطابقة إعدادات المراهقين للصورة. لقد وجدت أن رفع تردد التشغيل للمراهقين إلى 240 ميجاهرتز لا يسمح لمحول I2C OBD-II بالتواصل مع المراهقين. أخيرًا ، فقط انقر فوق تحميل.

لقد كتبت تعليقات واسعة جدًا في ملفات رسم اردوينو. الرجاء البحث هناك للحصول على شرح لكيفية عمل البرنامج. لا تتردد في الاتصال بي مع أي أسئلة. سأحاول الرد عليهم بأفضل ما لدي. حظا طيبا وفقك الله!

الخطوة 6: طباعة علبة LCD ثلاثية الأبعاد

3D طباعة علبة LCD
3D طباعة علبة LCD
3D طباعة علبة LCD
3D طباعة علبة LCD
3D طباعة علبة LCD
3D طباعة علبة LCD

لقد قمت بإنشاء غطاء علوي وسفلي لشاشة LCD مطبوعة ثلاثية الأبعاد لحماية الشاشة مقاس 7 بوصات. لقد قمت بإرفاق ملفات جزء مخترع. IPT بالإضافة إلى ملفات. STL.

لقد قمت أيضًا بتضمين جزء يسمى backup_sensor_ring.ipt ، وهو عبارة عن حلقة تناسب مستشعرات النسخ الاحتياطي التي ربطتها أعلاه. كانت سيارتي تحتوي بالفعل على فتحات استشعار احتياطية مسبقة الحفر كانت كبيرة جدًا بالنسبة لأجهزة الاستشعار الاحتياطية التي اشتريتها من أمازون ، لذلك اضطررت إلى إنشاء حلقة تتناسب مع أجهزة الاستشعار الاحتياطية. إذا كنت ستحفر في المصد الخاص بك باستخدام قطعة الحفر الدائرية المضمنة في المجموعة ، فلن تحتاج إلى هذا الجزء.

الخطوة 7: تقسيم منفذ OBD-II بحيث لا يتمتع Arduino بالطاقة إلا عند تشغيل السيارة

تقسيم منفذ OBD-II بحيث لا يتمتع Arduino بالطاقة إلا عند تشغيل السيارة
تقسيم منفذ OBD-II بحيث لا يتمتع Arduino بالطاقة إلا عند تشغيل السيارة
تقسيم منفذ OBD-II بحيث لا يتمتع Arduino بالطاقة إلا عند تشغيل السيارة
تقسيم منفذ OBD-II بحيث لا يتمتع Arduino بالطاقة إلا عند تشغيل السيارة
تقسيم منفذ OBD-II بحيث لا يتمتع Arduino بالطاقة إلا عند تشغيل السيارة
تقسيم منفذ OBD-II بحيث لا يتمتع Arduino بالطاقة إلا عند تشغيل السيارة

أدركت بعد فترة وجيزة من تثبيت شاشتي أن الشاشة كانت تعمل دائمًا ، حتى عندما كانت السيارة مطفأة. بالنظر إلى pinout OBD-II ، وجدت أن خط الطاقة 12 فولت إلى موصل OBD-II متصل دائمًا بالبطارية مباشرة.

للتغلب على هذا ، اشتريت جهاز تقسيم OBD-II ، وقمت بقطع السلك إلى دبوس 16 على أحد الموصلين الموجودين على جهاز التقسيم ، ثم قمت بتوصيل هذا السلك المقطوع بسلك دائري إضافي.

بعد ذلك ، باستخدام جهاز القياس المتعدد ، ذهبت إلى صندوق المصاهر الجانبي للسائق واختبرت الصمامات الموجودة لمعرفة المصهر الذي حصل على الطاقة بعد أن تم تحويل المفتاح إلى الاشتعال.

أخيرًا ، قمت بتوصيل سلك الدائرة المضافة إلى المصهر الذي حددته بحيث لا يتم تشغيل الشاشة الآن إلا عند تشغيل سيارتي. يرجى إجراء بعض الأبحاث حول كيفية إضافة دائرة كهربائية لسيارتك بشكل صحيح. لقد وجدت أن هذا البرنامج التعليمي على youtube جيد.

موصى به: