كيف ولماذا تضيف ساعة في الوقت الحقيقي إلى Arduino

كيف ولماذا تضيف ساعة في الوقت الحقيقي إلى Arduino

إن الحفاظ على الوقت في مشاريع Arduino ليس سهلاً كما قد تعتقد: بمجرد عدم وجود اتصال الكمبيوتر ، يتوقف Arduino غير المزود بالطاقة ببساطة عن العمل ، بما في ذلك شريطه الداخلي.





ماذا يعني سمه في الرسائل النصية

من أجل الحفاظ على تزامن Arduino مع العالم من حوله ، ستحتاج إلى ما يسمى 'وحدة ساعة الوقت الحقيقي'. إليك كيفية استخدام واحد.





ما الهدف من ساعة الوقت الحقيقي (RTC)؟

من المرجح أن يقوم جهاز الكمبيوتر الخاص بك بمزامنة وقته مع الإنترنت ، ولكن لا يزال لديه ساعة داخلية تستمر في العمل حتى بدون اتصال بالإنترنت أو انقطاع التيار الكهربائي. عندما تستخدم Arduino موصولًا بجهاز كمبيوتر ، فإنه يتمتع بإمكانية الوصول إلى الوقت الدقيق الذي توفره ساعة النظام لديك. هذا مفيد جدًا ، لكن معظم مشاريع Arduino مصممة للاستخدام بعيدًا عن الكمبيوتر - وفي أي وقت ، في أي وقت يتم فيه فصل الطاقة ، أو إعادة تشغيل Arduino ، لن يكون لديه أي فكرة على الإطلاق عن الوقت الحالي. ستتم إعادة ضبط الساعة الداخلية وتبدأ العد من الصفر مرة أخرى في المرة التالية التي يتم فيها تشغيلها.





إذا كان لمشروعك أي علاقة بالحاجة إلى الوقت - مثل ضوء الليل وساعة منبه شروق الشمس - فمن الواضح أن هذه ستكون مشكلة. في هذا المشروع ، حللنا المشكلة عن طريق ضبط الوقت يدويًا كل ليلة بطريقة بدائية إلى حد ما - كان المستخدم يضغط على زر إعادة الضبط قبل ذهابه إلى الفراش مباشرةً ، مما يوفر مزامنة يدوية للوقت. من الواضح أن هذا ليس حلاً مثاليًا لفترة طويلة.

تعد وحدة RTC جزءًا إضافيًا من الدوائر ، وتتطلب بطارية خلية معدنية صغيرة ، والتي تستمر في حساب الوقت حتى عند إيقاف تشغيل Arduino. بعد ضبطها مرة واحدة - ستحافظ على هذا الوقت طوال عمر البطارية ، وعادة ما يكون عامًا جيدًا أو نحو ذلك.



TinyRTC

يُطلق على RTC الأكثر شيوعًا في Arduino اسم TinyRTC ويمكن شراؤه بحوالي 5 إلى 10 دولارات على موقع eBay. ستحتاج على الأرجح إلى توفير بطاريتك الخاصة (من غير القانوني شحن هذه البطارية إلى العديد من الأماكن) ، وبعض الرؤوس (المسامير التي تدخل في الفتحات ، والتي ستحتاج إلى لحامها بنفسك).

هذه هي الوحدة التي لدي:





حتى أنه يحتوي على مستشعر درجة حرارة مدمج ، على الرغم من أن البطارية ستستمر لفترة أطول إذا كنت لا تستخدمها.

يبدو عدد الثقوب في هذا الشيء مخيفًا جدًا ، لكنك تحتاج فقط إلى أربعة منها ؛ GND و VCC و SCL و SDA - يمكنك استخدام المسامير ذات الصلة على جانبي وحدة RTC. أنت تتحدث إلى الساعة باستخدام بروتوكول I2C ، مما يعني أنه يتم استخدام دبابيسين فقط - أحدهما لـ 'الساعة' (ساعة بيانات اتصالات تسلسلية ، لا علاقة لها بالوقت) والآخر للبيانات. في الواقع ، يمكنك حتى ربط 121 جهازًا من أجهزة I2C على نفس المسامير - تحقق هذه الصفحة Adafruit لمجموعة مختارة من أجهزة I2C الأخرى يمكنك إضافتها ، لأن هناك الكثير منها!





ابدء

قم بتوصيل وحدة TinyRTC وفقًا للرسم البياني أدناه - خط DS الوردي غير ضروري ، كما هو الحال بالنسبة لمستشعر درجة الحرارة.

بعد ذلك ، قم بتنزيل ملف زمن و DS1307RTC المكتبات ووضع المجلدات الناتجة في ملف / مكتبات مجلد.

اخرج من بيئة Arduino وأعد تشغيلها لتحميلها في المكتبات والأمثلة.

ستجد مثالين في قائمة DS1307RTC: قم بتحميل وتشغيل ملف ضبط الوقت المثال الأول - سيؤدي هذا إلى ضبط الوقت الصحيح RTC. لا يستحق الكود الفعلي الخوض في التفاصيل ، فقط اعلم أنك بحاجة إلى تشغيله مرة واحدة لإجراء مزامنة الوقت الأولية.

بعد ذلك ، انظر إلى مثال الاستخدام مع ReadTest .

يتحرك الماوس على النوافذ الخاصة به 10

#include
#include
#include
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println('DS1307RTC Read Test');
Serial.println('-------------------');
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print('Ok, Time = ');
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(', Date (D/M/Y) = ');
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println('The DS1307 is stopped. Please run the SetTime');
Serial.println('example to initialize the time and begin running.');
Serial.println();
} else {
Serial.println('DS1307 read error! Please check the circuitry.');
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number <10) {
Serial.write('0');
}
Serial.print(number);
}

لاحظ أننا قمنا أيضًا بتضمين النواة سلك Library - يأتي هذا مع Arduino ويستخدم للتواصل عبر I2C. قم بتحميل الكود ، وافتح وحدة التحكم التسلسلية على 9600 باود ، وشاهد واردوينو الخاص بك يخرج الوقت الحالي كل ثانية. رائع!

أهم رمز في المثال هو إنشاء ملف tmElements_t tm - هذا بنية التي سنملأها بالوقت الحالي ؛ و ال RTC.read (tm) وظيفة ، التي تحصل على الوقت الحالي من وحدة RTC ، تضعه في تم ويعود صحيحًا إذا سارت الأمور على ما يرام. أضف رمز التصحيح أو الرمز المنطقي داخل عبارة 'if' ، مثل طباعة الوقت أو الرد عليه.

كيفية عمل طلب صداقة على الفيس بوك

الآن بعد أن عرفت كيفية الحصول على الوقت المناسب مع Arduino ، يمكنك محاولة إعادة كتابة مشروع إنذار شروق الشمس أو إنشاء ساعة كلمة LED - الاحتمالات لا حصر لها! ماذا ستفعل؟

اعتمادات الصورة: سنوتلاب عبر فليكر

يشارك يشارك سقسقة بريد الالكتروني كيفية تغيير شكل ومظهر سطح مكتب Windows 10 الخاص بك

هل تريد معرفة كيفية جعل Windows 10 يبدو أفضل؟ استخدم هذه التخصيصات البسيطة لجعل Windows 10 خاصًا بك.

اقرأ التالي
مواضيع ذات صلة
  • افعلها بنفسك
  • اردوينو
نبذة عن الكاتب جيمس بروس(تم نشر 707 مقالات)

جيمس حاصل على درجة البكالوريوس في الذكاء الاصطناعي وهو معتمد من CompTIA A + و Network +. عندما لا يكون مشغولاً كمحرر مراجعات الأجهزة ، فإنه يستمتع بألعاب LEGO و VR وألعاب الطاولة. قبل انضمامه إلى MakeUseOf ، كان فني إضاءة ومدرس لغة إنجليزية ومهندس مركز بيانات.

المزيد من James Bruce

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك