شِفر (کود) آردوینو و ویدئو برای حساس(حس کننده) دیجیتال دما و رطوبت Aosong AM2320 با LCD1602 و ماجیول I2C

شِفر (کود) آردوینو و ویدئو برای حساس(حس کننده) دیجیتال دما و رطوبت 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 امکان نمایش خوانش‌های حساس(حس کننده) را فراهم می‌کند. این یک نمایشگر کاراکتری 16x2 است که از طریق پروتکل 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
یادداشت‌ها / انواعاستفاده از مقاومت‌های pull-up برای اتصالات I2C توصیه می‌شود.

  • اطمینان حاصل کنید که منبع تغذیه مناسب در محدوده ولتاژ مشخص شده باشد.
  • برای خطوط SDA و SCL از مقاومت‌های پول‌آپ استفاده کنید (4.7kΩ توصیه می‌شود).
  • آدرس I2C صحیح را بررسی کنید (پیش‌فرض برای اکثر ال‌سی‌دی‌ها 0x27 است).
  • خطاهای احتمالی را با بررسی شِفر (کود) خطای حساس(حس کننده) مدیریت کنید.
  • قبل از نمایش قرائت‌های جدید، نمایشگر LCD را پاک کنید تا از همپوشانی جلوگیری شود.

دستورالعمل سیم‌کشی

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

برای سیم‌کشی حساس(حس کننده) AM2320، پایهٔ سمت چپ (VCC) را به 5V روی آردوینو وصل کنید. پایهٔ دوم (SDA) به پایهٔ A4 روی آردوینو Uno می‌رود (یا به پایه 20 روی آردوینو Mega). پایهٔ سوم (GND) باید به زمین متصل شود، و پایهٔ چهارم (SCL) به پایهٔ A5 روی آردوینو Uno (یا پایه 21 روی آردوینو Mega) متصل می‌شود. علاوه بر این، یک مقاومت 4.7kΩ بین پایه SDA و 5V و یک مقاومت 4.7kΩ دیگر بین پایه SCL و 5V وصل کنید تا سطوح سیگنال مناسب تضمین شود.

برای نمایشگر LCD1602 با رابط I2C، پایه VCC را به 5V و پایه GND را به زمین متصل کنید. پایه SDA از LCD را به همان پایه SDA (A4) که برای حساس(حس کننده) استفاده می‌شود متصل کنید. به‌طور مشابه، پایه SCL از LCD را به همان پایه 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)

فایل فریزینگ