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

שולחן קפה Arduino אינטראקטיבי LED: 6 שלבים (עם תמונות)
שולחן קפה Arduino אינטראקטיבי LED: 6 שלבים (עם תמונות)

וִידֵאוֹ: שולחן קפה Arduino אינטראקטיבי LED: 6 שלבים (עם תמונות)

וִידֵאוֹ: שולחן קפה Arduino אינטראקטיבי LED: 6 שלבים (עם תמונות)
וִידֵאוֹ: ELF/EMBARC Bronchiectasis conference 2023 with subtitles 2024, יולי
Anonim
Image
Image
שולחן קפה Arduino אינטראקטיבי LED
שולחן קפה Arduino אינטראקטיבי LED

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

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

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

אספקה

  1. נורות LED ws2812b -
  2. ספק כוח 5V -
  3. כל ארדואינו שהשתמשתי ב- 2560 -
  4. פוטודיודות
  5. פולטות IR
  6. נגדי 10 אוהם
  7. 1 נגדי MOhms
  8. 47 קבלים pF
  9. מכפלים CD4051B
  10. רשימות משמרות SN74HC595
  11. מערכים של דרלינגטון ULN2803A
  12. כל מצע לשימוש כקרש גדול עבור הנורות, השתמשתי בלוח מרוכב מנייר מהמחסן הביתי

שלב 1: צור את הלוח והכנס את הנורות

צור את הלוח והכנס את הנורות
צור את הלוח והכנס את הנורות
צור את הלוח והכנס את הנורות
צור את הלוח והכנס את הנורות
צור את הלוח והכנס את הנורות
צור את הלוח והכנס את הנורות
צור את הלוח והכנס את הנורות
צור את הלוח והכנס את הנורות

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

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

שלב 2: הבנת המעגל

להבין את המעגל
להבין את המעגל
להבין את המעגל
להבין את המעגל
להבין את המעגל
להבין את המעגל

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

קוד ה- PCB המכיל את פרויקט KiCad וקבצי הגרבר ניתן למצוא כאן: https://github.com/tmckay1/interactive_coffee_tabl…, למקרה שתרצה להזמין את ה- PCB בעצמך וליצור פרויקט דומה. השתמשתי ב- NextPCB ליצירת הלוחות.

ישנם בעצם שלושה מעגלים שונים המרכיבים את הטבלה הזו. הראשון שלא נעבור עליו בפירוט והוא מעגל פשוט המניע את הנורות ws2812b. אות נתוני PWM נשלח מה- Arduino אל נורות ה- LED ws2812b ושולט באילו צבעים מוצגים היכן. אנו משתמשים בעדשות ws2812b מכיוון שהן ניתנות להתייחסות בנפרד, כך שנוכל לשלוט באיזה מהעורות להפעיל, ובאיזה לכבות. נוריות ws2812b מופעלות על ידי מקור כוח חיצוני 5V, מכיוון שלארדואינו לבדו אין מספיק כוח להדליק את כל האורות. בתרשים המונפח המצורף הם משתמשים בנגד pullup של 330 אוהם, אולם אני לא משתמש בזה במבנה שלי.

המעגל השני מפעיל את פולטות ה- IR. מעגל זה משתמש במרשם משמרות כדי לשלוט במערך darlington ששולח כוח לפולטי ה- IR. מאגר משמרות הוא מעגל משולב המסוגל לשלוח אותות גבוהים ונמוכים למספר סיכות מכמות קטנה בלבד של סיכות. במקרה שלנו אנו משתמשים ברשם משמרות SN74HC595 המסוגל לשלוט מ -3 כניסות, אך שולט בעד 8 יציאות. היתרון בשימוש עם הארדואינו הוא שאתה יכול לחרוז דייזי עד 8 רשימות משמרות ברציפות (ארדואינו יכול להתמודד עם עד 8 בלבד מהן). המשמעות היא שאתה צריך רק 3 סיכות מהארדואינו כדי להדליק ולכבות 64 פולטות IR. מערך darlington מאפשר לך להפעיל מכשיר ממקור חיצוני אם אות הקלט הוא גבוה, או לכבות את המכשיר של המכשיר אם אות הקלט הוא נמוך. אז בדוגמה שלנו, אנו משתמשים במערך darlington ULN2803A, המאפשר למקור כוח חיצוני של 5V להפעיל ולכבות עד 8 מתוך פולטות ה- IR. אנו משתמשים בנגד 10 אוהם עם פולטות ה- IR בסדרות כדי לקבל אמפר מקסימלי מפולטות ה- IR.

המעגל השלישי משתמש במכפיל כדי לקבל מספר כניסות מהפוטודיודות, ושולח את הפלט באות נתונים. מרבב הוא מכשיר המשמש לקליטת מספר תשומות שממנו ברצונך לקרוא, וזקוק לכמה סיכות בלבד לקריאה מתוך תשומות אלה. זה יכול גם לעשות את ההפך (demultiplex), אבל אנחנו לא משתמשים בו עבור היישום הזה כאן. אז במקרה שלנו אנו משתמשים במכפיל CD4051B כדי לקלוט עד 8 אותות מהפוטודיודות, ואנו צריכים רק 3 כניסות לקריאה מאותם אותות. בנוסף אנו יכולים לרשת דייזי עד 8 מרבבים (ארדואינו יכול להתמודד רק עם עד 8 מהם). המשמעות היא שהארדואינו יכול לקרוא מתוך 64 מאותות הפוטודיודה מ -3 סיכות דיגיטליות בלבד. הפוטודיודות מכוונות מוטות הפוך, מה שאומר שבמקום להתמצא בכיוון הנורמלי כשההובלה החיובית מחוברת למקור המתח החיובי, אנו מקצים את ההובלה השלילית למקור המתח החיובי. זה הופך למעשה את הפוטודיודות לנגדי צילום, שמשתנים בהתנגדות בהתאם לכמות האור שהוא מקבל. לאחר מכן אנו יוצרים מחלק מתח לקריאת מתח תלוי בהתנגדות המשתנה של הפוטודיודות על ידי הוספת הנגד של 1 MOhms עמיד מאוד לקרקע. זה מאפשר לנו לקבל מתח גבוה ונמוך יותר לארדואינו תלוי בכמה אור IR הפוטודיודות מקבלות.

עקבתי אחרי רוב העיצוב הזה מאדם אחר שעשה את זה כאן: https://www.instructables.com/Infrared-Proximity-S… בעיצוב זה הוסיפו גם קבל 47pF, כפי שאנו עושים, מול הנגד 1 MOhm משמש ליצירת מחלק המתח עם הפוטודיודות. הסיבה שהוא הוסיף את זה היא בגלל שהוא היה משתנה לסירוגין את פולטות ה- IR בעזרת אות PWM ועושה זאת גרם לירידת מתח קטנה מהפוטודיודות כאשר פולטות ה- IR הופעלו מיד. זה גרם לדיודות הצילום לשנות את ההתנגדות גם כשהיא לא קיבלה יותר אור IR מאובייקט מכיוון שפולטות ה- IR חולקו את אותו מקור כוח של 5V כמו הפוטודיודות. הקבל שימש כדי לוודא שאין ירידת מתח כאשר מופעלים וכיבוי פולטות ה- IR. תכננתי במקור לעשות את אותה אסטרטגיה, אבל נגמר לי הזמן לבדוק אותה, אז במקום זאת השארתי תמיד את פולטות ה- IR. הייתי רוצה לשנות זאת בעתיד, אך עד שאעצב מחדש את הקוד והמעגל, כרגע ה- PCB נועד להדליק את נורות ה- IR בכל עת, ובכל זאת שמרתי על הקבלים. אתה לא צריך את הקבל אם אתה משתמש בעיצוב PCB זה, אבל אני עומד להציג גרסה נוספת של ה- PCB המקבלת קלט נוסף לרשם המשמרות שתאפשר לך לווסת את פולטות ה- IR לסירוגין. זה יחסוך הרבה בצריכת החשמל.

אתה יכול לבדוק את הדיאגרמות המונפשות המצורפות לקבלת התקנת אב טיפוס לבדיקה על הארדואינו שלך. יש גם סכמה צבעונית מפורטת יותר לכל מעגל המתארת את ההתקנה וההכוונה של המכשירים האלקטרוניים. בסכמיית ה- PCB המצורפת, יש לנו 4 מעגלים בסך הכל, 2 מעגלים המשמשים להפעלת פולטות ה- IR ושני מעגלים לקריאה מהפוטודיודות. הם מכוונים לקבוצות ה- PCB 2 זו לצד זו עם קבוצה המורכבת ממעגל פולט IR אחד ומעגל פוטודיודה, כך שניתן להכניס 2 עמודות של 8 צמתים למעגל יחיד. אנחנו גם מחרזות את שני המעגלים יחד, כך ששלשה סיכות מהארדואינו יכולים לשלוט בשני אוגרי המשמרות, ו -3 סיכות נוספות יכולות לשלוט בשני המרבבים שעל הלוח. יש כותרת פלט נוספת בכדי שתוכל שרשרת למעגלי PCB נוספים.

להלן מספר משאבים שעקבתי אחריהם עבור אב טיפוס:

  • https://lastminuteengineers.com/74hc595-shift-regi…
  • https://techtutorialsx.com/2016/02/08/using-a-uln2…
  • https://tok.hakynda.com/article/detail/144/cd4051be…

שלב 3: חוטי הלחמה לצומת

חוטי הלחמה לצומת
חוטי הלחמה לצומת
חוטי הלחמה לצומת
חוטי הלחמה לצומת
חוטי הלחמה לצומת
חוטי הלחמה לצומת
חוטי הלחמה לצומת
חוטי הלחמה לצומת

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

שלב 4: הלחם את רכיבי ה- PCB והצמד אותו ללוח

הלחם את רכיבי ה- PCB והצמד אותו ללוח
הלחם את רכיבי ה- PCB והצמד אותו ללוח
הלחם את רכיבי ה- PCB והצמד אותו ללוח
הלחם את רכיבי ה- PCB והצמד אותו ללוח
הלחם את רכיבי ה- PCB והצמד אותו ללוח
הלחם את רכיבי ה- PCB והצמד אותו ללוח

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

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

מכיוון שהיו לי 8 שורות של נוריות ws2812b ו -12 עמודות, בסופו של דבר קיבלתי 7 שורות ו -11 עמודות של צמתים (77 צמתים בסך הכל). הרעיון הוא להשתמש בצד אחד של ה- PCB עבור טור אחד של צמתים ובצד השני עבור העמודה השנייה. אז מכיוון שהיו לי 11 עמודות, הייתי צריך 6 מחשבים אישיים (האחרון שצריך רק קבוצת רכיבים אחת). מכיוון שעשיתי את החוטים קצרים מדי, יכולתי לחבר רק 55 צמתים, 11 עמודות ו -5 שורות. אתה יכול לראות בתמונה, עשיתי טעות והלחמתי את החוטים הגולמיים ללוח, וזה יהיה בסדר אם החוטים היו דקים מספיק, אבל במקרה שלי הם היו עבים מדי. המשמעות היא שהיו לי קצוות חוט מתפוררים קרוב מאוד זה לזה עבור כל קלט פולט IR וכניסת פוטודיודה, כך שהתרחש הרבה ניפוי באגים מכל קיצור החוט. בעתיד אני הולך להשתמש במחברים לחיבור ה- PCB לחוטים בלוח כדי להימנע מקצרים ולנקות דברים.

מכיוון שהארדואינו יכול רק לשרשר עד 8 רגיסי משמרות ומכפילים, יצרתי שתי שרשראות נפרדות, אחת תופסת את 8 העמודות הראשונות והשנייה תופסת את 3 העמודות הנותרות. לאחר מכן חיברתי כל שרשרת למחשב PCB אחר הכולל רק 2 מרבבים, כך שאוכל לקרוא כל שרשרת של אותות נתוני מרבב משני המרבבים הללו לתוך הארדואינו. שני המרבבים האלה היו גם כבולים בחינניות. המשמעות היא שבסך הכל היו 16 אותות פלט ו -2 כניסות אנלוגיות המשמשות בארדואינו: אות פלט אחד לשליטה על תאי ה- ws2812b, 3 אותות פלט לשרשרת הראשונה של רשמי המשמרות, 3 אותות פלט לשרשרת המרבבים הראשונה, 3 אותות פלט לשרשרת רשימות המשמרת השנייה, 3 אותות פלט לשרשרת המכפילים השנייה, 3 אותות פלט עבור 2 המרבבים שמאגדים כל אות נתוני PCB ולבסוף 2 כניסות אנלוגיות לכל אות נתונים משני המרבבים המצטברים.

שלב 5: סקור את הקוד

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

אתה יכול למצוא את הקוד שבו השתמשתי כאן:

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

כנראה שניתן היה לשפר את הקוד ואני בוחן לעשות זאת, אך יש בערך עיכוב של 1-2 שניות מרגע שהאורות נדלקים לאחר הצבת חפץ על השולחן. אני מאמין שהבעיה הבסיסית היא של- FastLED לוקח זמן להעביר את 96 הנורות על השולחן והקוד צריך לעבור דרך ולקרוא 77 תשומות מהטבלה. ניסיתי את הקוד הזה עם 8 נוריות ומצאתי שהוא כמעט מיידי, אבל אני בוחן את הנקודה המתוקה של נוריות LED שיעבדו עם הקוד הזה ויהיו כמעט מיידיות, כמו גם ישפרו את הקוד.

שלב 6: הפעל את הארדואינו

הפעל את הארדואינו!
הפעל את הארדואינו!
הפעל את הארדואינו!
הפעל את הארדואינו!
הפעל את הארדואינו!
הפעל את הארדואינו!

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

מוּמלָץ: