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

חבר בוקר: 8 שלבים
חבר בוקר: 8 שלבים

וִידֵאוֹ: חבר בוקר: 8 שלבים

וִידֵאוֹ: חבר בוקר: 8 שלבים
וִידֵאוֹ: ככה זה כשיש לך חברה רוסיה 2024, יולי
Anonim
Image
Image

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

שלב 1: סיעור מוחות של הרעיון

רישום וחומרים
רישום וחומרים

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

שלב 2: שרטוט וחומרים

רישום וחומרים
רישום וחומרים

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

שלב 3: יצירת מעטפת החיצונית

יצירת מעטפת החיצונית
יצירת מעטפת החיצונית
יצירת מעטפת החיצונית
יצירת מעטפת החיצונית

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

שלב 4: חיתוך בלייזר של המעטפת החיצונית

חיתוך לייזר במעטפת החיצונית
חיתוך לייזר במעטפת החיצונית

עבור אב הטיפוס השני רציתי לקבל מדידות מדויקות ונאלצתי ליצור קובץ pdf לשלוח לחותך הלייזר. לשם כך השתמשתי באתר יישומים של יוצר תיבות, https://boxdesigner.connectionlab.org. באותו אתר נכנסתי לאחר מכן למידות התלת-ממדיות של הקופסה, עובי החומר שלנו, יחידות המדידה ואיזה סוג קובץ אני רוצה שהוא יוצר. מידות הקופסאות היו 7.5 אינץ 'x 3 אינץ' x 5 אינץ 'והשתמשתי בחומר אקרילי עבה 1/8. מדידות החריצים של מפרק האצבע הוגדרו אז באופן אוטומטי להיות 0.46875 אינץ '. בחרתי בגרסת ה- pdf מכיוון שזה סוג הקובץ שחותך לייזר קורא ורציתי לבצע כמה שינויים ב- Adobe בקובץ. שיניתי את צבעי הקו לאדום, כך שחותך הלייזר יידע לחתוך אותם במקום לחרוט את הצורה, והוספתי קופסת מלבן עם מידות של 3.92 אינץ על 1.56 אינץ 'על מה שעומד להיות החלק הקדמי של קופסא. הוספתי גם מלבן חתוך בגודל 1 אינץ על 0.5 אינץ 'על החלק הימני בצד התחתון כדי לשמש כפתח לחוט המחובר לשעון המעורר. בפעם האחרונה הוספתי שלושה פתחים עגולים בחלק העליון של שני הבאזמים והכפתור. לפתחי הזמזם היה קוטר של 0.5 אינץ 'ופתח הכפתורים היה 0.375 אינץ'.

שלב 5: להרכיב אותו

לשים את זה ביחד
לשים את זה ביחד

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

שלב 6: קוד

מבוא:

פרויקט זה צופן באמצעות השפה c ++ בתוכנת Arduino IDE. בקר הבקרה ששימש היה NodeMCU עם ה- ESP8266. לפרויקט זה נזדקק לדרך לשמור במדויק על זמן, על זמזם להישמע, מערכת אזעקה לגרום לאזעקה לזמזם ומסך להצגת כל הזמן וזמני האזעקה. לקוד המלא עיין בקישור הזה

ייבוא ספריות

ראשית, עלינו לייבא את הספריות הדרושות.

#כלול "RTClib.h"

#כלול "Wire.h" #כולל #כלול #כלול #כלול

יוזם משתנים

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

LiquidCrystal_I2C lcd (0x27, 20, 4);

const int buzzer1 = 12; const int buzzer2 = 0; כפתור const int = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"יום ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת"} זמן ההתחלה int; int activetime; int prevoustime = 0; char ahours1 [3]; char amins1 [3]; int שעה 1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int שעה 2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int hour3 = 0; int min3 = 0; אזעקה int = 0; int ByteReceived; צ'אר קיבלהצ'ר; const byte numChars = 32; char receivedChars [numChars];

להכין

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

הגדרת בטל () {

#ifndef ESP8266 בעוד (! סדרתי); #endif if (! rtc.begin ()) {Serial.println ("לא הצלחתי למצוא RTC"); בעוד (1); } if (rtc.lostPower ()) {Serial.println ("RTC איבד חשמל, מאפשר להגדיר את השעה!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd.backlight (); // עושה Baklight ON. lcd.clear (); // מנקה LCD lcd.print ("00:00"); // להציג על LCD לאחר העלאת קוד lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("זמן"); lcd.setCursor (10, 1); lcd.print ("אזעקה 1"); lcd.setCursor (0, 3); lcd.print ("אזעקה 2"); lcd.setCursor (0, 2); lcd.print ("00:00"); lcd.setCursor (10, 3); lcd.print ("אזעקה 3"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.begin (); pinMode (כפתור, INPUT); // הגדר סיכה ללחצן ההשתקה pinMode (זמזם 1, OUTPUT); // הגדר סיכה עבור pinMode פלט זמזם (buzzer2, OUTPUT); // הגדר סיכה לפלט זמזם Serial.begin (9600); Serial.println ("זמן קלט של אזעקות בפורמט HHMM ללא מקום בין אזעקות"); זמן התחלה = מיליס ()/1000; }

מקבל מידע

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

void recvWithEndMarker () {

סטטי int ndx = 0; String timein = Serial.readString (); עבור (ndx = 0; timein [ndx]; ndx ++) {receivedChars [ndx] = timein [ndx]; } receivedChars [ndx] = '\ 0'; Serial.print (receivedChars); }

הגדרת אזעקות

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

/* אזעקה 1*/

recvWithEndMarker (); int h, m; עבור (h = 0; h <2; h ++) {ahours1 [h] = receivedChars [h]; } עבור (m = 2; m <4; m ++) {amins1 [m-2] = receivedChars [m]; } ahours1 [h] = '\ 0'; amins1 [m-2] = '\ 0'; Serial.print (שעה 1); Serial.print (amins1); שעה 1 = atoi (ahours1); min1 = atoi (amins1); Serial.print (שעה 1); Serial.print (min1);

זמזם/כפתור

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

/ * לחצן שתיקה */

int שקט; int b; b = digitalRead (2); אם (b == LOW) {שתיקה = 1; } אחר {שתיקה = 0; } / * התחל אזעקה * / אם (שעות == שעה 1 && דקות == דקות 1) {alarm = 1; } אחרת אם (שעות == שעה 2 && דקות == דקות 2) {alarm = 1; } אחרת אם (שעות == שעה 3 && דקות == דקות 3) {alarm = 1; } אחר {alarm = 0; שתיקה = 0; } אם (אזעקה == 1 && שתיקה == 0) {צליל (זמזם 1, 4000, 1000); טון (זמזם 2, 4000, 1000); עיכוב (1000); noTone (זמזם 1); noTone (זמזם 2); עיכוב (1000); }

זמני הדפסה

לבסוף, עלינו להדפיס את זמני האזעקה וזמן אמת למסך ה- LCD.

DateTime עכשיו = rtc.now ();

int שעות = (now.hour ()); int דקות = (now.minute ()); / * זמן אזעקה בפורמט 00:00 */ lcd.setCursor (10, 0); lcd.print (שעה 1); lcd.setCursor (13, 0); lcd.print (amins1); lcd.setCursor (0, 2); lcd.print (ahours2); lcd.setCursor (3, 2); lcd.print (amins2); lcd.setCursor (10, 2); lcd.print (ahours3); lcd.setCursor (13, 2); lcd.print (amins3); / * זמן תצוגה מ- RTC */ lcd.setCursor (0, 0); lcd.print (שעות); lcd.print (":"); lcd.print (דקות);

שלב 7: אלקטרוניקה

מכשירי חשמל
מכשירי חשמל
מכשירי חשמל
מכשירי חשמל
מכשירי חשמל
מכשירי חשמל

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

כדי להתחיל לחבר את NodeMCU שלך לקצה הרחוק של לוח הלחם שלך. לאחר מכן יהיה עליך לחבר את כל האלקטרוניקה האחרת שלך ל- NodeMCU ולוח הלחם. התחל על ידי חיבור מסך ה- LCD שלך לסיכות D1 עבור SCL ו- D2 עבור SDA. ה- LCD יאפשר למשתמש לראות את השעה הנוכחית ואת זמני האזעקה שנקבעו. עכשיו יש חוט לחבר את הבאזר שלך לסיכות D3 ו- D6. הבאזז יאפשר לאזעקה להתריע בפני המשתמש כאשר הזמן שהוגדר הגיע. כעת עליך לצרף כפתור כדי לאפשר לעצור את האזעקה. צרף לחצן זה להצמיד D4. כעת תחבר את השעון בזמן אמת ללוח הלחם. חברו את השעון בזמן אמת כך שהוא משתמש באותם סיכות SDA ו- SCL המשמשות לתצוגת ה- LCD.

שלב 8: סופי

סופי
סופי

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

מוּמלָץ: