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

132 שעון פיקסל: 5 שלבים (עם תמונות)
132 שעון פיקסל: 5 שלבים (עם תמונות)

וִידֵאוֹ: 132 שעון פיקסל: 5 שלבים (עם תמונות)

וִידֵאוֹ: 132 שעון פיקסל: 5 שלבים (עם תמונות)
וִידֵאוֹ: האפל וואצ של אנדרואיד?! 2024, נוֹבֶמבֶּר
Anonim
Image
Image
132 שעון פיקסל
132 שעון פיקסל

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

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

שלב 1: איסוף חומרים וכלים

איסוף ציוד וכלים
איסוף ציוד וכלים
איסוף ציוד וכלים
איסוף ציוד וכלים
איסוף ציוד וכלים
איסוף ציוד וכלים
איסוף ציוד וכלים
איסוף ציוד וכלים

רכיבים

פרויקט זה בנוי על לוח תחביבים מצומצם מחנות DIY המקומית שלי. הלוח ברוחב 850 מ"מ על 500 מ"מ וגובהו 18 מ"מ.

נוריות LED המשמשות בפרויקט זה הינן 5050 WS2812b המותקנות במעגלים PCB עגולים בקוטרם כ -9 מ מ עם כריות הלחמה מאחור.

אני משתמש בבקר מיקרו תואם Arduino Pro Mini. זוהי גרסת 5V 16 MHZ. בחרתי בזה מכיוון שהוא בעל עיצוב דק במיוחד, טביעות רגל קטנות וכל היציאות הדרושות בתוספת כמה פנויים לשדרוגים עתידיים. הוא גם 5 וולט, כך שאני יכול להשתמש באספקת חשמל אחת עבור נוריות LED, בקר מיקרו ו- RTC

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

משמש גם:

חוּט. הלחמה ודבק חם.

כלים:

מקדחי כוח ומקדחי עץ (10 מ"מ ו -5 מ"מ)

מלחם

אקדח דבק חם

קטעי חוטים

אביזרי נתב Dremel וצלילה

שלב 2: סימון, קידוח וניתוב

סימון, קידוח וניתוב
סימון, קידוח וניתוב
סימון, קידוח וניתוב
סימון, קידוח וניתוב
סימון, קידוח וניתוב
סימון, קידוח וניתוב

הִתעַמְלוּת

  • בעזרת קצה מיצר מצאו את מרכז הלוח על ידי ציור קו מהפינות הנגדיות.
  • סמנו 3 עיגולים בעזרת חוט ועט. העיגול החיצוני ביותר צריך להיות בערך 20 מ"מ מקצה הלוח כששני הקווים האחרים נעים ב -15 מ"מ מהקו האחרון.
  • השתמשתי במראה שעון מודפס כדי לעזור לי לסמן את המיקומים של כל אחת מהדקות והשניות על 2 הקווים והשעות החיצוניים בקו הפנימי.
  • מקדחים חורים בגודל 10 מ"מ בעומק של כ -5 מ"מ לכל שעה, דקה ושנייה.
  • השתמש במקדח 5 מ"מ כדי ליצור חורים על הלוח במשך שעה, דקה ושנייה.

ניתוב

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

  • שימוש בנתב ומדריך מעגלים לנתב ערוצי תיל בלוח
  • סמן ונתב הפסקה עבור ה- RTC ו- Micro Controller לחיות בהן.
  • נתב תעלה מהקווים החיצוניים לשקע החוטים

שלב 3: כל כך הרבה חיילים, חיתוך וחיטוט

כל כך הרבה חיילים, חיתוך וחיטוט
כל כך הרבה חיילים, חיתוך וחיטוט
כל כך הרבה חיילים, חיתוכים ופשיטות
כל כך הרבה חיילים, חיתוכים ופשיטות
כל כך הרבה חיילים, חיתוכים ופשיטות
כל כך הרבה חיילים, חיתוכים ופשיטות

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

כל אחת מהנוריות צריכה 5 וולט פנימה, 5 וולט החוצה, נתונים פנימה, נתונים החוצה, הארקה פנימה וארקה החוצה. כולל כוח לבקר המיקרו ו- RTC מעל 400 החוטים שלו, כולם מופשטים ומולחמים משני קצותיו.

חומר כחול דביק שימושי מאוד לשלב זה.

  • התחלתי בהנחת 2 נוריות לחורים אחת ליד השנייה כדי לחשב את אורך החוט הדרוש כדי להתחבר זה לזה.
  • בעזרת חוט החוט הראשון כמדריך, לאחר מכן חתכתי 60 מכל חוט צבעוני.
  • מפשיטים 2 מ"מ שרוולים מקצות כל חוט ויוצרים אותם בעזרת הלחמה.
  • הלחמה כף קטנה של הלחמה על כל אחת מרפידות הלד.
  • הלחם את החוטים לנורות הלדים כדי ליצור שתי שרשראות של 60 למשך הדקות והשניות ושרשרת אחת של 12 למשך השעות. השתמשתי בחוט אדום עבור 5V, צהוב לנתונים וכחול לקרקע.
  • הקפד לחבר כל Data Out (DOUT) ל- Data In (DIN) של הנורית הבאה
  • ה- LED האחרון בכל מנה בשרשרת אינו זקוק לחוט יציאת נתונים.

לאחר השלמת כל השרשראות כדאי לבדוק אותן לפני התקנתן. השתמשתי ב- UNO Arduino שלי ובמבחן ה- NeoPixel Strand של Adafruit כדי לאשר שכל LED עובד.

הלחמה חוטים ארוכים יותר על כל אחת מהשרשראות עבור 5V, Ground ו- Data in.

בשלב זה אמורים להיות חמישה חוטי 5v, שלושה חוטי Data המחוברים ל- Arduino Pro Mini ו- 5 חוטי קרקע.

רצו 5 מ מ מקצות חוטי ה -5 וו והלחמו את כולם יחד וחזרו על חוטי הקרקע.

לאחר השלמת שלושת השרשראות הלחמה חוט 5V אל סיכת RAW של ה- Arduino Pro Mini וגם על סיכת VCC עבור ה- RTC. חוט הארקה ל- GND ב- Arduino Pro Mini ו- RTC ולאחר מכן 2 חוטים נוספים:

SCL מה- RTC ל- A5 ב- Pro Mini

SDA מה- RTC ל- A4 ב- Pro Mini

קווי הנתונים מנורות ה- LED צריכים להתחבר ל:

  • שניות - פין דיגיטלי 3.
  • דקות - DigitalPin 4
  • שעות - DigitalPin 5

שלב 4: התקנה

מתקין
מתקין
מתקין
מתקין
מתקין
מתקין

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

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

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

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

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

חלק גדול מהקוד הזה הושאל משעון הטבעת של NeoPixel על ידי אנדי דורו. חלק ממבחן Adafruit NeoPixel Strand וחלק שהרכבתי.

יהיה עליך להתקין כמה ספריות. הם זמינים ממנהל הספריות על תוכנת Arduino.

NeoPixel Adafruit עבור נוריות ws2812b

חוט לשיחה עם ה- RTC באמצעות I2C (זה מובנה כסטנדרט)

ו- RTClib על הידיעה מה לשאול את ה- RTC

/********************************************* **************************שעון טבעת NeoPixel מאת אנדי דורו ([email protected]) https://andydoro.com/ringclock/ ********************************************** **************************

היסטוריית גרסאות

תאריך לפי מה

20140320 AFD טיוטה ראשונה 20160105 AFD קשתות דהויות 20160916 AFD תואם תכשיט 20170727 AFD הוסיף STARTPIXEL למארז 3D, נקודת התחלה משתנה, נוספה תמיכה אוטומטית DST 20180424 AFD באמצעות ספריית DST https://github.com/andydoro/DST_RTC *

/ כלול את קוד הספרייה:

#כלול #כלול

#לִכלוֹל

// הגדר סיכות

#define SECPIN 3 #הגדר MINPIN 4 #הגדר HOUPIN 5

#define BRIGHTNESS 20 // הגדר בהירות מרבית

#הגדר r 10

#define g 10 #define b 10 RTC_DS3231 rtc; // הקמת אובייקט שעון

Adafruit_NeoPixel stripS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // חפץ רצועה

Adafruit_NeoPixel stripM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // חפץ רצועה Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // רצועת בתים אובייקט pixelColorRed, pixelColorGreen, pixelColorBlue; // מחזיק ערכי צבע

הגדרת בטל () {

Wire.begin (); // Begin I2C rtc.begin (); // התחל שעון

Serial.begin (9600);

// הגדר pinmodes pinMode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);

if (rtc.lostPower ()) {

Serial.println ("RTC איבד כוח, מאפשר להגדיר את השעה!"); // השורה הבאה קובעת את ה- RTC לתאריך ושעה שסקיצה זו נערכה rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // שורה זו קובעת את ה- RTC עם תאריך ושעה מפורשים, למשל להגדרה // 21 בינואר 2014 בשעה 3 לפנות בוקר תתקשר: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH.begin (); //strip.show (); // אתחל את כל הפיקסלים ל'כבוי '

// רצף אתחול

עיכוב (500);

colorWipeS (stripS. Color (0, g, 0), 5); // כחול colorWipeM (stripM. Color (r, 0, 0), 5); // כחול colorWipeH (stripH. Color (0, 0, b), 50); // כחול

עיכוב (1000);

DateTime theTime = rtc.now (); // לוקח בחשבון בתים DST secondval = theTime.second (); // get minute byte minute = theTime.minute (); // לקבל דקות int hourval = theTime.hour (); hourval = hourval % 12; // שעון זה הוא 12 שעות, אם 13-23, להמיר 0-11 '

עבור (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); עיכוב (5); }

עבור (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); עיכוב (5); }

עבור (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); עיכוב (5); }

}

לולאת חלל () {

// לקבל זמן

DateTime theTime = rtc.now (); // לוקח בחשבון DST

בת secondval = theTime.second (); // קבל שניות

byte minuteval = theTime.minute (); // לקבל דקות int hourval = theTime.hour (); // get hours hourval = hourval % 12; // שעון זה הוא 12 שעות, אם 13-23, להמיר 0-11 '

stripS.setPixelColor (secondval, 0, 0, 20); stripS.show (); עיכוב (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); עיכוב (16);}}

stripM.setPixelColor (דקות, 0, g, 0);

stripM.show (); עיכוב (10); if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); עיכוב (16);}}

stripH.setPixelColor (hourval, r, 0, 0);

stripH.show (); עיכוב (10); if (secondval == 59 && minuteval == 59 && hourval == 11) {עבור (uint8_t i = stripH.numPixels (); i> 0; i--) {stripH.setPixelColor (i, 0, 0, b); stripH.show (); עיכוב (83);}} // עבור איתור באגים סדרתי Serial.print (hourval, DEC); Serial.print (':'); Serial.print (דקות, DEC); Serial.print (':'); Serial.println (secondval, DEC); }

// מלאו את הנקודות בזו אחר זו בצבע

void colorWipeS (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); עיכוב (המתנה); }}

void colorWipeM (uint32_t c, uint8_t wait) {

עבור (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); עיכוב (המתנה); }}

void colorWipeH (uint32_t c, uint8_t wait) {

עבור (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); עיכוב (המתנה); }}

שלב 5: נגיעות אחרונות

Image
Image
נגיעות אחרונות
נגיעות אחרונות

כל מה שנותר כעת הוא לתקן את ה- RTC ואת בקר הבקרה למטה בהפסקה.

הצבתי את צד סוללת RTC כלפי מעלה כך שאוכל להחליף את הסוללה בקלות במידת הצורך.

חבר את חוטי 5v לצד + של המחבר ואת הקרקע לצד -

לספק לו מתח!

יש לי את שלי מחובר לבנק סוללות USB אבל מטען טלפון USB יעבוד לא פחות טוב.

הערה:

בהירות הנורות נקבעת בקוד. הוא הוגדר נמוך כדי לשמור על התיקו הנוכחי נמוך. בהירות מלאה עם כל נוריות ה- LED דולקות הוא יכול למשוך כמעט 8 אמפר. עם ההתקנה הנוכחית זה פחות מ -1.

תחרות שעונים
תחרות שעונים
תחרות שעונים
תחרות שעונים

סגנית בתחרות השעונים

מוּמלָץ: