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

مفاتيح عجلة القيادة لمحول ستيريو السيارة (CAN Bus -> Key1): 6 خطوات
مفاتيح عجلة القيادة لمحول ستيريو السيارة (CAN Bus -> Key1): 6 خطوات

فيديو: مفاتيح عجلة القيادة لمحول ستيريو السيارة (CAN Bus -> Key1): 6 خطوات

فيديو: مفاتيح عجلة القيادة لمحول ستيريو السيارة (CAN Bus -> Key1): 6 خطوات
فيديو: طريقة ضبط اعدادات شاشات الاندرويدعند تركيبها على الجمس وتشغيل(تحكم دركسون/اشارات الابواب والحساسات) 2024, شهر نوفمبر
Anonim
هل يمكن شم الحافلات
هل يمكن شم الحافلات

Key1) "src =" https://content.instructables.com/ORIG/F3X/UXCI/KCT3F9KZ/F3XUXCIKCT3F9KZ-p.webp

إرسال أوامر إلى الستيريو
إرسال أوامر إلى الستيريو

Key1) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'٪} ">

بعد أيام قليلة من شرائي سيارة مستعملة ، اكتشفت أنه لا يمكنني تشغيل الموسيقى من هاتفي عبر ستيريو السيارة. كان الأمر الأكثر إحباطًا هو أن السيارة كانت مزودة بتقنية البلوتوث ، ولكنها سمحت فقط بالمكالمات الصوتية ، وليس الموسيقى. كان يحتوي أيضًا على منفذ Windows Phone USB ، لكنه لن يعمل مع iPhone بدون دونجل 60 دولارًا.

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

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

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

اللوازم

المحول (حوالي 15 دولار)

  • Arduino Pro Mini 5V (أو لوحة متوافقة)
  • وحدة ناقل CAN MCP2515
  • 60x80mm بيرف بورد
  • مقياس الجهد الرقمي X9C104 100 كيلو أوم (يعتمد على الاستريو الخاص بك)
  • منظم تنحى DC-DC LM2596S 3-40V 3A
  • حامل فيوز الكابل + فيوز (100-200 أوم)
  • صندوق المشروع أو طابعة ثلاثية الأبعاد لطباعته
  • مقابس استريو للسيارة (ذكور + إناث)
  • لوازم اللحام والأسلاك وما إلى ذلك.

مساعدي الاختبار (ليست هناك حاجة ماسة إليها ولكنها ستجعل الاختبار أسهل بكثير)

  • Arduino (أي لوحة 5V ستفي بالغرض)
  • وحدة ناقل CAN MCP2515
  • اللوح + وصلات العبور

الخطوة 1: هل يمكن استنشاق الحافلات

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

ما نريد القيام به هو الاتصال بشبكة ناقل CAN و "شم" حركة مرور البيانات. بهذه الطريقة يمكننا "رؤية" عند الضغط على مفتاح عجلة القيادة. تحتوي كل حزمة على معرف يمثل النظام الفرعي للمركبة الذي أرسل الحزمة ، والبيانات التي تمثل حالة النظام. في هذه الحالة ، نحاول العثور على معرف النظام الفرعي الذي يرسل رسائل مفتاح عجلة القيادة ، وتمثيل البيانات لكل مفتاح.

إذا كنت محظوظًا ، فقد تجد قيم سيارتك في مكان ما عبر الإنترنت ، ويمكنك تخطي هذه الخطوة.

هذه العملية متضمنة قليلاً وقد تم شرحها بالفعل في أماكن أخرى ، لذلك سألخصها:

  • ابحث عن القيم الصحيحة لاتصالات ناقل CAN على سيارتك. بالنسبة لسيارتي (موديل 2009 فيات آيديا) ، كان معدل الباود 50 كيلو بايت في الثانية ، وسرعة الساعة 8 ميجا هرتز.
  • اتصل بشبكة ناقل CAN باستخدام وحدة ناقل CAN و Arduino بتكوين "الشم".
  • اقرأ قيم ناقل CAN على الكمبيوتر المحمول باستخدام أداة مثل https://github.com/alexandreblin/python-can-monito…. سيكون من الصعب جدًا القيام بذلك بدونها ، حيث يتم إرسال الكثير من الرسائل حتى عندما لا تقوم السيارة بأي شيء.
  • اضغط على زر عجلة القيادة ولاحظ تغيرات القيمة. قد يكون هذا صعبًا بعض الشيء حيث يتم إرسال الكثير من الرسائل وقد يكون من الصعب معرفة أيهما.

فيما يلي مقالتان رائعتان تشرحان العملية بالتفصيل:

  • https://medium.com/@alexandreblin/can-bus-reverse-…
  • https://www.instructables.com/id/CAN-Bus-Sniffing-…

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

المعرف | معرف الهيكس | بايت 0 | بايت 1 | زر

--------------------------------------------- 964 | 3C4 | 00 | 00 | لا توجد أزرار 964 | 3C4 | 04 | 00 | SRC 964 | 3C4 | 10 | 00 | >> 964 | 3C4 | 08 | 00 | << 964 | 3C4 | 00 | 80 | هاتف 964 | 3C4 | 00 | 08 | ESC 964 | 3C4 | 80 | 00 | + 964 | 3C4 | 40 | 00 | - 964 | 3C4 | 00 | 40 | فوز 964 | 3C4 | 00 | 02 | Up 964 | 3C4 | 00 | 01 | أسفل 964 | 3C4 | 00 | 04 | نعم

معرف النظام الفرعي هو 3C4 (في هذه الحالة) ، وهو رقم سداسي عشري لذا يجب أن نكتبه مثل 0x3C4 في رسومات Arduino. نحن مهتمون أيضًا بالبايتين 0 و 1 (في حالتك قد يكون هناك المزيد من البايت). هذه أيضًا قيم سداسية عشرية ، لذا يجب أيضًا كتابتها بادئ ذي بدء 0x.

إذا قمت بتحويل القيم إلى ثنائي ، فستلاحظ أن البتات لا تتداخل (على سبيل المثال + 0b10000000 و - 0b01000000) وهذا يمكن من الضغط على مفاتيح متعددة في نفس الوقت.

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

الخطوة 2: إرسال أوامر إلى الستيريو

إرسال أوامر إلى الستيريو
إرسال أوامر إلى الستيريو

قبل البدء في بناء المحول ، من الأفضل أولاً اختبار ما إذا كان جهاز الاستريو يمكنه تلقي الأوامر.

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

يحتوي جهاز الاستريو على شاشة تعلم الأوامر ، حيث يمكن تحديد إحدى قيمتي المقاومة (1K و 3.3K) ورؤية قيمة "الجهد" (0-255). ونقلت "الفولتية" لأنها مضللة. قضيت الكثير من الوقت في تطبيق الفولتية المختلفة على Key1 دون حظ. حاولت أيضًا استخدام مقاومات مختلفة لتطبيق الجهد دون حظ.

جاء هذا الاختراق عندما حاولت ملامسة سلك Key1 بأرض البطارية ، مما أدى إلى انخفاض "الجهد" إلى 0. سيؤدي هذا إلى جانب مقاومات مختلفة إلى إنتاج قيم "جهد" ثابتة على شاشة التعلم.

الآن بعد أن عرفت كيفية إرسال المدخلات إلى جهاز الاستريو ، كنت بحاجة إلى طريقة لإرسالها من Arduino. في هذه المرحلة ، لم أسمع عن مُضاعِفات الإرسال ، والتي قد تكون حلًا أسرع وأكثر موثوقية إلى جانب بعض المقاومات (ما زلت غير متأكد مما إذا كان ذلك ممكنًا) ، لذلك استخدمت مقياس جهد رقمي. في البداية واجهت مشكلات في تشغيل الوعاء الرقمي ، حتى اكتشفت أنني بحاجة إلى توصيله كمقاوم متغير ليكون بمثابة مقاوم متغير بدلاً من مقسم جهد. في الأساس كان علي توصيل المحطات الطرفية RH و RW.

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

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

الخطوة الثالثة: بناء المحول

بناء المحول
بناء المحول
بناء المحول
بناء المحول
بناء المحول
بناء المحول

بعد اختبار جميع المكونات بشكل منفصل ، وتجربتها معًا على لوح التجارب ، حان الوقت لمنحهم منزلًا دائمًا. استغرق هذا بضع ساعات من وضع المكونات واللحام.

في أعلى اليسار يوجد منظم التنحي ، الذي يحول 12 فولت من بطارية السيارة ، إلى 5 فولت والذي يمكن استخدامه بواسطة المكونات الأخرى.

في الجزء السفلي الأيسر توجد وحدة ناقل CAN ، والتي تقرأ القيم من شبكة ناقل CAN للسيارة وتعيد توجيهها إلى Arduino.

في أعلى اليمين يوجد مقياس الجهد الرقمي (السلكي كمقاوم متغير) الذي يعمل كمقاوم متغير بين الأرض ومدخلات Key1 الخاصة بالاستريو.

في أسفل اليمين يوجد Arduino ، الذي يعمل كعقل للمحول ، ويحول رسائل ناقل CAN إلى مقاومات يقرأها الاستريو.

على مدخل 12V ، يوجد فتيل 150mA ، والذي على الأرجح لن يحمي الدائرة ، ولكنه موجود لمنع نشوب حريق في حالة حدوث قصر.

الخطوة 4: البرنامج

البرنامج
البرنامج

بعد التنزيل ، ضع جميع ملفات.ino الثلاثة في مجلد واحد. بهذه الطريقة ستكون جميعها جزءًا من نفس المخطط وسيتم نشرها في Arudino معًا.

تحتاج أيضًا إلى إضافة المكتبات المطلوبة إلى Arduino IDE. للقيام بذلك ، قم بتنزيل الملفات التالية:

github.com/autowp/arduino-mcp2515/archive/…

github.com/philbowles/Arduino-X9C/archive/…

ثم أضف كلاهما بالانتقال إلى Sketch> Include Library> Add. Zip Library …

CanBusStereoAdapter.ino

يتم تنفيذ الإعداد الأساسي في هذا الملف.

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

لا تحتوي جميع السيارات على نفس أوامر عجلة القيادة ، لذا لا تتردد في إزالة القيم المحددة أو إضافتها أو تعديلها.

لا تنس استبدال معرف النظام الفرعي الخاص بك في "STEERING_ID".

CanBus.ino

يقوم هذا الملف بإعداد مستمع ناقل CAN ، ويفسر الحزم ، ويضع قيم المقاومة في مخزن مؤقت دائري.

اضبط تكوين ناقل CAN في وظيفة "setupCanBus" ليناسب سيارتك.

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

إذا قمت بتغيير أي من تعريفات الأوامر في "CanBusStereoAdapter.ino" ، فستحتاج أيضًا إلى تحديثها في وظيفة "handleMessageData". يتحقق "handleMessageData" مما إذا كانت إطارات بيانات ناقل CAN المتوفرة تحتوي على أي من الأوامر المعروفة باستخدام عملية "و" بت.

على سبيل المثال ، إذا قمت بالضغط على >> و + في نفس الوقت ، فسيعطينا إطار بيانات بقيمة 0b10010000. >> (لسيارتي) هي 0b00010000 في نظام ثنائي ، و + هي 0b10000000.

--------------- >> -------------- + ------------- << --- - بيانات 0 | 0b10010000 | 0b10010000 | 0b10010000 الأمر | و 0b00010000 | و 0b10000000 | نتيجة 0b00001000 | = 0b00010000 | = 0b10000000 | = 0b00000000

هنا يمكننا أن نرى أن نتيجة العملية AND ستكون أكبر من 0 إذا كان الأمر موجودًا في إطار البيانات. لذلك كل ما يتعين علينا القيام به هو التحقق من {إطار البيانات} & {قيمة الأمر}> 0 ، لكل أمر حددناه.

ضع في اعتبارك أن كل إطار بيانات يحتوي على أوامر مختلفة ، لذلك لا بأس إذا كانت قيم الأوامر هي نفسها ، حيث أننا نتحقق منها مقابل الإطارات الخاصة بها. في المثال الخاص بي ، يكون لكل من << و ESC نفس القيمة 0b00001000 (0x08) ، ولكن << موجود في data0 و ESC في data1.

بعد أن قررنا أن الأمر موجود في إطار ، نضيف قيمة وعاء رقمية إلى المخزن المؤقت الدائري. تتراوح القيم من 0 إلى 99 ، لكنني لاحظت أن "الجهد" الذي يقرأه جهاز الاستريو ليس خطيًا ، لذا اختبر القيم بنفسك.

DigitalPot.ino

هذا الملف يخرج القيم من المخزن المؤقت الدائري ويرسلها إلى الوعاء الرقمي للتنفيذ. في حالتي "pot.setPotMin (false) ؛" سيزيد المقاومة إلى الحد الأقصى ، والذي سيقرأه المجسم على أنه أقصى "جهد". قد يتطلب منك الاستريو ضبط الوعاء الرقمي على الحد الأدنى ، لذا اختبره.

الخطوة الخامسة: ضميمة المشروع

ضميمة المشروع
ضميمة المشروع

لدي طابعة ثلاثية الأبعاد لذلك قررت طباعة حاوية مكونة من جزأين للمحول الخاص بي. لقد قمت بتضمين ملف Fusion 360 يمكنك تحريره ، وملفات gcode التي تناسب لوحة perfboard مقاس 60x80mm.

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

الخطوة السادسة: الأفكار النهائية

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

من اختباراتي استهلاك الطاقة هو 20-30 مللي أمبير. لقد خفضته إلى 10 مللي أمبير في وضع السكون ، ويمكن أن أخفض حتى عن طريق إزالة مصابيح LED من المكونات ، لكنني قررت ألا أزعجها لأنها ستعمل فقط أثناء تشغيل السيارة.

أنا سعيد جدًا بالنتيجة النهائية. وقت الاستجابة معقول ، ونادرًا ما يفوت الأوامر.

على الرغم من أن استثماري في الوقت كان أكبر بكثير من تكلفة المهايئ المتوفر تجاريًا (الذي لم ينجح) ، فإن المعرفة التي اكتسبتها لا تقدر بثمن.

موصى به: