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

ערכת אור Topbox תיבת Givi V56 עם אותות משולבים: 4 שלבים (עם תמונות)
ערכת אור Topbox תיבת Givi V56 עם אותות משולבים: 4 שלבים (עם תמונות)

וִידֵאוֹ: ערכת אור Topbox תיבת Givi V56 עם אותות משולבים: 4 שלבים (עם תמונות)

וִידֵאוֹ: ערכת אור Topbox תיבת Givi V56 עם אותות משולבים: 4 שלבים (עם תמונות)
וִידֵאוֹ: תיבת אור לצילום תכשיטים --------Jewelry photography light box 2024, נוֹבֶמבֶּר
Anonim
Image
Image
ערכת אור טופבוקס DIY של Givi V56 עם אותות משולבים
ערכת אור טופבוקס DIY של Givi V56 עם אותות משולבים
ערכת אור טופבוקס DIY של Givi V56 עם אותות משולבים
ערכת אור טופבוקס DIY של Givi V56 עם אותות משולבים

כרוכב על אופנוע, אני מכיר את היחס לי כאילו אני בלתי נראה על הכביש. דבר אחד שאני תמיד מוסיף לאופניים שלי הוא ארגז עליון שבדרך כלל יש לו אור משולב. לאחרונה שדרגתי לאופניים חדשים ורכשתי את קופסת המונוקי של Givi V56 מכיוון שהיה בה הרבה מקום לפריטים. לקופסה זו יש מקום לערכת תאורה מפעל המורכבת משתי רצועות נוריות לכל צד. הבעיה היא שהערכה הזו היא בערך $ 70 ועושה רק בלמים. יש ערכה שאחרי השוק שאולי עושה דברים דומים ואולי קצת יותר קלה להתקנה, אבל המחיר שלך עולה ל -150 דולר. בהיותי אדם בעל תושייה ומחפש תירוץ לנסות את רצועות הלד הניתנות להתייחסות, החלטתי לייצר מערכת משולבת שלא רק תהיה לה אורות בלמים, אלא גם אורות הפעלה (דולקים בכל פעם שזזים), אותות ופנסים. סתם, הוספתי אפילו רצף הפעלה …. כי יכולתי. שים לב שזה לקח הרבה עבודה לעשות למרות שהיו לי הרבה דברים להבין. למרות העבודה, אני די מרוצה מאיך שזה יצא. אני מקווה שזה יועיל בסופו של דבר למישהו אחר.

הפעולה הבסיסית של אופן הפעולה של מערכת זו היא יחידת הארדואינו מחפשת אותות על הפינים: אור בלם, פניית שמאל ופנייה ימינה. על מנת לקרוא את האות של 12 וולט מהאופנוע, השתמשתי באופטו -איזולטורים כדי להמיר את האות של 12V לאות של 5V אותו יכול Arduino לקרוא. הקוד ממתין לאחד האותות הללו ואז פולט את הפקודות לרצועת LED באמצעות ספריית FastLED. זה היסוד, עכשיו כדי להיכנס לפרטים.

אספקה

אלה הדברים שהשתמשתי בהם כי לרוב כבר היו לי אותם מונחים. ברור שניתן להחליף אותם לפי הצורך:

  1. Arduino - השתמשתי בננו משיקולי גודל אבל אתה יכול להשתמש בכל מה שמתחשק לך כל עוד יש לך חמישה סיכות לשימוש.
  2. רגולטור 5V - השתמשתי ב- L7805CV שמסוגל 1.5 אמפר. פרויקט זה ישתמש ב -0.72 אמפר עבור נוריות ה- LED בתוספת הכוח לננו, כך ש -1.5 עובד מצוין עבור הפרויקט הזה.
  3. קבלים - תזדקק לאחד 0.33 uF ואחד 0.1 uF כדי שמווסת המתח יפעל כראוי.
  4. 3x אופטואיזולטורים - לביצוע המרת האות מ 12V ל 5V. השתמשתי בסוג PC817X שיש לו רק ארבעה סיכות וזה כל מה שאנחנו צריכים.
  5. נגדים - תזדקק לשני סוגים, שלושה מכל סוג. הראשון צריך להספיק כדי להפחית את הזרם באמצעות נורית ה- IR של optoisolator. תצטרך לפחות 600 אוהם, אבל 700 יהיה רעיון טוב יותר להתמודד עם מתח מתח באופנוע. השני צריך להיות איפשהו בין 10k ל 20k בשביל אות מהיר בצד השני של האופטואיסולטור.
  6. לוח אב טיפוס - היו לי כמה שהיו קטנים מספיק בכדי להתאים לקופסת פרוייקטים קטנה עם מעט זמירה.
  7. קופסת פרויקט - גדולה מספיק להתאמת הרכיבים, אך קטנה מספיק בכדי להיות קלה להתאמה.
  8. חוט - השתמשתי בחוט Ethernet של Cat 6 כי יש לי הרבה ממנו בישיבה. יש לו שמונה חוטים עם כל הצבעים, שעזרו לכל החיבורים השונים והיו מד גדול מספיק כדי להתמודד עם הגרלות הנוכחיות.
  9. תקעים - בכל מקום שתרצו שהמערכת ניתנת להסרה בקלות. השתמשתי בתקע עמיד למים כדי לאפשר את הסרת הקופסה העליונה ולטפל בכל גשם או מים שעולים עליה. הייתי צריך גם תקעים קטנים יותר לרצועות הלד כך שלא אצטרך לקדוח חורים גדולים.
  10. עניבות רוכסן והרכבות הדבקה עם רוכסן כדי להחזיק הכל במקום.
  11. כווץ כיסוי כדי לסדר את החיבורים.

שלב 1: בניית המעגל

בניית המעגל
בניית המעגל
בניית המעגל
בניית המעגל
בניית המעגל
בניית המעגל

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

העיצוב הבסיסי מתחיל בהכנסת הספק 12V ממקור מופעל (חוט שנדלק רק כשהאופנוע דולק). תרשים חיווט יכול באמת לעזור למצוא את החוט הזה. זה מוזר בצד אחד של ווסת המתח. קבלים של 0.33 uF קושרים את הקלט הזה לאדמה על ווסת המתח שנזין אז לאדמה באופנוע. הפלט של ווסת המתח יהיה קבל 0.1uF קשור אליו לקרקע. קבלים אלה עוזרים להחליק את המתח מהרגולטור. אם אינך יכול למצוא אותם בתמונה של המעגל, הם נמצאים מתחת לווסת המתח. משם, קו 5V עובר ל- Vin על הארדואינו, אל סיכת החשמל שתזין את רצועות ה- LED, ושניים מהצד המקורי של האופטואיסולטור שיזין לתוך סיכות הארדואינו המספקות את האות הנדרש של 5V.

באשר לאופטו -איזולטורים, ישנם שני צדדים: האחד עם LED IR והשני עם טרנזיסטור עם גלאי IR. אנו רוצים להשתמש בצד ה- LED LED כדי למדוד את האות 12V. מכיוון של- LED יש מתח קדימה של 1.2V, אנו זקוקים לנגד הגבלת זרם בסדרה. 12V - 1.2V = 10.8V וכדי להפעיל את הנורית ב- 18 mA (אני תמיד אוהב להפעיל פחות מ 20 mA מסיבות חיים), תזדקק לנגד R = 10.8V/0.018A = 600 אוהם. המתח על רכבים גם נוטה לפעול גבוה יותר, פוטנציאלי עד 14V, ולכן עדיף לתכנן את זה, שזה בערך 710 אוהם, אם כי 700 יהיה יותר סביר. הפלט עבור הצד LED ואז ניזון בחזרה לקרקע. עבור צד הפלט של האופטואיסולטור, הקלט ישתמש באות 5V מהרגולטור ואז הפלט יתחבר לנגד אחר לפני היציאה לקרקע. הנגד הזה פשוט צריך להיות סביב 10k - 20k ohm, לפחות זה מה שהגליון הנתונים שלי הראה. זה ייתן מדידת אותות מהירה מכיוון שאנחנו לא מתמודדים עם סביבה רועשת. הפלט לסיכת הארדואינו יירד בין הנגד לפלט האופטואיסולטור כך שכאשר האות כבוי הסיכה נמוכה וכאשר האות על הסיכה גבוהה.

לנורות רצועות LED יש שלושה חוטים המשויכים אליהם: כוח, קרקע ונתונים. הספק צריך להיות 5V. הפרויקט הזה משתמש בסה כ 12 נוריות LED (למרות שיש לי יותר נוריות על הרצועות אבל אני משתמש רק בכל נורית שלישית) וכל אחת מהן לוקחת 60mA כאשר משתמשים באור לבן במלוא הבהירות. זה נותן סך של 720 mA. אנחנו נמצאים היטב בתוך הספק המוצא של ווסת המתח, אז אנחנו טובים. רק וודא שהחוט הוא מד גדול מספיק בכדי להתמודד עם ההספק, השתמשתי בחוט Ethernet 6 מד Cat 6. חוט אתרנט היה משהו שישבתי בסביבתו ויש לו 8 חוטים מקודדים בצבע כך שזה הסתדר היטב לפרויקט הזה. החוטים היחידים שצריכים לעבור לאחר מכן לתיבה העליונה הם הכוח והקרקע (ששניהם מתחלקים בין הרצועות) ושתי קווי נתונים (אחד לכל רצועה).

שאר החיווט מתחבר לסיכות על הארדואינו ומזין אותו בכוח. הסיכות ששימשו לפרויקט זה היו:

  1. Vin - מחובר ל 5V
  2. Gnd - מחובר לקרקע
  3. Pin2 - מחובר לקו הנתונים של הרצועה השמאלית
  4. Pin3 - מחובר לקו הנתונים של הרצועה הימנית
  5. Pin4 - מחובר לאות הבלם מהאופטואזולטור
  6. Pin5 - מחובר לאות הפנייה שמאלה מהאופטו -איזולטור
  7. Pin6 - מחובר לאות הפנייה ימינה מהאופטואזולטור

שלב 2: חיווט והתקנה

חיווט והתקנה
חיווט והתקנה
חיווט והתקנה
חיווט והתקנה
חיווט והתקנה
חיווט והתקנה

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

  • ספק כוח מתחלף
  • קרקע, אדמה
  • כניסה לבלם
  • פנייה שמאלה לכניסה
  • פנייה ימינה לכניסה

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

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

שלב 3: הקוד

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

לפרויקט זה נדרשת רק ספרייה אחת שהיא ספריית FastLED. זה כולל את כל הקוד לשליטה ברצועות הלד מסוג WS2811/WS2812B. משם אכסה את הפונקציות הבסיסיות שישמשו אותן.

הראשון מלבד ההגדרות הסטנדרטיות הוא הצהרת שתי הרצועות שלך. תוכל להשתמש בקוד הבא עבור כל רצועה:

FastLED.addLeds (leds [0], NUM_LEDS);

שורת קוד זו מגדירה את Pin 2 מגדירה את רצועה זו כרצועה 0 עם מספר נוריות המוגדרות על ידי NUM_LEDS הקבוע, שבמקרה שלי מוגדר ל- 16. כדי להגדיר את הרצועה השנייה, ה- 2 יהפוך ל -3 (עבור pin3) ו- הרצועה תסומן ברצועה 1.

השורה הבאה שתהיה חשובה היא הגדרת הצבע.

leds [0] [1] = Color_high CRGB (r, g, b);

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

מערך הקוד הבא משמש להדלקת כל אור בנפרד. שים לב שבכל רצועה, לכל נורית יש כתובת שמתחילה ב -0 עבור זו הקרובה ביותר לחיבור קו הנתונים עד לרמה הגבוהה ביותר שיש לך מינוס 1. דוגמה, אלה הן 16 רצועות לד, כך שהגבוהה ביותר היא 16 - 1 = 15. הסיבה לכך היא כי הנורית הראשונה מסומנת 0.

for (int i = NUM_LEDS -1; i> -1; i = i -3) {// זה ישנה את האור עבור כל LED שלישי שעובר מהאחרון לראשון. leds [0] = Color_low; // הגדר את צבע ה- LED של רצועת 0 לצבע הנבחר. leds [1] = Color_low; // הגדר רצועה 1 צבע LED לצבע הנבחר. FastLED.show (); // הצג את הצבעים המוגדרים. leds [0] = CRGB:: שחור; // כבה את הצבע המוגדר כהכנה לצבע הבא. leds [1] = CRGB:: שחור; עיכוב (150); } FastLED.show (); // הצג את הצבעים המוגדרים.

הדרך שבה קוד זה פועל היא שמשתמש (i) משמש בתוך לולאת for ככתובת ה- LED שאחר כך מופנית למספר המלא של נוריות LED (NUM_LEDS). הסיבה לכך היא שאני רוצה שהאורות יתחילו בסוף הרצועה ולא בהתחלה. ההגדרה מופקת לשני הרצועות (leds [0] ו- leds [1]) ולאחר מכן ניתנת פקודה להראות את השינוי. לאחר מכן נורית זו כבויה (CRGB:: שחור) והאור הבא נדלק. ההפניה השחורה היא צבע ספציפי בספריית FastLED כך שאני לא צריך להנפיק 0, 0, 0 עבור כל ערוץ למרות שהם היו עושים את אותו הדבר. לולאת For מתקדם 3 נוריות בכל פעם (i = i-3) מכיוון שאני משתמש רק בכל נוריות LED אחרות. בסוף הלולאה הזו, רצף האור יעבור מנורה אחת לאחרת עם רק תאורה אחת לכל פס, מעין אפקט Knight Rider. אם ברצונך להשאיר כל אור דולק כך שהבר יבנה, פשוט תסיר את השורות שמכבות את נוריות הלדים שקורות בקבוצת הקוד הבאה בתוכנית.

for (int i = 0; i <dim; i ++) {// לדעוך במהירות אורות לרמת אור פועל. rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i <NUM_LEDS; i = i +3) {// זה ידליק את שלושת הנורות האחרונות עבור נורית המיקום. leds [0] = CRGB (rt, gt, bt); // הגדר את צבע ה- LED של רצועת 0 לצבע הנבחר. leds [1] = CRGB (rt, gt, bt); // הגדר רצועה 1 צבע LED לצבע הנבחר. } FastLED.show (); עיכוב (3); }

הדוגמה האחרונה לקוד שאני משתמש עבור הנוריות היא לולאת דהייה. כאן, אני משתמש בחריצים זמניים עבור הבהירות של כל ערוץ (rt, gt, bt) ומגדיל אותם ב -1 עם עיכוב בין כל הצגה כדי להשיג את המראה שאני רוצה. שים לב גם שקוד זה משנה רק את שלושת הלדים האחרונים מכיוון שהוא דוהה באורות הריצה כך שאני מתחיל ב -9 ולא ב -0.

שאר קוד ה- LED הוא איטרציות של אלה. כל השאר מתמקד סביב חיפוש אות על שלושת החוטים השונים. אזור הלולאה () בקוד מחפש נורות בלמים, אותן הן יהבהבו פעם אחת לפני שהן תישארנה (ניתן לכוונן אם תרצה) או לחפש אותות פנייה. עבור קוד זה, מכיוון שלא יכולתי להניח שהאורות הפונים שמאלה וימינה ידלקו באותו הזמן בדיוק בגלל סכנות, יש לי קודם לחפש את הקוד ולאחר מכן לאחר עיכוב קטן אני בודק אם שניהם דולקים מציינים נוריות הסיכון דולקות. החלק המסובך שהיה לי היה איתותי כיוון שהאור ייכבה לתקופה כלשהי אז איך אני יכול להבחין בין האות שעדיין דולק אך בתקופת כיבוי לבין אות מבוטל? מה שהבאתי היה יישום לולאת עיכוב שאמורה להימשך זמן רב יותר מהעיכוב בין הבזקי האות. אם אות הפנייה עדיין מופעל, אז לולאת האותות תימשך. אם האות אינו חוזר כאשר העיכוב מסתיים, הוא חוזר לתחילת הלולאה (). כדי להתאים את אורך העיכוב, שנה את המספר של lightDelay קבוע לזכור עבור כל 1 in lightDay העיכוב משתנה ב- 100ms.

while (digitalRead (leftTurn) == LOW) {for (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); if (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } עיכוב (100); } עבור (int i = 0; i <NUM_LEDS; i = i +3) {// פעולה זו תשנה את האור עבור כל נורית שלישית הנכנסת מהאחרונה לראשונה. leds [0] = CRGB (0, 0, 0); // הגדר את צבע ה- LED של רצועת 0 לצבע הנבחר. } עבור (int i = 9; i <NUM_LEDS; i = i +3) {// פעולה זו תגדיר את אורות הריצה שמשתמשים רק בשלושת האחרונים. leds [0] = Color_low; // הגדר את צבע ה- LED של רצועת 0 לצבע הנבחר. } FastLED.show (); // הגדרות פלט חוזרות; // לאחר שהאות הפנייה כבר אינו מופעל, חזור ללולאה. }

נקווה ששאר הקוד מסביר את עצמו. זה רק סדרה חוזרת של בדיקה ופעולה על פי אותות.

שלב 4: תוצאות

תוצאות
תוצאות

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

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

מוּמלָץ: