विषयसूची:

Arduino कार डिस्प्ले: 7 स्टेप्स (चित्रों के साथ)
Arduino कार डिस्प्ले: 7 स्टेप्स (चित्रों के साथ)

वीडियो: Arduino कार डिस्प्ले: 7 स्टेप्स (चित्रों के साथ)

वीडियो: Arduino कार डिस्प्ले: 7 स्टेप्स (चित्रों के साथ)
वीडियो: Amazing arduino project 2024, जुलाई
Anonim
Image
Image
Arduino कार डिस्प्ले
Arduino कार डिस्प्ले
Arduino कार डिस्प्ले
Arduino कार डिस्प्ले

मैंने एडफ्रूट से 7 टीएफटी एलसीडी, एक टेन्सी 3.6, फ्रीमैटिक्स ओबीडी-द्वितीय आई 2 सी एडाप्टर, और अमेज़ॅन पर मिले कुछ चीप बैकअप सेंसर का उपयोग करके ऑन-बोर्ड डायग्नोस्टिक्स (ओबीडी-द्वितीय) आधारित डिस्प्ले बनाया। डिस्प्ले में दो पेज हैं: एक के लिए जब मेरी होंडा अकॉर्ड ड्राइव में है और एक जब यह रिवर्स में है।

जब मेरी कार ड्राइव में होती है, तो आरपीएम, एमपीएच, इंजन लोड प्रतिशत, बैटरी वोल्टेज, केबिन तापमान और इंजन कूलेंट तापमान प्रदर्शित होता है (यदि कोई इन्हें नहीं चाहता है तो प्रदर्शित करने के लिए कई अन्य वाहन आंकड़े उपलब्ध हैं)।

जब मेरी कार रिवर्स में होती है, तो Arduino IDE संगत Teensy 3.6 मेरी कार की एक एनिमेटेड बिटमैप छवि को पढ़ता है जो मुझे ऑनलाइन मिली, इसे प्रदर्शित करता है, और फिर बैकअप सेंसर पढ़ता है। चार सेंसरों में से प्रत्येक में पैरों में उनकी दूरी होती है और कार के पीछे एक एनीमेशन होता है जो रंग बदलता है कि वस्तु कार के कितने करीब है (सिर्फ हरे रंग का मतलब <5 फीट, हरा और पीला मतलब <2.6 फीट, और हरा, पीला, और लाल का अर्थ है <1 फुट)।

अंत में, मैंने रात में डिस्प्ले को डिम करने की क्षमता जोड़ी।

अंतिम परिणाम बहुत अच्छा लग रहा है और मेरी कार में बहुत अच्छा काम करता है। मैंने इसे केंद्र कंसोल में स्थापित करना भी समाप्त कर दिया, जो कि एक पूरी अन्य प्रक्रिया थी जिसे मैं इस निर्देश में शामिल नहीं करूंगा। इस LCD डिस्प्ले को बनाने के लिए मैंने जिन हिस्सों का उपयोग किया है, उनकी सूची नीचे है।

1) फ्रीमैटिक्स ओबीडी-द्वितीय एडाप्टर - $35

2) बैकअप सेंसर - $15

3) 7 टीएफटी एलसीडी डिस्प्ले - $38

4) एसपीआई आधारित एलसीडी डिस्प्ले ड्राइवर - $35

५) किशोर ३.६ - $३०

6) लेवल शिफ्टर - $4

७) ७४एचसी१२५ ट्राई स्टेट बफर आईसी - २ पैक के लिए $६ (मुझे यकीन है कि आपको यह चीपर कहीं और मिल सकता है)

8) माइक्रोएसडी कार्ड>= 1 जीबी - $4

9) तार, कैपेसिटर और प्रतिरोधक।

10) LP3470-2.93 रीसेट IC पर पावर - $2

11) (वैकल्पिक): DS18B20 तापमान सेंसर - $8

12) (वैकल्पिक): OBD-II स्प्लिटर - $10

१३) (वैकल्पिक): एक सर्किट फ्यूज कॉर्ड जोड़ें - ५. के पैक के लिए $८

चरण 1: बैकअप सेंसर पढ़ना

बैकअप सेंसर पढ़ना
बैकअप सेंसर पढ़ना
बैकअप सेंसर पढ़ना
बैकअप सेंसर पढ़ना
बैकअप सेंसर पढ़ना
बैकअप सेंसर पढ़ना
बैकअप सेंसर पढ़ना
बैकअप सेंसर पढ़ना

यह कदम मुश्किल है क्योंकि ये बैकअप सेंसर एक ट्रांसीवर और फिर एक छोटे एलसीडी से संचार करते हैं जैसा कि ऊपर की तस्वीर में देखा गया है। मैं उनके प्रदर्शन से छुटकारा पाने और अपना खुद का उपयोग करने का एक तरीका चाहता था। कुछ गुगलिंग (हैकिंग रिवर्स पार्किंग सेंसर) के बाद मुझे मिली एक वेबसाइट की मदद से, मैं मालिकाना संचार प्रोटोकॉल को पढ़ने में सक्षम था जिसे ट्रांसीवर एलसीडी स्क्रीन पर भेजता है। किसी कारण से, संचार प्रोटोकॉल एक विशिष्ट नहीं है जैसे I2C, UART, CAN, USB, आदि और प्रोटोकॉल आपूर्तिकर्ता के आधार पर भिन्न होता है। मैं अत्यधिक अनुशंसा करता हूं कि यदि आप मेरे कोड का उपयोग करने जा रहे हैं तो आप ऊपर लिंक किए गए सेट को खरीद लें क्योंकि यह विशेष रूप से उन सेंसर के लिए लिखा गया था।

उनके द्वारा प्रदान की गई एलसीडी को डिस्कनेक्ट करने से पहले, मैंने ट्रांसीवर और एलसीडी में शामिल होने वाले तीन तारों की जांच की। +5V लाल तार, जमीन का काला तार और एक नीला तार था। अपने आस्टसीलस्कप को नीले तार और जमीन से जोड़ने के बाद, मैंने ऊपर देखे गए चित्र के समान एक निशान देखा, लेकिन बिल्कुल नहीं (मैंने ऊपर लिंक की गई वेबसाइट से चित्र का उपयोग किया)। मेरे ट्रेस में एक उच्च लंबी अवधि की शुरुआत बिट थी, इसके बाद 17 और छोटी अवधि के बिट्स थे। बिट 0-5 प्रारंभ बिट के बाद उपयोगी जानकारी नहीं थी। बिट्स 6-8 सेंसर ए, बी, सी, या डी के अनुरूप हैं। बिट्स 9-16 मीटर में लंबाई के अनुरूप हैं। मैंने एक Arduino IDE स्केच शामिल किया जो सेंसर को पढ़ता है और सीरियल कंसोल पर डेटा को आउटपुट करता है।

चरण 2: बिटमैप छवि बनाना और उसे माइक्रोएसडी कार्ड पर रखना

बिटमैप छवि बनाना और उसे माइक्रोएसडी कार्ड पर रखना
बिटमैप छवि बनाना और उसे माइक्रोएसडी कार्ड पर रखना
बिटमैप छवि बनाना और उसे माइक्रोएसडी कार्ड पर रखना
बिटमैप छवि बनाना और उसे माइक्रोएसडी कार्ड पर रखना

मैंने शीर्ष दृश्य से अपनी कार की एक छवि को क्रॉप करने और उसका आकार बदलने के लिए GIMP नामक एक मुफ्त फोटो संपादन सॉफ्टवेयर का उपयोग किया। फिर मैंने छवि को "car.bmp" नाम की 24 बिट बिटमैप छवि के रूप में निर्यात किया जो कि 110 पिक्सेल गुणा 250 पिक्सेल है। मैंने इसे एक माइक्रोएसडी कार्ड पर अपलोड किया और माइक्रोएसडी कार्ड को अपने टेन्सी 3.6 माइक्रोकंट्रोलर में डाल दिया।

यूएनओ के बजाय टेन्सी 3.6 के साथ जाने का मुख्य कारण वह गति थी जिस पर टेन्सी एक एसडी कार्ड पढ़ सकता था और आरए 8875 डिस्प्ले ड्राइवर का उपयोग करके छवि प्रदर्शित कर सकता था। UNO का उपयोग करते हुए, इस प्रक्रिया में लगभग 8 सेकंड का समय लगा, जबकि एक Teensy 3.6 में 1.8 सेकंड का समय लगा।

चरण 3: हार्डवेयर को जोड़ना

हार्डवेयर को जोड़ना
हार्डवेयर को जोड़ना

एडफ्रूट में वास्तव में अच्छा दिखने वाला 7 टीएफटी एलसीडी है जो आरए 8875 नामक आईसी द्वारा संचालित है। मैंने इस डिस्प्ले और डिस्प्ले ड्राइवर को दो कारणों से चुना है। पहला, डिस्प्ले के लिए पहले से लिखे गए व्यापक पुस्तकालय हैं। दूसरा, डिस्प्ले ड्राइवर बात कर सकता है SPI पर कोई भी माइक्रोकंट्रोलर, जिसका अर्थ है कि माइक्रोकंट्रोलर को RA8875 से जोड़ने वाले कई तार नहीं हैं।

इस सेटअप में दो डाउनसाइड हैं। पहला तथ्य यह है कि Adafruit के RA8875 बोर्ड के साथ एक हार्डवेयर बग है जिसमें 74HC125 ट्राई-स्टेट बफर IC के उपयोग की आवश्यकता होती है यदि आप किसी SPI आधारित डिवाइस जैसे SD कार्ड का उपयोग करना चाहते हैं। हार्डवेयर बग को पूरी तरह से समझने के लिए, कृपया निम्न फ़ोरम पढ़ें। दूसरा, एलसीडी पर छवियों को भेजने में अपेक्षाकृत लंबा समय लगता है। साथ ही, एलसीडी को एक छवि भेजने में लगने वाला लंबा समय एसपीआई कनेक्शन के कारण होता है, जो कि माइक्रोकंट्रोलर्स की घड़ी की गति और बड़ी मात्रा में डेटा द्वारा सीमित होता है जिसे डिस्प्ले ड्राइवर को भेजना पड़ता है। बहुत कम तार।

मैंने एक फ्रिट्ज़िंग योजनाबद्ध बनाया ताकि कोई भी जो इस डिस्प्ले को बनाना चाहे वह आसानी से पढ़ सके कि टेन्सी 3.6 पर कौन से पिन कनेक्ट होते हैं। मैंने नीचे एक.frz फ़ाइल शामिल की है। केवल दो घटक जिन्हें लेबल नहीं किया गया है वे कैपेसिटर हैं, जो एक 1F 16V इलेक्ट्रोलाइटिक कैपेसिटर और एक 100μF सिरेमिक कैपेसिटर हैं। मैंने यह सुनिश्चित करने के लिए इन्हें शामिल किया कि टेनेसी माइक्रोकंट्रोलर की शक्ति स्थिर डीसी + 5 वी थी और इसमें कोई वोल्टेज स्पाइक्स नहीं थे (आवश्यक नहीं हो सकता है लेकिन मैंने उन्हें शामिल किया क्योंकि बैटरी पर लोड के आधार पर कार की वोल्टेज आपूर्ति में तेजी से उतार-चढ़ाव हो सकता है)।

घटकों के बारे में उल्लेख करने के लिए कुछ बातें। सबसे पहले, लेवल शिफ्टर कोई भी 5V सिग्नल लेता है और इसे 3.3V Teensy 3.6 सुरक्षित वोल्टेज में बदल देता है। यह OBD I2C अडैप्टर के साथ-साथ बैकअप सेंसर ट्रांसीवर के लिए आवश्यक है। दूसरा, किशोरावस्था की I2C लाइनों के लिए 4.7kΩ पुल अप रेसिस्टर्स की आवश्यकता होती है। तीसरा, "नाइट टाइम वायर" (डिमिंग वायर) और "बैकअप एंगेज वायर" को जोड़ने वाले चार प्रतिरोधक 12V-13V सिग्नल को लगभग 2.5-3V सिग्नल तक लाने के लिए वोल्टेज डिवाइडर के रूप में काम करने के लिए आवश्यक हैं।

अद्यतन 7/22/18: मैंने OBD-I2C मॉड्यूल के आंतरिक तापमान संवेदक को बहुत ही अजीब संख्या में आउटपुट करने के लिए पाया। कभी-कभी यह काम करेगा, लेकिन ज्यादातर समय, मॉड्यूल 400 डिग्री फ़ारेनहाइट से ऊपर तापमान का उत्पादन कर रहा था। इस वजह से, मैंने अपना खुद का डीएस 18 बी 20 तापमान सेंसर जोड़ने का फैसला किया। यहां किसी भी प्रकार के तापमान सेंसर का उपयोग करने के लिए आपका स्वागत है, लेकिन आपको Arduino कोड को संपादित करना होगा।

अद्यतन ३/१/१९: बहुत ठंड होने पर किशोर ३.६ शुरू नहीं होता है। मैंने यह सुनिश्चित करने के लिए रीसेट सर्किट पर एक शक्ति जोड़ी है कि यह ठीक से बूट हो।

चरण 4: RA8875 डिस्प्ले ड्राइवर और ग्राफिक्स डिज़ाइन

RA8875 डिस्प्ले ड्राइवर और ग्राफिक्स डिजाइन
RA8875 डिस्प्ले ड्राइवर और ग्राफिक्स डिजाइन

RA8875 डिस्प्ले ड्राइवर के पास Adafruit_RA8875 नामक एक पुस्तकालय है, जिसका उपयोग मैंने पहले पृष्ठ और दूसरे पृष्ठ पर दिखाई देने वाली आकृतियों को बनाते समय किया था। RA8875 के लिए पुस्तकालय केवल रेखाएँ, आयत, गोल आयत, त्रिभुज, दीर्घवृत्त और वृत्त बना सकता है, इसलिए ग्राफिक्स को अधिक जटिल आकार बनाने के लिए एक चतुर तरीके से डिज़ाइन करना होगा। उदाहरण के लिए, पहले पृष्ठ पर ग्रे रिंग वास्तव में एक बड़े व्यास का एक पूर्ण ग्रे सर्कल है जिसके बाद एक छोटे व्यास का एक पूर्ण काला सर्कल होता है। साथ ही, बैकअप सेंसर पेज के एक छोटे से हिस्से में 2 त्रिकोण इस तरह से व्यवस्थित होते हैं कि वे एक बहुभुज आकार बनाते हैं। मैंने ऐसा इसलिए किया ताकि मैं बैकअप सेंसर पेज के एक अलग सेक्शन का रंग बदल सकूं। प्रदर्शन के लिए 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 पुस्तकालयों को बदलने की आवश्यकता होगी। मैक पर, मुझे एप्लिकेशन में Arduino एप्लिकेशन आइकन पर राइट क्लिक करना था, और फिर /Contents/Java/hardware/teensy/avr/libraries पर नेविगेट करना था। विंडोज़ पर, मुझे पूरा यकीन है कि यह प्रोग्राम फाइल x86, Arduino, और फिर वहां हार्डवेयर फ़ोल्डर में आपके सी ड्राइव के नीचे है। एक बार जब आप ऐसा कर लेते हैं, तो आपको Arduino एप्लिकेशन में स्केचबुक स्थान को वरीयताओं में संपादित करके बदलना होगा, जहां कभी भी आपके किशोर पुस्तकालय हैं (यानी /Applications/Arduino.app/Contents/Java/hardware/teensy/avr)।

अद्यतन 7/22/16: आंतरिक तापमान सेंसर समस्या के बारे में मैंने पहले बात की थी, मुझे एक DS18B20 मॉड्यूल तापमान सेंसर स्थापित करना पड़ा। आपको जिप फाइल में 4 आर्डिनो स्केच दिखाई देंगे। यदि आप OBD-II I2C मॉड्यूल के आंतरिक तापमान सेंसर का उपयोग करना चाहते हैं, तो कृपया डिस्प्ले_कोड स्केच अपलोड करें। यदि आप ऊपर लिंक किए गए DS18B20 मॉड्यूल का उपयोग करना चाहते हैं तो कृपया display_code_with_new_temperature_sensor स्केच अपलोड करें।

अद्यतन ११/१७/१७: मैंने सॉफ़्टवेयर में कई बग्स को ठीक किया, जिसमें DS18B20 185 फ़ारेनहाइट के तापमान को आउटपुट करता है, ठंड के मौसम में डिस्प्ले बिल्कुल भी चालू नहीं होता है, और डिस्प्ले के मंद होने पर पिक्सेल गलत रंग में फंस जाते हैं।

फिर, यह सुनिश्चित करने के लिए मेरे पास ऊपर दी गई तस्वीर का उपयोग करें कि आपकी किशोरावस्था की सेटिंग तस्वीर से मेल खाती है। मैंने पाया कि किशोरावस्था को 240 मेगाहर्ट्ज पर ओवरक्लॉक करने से I2C OBD-II एडॉप्टर को किशोर के साथ संवाद करने की अनुमति नहीं मिली। अंत में, बस अपलोड पर क्लिक करें।

मैंने arduino स्केच फ़ाइलों में बहुत व्यापक टिप्पणियाँ लिखी हैं। सॉफ़्टवेयर कैसे काम करता है, इसकी व्याख्या के लिए कृपया वहां देखें। कृपया किसी भी तरह के सवाल के साथ मुझसे नि: संकोच संपर्क करें। मैं अपनी क्षमता के अनुसार उन्हें उत्तर देने का प्रयास करूंगा। आपको कामयाबी मिले!

चरण 6: 3D एक LCD केस प्रिंट करें

3डी एलसीडी केस प्रिंट करें
3डी एलसीडी केस प्रिंट करें
3डी एलसीडी केस प्रिंट करें
3डी एलसीडी केस प्रिंट करें
3डी एलसीडी केस प्रिंट करें
3डी एलसीडी केस प्रिंट करें

मैंने 7 डिस्प्ले की सुरक्षा के लिए एक 3डी प्रिंटेड एलसीडी टॉप और बॉटम कवर बनाया है। मैंने. IPT आविष्कारक भाग फ़ाइलों के साथ-साथ. STL फ़ाइलों को भी संलग्न किया है।

मैंने बैकअप_सेंसर_रिंग.आईपीटी नामक एक भाग भी शामिल किया, जो एक रिंग है जो उन बैकअप सेंसर के आसपास फिट बैठता है जिन्हें मैंने ऊपर लिंक किया था। मेरी कार में पहले से ही पूर्व-ड्रिल किए गए बैकअप सेंसर छेद थे जो अमेज़ॅन पर खरीदे गए बैकअप सेंसर के लिए बहुत बड़े थे, इसलिए मुझे एक अंगूठी बनानी पड़ी जो बैकअप सेंसर पर फिट हो। यदि आप सेट में शामिल सर्कुलर ड्रिल पीस के साथ अपने बम्पर में ड्रिल करने जा रहे हैं, तो आपको इस हिस्से की आवश्यकता नहीं होगी।

चरण 7: OBD-II पोर्ट को विभाजित करना इसलिए Arduino में केवल तभी शक्ति होती है जब कार चल रही हो

OBD-II पोर्ट को विभाजित करना इसलिए Arduino में केवल तभी शक्ति होती है जब कार चल रही हो
OBD-II पोर्ट को विभाजित करना इसलिए Arduino में केवल तभी शक्ति होती है जब कार चल रही हो
OBD-II पोर्ट को विभाजित करना इसलिए Arduino में केवल तभी शक्ति होती है जब कार चल रही हो
OBD-II पोर्ट को विभाजित करना इसलिए Arduino में केवल तभी शक्ति होती है जब कार चल रही हो
OBD-II पोर्ट को विभाजित करना इसलिए Arduino में केवल तभी शक्ति होती है जब कार चल रही हो
OBD-II पोर्ट को विभाजित करना इसलिए Arduino में केवल तभी शक्ति होती है जब कार चल रही हो

मैंने अपने डिस्प्ले को स्थापित करने के तुरंत बाद महसूस किया कि डिस्प्ले हमेशा चालू रहता है, तब भी जब कार बंद थी। OBD-II पिनआउट में देखने पर, मैंने पाया कि OBD-II कनेक्टर की 12V पावर लाइन हमेशा सीधे बैटरी से जुड़ी होती है।

इसके आसपास जाने के लिए, मैंने एक OBD-II स्प्लिटर खरीदा, स्प्लिटर पर दो कनेक्टरों में से एक पर 16 पिन करने वाले तार को काट दिया, और फिर उस कटे हुए तार को एक सर्किट वायर से जोड़ दिया।

फिर, अपने मल्टीमीटर का उपयोग करते हुए, मैं ड्राइवर के साइड फ्यूज बॉक्स में गया और मौजूदा फ़्यूज़ का परीक्षण किया कि कुंजी को इग्निशन में बदलने के बाद किस फ़्यूज़ को शक्ति मिली।

अंत में, मैंने एक सर्किट वायर को उस फ्यूज से जोड़ा जो मैंने स्थित किया था ताकि डिस्प्ले अब केवल तभी चालू हो जब मेरी कार चल रही हो। कृपया कुछ शोध करें कि आपकी कार में सर्किट को ठीक से कैसे जोड़ा जाए। मुझे यह youtube ट्यूटोरियल अच्छा लगा।

सिफारिश की: