תוכן עניינים:
וִידֵאוֹ: שימוש במודולי שעון בזמן אמת של DS1307 ו- DS3231 עם Arduino: 3 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
אנו ממשיכים לקבל בקשות כיצד להשתמש במודולי שעון בזמן אמת של DS1307 ו- DS3231 עם Arduino ממקורות שונים-כך שמדובר במדריך ראשון מתוך שני חלקים כיצד להשתמש בהם. להדרכה זו של Arduino יש לנו שני מודולי שעון בזמן אמת, אחד מבוסס על ה- Maxim DS1307 (המודול המרובע) וה- DS3231 (המודול המלבני).
ישנם שני הבדלים עיקריים בין ה- IC במודולי השעון בזמן אמת, שהם דיוק שמירת הזמן. ה- DS1307 המשמש במודול הראשון פועל טוב מאוד, אולם הטמפרטורה החיצונית יכולה להשפיע על תדירות מעגל המתנדים המניע את המונה הפנימי של DS1307.
זה עשוי להישמע כבעיה, אולם בדרך כלל זה יגרום לכך שהשעון יכבה בערך בחמש דקות בערך בחודש. ה- DS3231 מדויק הרבה יותר, מכיוון שיש לו מתנד פנימי שאינו מושפע מגורמים חיצוניים - ולכן מדויק עד כמה דקות בשנה לכל היותר. אם יש לך מודול DS1307- אל תרגיש רע, זה עדיין לוח בעל ערך רב וישרת אותך היטב. עם שני המודולים, נדרשת סוללת גיבוי.
מומלץ לקנות סוללת CR2032 חדשה ולהתאים אותה למודול. יחד עם מעקב אחר השעה והתאריך, למודולים אלה יש גם EEPROM קטן, פונקציית אזעקה (DS3231 בלבד) והיכולת ליצור גל מרובע של תדרים שונים-כל אלה יהיו נושא הדרכה שנייה.
שלב 1: חיבור המודול שלך לארדואינו
שני המודולים משתמשים באוטובוס I2C, מה שהופך את החיבור לפשוט מאוד.
ראשית יהיה עליך לזהות אילו סיכות בארדואינו או לוחות תואמים שלך משמשים לאוטובוס I2C - אלה יהיו ידועים בשם SDA (או נתונים) ו- SCL (או שעון). בלוחות Arduino Uno או לוחות תואמים, סיכות אלה הן A4 ו- A5 עבור נתונים ושעון; ב- Arduino Mega הפינים הם D20 ו- D21 עבור נתונים ושעון; ואם אתה משתמש ב- Pro Mini תואם הסיכות הן A4 ו- A5 עבור נתונים ושעון, המקבילים לסיכות הראשיות.
מודול DS1307
אם ברשותך מודול DS1307 יהיה עליך להלחם את החוטים ללוח, או להלחם על כמה סיכות כותרת מוטבעות כדי שתוכל להשתמש בחוטי מגשר. לאחר מכן חבר את סיכות SCL ו- SDA ל- Arduino שלך ואת סיכת ה- Vcc לסיכה 5V ו- GND ל- GND.
מודול DS3231
חיבור מודול זה קל מכיוון שסיכות כותרת מותקנות על הלוח במפעל. אתה יכול פשוט להריץ חוטי מגשר שוב מ- SCL ו- SDA אל הארדואינו ושוב מסיכות ה- Vcc וה- GND של המודול ועד 5V או 3.3. V ו- GND של הלוח שלך. עם זאת אלה משוכפלים בצד השני להלחמת החוטים שלך. לשני המודולים הללו יש את נגדי המשיכה הנדרשים, כך שלא תצטרך להוסיף משלך. כמו כל המכשירים המחוברים לאוטובוס I2C, נסה לשמור על אורך חוטי ה- SDA וה- SCL למינימום.
שלב 2: קריאה וכתיבה של הזמן מתוך מודול ה- RTC שלך
לאחר חיבור מודול ה- RTC שלך. היכנס והעלה את המערכון הבא. למרות שההערות והפונקציות בסקיצה מתייחסות רק ל- DS3231, הקוד עובד גם עם ה- DS1307.
#כלול "Wire.h" #define DS3231_I2C_ADDRESS 0x68 // המרת מספרים עשרוניים תקינים לבריטים עשרוניים מקודדים בתים decToBcd (byte val) {return ((val/10*16) + (val%10)); } // המרת עשרוני מקודד בינארי למספרים עשרוניים תקינים בתים bcdToDec (byte val) {return ((val/16*10) + (val%16)); } הגדרת חלל () {Wire.begin (); Serial.begin (9600); // הגדר את השעה הראשונית כאן: // DS3231 שניות, דקות, שעות, יום, תאריך, חודש, שנה // setDS3231time (30, 42, 21, 4, 26, 11, 14); } void setDS3231time (בייט שני, דקה בתים, שעה בתים, בתים dayOfWeek, byte dayOfMonth, חודש בתים, שנה בתים) {// מגדיר נתוני זמן ותאריך ל- DS3231 Wire.beginTransmission (DS3231_I2C_ADDRESS); Wire.write (0); // הגדר את הקלט הבא כדי להתחיל ברישום השניות Wire.write (decToBcd (השני)); // הגדר שניות Wire.write (decToBcd (דקה)); // הגדר דקות Wire.write (decToBcd (שעה)); // הגדר שעות Wire.write (decToBcd (dayOfWeek)); // קבע יום בשבוע (1 = יום ראשון, 7 = שבת) Wire.write (decToBcd (dayOfMonth)); // הגדר תאריך (1 עד 31) Wire.write (decToBcd (חודש)); // הגדר חודש Wire.write (decToBcd (שנה)); // הגדר שנה (0 עד 99) Wire.endTransmission (); } void readDS3231time (בייט *שנייה, בייט *דקה, בייט *שעה, בייט *dayOfWeek, בייט *dayOfMonth, בת *חודש, בייט *שנה) {Wire.beginTransmission (DS3231_I2C_ADDRESS); Wire.write (0); // הגדר את מצביע הרישום של DS3231 ל- Wh.endTransmission (); Wire.requestFrom (DS3231_I2C_ADDRESS, 7); // לבקש שבעה בתים של נתונים מ- DS3231 החל מהרישום 00h *second = bcdToDec (Wire.read () & 0x7f); *דקה = bcdToDec (Wire.read ()); *שעה = bcdToDec (Wire.read () & 0x3f); *dayOfWeek = bcdToDec (Wire.read ()); *dayOfMonth = bcdToDec (Wire.read ()); *חודש = bcdToDec (Wire.read ()); *year = bcdToDec (Wire.read ()); } void displayTime () {בתים שנייה, דקה, שעה, dayOfWeek, dayOfMonth, חודש, שנה; // אחזר נתונים מ- DS3231 readDS3231time (& second, & minute, & hour, & dayOfWeek, & dayOfMonth, & month, & year); // שלח אותו לצג הטורי Serial.print (שעה, DEC); // להמיר את משתנה הבייט למספר עשרוני כאשר הוא מוצג Serial.print (":"); if (דקה <10) {Serial.print ("0"); } Serial.print (דקה, DEC); Serial.print (":"); if (השני <10) {Serial.print ("0"); } Serial.print (שני, DEC); Serial.print (""); Serial.print (dayOfMonth, DEC); Serial.print ("/"); Serial.print (חודש, DEC); Serial.print ("/"); Serial.print (שנה, DEC); Serial.print ("יום בשבוע:"); switch (dayOfWeek) {מקרה 1: Serial.println ("יום ראשון"); לשבור; מקרה 2: Serial.println ("שני"); לשבור; מקרה 3: Serial.println ("יום שלישי"); לשבור; מקרה 4: Serial.println ("רביעי"); לשבור; מקרה 5: Serial.println ("חמישי"); לשבור; מקרה 6: Serial.println ("יום שישי"); לשבור; מקרה 7: Serial.println ("שבת"); לשבור; }} לולאת חלל () {displayTime (); // להציג את נתוני השעון בזמן אמת על הצג הטורי, עיכוב (1000); // כל שנייה }
יכול להיות שיש הרבה קוד, אולם הוא מתפרק היטב לחלקים הניתנים לניהול.
הוא כולל תחילה את ספריית Wire, המשמשת לתקשורת אוטובוסים I2C, ואחריה הגדרת כתובת האוטובוס עבור ה- RTC כ- 0x68. אחריהן שתי פונקציות הממירות מספרים עשרוניים ל- BCD (עשרוני מקודד בינארי) ולהיפך. אלה נחוצים מכיוון שמעגלי ה- RTC פועלים ב- BCD ולא עשרוני.
הפונקציה setDS3231time () משמשת להגדרת השעון. השימוש בו קל מאוד, פשוט הכנס את הערכים משנה לשנה, ו- RTC יתחיל מאותה תקופה. לדוגמה, אם ברצונך להגדיר את התאריך והשעה הבאים - יום רביעי, 26 בנובמבר, 2014 ושעה 21:42 ו -30 שניות - תשתמש ב:
setDS3231time (30, 42, 21, 4, 26, 11, 14);
שלב 3:
שים לב כי השעה נקבעת באמצעות 24 שעות, והפרמטר הרביעי הוא "יום השבוע". זה נופל בין 1 ל -7 שהם ימים ראשון עד שבת בהתאמה. פרמטרים אלה הם ערכי בתים אם אתה מחליף משתנים משלך.
לאחר שהפעלת את הפונקציה פעם אחת זה חכם להקדים אותה עם // ולהעלות את הקוד שלך שוב, כך שהוא לא יאפס את הזמן ברגע שהספק יופעל או יופעל מחדש. קריאת זמן טופס ה- RTC שלך פשוט לא פחות, למעשה ניתן לעקוב אחר התהליך בצורה מסודרת בתוך הפונקציה displayTime (). יהיה עליך להגדיר שבעה משתני בתים כדי לאחסן את הנתונים מה- RTC, ואז אלה מוכנסים לפונקציה readDS3231time (). לדוגמה אם המשתנים שלך הם:
בייט שני, דקה, שעה, dayOfWeek, dayOfMonth, חודש, שנה;
… היית מרענן אותם עם הנתונים הנוכחיים מה- RTC באמצעות:
readDS3232time (& second, & minute, & hour, & dayOfWeek, & dayOfMonth, & month, & year);
לאחר מכן תוכל להשתמש במשתנים כראות עינייך, החל משליחת השעה והתאריך למסך הטורי כפי שעושה הסקיצה לדוגמא - להמרת הנתונים לצורה מתאימה לכל מיני התקני פלט.
רק כדי לבדוק שהכל עובד, הכנס את שעת התאריך המתאימה למערכון ההדגמה, העלה אותו, הערה על הפונקציה setDS3231time () והעלה אותו שוב. לאחר מכן פתח את הצג הטורי, ותקבל תצוגה פועלת של השעה והתאריך הנוכחיים.
מנקודה זו כעת יש לך את כלי התוכנה להגדרת נתונים ולאחזורם ממודול השעון בזמן אמת, ואנו מקווים שיש לך הבנה כיצד להשתמש במודולים זולים אלה.
אתה יכול ללמוד עוד על ICs השעונים בזמן אמת במיוחד מאתר היצרן-DS1307 ו- DS3231.
את הפוסט הזה הביאה לכם pmdway.com - הכל ליצרנים ולחובבי האלקטרוניקה, עם משלוח חינם לכל רחבי העולם.
מוּמלָץ:
DS1307 שעון בזמן אמת RTC עם Arduino: 4 שלבים
DS1307 שעון בזמן אמת RTC עם Arduino: במדריך זה נלמד על שעון בזמן אמת (RTC) וכיצד Arduino & שעון זמן אמת IC DS1307 מורכב יחד כמכשיר תזמון. שעון זמן אמת (RTC) משמש לניטור זמן ותחזוק לוח שנה. על מנת להשתמש ב- RTC, w
שעון מבוסס Arduino באמצעות מודול שעון בזמן אמת DS1307 (RTC) & 0.96: 5 שלבים
שעון מבוסס Arduino באמצעות מודול שעון בזמן אמת DS1307 (RTC) & 0.96: היי חברים במדריך זה נראה כיצד להכין שעון עבודה באמצעות מודול שעון בזמן אמת DS1307 & מציג OLED. אז נקרא את הזמן ממודול השעון DS1307. והדפס אותו על מסך OLED
הכנת שעון עם M5stick C באמצעות Arduino IDE - שעון בזמן אמת של RTC עם M5stack M5stick-C: 4 שלבים
הכנת שעון עם M5stick C באמצעות Arduino IDE | שעון בזמן אמת של RTC עם M5stack M5stick-C: היי חברים במדריך זה נלמד כיצד להכין שעון עם לוח פיתוח m5stick-C של m5stack באמצעות Arduino IDE. כך m5stick יציג תאריך, שעה & השבוע בחודש המוצג בתצוגה
שעון זמן אמת בזמן אמת: 4 שלבים
שעון זמן אמת סביבתי: AimI יצרתי את השעון הזה כי יש לי פס LED שניתן להתייחס אליו ואני רוצה להשתמש בו. ואז ראיתי שלחדר שלי אין שעון טוב התואם את הקירות שלו. אז החלטתי להכין שעון שיכול לשנות את צבעו בהתאם למצב הרוח של המשתמש או
כיצד להכין שעון בזמן אמת באמצעות תצוגת Arduino ו- TFT - Arduino Mega RTC עם תצוגת TFT 3.5 אינץ ': 4 שלבים
כיצד להכין שעון בזמן אמת באמצעות תצוגת Arduino ו- TFT | Arduino Mega RTC עם תצוגת TFT 3.5 אינץ ': בקר בערוץ היוטיוב שלי. הקדמה:- בפוסט זה אני הולך לעשות "שעון בזמן אמת" באמצעות 3.5 אינץ' TFT מגע LCD, Arduino Mega מודול RTC 2560 ו- DS3231 …. לפני תחילת … בדוק את הסרטון מערוץ היוטיוב שלי..הערה:- אם אתה משתמש ב- Arduin