آردوینو Arduino

راه اندازی سنسور دمای DHT11 با آردوینو و نمایش دما بر روی LCD

یک راهنمای جامع برای اتصال سنسور DHT11، آردوینو و نمایشگر OLED I2C برای نمایش دما و رطوبت

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

در این پروژه، خروجی سنسور دمای DHT11 را روی یک نمایشگر OLED نمایش می‌دهیم. استفاده از OLED به دلیل وضوح بالا، مصرف انرژی کم و طراحی جمع‌وجور، گزینه‌ای بسیار جذاب برای پروژه‌های الکترونیکی است. نمایش لحظه‌ای دما و رطوبت روی این نمایشگر باعث می‌شود کاربر بدون نیاز به اتصال به کامپیوتر، شرایط محیطی را به‌صورت دقیق و خوانا مشاهده کند. این ترکیب (آردوینو + DHT11 + OLED) پایه‌ای مناسب برای ساخت سیستم‌های مانیتورینگ محیطی در خانه‌های هوشمند، گلخانه‌ها یا پروژه‌های آموزشی است.

فهرست مطالب

  1. مقدمه و معرفی قطعات
  2. پروتکل ارتباطی I2C به زبان ساده
  3. آماده‌سازی بستر برنامه‌نویسی (نصب کتابخانه‌ها)
  4. شکل‌دادن مدار (نحوه اتصال قطعات)
  5. نوشتن کد: از دریافت داده تا نمایش گرافیکی
  6. کالیبراسیون و افزایش دقت
  7. عیب‌یابی مشکلات رایج
  8. ایده‌هایی برای توسعه و ارتقای پروژه

1. مقدمه و معرفی قطعات

برای انجام این پروژه به قطعات زیر نیاز دارید:

IMG20211017003238 800x600 1

  • برد آردوینو Uno (یا مشابه مانند Nano): این مغز متفکر پروژه است. داده را از سنسور می‌خواند، پردازش می‌کند و نمایشگر را کنترل می‌کند.
  • سنسور دما و رطوبت DHT11: این سنسور مقرون‌به‌صرفه و پرکاربرد، همزمان دما را بر حسب درجه سانتی‌گراد و رططوبت را بر حسب درصد اندازه‌گیری می‌کند. توجه: این سنسور یک پین داده دارد و برای ارتباط از پروتکل اختصاصی خود استفاده می‌کند (نه I2C).
  • نمایشگر OLED دو رنگ با درایور SSD1306 (معمولاً 0.96 اینچی): این نمایشگر برای نمایش اطلاعات به صورت گرافیکی و متنی عالی است. وضوح رایج آن 128×64 پیکسل است. مهم: درایور رایج این نمایشگرها SSD1306 است، نه SSD1315 که در متن اصلی اشاره شد. این نمایشگرها از پروتکل I2C استفاده می‌کنند.
  • برد بورد (Breadboard) و سیم جامپر (نر-ماد و نر-نر): برای ایجاد اتصالات بدون نیاز به لحیم‌کاری.
  • کابل USB: برای اتصال آردوینو به کامپیوتر و برنامه‌ریزی آن.
  • مقاومت 10 کیلواهم (اختیاری اما توصیه شده): برای Pull-up کردن خط داده سنسور DHT11.

ماژول دما و رطوبت DHT11

ماژول دما و رطوبت DHT11

لینک خرید

برد آردوینو Arduino UNO R3 CH340 با ورودی USB Type-C

برد آردوینو Arduino UNO R3 CH340 با ورودی USB Type-C

لینک خرید

ماژول OLED 0.96 SPI دو رنگ زرد-آبی

ماژول OLED 0.96 SPI دو رنگ زرد-آبی

لینک خرید

2. پروتکل ارتباطی I2C به زبان ساده

I2C یک پروتکل ارتباطی سریال و دوطرفه است که تنها با دو سیم کار می‌کند: یکی برای کلاک (SCL) و دیگری برای داده (SDA). این سادگی باعث شده تا بتوان چندین وسیله مانند سنسورها، نمایشگرها و ماژول‌های مختلف را تنها با همین دو خط به میکروکنترلر وصل کرد. هر دستگاه در شبکه I2C یک آدرس منحصر به فرد دارد، بنابراین آردوینو یا هر کنترل‌کننده دیگری می‌تواند مشخص کند که در لحظه با کدام وسیله ارتباط برقرار کند.

یکی از ویژگی‌های مهم I2C این است که از ساختار مستر و اسلیو پیروی می‌کند. معمولاً میکروکنترلر نقش مستر را دارد و فرمان ارسال یا دریافت داده را صادر می‌کند، در حالی که سنسورها یا نمایشگرها نقش اسلیو را بازی می‌کنند. این پروتکل به دلیل سرعت مناسب و قابلیت اتصال چندین دستگاه با سیم‌کشی کم، در پروژه‌های الکترونیکی و رباتیک بسیار پرکاربرد است و یادگیری آن برای کار با آردوینو و ماژول‌های جانبی ضروری محسوب می‌شود.

  • SDA (Serial Data): خطی برای انتقال داده.
  • SCL (Serial Clock): خطی برای هم‌زمانی (ساعت) ارتباط.

آردوینو Uno پین‌های اختصاصی I2C دارد:

  • A4 نقش SDA را ایفا می‌کند.
  • A5 نقش SCL را ایفا می‌کند.

نمایشگر OLED و بسیاری از سنسورها به همین دو پین متصل می‌شوند.

3. آماده‌سازی بستر برنامه‌نویسی (نصب کتابخانه‌ها)

قبل از نوشتن کد، باید کتابخانه‌های لازم را در محیط Arduino IDE نصب کنید:

  1. کتابخانه DHT Sensor Library: برای کار با سنسورهای DHT.
    • به مسیر Tools > Manage Libraries... بروید.
    • عبارت “DHT sensor library” را جستجو و توسط Adafruit نصب کنید.
  2. کتابخانه Adafruit SSD1306: برای کنترل نمایشگر.
    • در پنجره Library Manager، عبارت “Adafruit SSD1306” را جستجو و نصب کنید.
  3. کتابخانه Adafruit GFX: این کتابخانه برای رسم اشکال و فونت‌ها روی نمایشگر است و معمولاً به طور خودکار با کتابخانه SSD1306 نصب می‌شود.

4. نحوه اتصال قطعات

Arduin Oled Dht11 bb n 1536x1141 1

اتصال سنسور DHT11:

پین سنسور DHT11 پین آردوینو Uno
VCC (پین ۱) 5V
Data (پین ۲) Digital Pin 2
GND (پین ۴) GND
  • یک مقاومت 10 کیلواهم بین پین VCC و Data سنسور وصل کنید (Pull-Up).

اتصال نمایشگر OLED I2C:

پین نمایشگر OLED پین آردوینو Uno
VCC 3.3V یا 5V *
GND GND
SCL A5 (SCL)
SDA A4 (SDA)
  • اگر نمایشگر شما منطق 5 ولتی دارد، به 5V متصل شود. اگر 3.3 ولتی است، به 3.3V متصل شود. بیشتر ماژول‌ها با 5V نیز کار می‌کنند.

5. نوشتن کد: از دریافت داده تا نمایش گرافیکی

حالا نوبت به بخش جذاب پروژه، یعنی برنامه‌نویسی می‌رسد. کد زیر به طور کامل و با جزئیات نوشته شده است.

توضیح بخش‌های کلیدی کد:

  • ساخت اشیاء: ما برای سنسور و نمایشگر، شیء (Object) ساخته‌ایم تا به راحتی از توابع آن‌ها استفاده کنیم.
  • مدیریت خطا: تابع isnan() بررسی می‌کند که سنسور عدد معتبری برگردانده یا خیر. اگر خطایی رخ دهد، یک پیغام خطا روی نمایشگر نشان داده می‌شود.
  • Serial Monitor: مقادیر خوانده شده برای اهداف دیباگ و عیب‌یابی در Serial Monitor چاپ می‌شوند.
  • گرافیک: به جای استفاده از println ساده، از توابع کتابخانه GFX برای رسم کادر، قرار دادن آیکون و تنظیم سایز و مکان متن‌ها استفاده کرده‌ایم تا خروجی زیباتر و خواناتری داشته باشیم.

IMG 20211017 003451 500x283 1

6. کالیبراسیون و افزایش دقت

سنسور DHT11 دقت محدودی دارد (دما ±2°C و رطوبت ±5%). برای نتایج دقیق‌تر:

  • مقایسه: خوانش‌های سنسور خود را با یک دماسنج یا رطوبت‌سنج استاندارد و دقیق مقایسه کنید.
  • افزایش/کاهش افست: می‌توانید یک مقدار ثابت (Offset) در کد به مقادیر خوانده شده اضافه یا از آن کم کنید. برای مثال:
    float calibratedTemp = temperature - 1.0; // اگر سنسور 1 درجه بیشتر نشان می‌دهد
  • اجتناب از عوامل مخرب: سنسور را از منابع مستقیم گرما (مانند رگولاتور آردوینو) و رطوبت مستقیم دور نگه دارید.

7. عیب‌یابی مشکلات رایج

  • نمایشگر روشن نمی‌شود:
    • اتصالات VCC و GND را بررسی کنید.
    • مطمئن شوید آدرس I2C در کد (0x3C) صحیح است. برای پیدا کردن آدرس ماژول خود می‌توانید از اسکچ I2C Scanner استفاده کنید.
  • مقادیر NaN (Not a Number) یا خطا نمایش داده می‌شود:
    • اتصال پین داده سنسور DHT را بررسی کنید.
    • از سالم بودن سنسور مطمئن شوید.
    • مقاومت Pull-up را وصل کنید.
    • بین هر بار خواندن سنسور حداقل 2 ثانیه تاخیر بگذارید.
  • مقادیر خوانده شده کاملاً اشتباه است:
    • پین‌های VCC و GND سنسور را اشتباه وصل نکرده باشید.
    • سنسور ممکن است خراب باشد.

8. ایده هایی برای توسعه و ارتقای پروژه

حالا که پایه پروژه کامل شد، می‌توانید آن را گسترش دهید:

  • افزودن ماژول SD Card: برای ذخیره‌سازی داده‌ها و رسم نمودارهای تاریخی.
  • ساخت Dashboard تحت وب: با استفاده از ماژول ESP8266 یا ESP32 می‌توانید داده‌ها را به سرور ارسال کنید و از طریق موبایل یا لپ‌تاپ آن‌ها را رصد کنید.
  • هشدار دهنده: با استفاده از یک بوزر (Buzzer) یا LED، زمانی که دما یا رطوبت از یک حد مجاز عبور کرد، هشدار ایجاد کنید.
  • کنترل فعال: با اضافه کردن یک رله، می‌توانید یک فن یا humidifier را بر اساس شرایط محیط روشن و خاموش کنید.
  • نمایشگر پیشرفته: از قابلیت‌های کتابخانه GFX برای رسم نمودارهای خطی واقعی از تغییرات دما استفاده کنید.

جمع‌بندی

در این پروژه یاد گرفتیم که چگونه با استفاده از آردوینو، داده‌های فیزیکی محیط را sensed کنیم، پردازش کنیم و به زیباترین شکل ممکن به کاربر نمایش دهیم. این مبانی پایه‌ای می‌تواند نقطه شروعی برای صدها پروژه IoT و هوشمندسازی دیگر باشد. سخت‌افزار و کد را امتحان کنید، با آن بازی کنید و ایده‌های خود را به آن اضافه کنید.

نوشته های مشابه

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

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

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