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

שעון מעורר בינארי Arduino DIY: 14 שלבים (עם תמונות)
שעון מעורר בינארי Arduino DIY: 14 שלבים (עם תמונות)

וִידֵאוֹ: שעון מעורר בינארי Arduino DIY: 14 שלבים (עם תמונות)

וִידֵאוֹ: שעון מעורר בינארי Arduino DIY: 14 שלבים (עם תמונות)
וִידֵאוֹ: Lesson 22: Using Seven Segment Display with Arduino and Electronic Dice | SunFounder Robojax 2024, יולי
Anonim
שעון מעורר בינארי Arduino DIY
שעון מעורר בינארי Arduino DIY
שעון מעורר בינארי Arduino DIY
שעון מעורר בינארי Arduino DIY
שעון מעורר בינארי Arduino DIY
שעון מעורר בינארי Arduino DIY

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

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

אספקה

LED 5 מ מ (מכל צבע, השתמשתי ב -13 נוריות לבנות עם נורית RGB אחת כמחוון) --- 14 יח '

Arduino Nano (אחרים עשויים לעבוד) --- 1 יחידה

מתג מיקרו --- 1 יחידה

חתיכה קטנה של רדיד אלומיניום

לוח הרכבה (למארז, אך אל תהסס לעצב בעצמך)

פיסת נייר לבן (או כל צבע אחר)

קצת סרט פלסטיק (זה שמשמש ככריכת ספר)

חבורה של חוטים

זמזם --- 1 יח '

טרנזיסטור NPN --- 1 יחידות

נגדים 6k8 --- 14 יח ', 500R --- 1 יחידה, 20R (10Rx2) --- 1 יחידה, 4k7 --- 1 יחידות

ספק כוח לפרויקט (השתמשתי בסוללת Li-on)

רצועת LED 5050 ומתג שקופיות (אופציונלי)

שלב 1: חבר את המעגל

חבר את המעגל!
חבר את המעגל!

אני אחלק את השלב הזה ל:

1) החלק הבאזר

2) לוח ה- LED

3) המתג (כפתור לחיצה)

4) רצועת LED

5) חיישן הקיבול

6) אספקת חשמל

7) חבר את כולם ל- Arduino

לרוב, זהו רק שלב "בצע את הסכימה". אז בדוק את הסכימה למעלה או אפילו הורד והדפס אותו!

שלב 2: הכנת החלק של הבאזר

הכנת החלק של הבאזר
הכנת החלק של הבאזר
הכנת החלק של הבאזר
הכנת החלק של הבאזר
הכנת החלק של הבאזר
הכנת החלק של הבאזר

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

באמת, התייחס לסכימה.

p/s: אני עדיין לא ממש יודע איך לבחור נגד לטרנזיסטור בזמן כתיבת זה. הערך שהשתמשתי בו נבחר באופן אמפירי.

שלב 3: הכנת לוח ה- LED

הכנת לוח הלדים
הכנת לוח הלדים
הכנת לוח הלדים
הכנת לוח הלדים
הכנת לוח הלדים
הכנת לוח הלדים

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

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

הערה: אתה עלול להתבלבל בשלב זה. זכור שבמקום לחבר את כל הקרקע יחד, אנו מחברים את כל הטרמינל החיובי יחד והמסוף השלילי לפין האינדיבידואלי בארדואינו. לפיכך אנו משתמשים בסיכת ה- GPIO של Arduino כקרקע, לא ב- Vcc. אם אתה מחבר אותו בטעות לאחור, אל תדאג. אתה יכול לשנות את כל ה- HIGH ל- LOW ו- LOW ל- HIGH בפונקציית ledcontrol.

שלב 4: הכנת המתג (לחצן למעשה)

הכנת המתג (לחצן למעשה)
הכנת המתג (לחצן למעשה)
הכנת המתג (לחצן למעשה)
הכנת המתג (לחצן למעשה)
הכנת המתג (לחצן למעשה)
הכנת המתג (לחצן למעשה)

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

פינת ידע: מדוע אנו זקוקים לנגד נפתח?

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

שלב 5: הכנת רצועת LED

הכנת רצועת לד
הכנת רצועת לד
הכנת רצועת לד
הכנת רצועת לד

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

שלב 6: הכנת חיישן הקיבול

הכנת חיישן הקיבול
הכנת חיישן הקיבול
הכנת חיישן הקיבול
הכנת חיישן הקיבול
הכנת חיישן הקיבול
הכנת חיישן הקיבול
הכנת חיישן הקיבול
הכנת חיישן הקיבול

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

שלב 7: הכנת ספק הכוח

הכנת ספק הכוח
הכנת ספק הכוח
הכנת ספק הכוח
הכנת ספק הכוח
הכנת ספק הכוח
הכנת ספק הכוח

מכיוון שהשתמשתי בסוללת Li-on כאספקת חשמל, אני צריך מודול TP4056 לטעינה והגנה, וממיר בוסט להמיר את המתח ל- 9v. אם החלטת להשתמש במתאם קיר 9V, ייתכן שתזדקק לשקע DC או פשוט חבר אותו ישירות. שים לב שערך הנגד למגבר מיועד ל- 9V ואם אתה רוצה להשתמש במתח אחר, ייתכן שיהיה עליך לשנות את הנגד.

שלב 8: חיבורם ל- Arduino

מחבר אותם לארדואינו
מחבר אותם לארדואינו
מחבר אותם לארדואינו
מחבר אותם לארדואינו
מחבר אותם לארדואינו
מחבר אותם לארדואינו

עקוב אחר הסכימה! עקוב אחר הסכימה! עקוב אחר הסכימה!

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

שלב 9: מארז

קַרפִּיף
קַרפִּיף
קַרפִּיף
קַרפִּיף
קַרפִּיף
קַרפִּיף
קַרפִּיף
קַרפִּיף

הממד של העיצוב שלי הוא 6.5 ס"מ*6.5 ס"מ*8 ס"מ, כך שהוא מעט מגושם. הוא מורכב מחלון קדמי לתצוגת LED וחלון עליון למנורת המיטה. לעיצוב שלי, עיין בתמונות.

שלב 10: זמן תכנות

Image
Image
זמן תכנות!
זמן תכנות!

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

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

לקביעת שעה: h, XX - כאשר xx היא השעה הנוכחית

כדי להגדיר דקה: min, XX - xx היא הדקה הנוכחית

כדי להגדיר שנייה: s, XX

לקביעת תאריך: d, XX

לקביעת חודש: שני, XX

כאשר ההערה לעיל מבוצעת, היא אמורה להחזיר לך את הערך שהגדרת זה עתה. (למשל כאשר אתה מגדיר שעה עם h, 15, היא אמורה להחזיר שעה: 15 במסך הטורי.

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

הסקיצה משתמשת בספריית ADCTouch, וודא שהתקנת אותה.

שלב 11: מנגנון תיקון

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

כעת הקורדור כברירת מחדל ל- 0 בעדכון האחרון.

ערך הקורדור פירושו כמה מילי שניות נדרש להאט שנייה אחת

כדי לברר את הערך של קורדור, השתמש בנוסחה:

2000/(y-x)/x)

כאשר x = משך הזמן האמיתי שחלף ו- y = משך הזמן שחלף השעון, שניהם בשנייה

כדי למצוא את הערך של x ו- y, עליך לבצע ניסוי קטן.

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

x = הזמן הסופי-ראשוני בפועל ו- y = השעה האחרונה האחרונה-השעה

לאחר מכן שנה את ערך corrdur בקוד והעלה מחדש ל- Arduino.

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

2000/((2/z)+(y-x/x))

כאשר x ו- y זה אותו דבר כמו קודם, בעוד z הוא ערך הקורדור הנוכחי.

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

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

שלב 12: אופן השימוש בכל הפונקציות

Image
Image

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

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

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

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

במצב הרביעי, אתה יכול להגדיר את שעון האזעקה באמצעות חיישן קיבול

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

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

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

הו, כדי לבטל את האזעקה, פשוט לחץ על מתג המיקרו. (העדכון האחרון לכלול SNOOZE אזעקה)

ובכן, מה דעתך לקרוא את השעון? זה קל! קריאת שעון בינארי - Wikihow אתה עלול להרגיש מוזר בהתחלה, אבל אתה תתרגל לזה!

שלב 13: סיכום

סיכום
סיכום
סיכום
סיכום

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

שיפור עתידי:

1) השתמש ב- RTC

2) הגדר שעון מעורר או זמן או טיימר באופן אלחוטי!

3) כל תכונה שאני חושב עליה

שלב 14: עדכון: לאחר שימוש של שבוע

עדכון: לאחר שימוש של שבוע
עדכון: לאחר שימוש של שבוע
עדכון: לאחר שימוש של שבוע
עדכון: לאחר שימוש של שבוע
עדכון: לאחר שימוש של שבוע
עדכון: לאחר שימוש של שבוע

מלבד הבעיה הברורה - סחיפת זמן, הבאה שהייתי אומר היא צריכת חשמל. ראשית, אני מעלה את המתח עד 9V, ואז יורד על ידי הרגולטור הליניארי בארדואינו. הרגולטור הליניארי מאוד לא יעיל. השעון מחזיק רק יום אחד. זה אומר שאני צריך להטעין אותו כל יום. זו לא העסקה הגדולה ביותר עד שאתה מבין שהמערכת כולה יעילה בכ -50% בלבד. בהתחשב בכך שהסוללה שלי היא 2000mAh, אוכל לחשב את הכוח המבוזבז מדי יום.

בזבוז חשמל = (7.4Wh*10%)+(7.4Wh*90%*50%) = 4.07Wh ביום

כלומר 1.486kWh בשנה! בעזרת זה אפשר להרתיח 283 גרם מים (מ -25 מעלות צלזיוס עד 100 מעלות צלזיוס)? אבל בכל מקרה, אני הולך לשפר את יעילות השעון. הדרך לעשות זאת היא לא להשתמש בווסת הליניארי כלל. המשמעות היא שעלינו להתאים את ממיר ההגברה ליציאה של 5V ישירות לסיכה של 5V בארדואינו. לאחר מכן, כדי למזער את הכוח המבוזבז עוד יותר, עלי להסיר את השניים הנמצאים על הלוח (pin13 והספק), מכיוון שהם יבזבזו 0.95Wh ליום. לרוע המזל, אני לגמרי לא אוהב הלחמות SMD כך שהדרך היחידה בשבילי לעשות זאת היא לחתוך את המסילה על הלוח. לאחר מכן, עלי להסיר את הנגד הפולט על הבאזר ואת מנורת המיטה (רצועת LED לא עובדת ב 5V). אבל האם זה אומר שאתה צריך לוותר על התכונה המדהימה הזו? לא! יש לך כאן שתי אפשרויות: השתמש בדיודת 5 מ מ נורמלית, או השתמש ברצועת LED 5V. אבל בשבילי, כבר הרגשתי עייף מלבצע את הפרויקט הזה במשך כל השבוע שעבר, אז החלטתי לוותר על התכונה הזו. עם זאת, השתמשתי במתג במקור עבור תכונת האור להפעלה או כיבוי של לוח השעון כדי לחסוך באנרגיה נוספת, אך בסופו של דבר הנורית מהבהבת כשאני מכבה אותה. באג להפוך לתכונה? אני לא יודע (מישהו יודע אנא ספר לי למטה).

בסוף השינוי, השעון נמשך כעת יותר מיומיים!

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

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

מוּמלָץ: