كود Arduino وفيديو لمستشعر درجة الحرارة والرطوبة الرقمي Aosong AM2320 مع شاشة LCD1602 ووحدة I2C

كود Arduino وفيديو لمستشعر درجة الحرارة والرطوبة الرقمي Aosong AM2320 مع شاشة LCD1602 ووحدة I2C

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

سنستخدم حساس AM2320 لجمع بيانات درجة الحرارة والرطوبة، والتي ستُعرض بعد ذلك على شاشة LCD1602. تبسط وحدة I2C عملية التوصيل، إذ تتطلب أربع وصلات فقط: VCC، GND، SDA، وSCL. لفهم واضح للتوصيلات والبرمجة، أوصي بمشاهدة الفيديو المرافق (في الفيديو عند 00:00).

شرح الأجهزة

المكونات الرئيسية في هذا المشروع تشمل حساس AM2320، وشاشة LCD1602، ووحدة I2C. حساس AM2320 هو حساس رقمي يوفر قراءات دقيقة لدرجة الحرارة والرطوبة عبر واجهة I2C. يعمل بجهد من 3.3V إلى 5.5V وله نطاق قياس يتراوح من -40°C إلى +80°C لدرجة الحرارة ومن 0% إلى 100% للرطوبة.

تسمح شاشة LCD1602 بعرض قراءات المستشعر. وهي شاشة مكوّنة من 16×2 حرفًا تتواصل عبر بروتوكول I2C، مما يقلل عدد الاتصالات المطلوبة إلى أربعة فقط. تقوم وحدة I2C بتحويل البيانات المتوازية من شاشة LCD إلى صيغة تسلسلية، مما يسهل توصيلها بالأردوينو.

تفاصيل ورقة البيانات

المصنّعآوسونغ
رقم القطعةAM2320
جهد المنطق/المدخلات والمخرجات3.3 V - 5.5 V
جهد التغذية3.3 فولت - 5.5 فولت
تيار الخرجأقل من أو يساوي 1.5 mA
نطاق القياس (درجة الحرارة)-40°C إلى +80°C
نطاق القياس (الرطوبة)من 0٪ إلى 100٪
وقت الاستجابة≤ 2 ث
حزمةDIP-4
ملاحظات / متغيراتيوصى باستخدام مقاومات سحب إلى الأعلى لاتصالات I2C.

  • تأكد من توفّر مصدر طاقة مناسب داخل نطاق الجهد المحدد.
  • استخدم مقاومات سحب إلى الأعلى (يوصى بـ4.7kΩ) لخطوط SDA وSCL.
  • تحقق من عنوان I2C الصحيح (الافتراضي هو 0x27 لمعظم شاشات LCD).
  • تعامَل مع الأخطاء المحتملة عن طريق التحقق من رمز خطأ المستشعر.
  • امسح شاشة LCD قبل عرض القراءات الجديدة لتجنب التداخل.

تعليمات الأسلاك

Arduino wiring for AM2320 sensor with LCD
Arduino wiring for AM2320 sensor with LCD

لتوصيل مستشعر AM2320، قم بتوصيل الدبوس الأيسر (VCC) إلى 5V في الأردوينو. الدبوس الثاني (SDA) يذهب إلى الدبوس A4 على أردوينو أونو (أو الدبوس 20 على أردوينو ميغا). يجب توصيل الدبوس الثالث (GND) بالأرضي، والدبوس الرابع (SCL) يتصل بالدبوس A5 على أردوينو أونو (أو الدبوس 21 على أردوينو ميغا). بالإضافة إلى ذلك، صِل مقاومة بقيمة 4.7kΩ بين دبوس SDA و5V، ومقاومة أخرى بقيمة 4.7kΩ بين دبوس SCL و5V لضمان مستويات إشارة صحيحة.

بالنسبة لشاشة LCD1602 المزودة بـ I2C، قم بتوصيل دبوس VCC إلى 5V ودبوس GND إلى الأرض. قم بتوصيل دبوس SDA من الشاشة إلى نفس دبوس SDA (A4) المستخدم للمستشعر. وبالمثل، قم بتوصيل دبوس SCL من الشاشة إلى نفس دبوس SCL (A5) المستخدم للمستشعر. يتيح هذا التوصيل المشترك لكلا الجهازين التواصل عبر نفس ناقل I2C.

أمثلة على الكود وشرح خطوة بخطوة

يقوم الكود التالي بتهيئة الحساس AM2320 وشاشة LCD1602. يبدأ بتضمين المكتبات اللازمة وإنشاء مثيل للحساس.

#include 
AM2320 sensor;
#include 
LiquidCrystal_I2C lcd(0x27, 16, 2);

هنا، الـsensorيتم إنشاء كائن من مكتبة AM2320، وlcdيتم تهيئة الكائن باستخدام عنوان I2C الخاص بالشاشة.

في الـsetup()في الدالة نهيئ كل من المستشعر وشاشة LCD. يتضمن ذلك تشغيل الإضاءة الخلفية وطباعة رسالة ابتدائية.

void setup() {
  sensor.begin();
  lcd.begin();
  lcd.backlight();
  lcd.print("Robojax AM2320 ");
  lcd.setCursor (0,1);
  lcd.print("LCD1602 I2C Demo");
  delay(3000);
}

يقوم هذا الكود بإعداد الشاشة لعرض رسالة ترحيب لمدة 3 ثوانٍ، مما يتيح للمستخدم وقتًا لرؤية أن النظام بصدد التهيئة.

الloop()تتحقق الدالة باستمرار من قياسات المستشعر وتُحدّث العرض وفقًا لذلك. إذا كان القياس متاحًا، تمسح الشاشة وتطبع درجة الحرارة بالفهرنهايت والدرجة المئوية، إلى جانب الرطوبة النسبية.

void loop() {
  if (sensor.measure()) {
    lcd.clear();
    lcd.print("T:");
    lcd.print(temp('F'));
    lcd.print("F/");
    lcd.print(temp('C'));
    lcd.print("C");  
    lcd.setCursor (0,1);
    lcd.print("R.H. :");
    lcd.print(sensor.getHumidity());
    lcd.print("%"); 
  }
  else {
    int errorCode = sensor.getErrorCode();
    switch (errorCode) {
      case 1: lcd.print("ERR: Sensor offline"); break;
      case 2: lcd.print("ERR: CRC failed."); break;
    }    
  }
  delay(500);
}

يوضح هذا المقتطف كيف يقوم البرنامج باسترجاع بيانات المستشعر وعرضها مع معالجة أي أخطاء محتملة عن طريق التحقق من الـerrorCode.

عرض توضيحي / ما يمكن توقعه

عند اكتمال الإعداد، توقع أن تعرض شاشة LCD درجة الحرارة بالفهرنهايت والسيلسيوس، فضلاً عن نسبة الرطوبة النسبية. إذا كان المستشعر غير متصل أو حدث خطأ في CRC، فستعرض الشاشة رسائل خطأ مطابقة. من المهم التأكد من أن جميع الوصلات محكمة لتجنب أي مشاكل (في الفيديو عند 02:45).

طوابع زمنية للفيديو

  • 00:00- مقدمة عن المشروع
  • 01:30- تعليمات الأسلاك
  • 03:15- شرح الكود
  • 04:45- عرض للوظائف

الصور

AM2320-sensor-1
AM2320-sensor-1
AM2320-sensor-2
AM2320-sensor-2
AM2320-sensor-3
AM2320-sensor-3
AM2320-sensor-4
AM2320-sensor-4
Arduino wiring for AM2320 sensor with LCD
Arduino wiring for AM2320 sensor with LCD
85-This is the Arduino code for an Aosong AM2320 temperature and humidity sensor with an LCD1602 and I2C module.
اللغة: C++
86-This is the Arduino code for the Aosong AM2320 temperature and humidity sensor with an LCD1602 and I2C module.
اللغة: C++
تم النسخ!

الأشياء التي قد تحتاجها

الموارد والمراجع

ملفات📁

ورقة البيانات (pdf)

Fritzing File