תוכן עניינים:

תצוגת רכב Arduino: 7 שלבים (עם תמונות)
תצוגת רכב Arduino: 7 שלבים (עם תמונות)

וִידֵאוֹ: תצוגת רכב Arduino: 7 שלבים (עם תמונות)

וִידֵאוֹ: תצוגת רכב Arduino: 7 שלבים (עם תמונות)
וִידֵאוֹ: ארדואינו למתחילים 7: בו-זמניות 2024, נוֹבֶמבֶּר
Anonim
Image
Image
תצוגת רכב Arduino
תצוגת רכב Arduino
תצוגת רכב Arduino
תצוגת רכב Arduino

בניתי צג מבוסס דיאגנוסטיקה (OBD-II) באמצעות מסך TFT בגודל 7 אינץ 'מבית Adafruit, Teensy 3.6, מתאם Freematics OBD-II I2C, וכמה חיישני גיבוי של צ'יפים שמצאתי באמזון. התצוגה כוללת שני עמודים: אחת כאשר הונדה אקורד שלי נמצאת בנסיעה ואחת כאשר היא הפוכה.

כאשר המכונית שלי נמצאת בנסיעה, הסל"ד, הקמ"ש, אחוזי עומס המנוע, מתח הסוללה, טמפרטורת תא הנוסעים וטמפרטורת נוזל הקירור של המנוע מוצגים (ישנן מספר נתונים סטטיסטיים אחרים לרכב שניתן להציג אם אינך רוצה אלה).

כאשר המכונית שלי הפוכה, ה- Teensy 3.6 תואם Arduino IDE קורא תמונת מפת סיביות מונפשת של המכונית שלי שמצאתי באינטרנט, מציגה אותה ולאחר מכן קוראת את חיישני הגיבוי. לארבעת החיישנים כל אחד מהם מרחקו ברגליים בתוספת אנימציה מאחורי המכונית שמשנה את הצבע בהתאם למידת הקרבה של האובייקט לרכב (רק ירוק פירושו <5 רגל, ירוק וצהוב פירושו <2.6 רגל, וירוק, צהוב, ואדום פירושו <1 רגל).

לבסוף הוספתי את היכולת לעמעם את המסך בלילה.

התוצאה הסופית נראית נהדר ומתפקדת טוב מאוד ברכב שלי. בסופו של דבר אפילו התקנתי אותו בקונסולה המרכזית, וזה היה תהליך אחר לגמרי שלא אכנס אליו בהוראה זו. רשימת החלקים בהם השתמשתי ליצירת צג LCD זה להלן.

1) מתאם OBD -II Freematics - 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 GB - 4 $

9) חוט, קבלים ונגדים.

10) LP3470-2.93 הפעלה מחדש של IC - 2 $

11) (אופציונלי): חיישן טמפרטורה DS18B20 - 8 $

12) (אופציונלי): מפצל OBD -II - 10 $

13) (אופציונלי): הוסף כבל נתיך מעגל - 8 $ לחבילה של 5

שלב 1: קריאת חיישני הגיבוי

קריאת חיישני הגיבוי
קריאת חיישני הגיבוי
קריאת חיישני הגיבוי
קריאת חיישני הגיבוי
קריאת חיישני הגיבוי
קריאת חיישני הגיבוי
קריאת חיישני הגיבוי
קריאת חיישני הגיבוי

שלב זה הוא מסובך מכיוון שחיישני הגיבוי האלה מתקשרים למקלט ולאחר מכן למסך LCD קטן כפי שניתן לראות בתמונה למעלה. רציתי דרך להיפטר מהתצוגה שלהם ולהשתמש בשלי. בעזרת אתר אינטרנט שמצאתי לאחר כמה חיפושים (פריצת חיישני חניה לאחור), הצלחתי לקרוא את פרוטוקול התקשורת הקנייני שהמקלט שולח למסך ה- 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 הייתה המהירות שבה התאגיד יכול לקרוא כרטיס SD ולהציג את התמונה באמצעות מנהל התצוגה RA8875. באמצעות UNO, התהליך נמשך כ -8 שניות, ואילו Teensy 3.6 לקח 1.8 שניות.

שלב 3: חיבור החומרה

חיבור החומרה
חיבור החומרה

ל- Adafruit יש ממש 7 אינץ 'TFT LCD המונע על ידי IC הנקרא RA8875. בחרתי במנהל התצוגה והתצוגה הזה משתי סיבות. ראשית, ישנן ספריות נרחבות שנכתבו מראש לתצוגה. שנית, מנהל התצוגה יכול לדבר איתו כל מיקרו -בקר מעל SPI, כלומר אין כל כך הרבה חוטים המחברים את המיקרו -בקר ל- RA8875.

ישנם שני חסרונות בהגדרה זו. ראשית, העובדה שיש באג חומרה עם לוח RA8875 מ- Adafruit הדורש שימוש במאגר ה- IC של Tri-state 74HC125 אם אתה רוצה להשתמש בכל מכשיר מבוסס SPI כגון כרטיס SD. כדי להבין יותר את באג החומרה, אנא קרא את הפורום הבא. שנית, פרק הזמן הארוך יחסית שלוקח לשלוח תמונות ל- 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.7kΩ. שלישית, ארבעת הנגדים המחברים בין "חוט הלילה" (חוט העמעום) ו"חוט הנעילה לגיבוי "נחוצים כדי לשמש כמפריד מתח כדי להוריד את האותות 12V-13V עד לאותות של 2.5-3V.

עדכון 22/7/18: מצאתי שחיישן הטמפרטורה הפנימי של מודול OBD-I2C מוציא מספרים מוזרים מאוד. לפעמים זה יעבוד, אבל רוב הזמן המודול הוציא טמפרטורות מעל 400 מעלות צלזיוס. בגלל זה החלטתי להוסיף חיישן טמפרטורה ds18b20 משלי. אתה יותר ממוזמן להשתמש בכל סוג של חיישן טמפרטורה כאן, אך יהיה עליך לערוך את קוד ה- Arduino.

עדכון 3/1/19: Teensy 3.6 אינו מתחיל כאשר הוא קר במיוחד. הוספתי מעגל איפוס להפעלה כדי לוודא שהוא מופעל כראוי.

שלב 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 במיקום הספרייה העשרה (לא המיקום הטיפוסי שלך במסמכים). ב- Mac, הייתי צריך ללחוץ באמצעות לחצן העכבר הימני על סמל היישום Arduino ביישומים, ולאחר מכן לנווט אל/Contents/Java/hardware/teensy/avr/libraries. בחלונות, אני די בטוח שהוא נמצא מתחת לכונן C שלך בקבצי Program x86, Arduino ולאחר מכן בתיקיית החומרה שם. לאחר שתעשה זאת, יהיה עליך לשנות את מיקום ספר הסקיצות ביישום Arduino על ידי עריכתו בהעדפות היכן שהן נמצאות ספריות העשרה שלך (כלומר /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

עדכון 22/7/16: בגלל הבעיה של חיישן הטמפרטורה הפנימי שעליו דיברתי קודם לכן, הייתי צריך להתקין חיישן טמפרטורה של מודול DS18B20. תראה 4 סקיצות ארדואינו בקובץ ה- zip. אנא העלה את סקיצת display_code אם ברצונך להשתמש בחיישן הטמפרטורה הפנימי של מודול OBD-II I2C. אנא העלה את שרטוט display_code_with_new_temperature_sensor אם ברצונך להשתמש במודול DS18B20 שקישרתי למעלה.

עדכון 17/11/17: תיקנתי כמה באגים בתוכנה, כולל ה- DS18B20 בהוצאת טמפרטורה של 185 פרנהייט, התצוגה לא נדלקת כלל במזג אוויר קר, ופיקסלים נתקעים בצבע הלא נכון כאשר המסך מעומעם.

לאחר מכן, השתמש בתמונה שיש לי למעלה כדי לוודא שהגדרות העשרה שלך תואמות את התמונה. מצאתי כי שעון יתר של בני נוער עד 240MHz לא איפשר למתאם I2C OBD-II לתקשר עם בני הנוער. לבסוף, פשוט לחץ על העלה.

כתבתי הערות די נרחבות בקבצי הסקיצות של הארדואינו. אנא חפש שם הסבר כיצד פועלת התוכנה. אנא אל תהסס לפנות אלי בכל שאלה. אנסה לענות להם כמיטב יכולתי. בהצלחה!

שלב 6: הדפס תלת -ממד נרתיק LCD

הדפס תלת -ממד נרתיק LCD
הדפס תלת -ממד נרתיק LCD
הדפס תלת -ממד נרתיק LCD
הדפס תלת -ממד נרתיק LCD
הדפס תלת -ממד נרתיק LCD
הדפס תלת -ממד נרתיק LCD

יצרתי כיסוי עליון ותחתון של LCD המודפס בתלת -ממד כדי להגן על התצוגה בגודל 7 אינץ '. צירפתי את קבצי החלק של ממציא. IPT וכן את קבצי ה-. STL.

כללתי גם חלק שנקרא backup_sensor_ring.ipt, שהוא טבעת שמתאימה לחיישני הגיבוי אותם קישרתי למעלה. לרכב שלי היו כבר חורי חיישן גיבוי קדוחים שהיו גדולים מדי לחיישני הגיבוי שקניתי באמזון, אז הייתי צריך ליצור טבעת שתתאים לחיישני הגיבוי. אם אתה עומד לקדוח לתוך הפגוש שלך עם פיסת הקידוח המעגלית הכלולה בסט, לא תזדקק לחלק זה.

שלב 7: פיצול יציאת OBD-II כך שלארדואינו יש כוח רק כאשר המכונית פועלת

פיצול יציאת OBD-II כך שלארדואינו יש כוח רק כאשר המכונית רצה
פיצול יציאת OBD-II כך שלארדואינו יש כוח רק כאשר המכונית רצה
פיצול יציאת OBD-II כך שלארדואינו יש כוח רק כאשר המכונית רצה
פיצול יציאת OBD-II כך שלארדואינו יש כוח רק כאשר המכונית רצה
פיצול יציאת OBD-II כך שלארדואינו יש כוח רק כאשר המכונית רצה
פיצול יציאת OBD-II כך שלארדואינו יש כוח רק כאשר המכונית רצה

הבנתי זמן קצר לאחר התקנת התצוגה שלי כי המסך תמיד דולק, גם כשהרכב כבוי. כאשר הסתכלתי על ה- pinout של OBD-II, גיליתי שקו החשמל של 12V למחבר OBD-II מחובר תמיד ישירות לסוללה.

כדי לעקוף את זה, רכשתי מפצל OBD-II, חתכתי את החוט שעומד לפין 16 על אחד משני המחברים במפצל ולאחר מכן חיברתי את החוט החתוך להוספת חוט מעגל.

לאחר מכן, באמצעות המולטימטר שלי, ניגשתי אל תיבת הנתיכים בצד הנהג ובדקתי את הנתיכים הקיימים כדי לראות איזה נתיך מקבל כוח לאחר שהמפתח הופך להצתה.

לבסוף, חיברתי את כבל הוספת מעגל לנתיך שאיתרתי כך שהתצוגה תידלק רק כאשר המכונית שלי פועלת. אנא בדוק קצת כיצד להוסיף נכון מעגל לרכב שלך. גיליתי שהמדריך הזה ביוטיוב היה טוב.

מוּמלָץ: