۱۲ بهمن ۱۴۰۲
   
آکادمی

پروژه اینترنت اشیا مانیتورینگ دما و رطوبت با پلتفرم IoT تینگزپاد

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

 

در این مقاله قرار است با بکارگیری ماژول NodeMCU ESP32، سنسور دما و رطوبت و پلتفرم اینترنت اشیا تینگزپاد یک پروژه بسیار کاربردی در زمینه اینترنت اشیا انجام دهیم.

 

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

 

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

 

 

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

 

  • ماژول NodeMCU ESP32
  • سنسور دما و رطوبت DHT11
  • برد بورد (Breadboard)- (نوع آن مهم نیست)
  • سیم جامپر نری به نری

 

 

قبل از شروع پروژه، بهتر است با این قطعات و دلیل انتخاب آن‌ها برای این پروژه بهتر آشنا شوید.

 

ماژول NodeMCU ESP32 چیست؟

 

برای ارسال اطلاعات در بستر اینترنت نیاز است از بوردی استفاده کنید که دارای هسته وای-فای باشد. به همین دلیل است که بر خلاف پروژه‌های قبلی، نمی‌توان از بورد آردوینو اونو (Arduino Uno) در این پروژه استفاده کرد. اما، ESP32 تراشه‌­ای است که قابلیت اتصال به شبکه وای-فای را دارد و می­‌توان از آن برای راه‌اندازی پروژه‌­های اینترنت اشیا استفاده کرد. ماژول NodeMCU ESP32 یک بورد توسعه مخصوص ماژول وای فای ESP32 است. این ماژول شامل تراشه ESP32، پین­‌های ورودی و خروجی دیجیتال، تغذیه، دکمه بوت (Boot) و ریست (Reset) است. ولتاژ کاری این ماژول ۳.۳ ولت می‌باشد. 

 

تصویر این ماژول و پایه‌های آن را می‌توانید در زیر مشاهده کنید.

 

 

سنسور DHT11 چیست؟

 

سنسور DHT11 نام سنسور دما و رطوبت است. این سنسور دما را در بازه ۰ تا ۵۰ درجه و رطوبت را بین ۲۰ تا ۸۰ درصد اندازه گیری می‌کند. این سنسور دارای چهار پایه است. دو تا از پایه­‌ها مربوط به تغذیه (۳.۳ ولت و زمین)، یکی از پایه‌­ها مربوط به داده سنسور و پایه دیگر به چیزی متصل نمی­‌شود. 

 

 

بستن مدار و اتصال به ماژول NodeMCU ESP32

 

ماژول ESP32 دارای پین هدرهایی است که می‌­تواند روی بردبورد قرار بگیرد. پس با استفاده از فضای خالی وسط برد بورد، ماژول را روی بردبورد قرار داده و سنسور DHT11 را نیز هر جای دیگری بر روی بردبورد قرار می‌­دهیم.  سپس با سیم‌های جامپر، پایه زمین DHT11 را به پین ماژول ESP32،  پایه VCC را به پین ۳.۳ ولت ESP32 و پایه خروجی داده رو به پین شماره ۵ (D5) ESP32 وصل می­‌کنیم. (همانند تصویر زیر)

 

 

برنامه نویسی در محیط آردوینو IDE

 

ابتدا وارد نرم‌افزار Arduino IDE شوید. می‌توانید این نرم افزار را از وبسایت آردوینو https://arduino.cc/ دانلود و نصب کنید.

 

برای برنامه نویسی بوردهای ESP32 باید خانواده این بوردها را به نرم افزار آردوینو اضافه کنید. برای این کار از منوی File روی Preferences کلیک کنید. در پنجره باز شده در قسمت Additional boards manager URLs لینک زیر را کپی کنید و پنجره را ببندید.

 

https://dl.espressif.com/dl/package_esp32_index.json

 

سپس از منوی tools به قسمت Board رفته و رویBoards manager  کلیک کنید. در این قسمت، کلمه ESP32  را سرچ کرده  و فایل آن را نصب کنید. پس از نصب، هسته‌های مربوط به خانواده ESP32 برای شما نشان داده خواهند شد و می‌توانید بورد خود را از قسمت Board انتخاب کنید. ما در این پروژه از ESP32 Dev Module استفاده کردیم.

 

هم‌اکنون، کتابخانه­‌های مورد نیاز این پروژه را نصب می‌­کنیم.

 

کتابخانه DHT: این کتابخانه برای راه اندازی سنسور دما و رطوبت است. از  منوی tools به قسمت manage libraries رفته و عبارت  DHT sensor library را جست و جو کنید. سپس این کتابخانه را نصب کنید.

 

کتابخانه Wi-Fi: این کتابخانه برای اتصال به شبکه وای فای و اسکن شبکه­‌های وای فای می‌­باشد. این کتابخانه به طور خودکار هنگام نصب افزونه­ ESP32 برای شما نصب می­‌شود.

 

کتابخانه ThingsPod: از این کتابخانه برای راحت‌­تر شدن کار با پلتفرم تینگزپاد استفاده می­‌شود. برای نصب این کتابخانه به گیت­‌هاب (GitHub) تینگزپاد مراجعه کرده و کتابخانه را دانلود کنید یا اینجا کلیک کنید. سپس از منوی Sketch در قسمت Include library بر روی گزینه Add Zip Library کلیک کرده و فایل زیپ تینگزپاد را انتخاب کنید تا کتابخانه نصب شود.

 

کتابخانه PubSubClient: این کتابخانه برای پشتیبانی از پروتکل MQTT بر روی بوردهای ESP استفاده می­‌شود. از  منوی tools به قسمت manage libraries رفته و عبارت  PubSubClient را جست و جو و این کتابخانه را نصب کنید.

 

کتابخانه Arduinojson: برای آسان­‌تر شدن دریافت و ارسال داده می­‌توان از این کتابخانه استفاده کرد تا بتوان داده­‌ها را به فرمت جیسون (JSON) نوشت. از  منوی tools به قسمت manage libraries رفته و عبارت  Arduinojson را جست و جو و  این کتابخانه را نصب کنید. توجه داشته باشید که حتما از ورژن 6.19.4 آردوینو جیسون استفاده کنید.

 

برای اطلاعات بیشتر در رابطه با  ArduinoJson می­توانید به مستندات آن در سایت arduinojson مراجعه کنید.

 

(می‌توانید تمامی کدهای زیر را از گیت‌هاب تینگزپاد دانلود کنید.)

 

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

 

 

توجه: کتابخانه AruinoJson  و PubSubClient در کتابخانه تینگزپاد فراخوانی شده‌­اند؛ به همین دلیل، شما آن‌­ها را در این قسمت مشاهده نمی­‌کنید. در صورت نصب نبودن این دو کتابخانه، کد با ارور مواجه می­‌شود.

 

در ادامه، پین شماره پنج ESP32 را به متغیر DHTPIN اختصاص داده و نوع DHT را DHT11 قرار می­‌دهیم. 

 

 

نام و رمز شبکه وای فای مورد نظر را می‌­نویسیم.

 

 

در تینگزپاد، هر دستگاه توکن مربوط به خودش را دارد که به عنوان یک شناسه برای ارتباط بین پلتفرم و دستگاه استفاده می‌­شود. این توکن را در اینجا وارد می­‌کنیم. (مراحل ایجاد دستگاه و کپی کردن توکن تینگزپاد در انتهای مقاله توضیح داده شده است.) سپس سرور تینگزپاد و پورت MQTT آن را نیز تعریف می‌­کنیم.

 

 

یکobject  از کتابخانه DHT ایجاد کرده و پین و نوع DHT را به این تابع اختصاص می‌­دهیم.

 

 

یک object از کتابخانه WiFiClient با نام wifiClient برای استفاده از تابع‌­های آن ایجاد می­‌کنیم . همچنین برای ایجاد شی MQTT هم از کتابخانه  PubSubClient استفاده می­کنیم و Object وای فای را برای ارتباط با اینترنت به آن پاس می‌­دهیم. سپس یک object از تینگزپاد با نام thingspod ایجاد کرده و object وای فای و MQTT را به آن پاس می‌­دهیم.

 

 

حالا متغیرهای پروژه را تعریف می‌­کنیم. 

 

 

در تابع ()setup، تابع راه‌انداز وای-فای را می‌­نویسیم. این تابع را بعد از تابع ()setup تعریف می­‌کنیم. در این تابع، عدم اتصال به شبکه وای فای مورد نظر در سریال مانیتور پرینت می­‌شود تا زمانی که با موفقیت به وای فای وصل شود. سپس، سرور را راه اندازی کرده و سنسور dht را فعال می‌­کنیم. 

 

 

تابع راه‌انداز وای فای به صورت زیر است:

 

 

در تابع حلقه به این صورت عمل می­‌کنیم که اگر برنامه به وای فای وصل نشد، تابع reconnectWifi را اجرا کند (در آخر برنامه این تابع تعریف شده است.). در این تابع، اگر برنامه به اینترنت وصل نشد، برای اتصال مجدد آن به وای-فای تلاش می‌کنیم.

 

در ادامه تابع حلقه زمانی که برنامه به اینترنت وصل شد، باید ببینیم که به پلتفرم تینگزپاد هم وصل می­‌شود یا خیر. اگر به تینگزپاد وصل نشد، برنامه عبارت Failed to connect را در سریال مانیتور پرینت می‌کند و در صورت اتصال موفقیت آمیز، تابع mqttClientLoop از کتابخانه تینگزپاد فراخوانی می­‌شود. این تابع، دریافت داده از طریق پروتکل MQTT را بررسی می‌­کند.  

 

 

در ادامه، می­‌خواهیم داده­‌های دما و رطوبت را هر دو ثانیه یکبار اندازه‌گیری کنیم و در سریال مانیتور نمایش دهیم. در صورت بروز خطا در خواندن دما و رطوبت، عبارت Failed to read from DHTsensor در سریال مانیتور پرینت می‌شود. 

 

 

سپس می‌­خواهیم برای نظارت از راه دور اینترنتی، این داده‌­ها را به پلتفرم تینگزپاد نیز ارسال کنیم. بنابراین، یک بافر جیسون با سایز ۲ ایجاد می­‌کنیم (زیرا قرار است فقط دو مقدار دما و رطوبت را ارسال کنیم.). سپس این مقادیر را به فرمت جیسون تبدیل می­‌کنیم. 

 

در نهایت، داده­‌ها را به صورت تله­‌متری بر روی پلتفرم تینگزپاد ارسال می­‌کنیم. 

 

تابع ()reconnectWifi که در آخر برنامه نوشته می‌شود، به این صورت است:

 

 

کد با موفقیت کامپایل (Compile) شد. حالا برنامه را روی بورد ESP32 آپلود می‌­کنیم.

 

(کد کامل برنامه را می­توانید در اینجا مشاهده و کپی کنید.)

 

نمایش اطلاعات در پلتفرم اینترنت اشیا تینگزپاد

 

اکنون به سراغ پلتفرم تینگزپاد می­‌رویم تا داده­ دما و رطوبت دریافتی را از طریق داشبوردهای پلتفرم نمایش دهیم. برای این کار ابتدا وارد وبسایت تینگزپاد شوید و اگر حساب کاربری ندارید، می‌توانید یک حساب کاربری رایگان بسازید که از 5 دستگاه و 1 میلیون دیتاپوینت ماهانه پشتیبانی می­‌کند. سپس، وارد حساب کاربری خود شوید.

 

ایجاد دستگاه: اول باید یک دستگاه ایجاد کنیم. منظور از دستگاه همان سنسور دما و رطوبت است. برای این کار، وارد صفحه گروه‌های دستگاه (Device Groups) شوید، یک گروه برای دستگاه‌­های این پروژه ایجاد کنید و بعد در این گروه یک دستگاه با نام DHT11Sensor بسازید. در تینگزپاد، هر دستگاه توکن (Access Token) مربوط به خودش را دارد که به عنوان یک شناسه برای ارتباط بین پلتفرم و دستگاه استفاده می­‌شود. روی اسم دستگاه یا همانDHT11Sensor  کلیک کنید و از منوی باز شده روی گزینه Copy access token کلیک کنید. از این توکن همانطور که در بالا گفته شد، در نرم افزار آردوینو استفاده می­‌کنیم. 

 

مشاهده اطلاعات: حالا اگر روی اسم دستگاه کلیک کرده و به پنجره Latest Telemetry دستگاه مراجعه کنید، می‌بینید که مقدار دما و رطوبت هر دو ثانیه یک بار آپدیت می‌­شود. اما تاریخچه تغییرات دما و رطوبت را می‌­توان با ایجاد داشبود، به صورت گرافیکی و در قالب نمودارهای مختلف هم نمایش داد.

 

ایجاد داشبورد: برای ایجاد داشبورد در پلتفرم تینگزپاد، وارد صفحه گروه داشبوردها (Dashboard Groups) می‌شویم، اول یک گروه داشبورد برای این پروژه ایجاد کرده و داخل آن یک داشبورد می‌سازیم. حالا وارد صفحه داشبورد می­‌شویم و ویجتی که برای نمایش داده سنسور مناسب است را  انتخاب می­‌کنیم. یک نام مستعار (Alliance) برای دستگاه انتخاب می‌کنیم تا بتوانیم با این نام مستعار، دما و رطوبت را به ویجت اضافه کنیم.

 


به همین سادگی می‌­توانید اطلاعات سنسور را روی داشبوردهای تعاملی پلتفرم ببینید.

 

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

 

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

 

کاربردهای پروژه در دنیای واقعی

 

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

 

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

 

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

 

بعد از این پروژه چکار کنم؟

 

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

 

اگر به مباحث هوشمندسازی و اتوماسیون علاقه‌مند هستید، مقالات مرتبط با این حوزه را در وبلاگ مطالعه کنید و ویدیوهای آموزشی ما را در یوتیوب و آپارات مشاهده کنید.

راجع به این موضوع بیشتر می‌دانید؟ محتوای خود را برای ما ارسال کنید تا آن را با نام خودتان منتشر کنیم.