جستجو برای:
  • شیراز کدرز
    • Empire
    • سیاست حریم خصوصی
  • آموزش ها
    • آموزش آردوینو مقدماتی
      • آموزش آردوینو جلسه اول
      • آموزش آردوینو جلسه دوم
      • آموزش آردوینو جلسه سوم
      • آموزش آردوینو جلسه چهارم
      • آموزش آردوینو جلسه پنجم
      • آموزش آردوینو جلسه ششم
      • آموزش آردوینو جلسه هفتم
      • آموزش آردوینو جلسه هشتم
      • آموزش آردوینو جلسه نهم
      • آموزش آردوینو جلسه دهم
    • آموزش آردوینو مبتدی
      • آموزش آردوینو جلسه یازدهم
      • آموزش آردوینو جلسه دوازدهم
      • آموزش آردوینو جلسه سیزدهم
    • آموزش الکترونیک | بایگانی
      • آموزش الکترونیک مقدماتی درس 1
      • آموزش الکترونیک مقدماتی درس 2
      • آموزش الکترونیک مقدماتی درس 3
      • آموزش الکترونیک مقدماتی درس 4
  • حساب کاربری
    • حساب کاربری من
    • پنل کاربری پیشرفته
    • کیف پول
    • سفارش‌ها
    • خروج
  • فروشگاه
    • محصولات
شیراز کدرز
  • شیراز کدرز
    • Empire
    • سیاست حریم خصوصی
  • آموزش ها
    • آموزش آردوینو مقدماتی
      • آموزش آردوینو جلسه اول
      • آموزش آردوینو جلسه دوم
      • آموزش آردوینو جلسه سوم
      • آموزش آردوینو جلسه چهارم
      • آموزش آردوینو جلسه پنجم
      • آموزش آردوینو جلسه ششم
      • آموزش آردوینو جلسه هفتم
      • آموزش آردوینو جلسه هشتم
      • آموزش آردوینو جلسه نهم
      • آموزش آردوینو جلسه دهم
    • آموزش آردوینو مبتدی
      • آموزش آردوینو جلسه یازدهم
      • آموزش آردوینو جلسه دوازدهم
      • آموزش آردوینو جلسه سیزدهم
    • آموزش الکترونیک | بایگانی
      • آموزش الکترونیک مقدماتی درس 1
      • آموزش الکترونیک مقدماتی درس 2
      • آموزش الکترونیک مقدماتی درس 3
      • آموزش الکترونیک مقدماتی درس 4
  • حساب کاربری
    • حساب کاربری من
    • پنل کاربری پیشرفته
    • کیف پول
    • سفارش‌ها
    • خروج
  • فروشگاه
    • محصولات
0

ورود و ثبت نام

وبلاگ

آموزش آردوینو جلسه ششم

8 تیر 1399
ارسال شده توسط admin_hb
آموزش آردوینو | مقدماتی ، همه دسته ها
372 بازدید

در جلسه قبل آموختیم که چطور نمایشگر 1602 را به وسیله آردوینو راه اندازی کنیم و اطلاعاتی را بر روی آن نمایش دهیم. در این جلسه به وسیله سنسور DHT دما و رطوبت را بر روی نمایشگر، مانیتور خواهیم کرد.

در جلسه قبل به آموزش راه اندازی نمایشگر کاراکتری ۱۶۰۲ پرداختیم؛ در این جلسه یک دماسنج و رطوبت سنج به وسیله سنسور DHT میسازیم و مقادیر را بر روی نمایشگر ۱۶۰۲ نمایش میدهیم.

در این مطلب آموزش خاصی نداریم و فقط به کد نویسی و توضیحات مربوط به آن میپردازیم؛ پس بهتر است برای یادگیری آموزش ها، آن ها را به صورت عملی نیز انجام دهید!

DHT

سنسور DHT سری های مختلفی دارد؛ در تمام این سری ها، هدف اندازه گیری دما و رطوبت است و تنها در دقت (رزولوشن) این سنسور ها تفاوت هایی وجود دارد.

این سنسور با دقت نسبتا مناسب و قیمت پایینی که دارد، راه اندازی ساده ای نیز دارد و با تمام پلتفرم ها و میکروکنترلر ها قابل راه اندازی است! لیست انواع این سنسور ها را همراه با رزولوشن آنها را در زیر مشاهده میکنید:

 

محدوده اندازه گیری

رزولوشن

خطای رطوبت

خطای دما

نام سنسور

رطوبت %۲۰ تا ۹۰%

دما ۰ تا ۶۰ درجه

۱%

±۵

±۲

DHT11

رطوبت  ۰% تا ۹۹%

دما  -۴۰ تا ۸۰ درجه

۰٫۱%

۰٫۵±

۲±

DHT22

رطوبت ۰% تا ۹۹%

دما: -۴۰ تا ۸۰ درجه

۰٫۱%

۰٫۳±

۰٫۵±

DHT21

ولتاژ کاری همه سنسور های گفته شده، بین ۳٫۳ تا ۵ ولت است!

 

این سنسور ها دارای چهار پین هستند: پین تغذیه مثبت یا VCC، پین ارسال اطلاعات یا DATA، پین تغذیه منفی یا GND.

پین منفی به تغذیه آردوینو (GND)، پین مثبت به تغذیه آردوینو (+۵V یا ۳٫۳ ولت) و پین DATA به یکی از پین های دیجیتال آردوینو.

تصویر سه نوع DHT را در تصویر زیر مشاهده میکنید:

DHTXX
پین های سنسور DHT

برنامه نویسی

برای استفاده از سنسور های DHT نیاز به نصب کتابخانه آن را درید که از لینک زیر میتوانی آن را دانلود کنید:

دانلود کتابخانه از صفحه گیت هاب شیراز کدرز

دانلود مستقیم از سایت

آموزش نصب کتابخانه در جلسه قبل گفته شد.

دانلود سورس کد جلسه

توجه درصورتی که جلسه قبل را مطالعه نکرده اید و هیچ دانش قبلی از نمایشگر های  ۱۶۰۲  ندارید، ابتدا جلسه چهارم را مطالعه کنید؛ برای مطالعه جلسه چهارم، اینجا کلیک کنید.
مشاهده آنلاین کد

کد:

#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#include "bmp.h"

#define DHTPIN  2  // DHT Pin
#define DHTTYPE 11 // DHT11
#define DHTTYPE 22 // DHT22
#define DHTTYPE 21 // DHT21

#if defined(ARDUINO) && ARDUINO >= 100
  #define printByte(args) write(args);
#else
  #define printByte(args) print(args,BYTE);
#endif

LiquidCrystal_I2C lcd(0x3f, 16, 2); // I2C Address: 0x3f
// LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C Address: 0x27

DHT dht(DHTPIN, DHTTYPE);

void setup(){

     Serial.begin(9600);

     lcd.init();
     lcd.backlight();
     
     dht.begin();
     
     Serial.println("Initialized...");
     
     lcd.createChar(0, DEGREE);
     lcd.createChar(1, TEMP);
     lcd.createChar(2, HUMID);
     lcd.createChar(3, HEART);
     lcd.createChar(4, BLOCK);
     
     lcd.setCursor(0, 0);
     lcd.print("DHT ThermoMeter");
     
     lcd.setCursor(0, 1);
     lcd.print("& HumidityMeter");
     
     blinkBacklight(5, 100);
     
     delay(3000);
     
     loading();
     
     delay(1000);
     
     lcd.clear();
}

void loop(){

     float humid = dht.readHumidity();
     float tempc = dht.readTemperature();
     float tempf = dht.readTemperature(true);
     
     Serial.print("Temp: ");
     Serial.print(tempc);
     Serial.print("°C / ");
     Serial.print(tempf);
     Serial.print("°F | ");
     Serial.print("Humid: ");
     Serial.print(humid);
     Serial.println("%"); lcd.clear();
     
     lcd.setCursor(0, 0);
     lcd.printByte(1);
     lcd.print(": ");
     lcd.print((int)tempc);
     lcd.printByte(0);
     lcd.print("C ");
     lcd.print((int)tempf);
     lcd.printByte(0);
     lcd.print("F");
     lcd.setCursor(0, 1);
     lcd.printByte(2);
     lcd.print(": ");
     lcd.print((int)humid);
     lcd.print("% ");
     lcd.printByte(3);
     lcd.print(": 100%");
     
     delay(1500);
}
void loading(){

     lcd.clear();
     lcd.setCursor(0, 0);
     lcd.print("Loading...");

     for(int i = 0; i <= 16; i++){
          lcd.setCursor(i, 1);
          lcd.printByte(4);
          delay(150);
     }
}

void blinkBacklight(int times, int Delay){
     
     for(int i = times; i >= 0; i--){
          lcd.noBacklight();
          delay(Delay);
          lcd.backlight();
          delay(Delay);
     }
} 

بیت مپ:

byte DEGREE[8] = {
  B00100,
  B01010,
  B00100,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000
};

byte TEMP[8] = {
  B00100,
  B01110,
  B01110,
  B01110,
  B01110,
  B11111,
  B10111,
  B01110
};

byte HUMID[8] = {
  B00000,
  B00100,
  B01110,
  B11111,
  B11111,
  B11111,
  B10111,
  B01110
};

byte HEART[8] = {
  B00000,
  B01010,
  B11111,
  B11111,
  B11111,
  B01110,
  B00100,
  B00000
};

byte BLOCK[8] = {
  B11100,
  B01110,
  B01111,
  B01111,
  B01111,
  B01111,
  B01110,
  B11100
}; 

توضیحات

در خط چهارم کتابخانه سنسور DHT را اضاف میکنیم:

#include "DHT.h" 

در خط ۵ تب جدیدی که با نام bmp.h اضاف کرده بودیم را قرار میدهیم:

#include "bmp.h" 

نکته: در نرم افزار آردوینو برای جلوگیری از شلوغ شدن کد ها و راحت تر شدن فهم، آنها را به صورت چندین فایل در یک پوشه قرار میدهیم. همچنین میتوانید برای ایجاد فایل جدید کلید های ctrl+shift+N را فشار دهید تا تب جدیدی ایجاد شود، سپس آن را include کنید.

در جلسات دیگر توضیحات بیشتری داده میشود.

در خط ۷ شماره پین متصل به سنسور را مشخص میکنیم:

#define DHTPIN  2  // DHT Pin 

در خطوط ۸ تا ۱۰ نوع سنسور متصل را مشخص میکنیم؛ توجه داشته باشید که تنها یکی از آنها را بسته به نوع سنسور خود در کد قرار دهید!

#define DHTTYPE 11  // DHT11
#define DHTTYPE 22  // DHT22
#define DHTTYPE 21  // DHT21  

در خطوط 12 تا 16 ثابت های کد را قرار داده ایم. این ثابت ها برای نمایش بیت مپ ها هستند که فعلا با آنها کاری نداریم:

#if defined(ARDUINO) && ARDUINO >= 100
  #define printByte(args) write(args);
#else
  #define printByte(args) print(args,BYTE);
#endif 

در خطوط زیر به نمایشگر ال سی دی آدرس دهی میکنیم (تمامی دستگاه های i2c دارای آدرس مشخص شده هستند و باعث میشود بتوانیم چندین ماژول i2c را با یکدیگر راه اندازی کنیم)

آدرس اکثر نمایشگر های i2c برابر یا 0x3f است. اما اگر موفق به راه اندازی نمایشگر نشدید آدرس را به 0x27 تغییر دهید:

LiquidCrystal_I2C lcd(0x3f, 16, 2); // I2C Address: 0x3f
// LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C Address: 0x27 

تعریف شی یا Object برای سنسور DHT:

DHT dht(DHTPIN, DHTTYPE); 

در آخر کد تابعی با عنوان blinkBacklight ایجاد کرده ایم که دو آرگومان Delay و times را ایجاد کردیم. این تابع نور پس زمینه LCD را به چشمک زدن در می آورد؛ آرگومان times تعداد دفعات چشمک زدن و آرگومان Delay مدت زمان چشمک زدن را مشخص میکند. این تابع را در کد زیر مشاهده میکنید:

آغاز خواندن مقادیر از سنسور DHT:

dht.begin(); 

در آخر کد تابعی با عنوان blinkBacklight ایجاد کرده ایم که دو آرگومان Delay و times را ایجاد کردیم. این تابع نور پس زمینه LCD را به چشمک زدن در می آورد؛ آرگومان times تعداد دفعات چشمک زدن و آرگومان Delay مدت زمان چشمک زدن را مشخص میکند. این تابع را در کد زیر مشاهده میکنید:

void blinkBacklight(int times, int Delay){

     for(int i = times; i >= 0; i--){
     
          lcd.noBacklight();
     
          delay(Delay);
     
          lcd.backlight();
     
          delay(Delay);
     
     }

}  

برای مثال، اگر بخواهیم تصویر ۵ بار به مدت زمان ۱۰۰ میلی ثانیه چشمک بزند، از کد زیر استفاده میکنیم:

blinkBacklight(5, 100);  

تابع loading جنبه زیبایی دارد و میتوان گفت در اینجا کاربردی ندارد؛ اما برای استفاده و فراخوانی تابع از کد زیر استفاده میکنیم:

loading();  

در کد زیر مقادیر (دما و رطوبت) به صورت اعشاری ذخیره میشوند؛ اما درصورت نیاز میتوانید آنها را در متغیر int ذخیره کنید تا به صورت عدد صحیح نمایش داده شوند.

float humid = dht.readHumidity();
float tempc = dht.readTemperature();
float tempf = dht.readTemperature(true);  

همچنین میتوانید هنگام چاپ آنها را به عدد صحیح تبدیل کنید:

lcd.print((int)tempc);  

با استفاده از کد زیر میتوانید متغیر ها را به بکدیگر تبدیل کنید:

float pi = 3.14;

(String)pi // "3.14" in string
(int)pi // 3.14 in int 

برای خواندن دما به فارنهایت میتوانید از کد زیر استفاده کنید:

float tempf = dht.readTemperature(true);  

و یا از طریق فرمول زیر دمای سانتیگراد را به فارنهایت تبدیل کنید:

(Tempc * 1.6) + 32

مدار

آردوینو Mega:

آردوینو مگا
مدار آردوینو مگا و DHT

آردوینو Uno:

آردوینو یونو
مدار آردوینو Uno و DHT

با تشکر از همراهی شما، در صورت داشتن هرگونه سوال، نظر، انتقاد و یا پیشنهاد میتوانید در بخش نظرات با ما در ارتباط باشید.

لینک های دانلود دانلود فایل های این جلسه به طور کامل (حجم 893 کیلوبایت)
بعدی
قبلی
اشتراک گذاری:
دانلود فایل کامل پروژه
دانلود فایل
فایل کامل (جلسه ششم)

پسورد فایل : ندارد گزارش خرابی لینک

برچسب ها: DHTDHT11DHT21آردوینوآموزش برنامه نویسیآموزش برنامه نویسی آردوینوال سی دینمایشگر
درباره admin_hb

حسین بذرافکن هستم، برنامه نویس، فریلنسر و عاشق الکترونیک...

نوشته های بیشتر از admin_hb
در تلگرام
کانال ما را دنبال کنید!
در اینستاگرام
ما را دنبال کنید!
مطالب زیر را حتما بخوانید
  • آموزش آردوینو جلسه سیزدهم

    236 بازدید

  • آموزش آردوینو جلسه دوازدهم

    249 بازدید

  • آموزش الکترونیک مقدماتی درس 3

    355 بازدید

  • آموزش الکترونیک مقدماتی درس 2

    315 بازدید

  • آموزش الکترونیک مقدماتی درس 1

    259 بازدید

  • آموزش آردوینو جلسه یازدهم

    469 بازدید

قدیمی تر پروژه اینترنت اشیا با Nodemcu
جدیدتر آموزش HTML و CSS جلسه اول

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:

امروز، یکشنبه ۱۷ اسفند ۹۹ ساعت ۱۱:۲۸

نوشته های تازه

آموزش آردوینو جلسه سیزدهم

در جلسه قبل راه اندازی نمایشگر نوکیا را یاد گرفتیم و به وسیله آن ساعت

بیشتر »
14 آذر 1399

آموزش آردوینو جلسه دوازدهم

در جلسه قبل با توابع کشیدن اشکال در نمایشگر Nokia 5110 آشنا شدیم. در این

بیشتر »
11 آذر 1399

آموزش الکترونیک مقدماتی درس 3

آموزش الکترونیک مقدماتی درس 3 در جلسات گذشته با مباحث بسیاری آشنا شدیم؛ در این

بیشتر »
3 مهر 1399

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت