یکی از جذاب ترین پروژه های پلتفرم اینترنت اشیا رصد و مشاهده دادههای دریافتی از سنسورها و سخت افزارهاست. دما رطوبت یکی از اصلی ترین پارامترهای اندازه گیری مقادیر محیطی است که برای هر فضایی با هر کاربری نیاز به مدیریت دارد. پلتفرم Arduino IOT Cloud داشبورد بسیار ساده و جذابی دارد و حالا میتوانیم با دانش برنامه نویسی و توسط سنسورهای دما رطوبت پارامترهای محیطی را دریافت و مشاهده کنیم. در پروژه دما رطوبت پلتفرم آردوینو IoT Cloud توسط سنسور دما رطوبت DHT22 و برد وای فای NodeMCU یک پنل مدیریت دما و رطوبت طراحی میکنیم. در تصویر زیر نمایی از داشبورد پلتفرم Arduino Clou را که مقادیر دما رطوبت را نمایش میدهد، مشاهده میکنید. در ادامه با مرجع تخصصی پلتفرم اینترنت اشیا Arduino IOT Cloud به زبان فارسی، دیجی اسپارک همراه باشید.
بخش اول: معرفی Device
در پروژه دما رطوبت پلتفرم آردوینو IoT Cloud از برد وای فای NodeMCU استفاده شده است. برای ارتباط با پلتفرم بایستی در ابتدا نوع دیوایس را بر روی گزینه Third Party انتخاب کرده و سپس از لیست برد ESP8266 را انتخاب کنید. با توجه به اینکه بردهای زیادی از این تراشه استفاده میکنند، دقیقا مدل برد مورد استفاده را انتخاب کنید. در صورتیکه از بردهای دیگری مانند ESP32 و از تولید کننده های دیگر هستید باید اسم برد را در لیست گروه های ESP32, ESP8266 پیدا و انتخاب کنید. اگر برد در لیست نباشد امکان استفاده از آن نیست.
با انتخاب برد که در این قسمت مدل مورد استفاده NodeMCU1.0 است،پس از تایید صفحه ی زیر در بخش Device نمایش داده میشود. وضعیت Status پس از تکمیل اطلاعات در Thing نمایش داده میشود و در صورتیکه در این مرحله برای شما Offline است، ادامه تنطیمات را انجام دهید تا به صورت اتوماتیک Online شود.
بخش دوم: معرفی Thing
در قدم دوم بایستی در منو Thing متغیرهای مورد نیاز پروژه دما رطوبت پلتفرم آردوینو IoT Cloud را تعریف کنیم. سپس اطلاعات وای فای به همراه Secret Key مخصوص برد NodeMCU را وارد کنید. در این پروژه میخواهیم فقط یک لامپ را توسط دشبورد روشن ON و خاموش OFF کنیم. از قبل بایستی سناریوی برنامه را برای خود مشخص کنیم تا متغیرها را در همان اول برنامه به Sketch معرفی کنیم. در این بخش تنظیمات شبکه را انجام دهید. اطلاعات وای فای مورد استفاده را به همراه Secret Key برد مورد استفاده در برنامه تعریف کنید.
SSID, PASSWORD, Secret Key را در این بخش وارد کنید. Secret Key را قبلا در آموزش مربوط به Thing یاد گرفته ایم. از فایل PDF دانلود شده، قفل را وارد کنید.
بخش سوم: معرفی متغیر Variable
مهمترین قدم معرفی متغیر Variable مورد نیاز برای اجرای پروژه دما رطوبت پلتفرم آردوینو IoT Cloud است. هدف از این پروژه دریافت دو داده از سنسور دما رطوبت، پردازش داده دما رطوبت، استخراج داده از سنسور است که در نهایت وظیفه ی نمایش داده بر عهده پلتفرم Arduino IOT Cloud خواهد بود. در قدم اول دو متغیر یکی برای دما Temperature و دیگری رطوبت Humidity در بخش Variable در Thing تعریف میکنیم.
متغیر برای دما Temperature
متغیر برای رطوبت Humidity
هر دو متغیر Variable به لیست متغیرها در صفحه Thing وارد میشوند.
بخش چهارم: ساخت دشبورد Dashboard
پس از معرفی متغیرها در پلتفرم دشبورد را آماده کنید. از منو دشبورد را انتخاب کنید. برای نمایش دما و نمایش رطوبت به دو ویجت نیاز داریم. ویجت دما و ویجت رطوبت که از Gauge استفاده میکنیم.
دقت داشته باشید هر ویجت را برای یک متغیر لینک کنید.
بخش پنجم: نوشتن کد برنامه Sketch
برای راه اندازی و کدنویسی سنسور دما رطوبت DHT22 از خانواده DHT به کتابخانه DHT نیاز داریم. Arduino IOT CLoud از ادیتور آنلاین برخوردار است و میتوانید با کلیک بر روی Open Full Editor به محیط برنامه نویسی آنلاین Arduino IDE دسترسی پیدا کنید. در این بخش میتوانید کتابخانه ها، بردها را فراخوانی کنید. به روز رسانی کتابخانه ها را انجام دهید و از نمونه برنامه های هر کتابخانه استفاده کنید. با نوشتن متغیر برای هر پارامتر سنسور، پلتفرم آردوینو به صورت اتوماتیک دو تابع سفارشی برای هر داده در برنامه تعریف میکند که در صورتیکه بخواهید عمل خاصی را برای هر داده انجام دهید در این تابع ها میتوانید فراخوانی کنید و سپس نام تابع را در لوپ loop اصلی برنامه فراخوانی کنید. اما در پروژه دما رطوبت پلتفرم آردوینو IoT Cloud فقط هدف نمایش داده ها در دشبورد است. پس نیازی به استفاده از تابع سفارشی نیست و کلاس دریافت داده از سنسور دما و رطوبت را فقط در حلقه اصلی برنامه Loop مینویسیم. طبق اصول کدنویسی برای سنسور DHT در ابتدا نیاز به فراخوانی کلاس های این کتابخانه هستیم که قبل از Setup برنامه فراخوانی میشوند.
#include "DHT.h" #define DHTPIN D2 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE);
سپس در حلقه برنامه کلاس خواندن دیتا از دما Temperature را فراخوانی میکنیم.
float h = dht.readHumidity();
برای رطوبت هم همین کار را تکرار میکنیم.
float h = dht.readHumidity();
در ابتدای برنامه دو متغیر برای رطوبت و دما در پلتفرم معرفی کردیم که بایستی در حلقه برنامه با متغیر کتابخانه DHT و کلاس آن مقادیرش یکسان شود.
humidity = h; temperature =t;
کد کامل خواندن و دریافت داده از سنسور دما رطوبت DHT22 و نمایش در پلتفرم Arduino IOT Cloud به صورت زیر است. کد را کپی و به ادیتور آنلاین پلتفرم انتقال دهید. این کد همراه با پروژه ی کار شده در بخش ششم است.
/* Sketch generated by the Arduino IoT Cloud Thing "Untitled" https://create.arduino.cc/cloud/things/a27b9215-e11f-4242-86ee-fb919ca947d9 Arduino IoT Cloud Variables description The following variables are automatically generated and updated when changes are made to the Thing float humidity; float temperature; int lightcontrol; Variables which are marked as READ/WRITE in the Cloud Thing will also have functions which are called when their values are changed from the Dashboard. These functions are generated with the Thing and added at the end of this sketch. */ #include "thingProperties.h" int myled = D1; #define pot A0 #include "DHT.h" #define DHTPIN D2 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); void setup() { // Initialize serial and wait for port to open: Serial.begin(9600); dht.begin(); pinMode(myled, OUTPUT); pinMode(pot, INPUT); // This delay gives the chance to wait for a Serial Monitor without blocking if none is found delay(1500); // Defined in thingProperties.h initProperties(); // Connect to Arduino IoT Cloud ArduinoCloud.begin(ArduinoIoTPreferredConnection); /* The following function allows you to obtain more information related to the state of network and IoT Cloud connection and errors the higher number the more granular information you’ll get. The default is 0 (only errors). Maximum is 4 */ setDebugMessageLevel(2); ArduinoCloud.printDebugInfo(); } void loop() { ArduinoCloud.update(); onLightcontrolChange(); delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); humidity = h; temperature =t; } /* Since Light is READ_WRITE variable, onLightChange() is executed every time a new value is received from IoT Cloud. */ /* Since Lightcontrol is READ_WRITE variable, onLightcontrolChange() is executed every time a new value is received from IoT Cloud. */ void onLightcontrolChange() { analogWrite(myled, lightcontrol); } /* Since Humidity is READ_WRITE variable, onHumidityChange() is executed every time a new value is received from IoT Cloud. */ void onHumidityChange() { // Add your code here to act upon Humidity change }
بخش ششم: آپلود برنامه Upload Sketch
تا اینجا کد نوشته شده است. پلتفرم Arduino IOT Cloud از ادیتور آنلاین برخوردار است. در همان پلتفرم به محیط Arduino IDE دسترسی دارید و میتوانید کد نویسی آنلاین انجام دهید. کتابخانه ها را فراخوانی و نصب کنید. بردهای جدید را نصب کنید. به نمونه برنامه های از قبل نوشته شده دسترسی دارید، به نمونه برنامه های کتابخانه های نصب شده دسترسی دارید. همه چیز برای نوشتن کد در یک پلتفرم آنلاین در اختیار ما قرار گرفته شده است تا بتوانیم یک تجربه ی متفاوت در برنامه نویسی را رقم بزنیم. کد را کپی و به پلتفرم انتقال دهید. آپلود Upload برنامه دقیقا مشابه همان Arduino IDE است. برد را انتخاب کرده و سپس کد را بر روی برد آپلود کنید.
بخش هفتم: عملکرد داشبورد IoT
حالا کد بر روی برد آپلود شده است و تمامی تنظیمات پلتفرم انجام شده است. وارد دشبورد Dashboard شوید. در این بخش کنترل پروژه دما رطوبت پلتفرم آردوینو IoT Cloud آغاز میشود.
در داشبورد به دلخواه میتوانیم ویجت های دیگری اضافه کنیم. به عنوان نمونه جدول یا همان Chart را انتخاب و تنظیم کنید. برای دما باید به متغیر دما Temperature لینک شود.
پروژه ما آماده است و در هر لحظه به صورت زنده داده ها را در داشبورد نمایش میدهد. برای اتصالات سنسور DHT22 به برد وای فای NodeMCU از تصویر زیر استفاده کنید.
بخش هشتم: کنترل توسط اپلیکیشن Arduino IOT Cloud
از دیگر قابلیت های Arduino IOT Cloud برخورداری از اپلیکیشن Application است. در این آموزش نسخه IOS تست شده است. از APP Store عبارت Arduino IOT Cloud را جست وجو کنید. سپس آن را نصب کنید. با همان اکانتی که در نسخه وب لاگین شده اید، به اپلیکیشن دسترسی پیدا کنید. در اپلیکیشن فقط و فقط به محیط دشبورد دسترسی خواهید داشت.
وسایل مورد نیاز
چنانچه در مراحل راه اندازی پلتفرم Arduino IOT Cloud و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.