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

עניבת ההולי: 8 שלבים (עם תמונות)
עניבת ההולי: 8 שלבים (עם תמונות)

וִידֵאוֹ: עניבת ההולי: 8 שלבים (עם תמונות)

וִידֵאוֹ: עניבת ההולי: 8 שלבים (עם תמונות)
וִידֵאוֹ: איך לענוב עניבה בדקה | כך תלמדו איך קושרים עניבה | איך לקשור עניבה 2024, נוֹבֶמבֶּר
Anonim
Image
Image

מאת gwfong Monkey Patching עקוב אחר מאת המחבר:

תאורת כלב מאירה
תאורת כלב מאירה
פסל לב ופלדה מזכוכית
פסל לב ופלדה מזכוכית
פסל לב ופלדה מזכוכית
פסל לב ופלדה מזכוכית
חוט נחושת ופרפר זכוכית מותכת
חוט נחושת ופרפר זכוכית מותכת
חוט נחושת ופרפר זכוכית מותכת
חוט נחושת ופרפר זכוכית מותכת

אודות: רק בחור שמחפש לעשות דברים מגניבים עוד על gwfong »

זהו הולי-טי, עניבה חגיגית המיועדת ללבישה במהלך החגים. בהתבסס רופף על Ampli-Tie של בקי שטרן המשתמשת בלוח פלורה, ה- Holi-Tie משתמש במיקרו-בקר Circuit Python Express (CPX) להנעת האנימציות של NeoPixel והמוזיקה. כפתור משתנה בין 2 הנפשות NeoPixel שונות. רפידות מגע קיבוליות משנות את צבעי NeoPixel ואת מהירות האנימציה. הכפתור השני משתנה בין אנימציות LED ומוסיקה. המיקרופון המשולב משמש למדידת רעשי הסביבה לאנימציה של מד VU. ורמקול ה- CPX פולט ניגוני שבבי חג.

הכל מקודד באמצעות שפת התכנות של פייתון הפועלת מעל מערכת CircuitPython. הוא מופעל על ידי סוללת LiPo בנפח 3.7 וולט, 500 מיליאמפר, אשר שונה למתג הפעלה/כיבוי.

ישנם שני קטעי וידאו המציגים את הולי-עניבה:

  • הולי-עניבה הושלמה
  • בתוך הולי-עניבה

שלב 1: חלקים וכלים

חלקים

  • מעגל משחקים אקספרס
  • 15x פלורה ניאופיקסלים
  • חוט מגנט
  • סרט דבק לולאה
  • סוללת ליפו 500mAH עם מחבר JST
  • עניבת קנדי קנדי
  • מתג מיני שקופיות, SPDT
  • צינורות לכווץ חום

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

כלים

  • אקדח דבק חם
  • תחנת הלחמה
  • מספרי תיל
  • סכין קטנה
  • מולטימטר
  • מַחשֵׁב
  • מצית או אקדח חום
  • חוט ומחט

שלב 2: קריאת העניבה

קורא את העניבה
קורא את העניבה
קורא את העניבה
קורא את העניבה
קורא את העניבה
קורא את העניבה

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

שלב 1: קושר את העניבה למקומה

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

ישנם כל מיני קשרי עניבה שונים. אני מכיר רק את זה שלמדתי כילד, ווינדזור. אין זה משנה באיזה קשר משתמשים.

שלב 2: פתח את החלק האחורי של העניבה

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

שלב 3: צייר קווים שבהם יש למקם את הלדים

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

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

שלב 3: חיבור ה- NeoPixels

חיבור ה- NeoPixels
חיבור ה- NeoPixels
חיבור ה- NeoPixels
חיבור ה- NeoPixels
חיבור ה- NeoPixels
חיבור ה- NeoPixels
חיבור ה- NeoPixels
חיבור ה- NeoPixels

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

שלב 1: הדבק את ה- NeoPixels בליבת העניבה

מניחים מעט דבק חם בחלק האחורי של ה- NeoPixel מניחים אותו על קווי האמצע. עבור החלקים עם 3 NeoPixels, יישר אנכית את NeoPixel המרכזי והדבק אותם למטה תחילה. זה יקל על מיקום ה- NeoPixel השמאלי והימני ביחס למרכז במיוחד בהתחשב בכך שרוחב העניבה עולה מלמעלה למטה.

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

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

שלב 3: הלחמו את ה- NeoPixels זה לזה

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

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

שלב 4: בדוק את הקישוריות

השתמש במולטימטר לבדיקת הקישוריות של:

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

שלב 4: חיבור ה- Circuit Playground Express

צירוף ה- Circuit Playground Express
צירוף ה- Circuit Playground Express

Circuit Playground Express (CPX) הוא לב המערכת. ל- Adafruit הדרכות רבות לבקר זה. מאוחר יותר בהוראה זו, אדגיש כמה מתכונות MCU.

שלב 1: הלחם את ה- CPX לקצה התחתון של NeoPixel

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

לאחר מכן הפוך את ליבת העניבה והנח את ה- CPX במצב הרצון. הזן את חוט החשמל לרפד VOUT, חוט הארקה לכל כרית הארקה וחוט הנתונים לכל כרית קלט/פלט מלבד A0. הקוד שכתבתי משתמש ב- A3.

בדוק את הקישוריות.

שלב 2: קשרו את המחיר לקליק

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

שלב 5: הפעלת ה- CPX

הפעלת ה- CPX
הפעלת ה- CPX
הפעלת ה- CPX
הפעלת ה- CPX
הפעלת ה- CPX
הפעלת ה- CPX

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

שלב 1: חתכו את הסיכה השלישית במתג

אין צורך באחד מהסיכות הלא מרכזיות. חותכים אותו סומק עם גוף המתג.

שלב 2: הלחם את המתג בתוך קו מוביל סוללה

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

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

שלב 3: ודא שהסוללה פועלת

בשלב זה ניתן לחבר את הסוללה ל- CPX. אם הכל הלך כשורה, המתג אמור להיות מסוגל להדליק ולכבות את ה- CPX.

שלב 4: הרכבו את הסוללה

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

שלב 6: הגדרת ה- Circuit Playground Express

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

CPX קופא

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

אזהרה: זה מוחק הכל. כל הקוד ב- CPX יאבד.

שמירת שינויים ב- CPX יכולה לגרום לבעיות

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

חיסכון ישיר ב- CPX מסוכן

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

שלב 7: קידוד ה- Circuit Playground Express

בשלב זה, CPX ו- NeoPixels די שלמים. אין צורך לבצע איתם עבודות מכניות או חשמליות אחרות. כל השאר תוכנה.

ניתן למצוא את הקוד בחשבון github שלי. קוד הליבה של פיתון אמור לפעול ללא כל שינוי עבור כל מערכות ההפעלה. אין להתקין את ספריות Adafruit CircuitPython החיצוניות. הם אינם בשימוש.

להלן סיכום ברמה גבוהה של המתרחש בקוד.

איזה קלט עושה מה?

  • לחצן א ': עובר בין אנימציות ה- LED
  • לחצן ב ': עובר בין השירים
  • משטח מגע קיבולי A1: משנה את הצבעים של אנימציות ה- LED
  • משטח מגע קיבולי A6: משנה את מהירות האנימציות LED

3 הנפשות קיימות אך רק 2 בתוקף

code.py

ייבא פיקסלוף

# ייבוא וומטר יבוא מדרגות יבוא מנצנץ… led_animations = [pixelsoff. PixelsOff (פיקסלים), # vumeter. VuMeter (פיקסלים, 100, 400) מדרגות. מדרגות (פיקסלים), נצנצים.טווינקל (פיקסלים)]

העברתי את הקוד בסגנון מד VU של Ampli-Tie. הוא משתמש במיקרופון CPX כדי לקלוט צליל ולהדליק את NeoPixels בהתבסס על משרעת הצליל. עם זאת, רציתי יותר אנימציות. בשל אילוצי זיכרון בזמן ריצה נאלצתי לבחור אילו אנימציות אני רוצה. אז כברירת מחדל השניים האחרים, Stairs ו- Twinkle, יפעלו ללא צורך לבצע שינויים בקוד. כדי להריץ את האנימציה של מד VU, יש להגיב על אחת או על שתי האנימציות האחרות ולבטא את מד VU.

מנהל מוזיקה וקידוד לא מקוון

frosty_the_snowman.py

ייבא הערות מוזיקליות כ- mn

# Frosty the Snowman # שיר של וולטר א 'רולינס = [(mn. G4, mn. HLF), (mn. E4, mn. DTQ), (mn. F4, mn. ETH), (mn. G4, mn. QTR), (mn. C5, mn. HLF),…

convert_to_binary.py

שירים = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] לשיר בשירים: data = song [0] file = song [1] עם פתוח (קובץ, "wb") בתור bin_file: לכניסה לנתונים: print ("writing:" + str (entry)) note = entry [0] dur = entry [1] bin_file.write (struct.pack ("<HH", note, dur))

רציתי מוזיקת חג. ה- CPX תומך גם ב- WAV וגם בגוונים. קבצי WAV התבררו כגדולים מדי מבחינת גודל הקובץ וזיכרון זמן הריצה. שימוש במבני נתונים של פייתון כדי להחזיק צלילים ומשך הזמן שלהם התברר גם כשימוש בזיכרון זמן ריצה רב מדי. אז שיניתי את קוד Holi-Tie לקריאת קובץ בינארי דחוס שהכיל רק את נתוני השירים הדרושים בפורמט בינארי דחוס. כתבתי תסריט שקורא שיר המוחזק במבנה נתוני פייתון וכותב אותו לפורמט הבינארי. קידוד השיר כנתונים בינאריים בקובץ הופך את השיר לקטן ודינאמי כאחד. לאחר השיר נגמר הזיכרון משתחרר.

זה טריוויאלי להוסיף עוד שירים. לפרטים, עיין ב- README.md בשירים.

כפתור A מניע NeoPixels, B מנגן מוזיקה, אך לא במקביל

code.py

def button_a_pressed ():

אם music.is_playing (): # עצור מוסיקה אם אתה מנגן music.stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # הפעל אנימציה ללא הפעלה next_led_animation (0) אם music.is_playing (): # Toggle מוסיקה מופעלת או כבויה music.stop () else: music.play ()

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

פאנקיות קוד פייתון

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

מודולים מורכבים

לְלַקֵט

#!/bin/bash

מהדר = ~/פיתוח/circuitpython/mpy-cross-3.x-windows.exe שירי תקליטורים python3./convert_to_binary.py cd.. עבור f ב- *.py; לעשות אם

בתחילת הפרויקט עקבתי אחר עצות Adafruit ושמרתי את כל ספריות Adafruit CircuitPython בפלאש. אולם זה הותיר מקום קטן לפרויקט שלי. כדי שאוכל להעלות את הקוד שלי ל- CPX, התחלתי לאסוף את המודולים ולהניח אותם על ה- MCU. מסתבר שה- Holi-Tie לא צריך אף אחת מהספריות החיצוניות. הספריות הקיימות ב- UF2 הספיקו לפרויקט זה. הפעלת קבצי *.mpy קצת יותר יעילה ולכן שמרתי על תהליך פריסת המודולים המורכבים.

כפי שניתן לראות בתסריט הקומפילציה למעלה, אני עובד על מכונת Windows אך משתמש בכלי Unix כגון bash ו- python3. אני משתמש בסיגווין כדי להשיג זאת. ניתן לתרגם סקריפט זה בקלות לאצווה DOS וליישום Python3 יליד Windows.

שלב 8: כפתור עניבה

כפתור העניבה
כפתור העניבה
לחצן את העניבה
לחצן את העניבה

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

מוּמלָץ: