آردوینو آموزش آردوینو اینترنت اشیا IOT اینترنت اشیاء عملی پروژه های آردوینو سخت افزار

مانیتور دما و رطوبت محیط با برد کنترل اینترنت اشیاء IOT مدل Wemos D1 Mini

Wemos-d1-mini-OLED-temp-humidity-IOT-Digispark
نوشته شده توسط اروند طباطبایی

پارامترهای محیطی از جمله دما، رطوبت، شدت نور، میزان مصرف جریان برق حتی حضور یا عدم حضور انسان در یک محیط از موارد مهم در اینترنت اشیاء IOT میباشد. این پارامترها به صورت آنالوگ هستند و برای تبدیل به مفهوم قابل درک برای سیستم نیاز به سنسور می‌باشد. سنسورها در اینترنت اشیاء IOT توانایی قابل درک بودن پارامترهای فیزیکی برای اشیاء را به دنبال خواهند داشت. معمولا برای هر پارامتر فیزیکی و آنالوگ یک سنسور طراحی شده است. البته سنسور اثر بویایی کمی عملکرد پیشرفته تری دارد. بنابراین با انواع سنسورها میتوانیم مقادیر آنالوگ را به مقادیر دیجیتال و صفر و یک تبدیل کنیم. در این پس با استفاده از برد کنترل اینترنت اشیاء Wemos D1 Mini بر پایه ESP8266 و سنسور DHT11 و یک نمایشگر OLED دما و رطوبت محیط را میخوانیم و به نمایش در می‌آوریم. در ادامه این آموزش با مرجع آموزش تخصصی اینترنت اشیاء IOT دیجی اسپارک همراه باشید.

 

ساختار MCU در اینترنت اشیاء IOT

ام سی یو Main Control Unit مهمترین بخش در اینترنت اشیاء به شمار می‌رود. البته تمامی بخش‌ها از اهمیت برخوردار هستند و عملکرد همه‌ی بخش‌ها در قالب یک سیستم اهمیت دارد. در این پروژه از برد کنترل اینترنت اشیاء Wemos D1 Mini بر پایه تراشه ESP8266 استفاده کرده‌ام. این برد با توجه به ابعاد ۳۵ در ۲۵ میلیمتری و مصرف برق بسیار ناچیز، در کنار استفاده از تراشه وای فای، انتخاب بسیار مناسب برای اینترنت اشیاء میباشد. خصوصا اینکه با استفاده از یک باتری لیتیوم پلیمر میتوان تا ۲۴ ساعت تغذیه پشتیبان برای این برد در نظر گرفت. در واقع MCU با کلیه سنسورها میتواند ارتباط بگیرد و پارامترهای آن‌ها را دریافت و روی سرور ارسال کند. برد کنترلی Wemos D1 Mini دارای یک پایه آنالوگ و یک رابط SPI و یک رابط I2C می‌باشد. با توجه به سنسورها و ماژول‌های که با این برد ارتباط میگیرند، اتصالات را برقرار میکنیم.

 

وسایل مورد نیاز:

برد کنترلی اینترنت اشیاء IOT Wemos Mini D1 بر پایه ESP8266

شیلد سنسور دما رطوبت DHT11 مخصوص اینترنت اشیا iOT برد Mini D1

شیلد نمایشگر OLED مخصوص اینترنت اشیا iOT برد Mini D1

کابل Micro USB

باتری لیتیوم پلیمر (در صورت نیاز به تغذیه پشتیبان)

 

 

اتصالات مدار مانیتور دما رطوبت اینترنت اشیاء

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

 

 

فراخوانی کتابخانه‌ها

در این آموزش من از ۵ کتابخانه استفاده کرده‌ام. کتابخانه SPI و کتابخانه Wire به صورت پیشفرض در IDE آردوینو نصب هستند. سه کتابخانه دیگر را به ترتیب از لینک‌ها اعلام شده دانلود کنید. کتابخانه GFX  و کتابخانه SSD1306 مخصوص نمایشگر OLED که توسط آدافورت Adafruit توسعه داده شده است. برای دانلود این دو کتابخانه به صفحه محصول شیلد نمایشگر OLED مخصوص اینترنت اشیا iOT برد Mini D1 مراجعه و در انتهای صفحه لینک دانلود وجود دارد. همچنین کتابخانه جامع سنسورهای DHT برای دانلود این کتابخانه به صفحه محصول شیلد سنسور دما رطوبت DHT11 مخصوص اینترنت اشیا iOT برد Mini D1 مراجعه و در انتهای صفحه لینک دانلود قرار دارد.

 

 

کدهای برنامه:

 

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

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

اروند طباطبایی

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

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۴ دیدگاه

    • با سلام
      ضمن تشکر از توجه شما، برد Wemos D1 Mini یک کنترلر اینترنت اشیاء است. از این رو کلیه پروژه‌هایی که توسط این برد کار میشوند، توانایی ارسال دیتا در بستر اینترنت را دارند. پروژه مانیتور دما رطوبت در این پست هیچ دیتایی ارسال نمیکند. ولی پیشنیازی برای ورود به اینترنت اشیاء است. در سری آموزش‌ها با برد Wemos از پروژه‌های ساده شروع کرده‌ام و پروژه‌های پیچیده و فنی را در آینده خواهیم داشت.

  • تشکر از شما
    میخواستم بدونم که چطوری میتونیم همین اطلاعات را روی تلفن همراه ارسال کنیم؟ در ایمیلی که ارسال کردید این طور نوشته بودید.

    • با سلام
      ضمن تشکر از توجه و دقت شما، در این بخش از آموزش فقط شیوه خواندن اطلاعات و نمایش روی OLED آموزش داده شد و در آینده که مجموعه آموزش‌های اینترنت اشیاء IOT با برد Wemos را ادامه میدهیم؛ شیوه انتقال دیتا و نمایش بر روی موبایل را آموزش خواهیم داد.

    • با سلام و تشکر از توجه شما
      بله کارایی دارد ولی در برد Node MCU تعریف پین‌ها متفاوت است. که به طبع باید آدرس دهی پین‌ها را متناسب با مداری که بسته‌اید تغییر دهید. همچنین نوع برد را هم از قسمت Boards نرم افزار باید تغییر دهید.

  • سلام
    میشه کلا آموزشهایی هم بزارید که بر پایه آردوینو یا بهتر بگم میکروهای AVR نباشه
    میکروهای صنعتی نظیر Pic یا stm یا arm استفاده بشه

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

  • سلام چرا موقع کامپایل کد ها این ارور رو میده ؟

    Arduino: 1.6.12 (Windows 8.1), Board: “Adafruit HUZZAH ESP8266, 80 MHz, 115200, 4M (3M SPIFFS)”

    In file included from C:\Program Files (x86)\Arduino\libraries\DHT-sensor-library-master\DHT_U.cpp:22:0:

    C:\Program Files (x86)\Arduino\libraries\DHT-sensor-library-master\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compiling for board Adafruit HUZZAH ESP8266.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    • لطفا از همان مسیر Sketch وارد include Library و سپس Manage library شوید و در قسمت جستجو عبارت Adafruit_Sensor.h را جستجو کرده و نصب کنید. اگر مورد رفع نشد، مجددا پیام بگذارید.

        • پیدا کردمش اون حل شد ولی باز این error رو میده
          Arduino: 1.6.12 (Windows 8.1), Board: “Adafruit HUZZAH ESP8266, 80 MHz, 115200, 4M (3M SPIFFS)”

          project:14: error: ‘DHTPIN’ was not declared in this scope

          DHT dht(DHTPIN, DHTTYPE);

          ^

          project:14: error: ‘DHTTYPE’ was not declared in this scope

          DHT dht(DHTPIN, DHTTYPE);

          ^

          exit status 1
          ‘DHTPIN’ was not declared in this scope

          This report would have more information with
          “Show verbose output during compilation”
          option enabled in File -> Preferences.

          • این ارور مربوط به کدها میباشد. احتمالا قسمتی از کدهایی را که روی برنامه‌تان کپی کرده‌اید، دچار مشکل شده اند. لطفا بجای select کردن کدها، از کلید میانبر بالای کدها Ctrl+C استفاده کنید، تا کدها بدون مشکل کپی شوند.

  • سلام
    راستش خیلی ها فکر میکنند بهترین انتخاب آردوینو و avr هستش و شاید ندونن کار عملی واقعا متفاوت با آموزشه
    بنابراین اگر روی میکروهای صنعتی هم کار کنید برای استفاده همه مفیده، درسته اسمشون صنعتیه ولی چیز عجیب غریبی نیستن، شاید حتی ارزونتر و ساده تر در بعضی موارد

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

    • با سلام
      ضمن تشکر از توجه شما، بعضی مواقع بسته به نوع سنسور این مشکل بوجود می‌آید. لطفا دستور شرطی زیر را امتحان کنید.
      if (bits[2] & 0x80) // negative temperature
      {
      temperature = word(bits[2]&0x7F, bits[3]) * 0.1;
      temperature = -1.0 * temperature;
      }
      else
      {
      temperature = word(bits[2], bits[3]) * 0.1;
      }

    • با سلام
      ضمن تشکر از توجه شما، فرآیند ارسال اطلاعات دما در این پروژه‌ را در نظر بگیرید، همانند همین موضوع از سنسور PIR استفاده کنید. همچنین دقت داشته باشید که شما باید کدنویسی به زبان C++ انجام دهید و توسعه کدها را پیش ببرید.