جدول المحتويات:
فيديو: ساعة في الوقت الحقيقي مع اردوينو: 3 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
في هذا المشروع ، سنصنع ساعة بمساعدة وحدة Arduino و RTC. كما نعلم لا يمكن لـ Arduino عرض الوقت الفعلي لذلك سنستخدم وحدة RTC لعرض الوقت المناسب على شاشة LCD. اقرأ كل الخطوات بعناية ، فستساعدك كثيرًا على العمل على مدار الساعة.
كود DS3231 Arduino يشبه كود DS1307 ويعمل مع كل من شرائح RTC.
لا يستخدم كود Arduino الموجود أسفله أي مكتبة لـ DS3231 RTC ، ومكتبة Wire مخصصة للمراسلات بين Arduino و DS3231 باستخدام اتفاقية I2C.
نعم! يعتمد عليه العديد من مهندسي الإلكترونيات في مشاريعهم القائمة على الوقت ولكن RTC ليست موثوقة تمامًا. يعمل بالبطارية ويجب استبداله قريبًا أو لاحقًا. عند الوصول إلى مشاريع إنترنت الأشياء ، فإنها تحتل دبابيس SPI (الواجهة المحيطية التسلسلية) القيّمة وتصبح فوضوية مع تشابك الأسلاك حولها. الحل…. هنا يأتي بطلنا NTP (بروتوكول وقت الشبكة). NTP دقيق للغاية لأنه يحصل على وقت من الإنترنت. سنقوم بتشغيل هذا البروتوكول باستخدام وضع خادم العميل. العملية بسيطة للغاية لدرجة أن Nodemcu الخاص بنا يعمل كعميل ويطلب حزمة NTP من الخادم باستخدام UDP. في المقابل ، يرسل الخادم حزمة إلى العميل الذي يوزع البيانات. NTP هو بروتوكول مزامنة التوقيت العالمي. الآن دعونا نضيء محطة عمل مختبراتنا
الخطوة 1: المكونات المطلوبة
- لوحة اردوينو
- لوحة DS3231 RTC
- شاشة LCD مقاس 16 × 2
- 2 × زر ضغط
- 10 كيلو أوم المقاوم المتغير (أو مقياس الجهد)
- 330 أوم المقاوم
- 3V بطارية خلية عملة
- اللوح
- أسلاك العبور
RTC ميكل DS3231
الوقت هو معنى أساسي مطلوب في هذا العالم سريع الخطى للبشر. في مشروع الوقت الحقيقي
نحن نستخدم RTC (ساعة الوقت الحقيقي المعروفة باسم RTC)
RTC Real-time-clock (RTC) هي دائرة متكاملة (IC) تتعقب الوقت الحالي ، حيث يعتني RTC بالوقت في الوضع الحقيقي. عادة ما توجد RTC في اللوحات الأم للكمبيوتر والأنظمة المدمجة لتطلب الوصول في الوقت المناسب.
الخطوة 2: توصيل ساعة Arduino
- قم بتوصيل دبوس SCL بوحدة RTC بوحدة Arduino A5
- قم بتوصيل SDA pin بوحدة RTC بـ Arduino A4
- قم بتوصيل VCC بـ 5 فولت و 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 بـ 5 فولت
- قم بتوصيل فو إلى دبوس خرج مقياس الجهد
الخطوة 3: كود ساعة Arduino مع RTC
يعمل DS3231 مع تنسيق BCD فقط ولتحويل BCD إلى رقم عشري والعكس صحيح ، استخدمت السطرين أدناه (على سبيل المثال للدقيقة): // تحويل BCD إلى عشرية دقيقة = (دقيقة >> 4) * 10 + (دقيقة و 0 × 0F) ؛
// تحويل عشري إلى BCDminute = ((دقيقة / 10) << 4) + (دقيقة٪ 10) ؛ DS3231_display () باطل: يعرض الوقت والتقويم ، قبل عرض بيانات الوقت والتقويم يتم تحويلها من BCD إلى تنسيق عشري.
// ساعة وتقويم في الوقت الفعلي مع أزرار مضبوطة باستخدام DS3231 و Arduino // تتضمن رمز مكتبة LCD # تضمين // تضمين رمز مكتبة الأسلاك (مطلوب لأجهزة بروتوكول I2C) # تتضمن // اتصالات وحدة LCD (RS ، E ، D4 ، D5 ، D6 ، D7) LiquidCrystal LCD (2 ، 3 ، 4 ، 5 ، 6 ، 7) ؛ إعداد باطل () {pinMode (8، INPUT_PULLUP) ؛ // button1 متصل بـ pin 8 pinMode (9 ، INPUT_PULLUP) ؛ // button2 متصل بالدبوس 9 // قم بإعداد عدد الأعمدة والصفوف لشاشات الكريستال السائل lcd.begin (16 ، 2) ؛ Wire.begin () ؛ // انضم إلى i2c bus} char Time = "TIME:::"؛ تقويم char = "DATE: / / 20" ؛ بايت i ، ثانية ، دقيقة ، ساعة ، تاريخ ، شهر ، سنة ؛ DS3231_display () باطل {// تحويل BCD إلى الثانية العشرية = (الثانية >> 4) * 10 + (الثانية & 0x0F) ؛ دقيقة = (دقيقة >> 4) * 10 + (دقيقة & 0x0F) ؛ ساعة = (ساعة >> 4) * 10 + (ساعة & 0x0F) ؛ التاريخ = (التاريخ >> 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 (التقويم) ؛ // عرض التقويم} void blink_parameter () {byte j = 0 ؛ while (j 23) // إذا كانت الساعات> 23 ==> ساعات = 0 معلمة = 0 ؛ إذا (i == 1 && معلمة> 59) // إذا كانت الدقائق> 59 ==> minutes = 0 معلمة = 0 ؛ إذا (i == 2 && معلمة> 31) // إذا كان التاريخ> 31 ==> التاريخ = 1 معلمة = 1 ؛ إذا (i == 3 && معلمة> 12) // إذا كان الشهر> 12 ==> الشهر = 1 معلمة = 1 ؛ if (i == 4 && parameter> 99) // If year> 99 ==> year = 0 معلمة = 0 ؛ sprintf (نص ، "٪ 02u" ، معلمة) ؛ lcd.setCursor (س ، ص) ؛ lcd.print (نص) ؛ تأخير (200) ؛ // انتظر 200ms} lcd.setCursor (x، y) ؛ lcd.print ("") ؛ // عرض مسافتين blink_parameter () ؛ sprintf (نص ، "٪ 02u" ، معلمة) ؛ lcd.setCursor (س ، ص) ؛ lcd.print (نص) ؛ blink_parameter () ، إذا تم الضغط على (! digitalRead (8)) {// If button (pin # 8) i ++؛ // Increament 'i' لمعلمة إرجاع المعلمة التالية ؛ // قيمة معلمة الإرجاع والخروج}}} حلقة فارغة () {if (! 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) ؛ // إعادة تعيين sesonds وابدأ كتابة سلك المذبذب (بالدقيقة) ؛ // اكتب دقيقة Wire.write (ساعة) ؛ // اكتب ساعة Wire.write (1) ؛ // اكتب اليوم (غير مستخدم) Wire.write (التاريخ) ؛ // اكتب تاريخ Wire.write (شهر) ؛ // اكتب الشهر Wire.write (السنة) ؛ // اكتب سنة Wire.endTransmission () ؛ // إيقاف الإرسال وتحرير تأخير ناقل I2C (200) ؛ // انتظر 200 مللي ثانية} Wire.beginTransmission (0x68) ؛ // ابدأ بروتوكول I2C بعنوان DS3231 Wire.write (0) ؛ // إرسال عنوان التسجيل Wire.endTransmission (خطأ) ؛ // إعادة تشغيل I2C Wire.requestFrom (0x68، 7) ؛ // طلب 7 بايت من DS3231 وتحرير ناقل I2C في نهاية القراءة الثانية = Wire.read () ؛ // قراءة ثانية من التسجيل 0 دقيقة = Wire.read () ؛ // قراءة دقائق من السجل 1 ساعة = Wire.read () ؛ // قراءة ساعة من السجل 2 Wire.read () ؛ // يوم القراءة من السجل 3 (غير مستخدم) التاريخ = Wire.read () ؛ // تاريخ القراءة من التسجيل 4 شهر = Wire.read () ؛ // قراءة الشهر من التسجيل 5 سنوات = Wire.read () ؛ // قراءة السنة من التسجيل 6 DS3231_display () ؛ // وقت التشغيل وتأخير التقويم (50) ؛ // انتظر 50 مللي ثانية}
موصى به:
ضبط DS3231 RTC (ساعة الوقت الحقيقي) بشكل دقيق وسريع وآلي باستخدام Java (+ -1 ثانية): 3 خطوات
ضبط DS3231 RTC (ساعة الوقت الحقيقي) بدقة وسرعة وآلية باستخدام Java (+ -1 ثانية): هذا Instructable سيوضح لك كيفية ضبط الوقت على DS3231 Real Time Clock باستخدام Arduino وتطبيق Java صغير يستخدم الاتصال التسلسلي لـ Arduino المنطق الأساسي لهذا البرنامج: 1. Arduino يرسل طلبًا تسلسليًا
استخدام وحدات ساعة الوقت الحقيقي DS1307 و DS3231 مع Arduino: 3 خطوات
استخدام وحدات الساعة في الوقت الفعلي DS1307 و DS3231 مع Arduino: نستمر في تلقي طلبات حول كيفية استخدام وحدات الساعة في الوقت الحقيقي DS1307 و DS3231 مع Arduino من مصادر مختلفة - لذلك هذا هو أول برنامج تعليمي من جزأين حول كيفية استخدامها. في هذا البرنامج التعليمي من Arduino ، لدينا وحدتان للساعة في الوقت الفعلي لنا
DS1307 ساعة الوقت الحقيقي RTC مع Arduino: 4 خطوات
DS1307 Real Time Clock RTC مع Arduino: في هذا البرنامج التعليمي ، سوف نتعرف على Real Time Clock (RTC) وكيفية Arduino & amp؛ يتم وضع ساعة الوقت الحقيقي IC DS1307 معًا كجهاز توقيت. تُستخدم ساعة الوقت الحقيقي (RTC) لمراقبة الوقت والحفاظ على التقويم. من أجل استخدام RTC ، مع
صنع ساعة باستخدام M5stick C باستخدام Arduino IDE - ساعة الوقت الحقيقي RTC مع M5stack M5stick-C: 4 خطوات
صنع ساعة باستخدام M5stick C باستخدام Arduino IDE | RTC Real Time Clock مع M5stack M5stick-C: مرحبًا يا رفاق في هذه التعليمات ، سوف نتعلم كيفية صنع ساعة باستخدام لوحة تطوير m5stick-C من m5stack باستخدام Arduino IDE ، لذا سيعرض m5stick التاريخ والوقت وأمبير ؛ أسبوع من الشهر على الشاشة
NODEMCU Lua ESP8266 مع ساعة الوقت الحقيقي (RTC) و EEPROM: 7 خطوات
NODEMCU Lua ESP8266 مع ساعة الوقت الحقيقي (RTC) و EEPROM: يعد الحصول على الوقت الصحيح أمرًا ضروريًا إذا كنت تريد الاحتفاظ بسجل بيانات. هناك طرق مختلفة للحصول على الوقت من مصادر على الإنترنت. قد تسأل لماذا لا تستخدم ESP8266 لتوفير الوقت لك؟ حسنًا ، يمكنك ذلك ، فلديه RTC داخلي خاص به (الوقت الحقيقي