آردوینوالکترونیکپروژه آردوینو

پروژه سنجش دما و رطوبت با سنسور DHT11 و نمایش بر روی LCD و صفحه اینترنت

مقدمه

راه اندازی dht11: پروژه سنجش دما و رطوبت با آردوینو و LCD, می خواهیم دما و رطوبت محیط را توسط آردوینو و سنسور DHT11 ، بر روی LCD نمایش دهیم. سنسور DHT11 می تواند رطوبت و دمای محیط را با دقتی معمولی محاسبه کند و نتیجه آن را به وسیله خروجی دیجیتال خود ، به میکروکنترلر بفرستد. میکروکنترلر پس از دریافت این اطلاعات ، آنها را بر روی LCD نمایش می دهد. در نهایت نیز توسط ماژول اترنت آردوینو را به سیستم متصل می کنیم تا بتوانیم اطلاعات را به وسیله اینترنت در هرجایی ببینیم و نیازی به حضور فیزیکی نباشد.این سه پروژه کاربردی و جذاب را به هیچ وجه از دست ندهید. با ما همراه باشید.

مرحله اول:قطعات مورد نیاز

مواردی که در این آزمایش به آن ها نیاز داریم عبارتند از:

۱برد آردوینو Uno R3
۲برد بورد نیمه
۳بورد پروتوتایپ آردوینو(الزامی نیست)
۴ماژول دما و رطوبت DHT11 یا DHT22
۵مقاومت ۱۰۰ اهم
۶مقاومت ۱۰ کیلو اهم
۷پتانسیومتر ۱۰ کیلو اهم
۸نمایشگر LCD (مدل HD44780)
۹شیلد اترنت
۱۰مقداری سیم جامپر
قطعات مورد نیاز برای راه اندازی dht11

نکته: سنسور DHT11 نسبت به برادر بزرگتر خود یعنی DHT22 از دقت پایین تری در اندازه گیری برخوردار است. اما به علت ارزان بودن و مناسب بودن آن جهت اجرای پروژه های آموزشی ، استفاده از این سنسور متداول تر می باشد. در صورت نیاز به دقت بالاتر می توانید با کمی تغییر در برنامه این آموزش ، از DHT22 استفاده کنید.

مرحله دوم:اتصالات را انجام دهید

سنسور DHT11 و DHT22 هر دو در دو مدل چهار پایه و سه پایه (مدل نصب شده روی PCB) می باشند. در مدل چهار پایه ، یکی از پایه ها به جایی متصل نمی باشد. این چهار پایه به ترتیب برابرند با:

  • ۵V ————–> 5v آردوینو
  • دیتا ————–> پین ۲ آردوینو
  • بدون استفاده
  • زمین (GND) ——> GND آردوینو

برای استفاده از این سنسور همواره به یک مقاومت Pull-up نیاز داریم که مقدار آن را در این آزمایش برابر ۱۰ کیلو اهم در نظر گرفتیم. در مدل های سه پایه که معمولا بر روی یک PCB قرار گرفته اند ، مقاومت Pull-up بر روی خود برد موجود می باشد و نیاز به مقاومت خارجی نیست

نمایی از سنسور دما و رطوبت
آرایش پایه های سنسور دما و رطوبت

دانلود کتابخانه DHT11 و آپلود یک کد آزمایشی

برای برنامه نویسی راحت تر جهت استفاده از DHT11، بایستی کتابخانه آن را از  این لینک دانلود نمایید.در ضمن کتابخانه مذکور بر روی هردو مدل DHT11 و DHT22 کار خواهد کرد.همچنین یک برنامه تست سنسور نیز درون این فایل قرار دارد که مقادیر دریافتی از سنسور را بر روی نمایشگر سریال نشان می دهد. برای انجام این کارها به شکل زیر عمل نمایید:

  • برای نصب کتابخانه ابتدا نرم افزار آردوینو را باز کنید.سپس از منو Sketch > Include Library گزینه Add .ZIP Library را انتخاب کنید.
  • در پنجره باز شده،فایل زیپ کتابخانه که دانلودکرده بودید را انتخاب نمایید.
  • حال در منو Sketch > Include Library در پایین لیست باید گزینه DHT Sensor Library را مشاهده کنید.
  • حال برد آردوینو را به کامپیوتر وصل کرده و برنامه آردوینو را باز نمایید.
  • به منوی File > Examples رفته و در پایین لیست گزینه DHT Sensor Library > DHT Tester را باز نمایید.
  • اگر از سنسور DHT11 استفاده می کنید بایستی خط دستوری #define DHTTYPE DHT22 را با گذاشتن // در ابتدای آن به کامنت تبدیل کنید (این کار باعث اجرا نشدن این دستور می شود).
  • سپس // را از ابتدای دستور //#define DHTTYPE DHT11  با پاک کنید،تا این خط را از حالت کامنت در بیاورید.
  • ولی اگر از سنسور DHT22 استفاده می کنید،نیازی نیست در کد تغییری ایجاد کنید.
نمایی از نوع دستور دهی پروژه راه اندازی dht11
نمایی از نوع دستور دهی پروژه راه اندازی dht11

نوع برد و پورت مورد نظر را انتخاب کنید

در قسمت Borad از منو Tools برد خود را انتخاب کنید.

در قسمت Port ،پورت سریالی که آردوینو خود را به آن متصل کردید،انتخاب کنید.(برای فهمیدن پورت،برد را از کامپیوتر خود جدا کنید و ببینید کدام گزینه حذف می شود.)

آپلود کد

  • کد را بر روی آردوینو خود آپلود کنید.پس از کامپیل و آپلود اگر مشکلی وجود نداشت مانیتور سریال را باز کنید؛خواهید دید که مقادیر دما و رطوبت به صورت پشت سر هم در حال نمایش می باشند. اگر شما با نفستان در سنسور بدمید ، می بینید که مقادیر نمایش داده شده مقاومت و رطوبت در حال تغییر می باشد
آپلود کد پروژهراه اندازی dht11

در  این برنامه مقادیر رطوبت و دما از جنس float در نظر گرفته شده اند. این نوع متغیر ها دارای مقدار اعشار می باشند. اگر می خواهید که متغیر شما اعشاری نباشد ، می توانید نوع این متغیر ها را از float به Int تبدیل نمایید. برای این کار خط های دستوری زیر را پیدا کنید :

float h = dht.readHumidity();

float t = dht.readTemperature();

و آنها را به صورت زیر تغییر دهید:

int h = dht.readHumidity();

int t = dht.readTemperature();

حال اگر برنامه را دوباره به آردوینو منتقل کنید ، خواهید دید که اعداد به صورت صحیح نمایش داده می شوند و دیگر مقادیر اعشاری ندارند. شما می توانید این برنامه را در پوشه دیگری ذخیره نمایید تا در صورت تغییر دادن آن ، بتوانید به راحتی آن را بازیابی نمایید.

متصل کردن LCD به آردوینو

نمایی از پروژه راه اندازی dht11
نمایی از پروژه راه اندازی dht11
نمایی از پروژه راه اندازی dht11
نمایی از پروژه راه اندازی dht11

LCD دارای ۱۶ پایه است که از ۱۲ عدد آن استفاده می شود. این پایه ها را به شکل زیر متصل نمایید: 

  • پایه ۱ به زمین
  • پایه ۲ به تغذیه ۵ ولت
  • پایه ۳ به پایه وسط پتانسیومتر (دو پایه دیگر پتانسیومتر به تغذیه ۵ ولت و زمین متصل می شوند)
  • پایه ۴ (RS) به پایه دیجیتال ۳ آردوینو
  • پایه ۵ (RW) به زمین
  • پایه ۶ (E) به پایه دیجیتال ۴ آردوینو
  • پایه های ۷ ، ۸ ، ۹ ، ۱۰ بدون استفاده
  • پایه ۱۱ (D4) به پایه دیجیتال ۵ آردوینو
  • پایه ۱۲ (D5) به پایه دیجیتال ۶ آردوینو
  • پایه ۱۳ (D6) به پایه دیجیتال ۷ آردوینو
  • پایه ۱۴(D7)  به پایه دیجیتال ۸ آردوینو
  • پایه ۱۵ (نور پشت زمینه مثبت) به ۵ ولت
  • پایه ۱۶ (نور پشت زمینه مثبت) با یک مقاومت ۱۰۰ اهم به زمین متصل شود.

کد تست LCD

کتابخانه LCD  مدل HD44780 به طور پیش فرض در جدید ترین نسخه های برنامه آردوینو آمده است.

  • برنامه HelloWorld را از آدرس File -> Examples -> LiquidCrystal باز نمایید.
  • در این برنامه به دنبال خط زیر باشد

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

سپس آن را به شکل زیر تبدیل نمایید:

LiquidCrystal lcd(3, 4, 5, 6, 7, 8);

از آنجا که از پایه های شماره ۱۱ و ۱۲ جهت اتصال ماژول اترنت به آردوینو می خواهیم استفاده نماییم ، پایه های خروجی را متناسب با اتصالات خود تغییر دادیم.

  • کد را بر روی آردوینو خود آپلود نمایید.
  • پتانسیومتر را طوری تنظیم کنید که حروف صفحه نمایشگر خوانا شوند.
  • حال بایستی عبارت hello, world! را در خط اول LCD و اعدادی را که در حال شمارش هستند را در خط دوم مشاهده نمایید.

ترکیب برنامه DHT11 و LCD در نمایش پروژه راه اندازی dht11

حال که برنامه های تست DHT11 و LCD را به درستی اجرا کردیم ، یک قدم جلوتر رفته و از هردو قطعه به صورت همزمان استفاده می کنیم تا بتوانیم مقادیر اندازه گیری شده توسط DHT11 را بر روی LCD نمایش دهیم

 نمایش پروژه راه اندازی dht11
نمایش پروژه راه اندازی dht11
نمایی از برد آردوینو و قطعات 1
نمایی از برد آردوینو و قطعات ۱
نمایی از برد آردوینو و قطعات 2
نمایی از برد آردوینو و قطعات ۲
نمایی از برد آردوینو و قطعات 3
نمایی از برد آردوینو و قطعات ۳

در اینجا از یک ماژول اترنت ENC28J60 استفاده کرده ایم. این ماژول برای کارکرد واقعی به ولتاژ ۳.۳ ولت نیاز دارد.

در اینجا به پایه هایی که در پایین ذکر شدند جهت استفاده از این ماژول نیاز داریم.

VCC, GND, CS, SO, SI, SCK

پایه VCC به پایه ۳.۳ ولت آردوینو

پایه GND به GND آردوینو

پایه CS به پایه دیجیتال شماره ۱۰

پایه SI به پایه دیجیتال شماره ۱۱

پایه SO به پایه دیجیتال شماره ۱۲

پایه SCK به پایه دیجیتال شماره ۱۳

حال کافیست که ماژول را توسط یک کابل شبکه به مودم یا روتر خود متصل نماییم.

اتصال کابل به آردوینو در پروژه سنجش دما و رطوبت با آردوینو و LCD
اتصال کابل به آردوینو در پروژه سنجش دما و رطوبت با آردوینو و LCD

کد تست نمایش پروژه راه اندازی dht11 و کتابخانه ماژول ENC28J60

حال که ماژول اترنت را به مدار اصلی وصل نمودیم ، بایستی برای اطمینان از صحت عملکرد، آن را تست نماییم. برای تست این ماژول باید ابتدا کنابخانه آن را از  این لینک دانلود کنید.برای نصب کتابخانه دقیقا مانند DHT11 عمل کنید ولی در پنجره انتخاب فایل زیپ،فایل زیپ مربوط به ماژول اترنت را انتخاب کنید.

پس از نصب کتابخانه به منوی File > Examples رفته و در پایین لیست گزینه EtherCard > rbbb_server را انتاخب کنید.در پنجره باز شده نیاز داریم تا دو خط دستوری را تغییر دهیم. اولین مورد برای اینکه Ip مربوط به ماژول در Subnet درست جای گرفته و دومین مورد اینکه پایه CS ماژول که به طور پیش فرض به پایه شماره ۸ دیجیتال آردوینو متصل شده است را به پایه ۱۰ دیجیتال ، تغییر دهیم.

  • به دنبال خط دستوری بگردید که با static byte myip[] شروع شده است. حال یک آدرس IP آزاد و بدون استفاده خود را (مانند ۱۹۲.۱۶۸.۱.۵۰) در آن قرار دهید.
  • سپس به دنبال خط دستوری زیر بگردید :

if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)

و آن را با خط زیر عوض نمایید:

if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)

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

همه پروژه ها در کنار هم

نمایی از LCD بعد از آپلود کد
نمایی از LCD بعد از آپلود کد
نمایی از تست بر روی نرم افزار
نمایی از تست بر روی نرم افزار

اولین تلاش من برای ترکیب ۳ پروژه با هم کار کرد ، اما اترنت اغلب موقتی بود. بنابراین من از یکی از دوستانم کمک گرفتم که به من کمک کرد تا طرح را اصلاح کنم و زمان بندی بهتری در حلقه loop() داشته باشم.

اصلاحات انجام شده به صورت زیر می باشد

  • یک Gateway IP Adress به کد اضافه کردم بتوانم زمانی که لازم بود بدون استفاده از IP مودم یا روتر و یا متصل نبودن به اینترنتی که ماژول به آن متصل است به صفحه اینترنتی دسترسی داشته باشم.برای این کار نیاز دارید تا یک پورت خاص فقط برای این شبکه در مودم یا روتر تعریف کنید.اگر این کار را انجام ندهید فقط زمانی که به اینترنتی که ماژول به آن متصل است ، متصل باشید می توانید صفحه اینترنتی را ببینید.
  • متغییر های دما و رطوبت را به صورت global  تعریف کردم
  • ۲ متغییر برای timer ها در نظر گرفتم.یکی برای سنسور دما و دیگری برای انیمیشنی که برای فهمیدن درست کار کردن تابع loop() بود برنامه ریزی کردم.
  • زمان refresh صفحه اینترنتی را از ۱ به ۳۰ تغییر دادم تا به جای هر ثانیه هر ۳۰ ثانیه صفحه به طور خودکار refresh شود.اگر می خواهید صفحه به طور خودکار refresh نشود می توانید این خط را حذف کنید یا مقدار آن را کم یا زیاد کنید.

حال کد نهایی را از این لینک دانلود کرده و آن را بر روی برد خود آپلود کنید.مرورگر خود را باز کنید و به IP که در کد مشخص کرده بودید بروید.باید دما و رطوبت را در صفحه ببینید؛مشابه چیزی که بر روی LCD  نیز هست.LCD همچنین باید یک انیمیشن نیز داشته باشد که در قسمت پایین سمت راست LCD می باشد وبرای اطمینان من از کارکرد حلقه loop() می باشد.

سخن پایانی

در این پروژه آموختید که چگونه ابتدا با سنسور دما و رطوبت DHT11 کار کنید.سپس کار با LCD را فراگرفتید و یک پروژه از مجموع این دو اجرا کردید و در پایان نیز با ماژول اترنت ENC28J60  به اینترنت متصل شدید و دما و رطوبت را بر روی اینترنت فرستاده و خواندید.این پروژه به خودی خود آن قدر جذاب است که نیازی به خلاقیت بیشتر و ارتقا ندارد و می تواند همه را به وجد آورد.که می داند شاید ۱۰ سال دیگر این پروژه در تمامی خانه های در حال ساخت اجرا شود و تبدیل به کاری عادی و روزمره شود.امیدوارم از این آموزش لذت برده باشید.

DHT11 Sensor

نمایش بیشتر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا