مكتبة Arduino للتحقق من تاريخ ودرجة حرارة DS3231 المدمج عبر I2C

مكتبة Arduino للتحقق من تاريخ ودرجة حرارة DS3231 المدمج عبر I2C

مكتبة Arduino للتحقق من تاريخ ودرجة حرارة DS3231 المدمج عبر I2C

محدث: قم أيضًا بزيارة الجديد مكتبة لإدارة التاريخ والوقت باستخدام وحدة DS3231 RTC وArduino مع تحسينات مثل الوقت الموسمي.

تشغيل IC de ساعات الوقت الحقيقي (RTC) الأكثر شيوعًا التي يتم التحكم فيها باستخدام الحافلة أنا2C عادة ما تكون مشابهة جدًا. إلى جانب ال مكتبة الأسلاك de اردوينو يبسط إلى حد كبير الاتصالات مع الأجهزة واجهة تسلسلية بسلكين (TWI), I2C، محدد.

جدول المحتويات

    بشكل عام، تتكون العملية من

    1. ابدأ الاتصالات كعبد أو رئيسي (يتم تعيينه افتراضيًا) باستخدام الوظيفة سلك.ابدأ (العنوان). إذا تم حذف "العنوان"، تبدأ الاتصالات بـ درجة مئوية المعلم الحافلة أنا2C.

    2. تفعيل التواصل I2C مع الجهاز من خلال عنوان الذاكرة حيث يوجد، وذلك باستخدام الأمر Wire.beginTransmission (العنوان).

    3. اكتب أمرًا في الحافلة أنا2C لإخبار الجهاز بالعملية التي تريد أن يقوم بها، وذلك باستخدام سلك.كتابة (الأمر)، حيث "الترتيب" هو رمز العملية.

    4. تعطيل الاتصالات للافراج عن الحافلة أنا2C مع الوظيفة Wire.endTransmission ().

    5. اطلب من الجهاز إرسال كمية معينة من البيانات التي تتوافق مع العملية التي تم طلبها (في هذه الحالة، التاريخ والوقت) مع الوظيفة Wire.requestFrom(العنوان، المبلغ).

    6. انتظر حتى تصبح البيانات المطلوبة مع الوظيفة متاحة للقراءة Wire.available ()، والذي يُرجع عدد البيانات التي تم تلقيها بالفعل ويمكن قراءتها.

    7. قراءة البيانات المرسلة من الجهاز ( ساعة الوقت الحقيقي، في هذه الحالة) باستخدام الدالة سلك.قراءة () عدة مرات كما أشارت البايتات Wire.available () المتوفرة.

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

    فيما يتعلق بـ DS3231 (والأجهزة المتوافقة في نفس السلسلة، مثل DS3232) وتفسير البيانات حسب المواصفات المتكاملة فمثلا يتم تمثيل قيم الارقام المختلفة التي تمثل الوقت في نظام عشري مشفر ثنائي (BCD) والتي ستكون أكثر ملاءمة للتعبير عنها كقيمة عشرية (أ بايت) للاستخدام في اردوينو

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

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

    فيما يلي مثال على التعليمات البرمجية لإظهار كيفية استخدام المكتبة. كما ذكر أعلاه، يتم قراءة درجة الحرارة ببساطة باستخدام الوظيفة قراءة_درجة الحرارة() من كائن الطبقة DS3231 ولكن لتجاهل الأخطاء في القراءة، يتم استخدام ثابتين يخزنان، على التوالي، الحد الأقصى والحد الأدنى لدرجة حرارة الجهاز وفقًا لورقة البيانات والتي يتم قراءتها مع الوظائف المقابلة.

    تتم قراءة درجة الحرارة على مرحلتين: أولا يتم تحميل القيمة، بحيث تكون الاستخدامات المختلفة للتاريخ أو الوقت متسقة (لن تظهر قيمة أعلى في الحالات غير المواتية) وثانيا يتم استخدامها وفقا للتنسيق الذي وهناك حاجة. يعرض البرنامج النموذجي (وهو ليس عمليًا جدًا، على الرغم من أنه يشرح كل الاحتمالات) جميع التنسيقات المتاحة

    • الوظيفة date_time_value() الذي يقوم بإرجاع مؤشر إلى صفيف دبابة (بايت) تحتوي على القيم الرقمية السبع التي تمثل التاريخ والوقت على الساعة DS3231 تم تحويلها إلى رقم عشري (هم في BCD على الجهاز)

    • باستخدام الوظيفة Weekday_number() يتم الحصول على قيمة تتوافق مع عدد أيام الأسبوع بدءًا من يوم الأحد. لعرضه كنص، يتم استخدام مصفوفة ويتم طرح واحد منها للبدء عند الفهرس صفر، الأحد.

    • للاطلاع على التاريخ بالتنسيق "المحلي" (الإسباني)، استخدم الوظيفة human_date()، والذي يقوم بإرجاع مؤشر إلى سلسلة يتم فيها تمثيل التاريخ بتنسيق DD/MM/YYYY، حيث DD هو اليوم الممثل برقمين، وMM هو الشهر المكون من رقمين، وYYYY هو العام المكون من 2 أرقام.

    • الوظيفة human_hour() إرجاع الوقت بالتنسيق hh:mm:ss، حيث hh هي الساعة (بتنسيق 24) ممثلة برقمين، وmm هي الدقائق المكونة من رقمين وss هي الثواني المكونة من رقمين.

    • لاستخدام التاريخ والوقت بسهولة ملفات السجل تمت برمجة الوظيفة Compact_date_time()، الذي يقدم قيمة التاريخ والوقت بالتنسيق YYMMDDhhmmss حيث AA هي السنة ممثلة بآخر رقمين، MM هو الشهر المكون من رقمين، DD هو اليوم المكون من رقمين، hh هي الساعة (بتنسيق 2 ) مكونة من رقمين، مم الدقائق مكونة من رقمين وss الثواني مكونة من رقمين. هذا التنسيق، على الرغم من كونه نصًا، إلا أنه يشغل مساحة صغيرة ويسمح بترتيب أبجدي بسيط جدًا.

    • الوظيفة date_time_MySQL() يعمل على تقديم التاريخ والوقت بالتنسيق الذي يستخدمه مدير قاعدة البيانات MySQL (أو الجديد والأكثر حرية MariaDB ل) YYYY-MM-DD hh:mm:ss، حيث YYYY هي السنة ممثلة بأربعة أرقام، MM هو الشهر المكون من رقمين، DD هو اليوم المكون من رقمين، hh هي الساعة (بتنسيق 4) المكونة من رقمين ، مم هي الدقائق المكونة من رقمين والثواني المكونة من رقمين.

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

    يمكن أن تكون مخرجات البرنامج المثالى أعلاه شيئا مثل ما هو موضح في الصورة التالية: قائمة من 7 قيم (الثواني، الدقائق، الساعة، يوم من الأسبوع، يوم من الشهر، الشهر والسنة) التاريخ و الوقت المعبر عنه بطريقة "إنسانية" (وفقًا للأسلوب الإسباني) الوقت كرقم صحيح بتنسيق الساعة المكون من أربعة أرقام، التاريخ والوقت بتنسيق قاعدة البيانات MySQLوالتاريخ والوقت بتنسيق مضغوط (لـ الجذوع) ودرجة الحرارة الداخلية لل DS3231.

    مكتبة إخراج وحدة تحكم Arduino على مدار الساعة (RTC) ودرجة الحرارة DS3231 عبر ناقل I2C

    أكتب تعليق

    ربما تكون قد فاتتك