ספריית Arduino לבדיקת התאריך והטמפרטורה של ה-DS3231 המשולב באמצעות I2C

ספריית Arduino לבדיקת התאריך והטמפרטורה של ה-DS3231 המשולב באמצעות I2C

ספריית Arduino לבדיקת התאריך והטמפרטורה של ה-DS3231 המשולב באמצעות I2C

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

הפעולה של IC de שעוני זמן אמת (RTC) הפופולריים ביותר שנשלטים באמצעות עסוק2C בדרך כלל זה מאוד דומה. חוץ מה ספריית חוטים de Arduino מפשט מאוד את התקשורת עם מכשירים ממשק טורי דו-חוטי (TWI), I2C, ספציפי.

תוכן עניינים

    בגדול, התהליך מורכב מ

    1. התחל תקשורת כעבד או מאסטר (מוגדר כברירת מחדל) עם הפונקציה Wire.begin(כתובת). אם "כתובת" מושמטת, התקשורת מתחילה ב- μC המורה של עסוק2C.

    2. הפעל תקשורת I2C עם המכשיר דרך כתובת הזיכרון שבה הוא נמצא, באמצעות הפקודה Wire.beginTransmission(כתובת).

    3. כתוב הזמנה ב עסוק2C כדי לומר למכשיר את הפעולה שאתה רוצה שהוא יבצע, באמצעות Wire.write(פקודה), שבו "סדר" הוא קוד הפעולה.

    4. השבת את התקשורת כדי לשחרר את עסוק2C עם פונקציה Wire.endTransmission().

    5. בקש מהמכשיר לשלוח כמות מסוימת של נתונים התואמת לפעולה שהתבקשה (במקרה זה, התאריך והשעה) עם הפונקציה Wire.requestFrom(כתובת,כמות).

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

    7. קרא את הנתונים שנשלחו על ידי המכשיר (ה שעון זמן אמת, במקרה זה) באמצעות הפונקציה Wire.read() כמה פעמים שצוין בתים Wire.available () שיש.

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

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

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

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

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

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

    • הפונקציה date_time_value() שמחזיר מצביע למערך char (בתים) המכילים את שבעת הערכים המספריים המייצגים את התאריך והשעה בשעון DS3231 הומר לעשרוני (הם נמצאים ב BCD במכשיר)

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

    • כדי לעיין בתאריך בפורמט "מקומי" (ספרדית), השתמש בפונקציה human_date(), המחזיר מצביע למחרוזת שבה התאריך מיוצג בפורמט DD/MM/YYYY, כאשר DD הוא היום המיוצג ב-2 ספרות, MM הוא החודש עם 2 ספרות ו-YYYY היא השנה עם 4 ספרות.

    • הפונקציה human_hour() מחזירה את הזמן בפורמט hh:mm:ss, כאשר hh היא השעה (בפורמט 24) המיוצגת עם 2 ספרות, mm היא הדקות עם 2 ספרות ו-ss הן השניות עם 2 ספרות.

    • כדי להשתמש בקלות בתאריך ובשעה קבצי יומן הפונקציה תוכנתה compact_date_time(), המספק את הערך של התאריך והשעה בפורמט YYMMDDhhmmss כאשר AA היא השנה המיוצגת עם 2 הספרות האחרונות, MM החודש עם 2 ספרות, DD היום עם 2 ספרות, hh השעה (בפורמט 24) עם 2 ספרות, מ"מ הדקות עם 2 ספרות ו-ss את השניות עם 2 ספרות. פורמט זה, למרות שהוא טקסט, תופס מעט מקום ומאפשר סדר אלפביתי פשוט מאוד.

    • הפונקציה date_time_MySQL() משמש להצגת התאריך והשעה בפורמט המשמש את מנהל מסד הנתונים MySQL (או החדש והחופשי יותר מריאד) YYYY-MM-DD hh:mm:ss, כאשר YYYY היא השנה המיוצגת עם 4 ספרות, MM הוא החודש עם 2 ספרות, DD הוא היום עם 2 ספרות, hh היא השעה (בפורמט 24) עם 2 ספרות , מ"מ הוא הדקות עם 2 ספרות ושניות עם 2 ספרות.

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

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

    ספריית פלט של קונסולת Arduino שעון זמן אמת (RTC) וטמפרטורה DS3231 באמצעות אוטובוס I2C

    לפרסם תגובה

    אולי פספסת