פרסומת
שמירה על זמן בפרויקטים של Arduino אינה כה קלה כפי שאפשר לחשוב: ברגע שחיבור המחשב אינו קיים, Arduino ללא הכוח שלך פשוט מפסיק לפעול, כולל הסימון הפנימי שלו.
על מנת לסנכרן את הארדואינו עם העולם סביבו, תזדקק למה שמכונה "מודול שעון זמן אמת". כך תשתמש בזה.
מה הטעם בשעון בזמן אמת (RTC)?
ככל הנראה המחשב שלך מסנכרן את זמנו עם האינטרנט, אך עדיין יש לו שעון פנימי שממשיך לפעול גם ללא חיבור לאינטרנט או שהכיבוי אינו מכובה. כאשר אתה משתמש בארדואינו המחובר למחשב, יש לו גישה לזמן מדויק שמספק שעון המערכת שלך. זה די שימושי, אבל רוב הפרויקטים של ארדואינו נועדו לשמש הרחק ממחשב - בו נקודה, בכל פעם שהכוח מנותק או שהארדואינו יופעל מחדש, אין לו שום מושג באיזו שעה זה. השעון הפנימי יאופס ויתחיל לספור מאפס שוב בפעם הבאה שהוא יפעל.
אם לפרויקט שלך יש קשר עם צורך בזמן - כמו שלי שעון מעורר של אור לילה וזריחה פרויקט מעורר אור לילה וארוחת שמשהיום נכין שעון מעורר לזריחה, שיעיר אותך בעדינות ולאט לאט מבלי להיזקק למכונה עשיית רעשים. קרא עוד - ברור שזו תהיה בעיה. בפרויקט ההוא הסתברנו על הנושא על ידי הגדרת ידנית של השעה בכל לילה בגסות למדי דרך - המשתמש היה לוחץ על כפתור האיפוס רגע לפני שהוא נכנס למיטה ומספק זמן ידני סינכרון. ברור שזה לא פיתרון אידיאלי לאורך זמן.
מודול RTC הוא מעט מעגלים נוספים, הדורש סוללה קטנה של תאי מטבע, שממשיכה לספור את הזמן גם כאשר הכיבוי של הארדואינו שלך. לאחר שהוגדר פעם אחת - זה ישמור זמן זה לאורך חיי הסוללה, לרוב שנה טובה בערך.
TinyRTC
ה- RTC הפופולרי ביותר לארדואינו נקרא TinyRTC וניתן לקנות אותו בערך 5- $ 10 $ באיביי. סביר להניח שתצטרך לספק סוללה משלך (זה לא חוקי למשלוח אלה מעבר לים למקומות רבים), וכמה כותרות (הסיכות שנכנסות לחורים, שתצטרך להלחם בעצמך).
זה המודול שיש לי:
יש לו אפילו חיישן טמפרטורה מובנה, אם כי הסוללה תחזיק מעמד זמן רב יותר אם אינך משתמש בה.
מספר החורים בדבר הזה נראה די מפחיד, אבל אתה רק צריך ארבעה מהם; GND, VCC, SCL ו- SDA - תוכלו להשתמש בסיכות הרלוונטיות משני צדי מודול ה- RTC. אתה מדבר עם השעון באמצעות פרוטוקול I2Cשמשמעותה משמשת רק לשני סיכות - אחת ל"שעון "(שעון נתונים לתקשורת טורית, אין קשר לזמן) ואחת לנתונים. למעשה, אתה אפילו שרשור עד 121 מכשירי I2C באותם שני סיכות - בדוק דף Adafruit זה למבחר מכשירי I2C אחרים שתוכל להוסיף, כי יש המון!
מתחילים
חבר את מודול TinyRTC שלך לפי התרשים למטה - אין צורך בקו ה- DS הוורוד, שכן זה לגבי חיישן הטמפרטורה.
הבא, הורד את ה- זמן ו DS1307RTC ספריות והנח בתיקיות שהתקבלו /libraries תיקיה.
צא והפעל מחדש את סביבת הארדואינו כדי לטעון בספריות ודוגמאות.
תמצאו שתי דוגמאות בתפריט DS1307RTC: העלה והפעל את ה- זמן מוגדר דוגמה ראשונה - זה יגדיר את ה- RTC לזמן הנכון. לא כדאי להקדיש את הקוד בפועל, רק דעו כי עליכם להריץ אותו פעם אחת כדי לבצע את סנכרון הזמן הראשוני.
בשלב הבא, הסתכל על השימוש בדוגמה עם ReadTest.
# כלול
# כלול
# כלול הגדרת חלל () {Serial.begin (9600); בזמן (! סידורי); // המתן לעיכוב סדרתי (200); Serial.println ("מבחן קריאה DS1307RTC"); Serial.println (""); } לולאת חלל () {tmElements_t tm; if (RTC.read (tm)) {Serial.print ("Ok, Time ="); print2digits (tm. שעה); Serial.write (':'); print2digits (tm. דקה); Serial.write (':'); print2digits (tm. שנית); Serial.print (", תאריך (D / M / Y) ="); Serial.print (tm. יום); Serial.write ('/'); Serial.print (tm. חודש); Serial.write ('/'); Serial.print (tmYearToCalendar (tm. שנה)); Serial.println (); } else {if (RTC.chipPresent ()) {Serial.println ("DS1307 מופסק. אנא הפעל את SetTime "); Serial.println ("דוגמה לאתחל את הזמן ולהתחיל לרוץ."); Serial.println (); } else {Serial.println ("שגיאת קריאה DS1307! אנא בדוק את המעגלים. "); Serial.println (); } עיכוב (9000); } עיכוב (1000); } void print2digits (מספר int) {if (מספר> = 0 && מספר <10) {Serial.write ('0'); } Serial.print (מספר); }
שים לב שכללנו גם את הליבה Wire.h ספרייה - זה מגיע עם Arduino ומשמש לתקשורת באמצעות I2C. העלה את הקוד, פתח את המסוף הטורי ב 9600 baud וצפה והארדואינו שלך מוציא את השעה הנוכחית בכל שנייה. נפלא!
הקוד החשוב ביותר בדוגמה הוא יצירת tmElements_t tm - זה מבנה שנאכלס את השעה הנוכחית; וה RTC.read (tm) הפונקציה, שמקבלת את השעה הנוכחית ממודול ה- RTC, מכניסה אותה לפונקציה שלנו tm מבנה, ומחזיר אמת אם הכל התנהל כשורה. הוסף את קוד הבאג או את הלוגיקה שלך בהצהרת "אם", למשל להדפיס את השעה או להגיב אליו.
עכשיו כשתדעו להשיג את הזמן הנכון עם ארדואינו, תוכלו לנסות לשכתב את פרויקט אזעקת הזריחה או ליצור שעון מילה LED - האפשרויות הן אינסופיות! מה תעשה?
זיכויים לתמונה: Snootlab דרך פליקר
ג'יימס הוא בעל תואר ראשון בבינה מלאכותית, והוא מוסמך CompTIA A + ו- Network +. הוא המפתח הראשי של MakeUseOf, ומבלה את זמנו הפנוי במשחקי פיינטבול VR ומשחקי לוח. הוא בנה מחשבים אישיים מאז שהיה ילד.