תוכן עניינים:
וִידֵאוֹ: שעון בזמן אמת עם ארדואינו: 3 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:13
בפרויקט זה נכין שעון בעזרת מודול ה- Arduino ו- RTC. כפי שאנו יודעים Arduino לא יכול להציג את הזמן בפועל ולכן נשתמש במודול RTC כדי להציג את השעה הנכונה על ה- LCD. קרא את כל השלב בעיון זה יעזור לך מאוד לבצע את השעון.
קוד DS3231 Arduino דומה לקוד DS1307 והוא עובד עם שני שבבי RTC.
קוד Arduino מתחת אינו משתמש בספרייה כלשהי עבור ה- DS3231 RTC, ספריית ה- Wire נועדה להתכתבות בין Arduino ל- DS3231 תוך ניצול מוסכמת I2C.
כֵּן! מהנדסי אלקטרוניקה רבים תלויים בכך לפרויקטים המבוססים על הזמן שלהם, אך RTC אינו אמין לחלוטין. הוא מופעל באמצעות סוללה ויש להחליפו בהקדם או במאוחר. כשהיא מגיעה לפרויקטים של IoT היא תופסת סיכות SPI יקרות (ממשק היקפי סידורי) יקרות ומתבלבלת עם חוטים סבוכים. פתרון … כאן מגיע NTP הגיבור שלנו (פרוטוקול זמן רשת). NTP כל כך מדויק מכיוון שהוא מקבל זמן מהאינטרנט. אנו הולכים להפעיל פרוטוקול זה באמצעות מצב שרת-לקוח. התהליך כל כך פשוט שה- Nodemcu שלנו מתפקד כלקוח ומבקש מנות NTP מהשרת באמצעות UDP. בתמורה, השרת שולח חבילה ללקוח אשר מנתחת את הנתונים. NTP הוא פרוטוקול סנכרון הזמן האוניברסלי. עכשיו תן לנו להאיר את תחנת העבודה במעבדות שלנו
שלב 1: רכיבים נדרשים
- לוח ארדואינו
- לוח RTC DS3231
- מסך LCD בגודל 16x2
- כפתור לחיצה 2x
- נגד משתנה של 10K אוהם (או פוטנציומטר)
- נגד 330 אוהם
- סוללת תא מטבע 3V
- לוח לחם
- חוטי מגשר
Mocule RTC DS3231
זמן הוא תחושה חיונית הנדרשת בעולם המהיר של בני האדם. בפרויקט בזמן אמת
אנו משתמשים ב- RTC (שעון בזמן אמת)
שעון בזמן אמת (RTC) הוא מעגל משולב (IC) העוקב אחר הזמן הנוכחי. RTC דואג לזמן במצב אמיתי. RTC נמצא בדרך כלל בלוחות אם של מחשבים ומערכות משובצות כדי לדרוש גישה בזמן.
שלב 2: חיבור של שעון Arduino
- חבר את פין SCL למודול RTC ל- Arduino A5
- חבר את סיכת SDA למודול RTC ל- Arduino A4
- חבר את VCC TO 5v ו- GND ל- GND
- חבר כפתור לחיצה לסיכה 8
- חבר כפתור לחיצה נוסף לסיכה 9
- חבר RS של LCD לסיכה 2 של Arduino
- חבר E של LCD לסיכה 3 של Arduino
- חבר D7 של LCD לסיכה 7 של Arduino
- חבר D6 של LCD לסיכה 6 של Arduino
- חבר D5 של LCD לסיכה 5 של Arduino
- חבר D4 של LCD לסיכה 4 של Arduino
- חבר VSS & K ל- GND
- חבר VDD & A ל- 5v
- חבר את Vo לסיכת הפלט של הפוטנציומטר
שלב 3: קוד לשעון Arduino עם RTC
ה- DS3231 עובד עם פורמט BCD בלבד וכדי להמיר את ה- BCD לעשרוני ולהיפך השתמשתי בשתי השורות למטה (דוגמה לדקה): // המר BCD לדקה -דקה = (דקה >> 4) * 10 + (דקה & 0x0F);
// המרת עשרוני ל- BCDminute = ((דקה / 10) << 4) + (דקה % 10); void DS3231_display (): מציג זמן ולוח שנה, לפני הצגת זמן ונתוני לוח שנה מומרים מ- BCD לפורמט עשרוני. בטל blink_parameter ():
// שעון ולוח שנה בזמן אמת עם לחצני הגדרות באמצעות DS3231 ו- Arduino // כולל קוד ספריית LCD #כלול // כולל קוד ספריית Wire (יש צורך בהתקני פרוטוקול I2C) #כולל // חיבורי מודול LCD (RS, E, D4, D5, D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); הגדרת חלל () {pinMode (8, INPUT_PULLUP); // כפתור 1 מחובר לסיכה 8 pinMode (9, INPUT_PULLUP); // כפתור 2 מחובר לסיכה 9 // הגדר את מספר העמודות והשורות של ה- LCD l.d.begin (16, 2); Wire.begin (); // הצטרף לאוטובוס i2c} char Time = "TIME:::"; char Calendar = "DATE: / / 20"; בת i, שנייה, דקה, שעה, תאריך, חודש, שנה; void DS3231_display () {// המרת BCD לשנייה עשרונית = (שנייה >> 4) * 10 + (שנייה & 0x0F); דקה = (דקה >> 4) * 10 + (דקה & 0x0F); שעה = (שעה >> 4) * 10 + (שעה & 0x0F); date = (תאריך >> 4) * 10 + (תאריך & 0x0F); חודש = (חודש >> 4) * 10 + (חודש & 0x0F); year = (year >> 4) * 10 + (year & 0x0F); // זמן המרת סיום [12] = % 10 + 48 השני; זמן [11] = שני / 10 + 48; זמן [9] = דקה % 10 + 48; זמן [8] = דקה / 10 + 48; זמן [6] = שעה % 10 + 48; זמן [5] = שעה / 10 + 48; לוח שנה [14] = שנה % 10 + 48; לוח שנה [13] = שנה / 10 + 48; לוח שנה [9] = חודש % 10 + 48; לוח שנה [8] = חודש / 10 + 48; לוח שנה [6] = תאריך % 10 + 48; לוח שנה [5] = תאריך / 10 + 48; lcd.setCursor (0, 0); lcd.print (זמן); // זמן תצוגה lcd.setCursor (0, 1); lcd.print (לוח שנה); // הצג לוח שנה} חלל blink_parameter () {בתים j = 0; while (j 23) // if hours> 23 ==> hours = 0 parameter = 0; if (i == 1 && פרמטר> 59) // אם דקות> 59 ==> דקות = 0 פרמטר = 0; if (i == 2 && פרמטר> 31) // אם תאריך> 31 ==> תאריך = פרמטר אחד = 1; if (i == 3 && פרמטר> 12) // אם חודש> 12 ==> חודש = פרמטר אחד = 1; if (i == 4 && parameter> 99) // If year> 99 ==> year = 0 parameter = 0; sprintf (טקסט, "%02u", פרמטר); lcd.setCursor (x, y); lcd.print (טקסט); עיכוב (200); // המתן 200 ms} lcd.setCursor (x, y); lcd.print (""); // הצג שני רווחים blink_parameter (); sprintf (טקסט, "%02u", פרמטר); lcd.setCursor (x, y); lcd.print (טקסט); blink_parameter (); אם (! digitalRead (8)) {// אם לחצן (סיכה מספר 8) נלחץ i ++; // הגדלת 'i' עבור פרמטר ההחזר של הפרמטר הבא; // החזר ערך פרמטר ויציאה}}} לולאת void () {אם (! DigitalRead (8)) {// אם לחצן (סיכה מספר 8) נלחץ i = 0; שעה = עריכה (5, 0, שעה); דקה = עריכה (8, 0, דקה); תאריך = עריכה (5, 1, תאריך); חודש = עריכה (8, 1, חודש); שנה = עריכה (13, 1, שנה); // המרת עשרוני לדקה BCD = ((דקה / 10) << 4) + (דקה % 10); שעה = ((שעה / 10) << 4) + (שעה % 10); תאריך = ((תאריך / 10) << 4) + (תאריך % 10); חודש = ((חודש / 10) << 4) + (חודש % 10); year = ((year / 10) << 4) + (year % 10); // סיום המרה // כתוב נתונים ל- DS3231 RTC Wire.beginTransmission (0x68); // התחל פרוטוקול I2C עם כתובת DS3231 Wire.write (0); // שלח כתובת רישום Wire.write (0); // אפס שומשים והפעל את המתנד Wire.write (דקה); // כתוב Wire.write דקה (שעה); // כתוב Wire.write שעה (1); // כתוב יום (לא בשימוש) Wire.write (תאריך); // כתוב תאריך Wire.write (חודש); // כתוב חודש Wire.write (שנה); // כתוב שנה Wire.endTransmission (); // עצור את השידור ושחרר את עיכוב האוטובוס I2C (200); // המתן 200 ms} Wire.beginTransmission (0x68); // התחל פרוטוקול I2C עם כתובת DS3231 Wire.write (0); // שלח כתובת רישום Wire.endTransmission (שקר); // הפעלה מחדש של I2C Wire.requestFrom (0x68, 7); // בקש 7 בתים מ- DS3231 ושחרר אוטובוס I2C בסוף קריאה שנייה = Wire.read (); // קרא שניות מהרשום 0 דקות = Wire.read (); // קראו פרוטוקולים מהרשם שעה אחת = Wire.read (); // קרא שעה מרשם 2 Wire.read (); // קריאת היום מהרשום 3 (לא בשימוש) תאריך = Wire.read (); // קרא תאריך מהרשום 4 חודשים = Wire.read (); // קרא חודש מהחודש 5 = Wire.read (); // קרא את השנה מהרשום 6 DS3231_display (); // זמן דיאפליי ועיכוב לוח שנה (50); // חכה 50 ms}
מוּמלָץ:
אופן השימוש במודול שעון בזמן אמת (DS3231): 5 שלבים
אופן השימוש במודול שעון בזמן אמת (DS3231): DS3231 הוא שעון בזמן אמת בעל עלות נמוכה ומדויקת במיוחד (RTC) עם מתנד קריסטל מפוצל בטמפרטורה (TCXO) וקריסטל. המכשיר כולל כניסת סוללה ושומר על דיוק זמן מדויק כאשר הכוח הראשי ל
הגדרת ה- RTC DS3231 (שעון בזמן אמת) בצורה מדויקת, מהירה ואוטומטית באמצעות ג'אווה (+-1 שניות): 3 שלבים
הגדרת ה- DS3231 RTC (שעון בזמן אמת) בצורה מדויקת, מהירה ואוטומטית באמצעות ג'אווה (+-1 שניות): מדריך זה יראה לך כיצד להגדיר את השעה על שעון בזמן אמת DS3231 באמצעות Arduino ויישום Java קטן המשתמש החיבור הסדרתי של ה- Arduino. ההיגיון הבסיסי של תוכנית זו: 1. הארדואינו שולח בקשה סדרתית
שעון מבוסס 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 שניתן להתייחס אליו ואני רוצה להשתמש בו. ואז ראיתי שלחדר שלי אין שעון טוב התואם את הקירות שלו. אז החלטתי להכין שעון שיכול לשנות את צבעו בהתאם למצב הרוח של המשתמש או