اینترنت اشیا IOT

آموزش پلتفرم Arduino IOT Cloud بخش هفتم: پروژه مانیتورینگ دما رطوبت

getting-started-with-arduino-iot-cloud-part-seven-monitor-temp-digispark
نوشته شده توسط پریسا پوربلورچیان

یکی از جذاب ترین پروژه های پلتفرم اینترنت اشیا رصد و مشاهده داده‌های دریافتی از سنسورها و سخت افزارهاست. دما رطوبت یکی از اصلی ترین پارامترهای اندازه گیری مقادیر محیطی است که برای هر فضایی با هر کاربری نیاز به مدیریت دارد. پلتفرم Arduino IOT Cloud داشبورد بسیار ساده و جذابی دارد و حالا میتوانیم با دانش برنامه نویسی و توسط سنسورهای دما رطوبت پارامترهای محیطی را دریافت و مشاهده کنیم. در پروژه دما رطوبت پلتفرم آردوینو IoT Cloud توسط سنسور دما رطوبت DHT22 و برد وای فای NodeMCU یک پنل مدیریت دما و رطوبت طراحی می‌کنیم. در تصویر زیر نمایی از داشبورد پلتفرم Arduino Clou را که مقادیر دما رطوبت را نمایش میدهد، مشاهده می‌کنید. در ادامه با مرجع تخصصی پلتفرم اینترنت اشیا Arduino IOT Cloud به زبان فارسی، دیجی اسپارک همراه باشید.

وضعیت دما رطوبت در پلتفرم آردوینو IoT cloud - دیجی اسپارک

 


بخش اول: معرفی Device


در پروژه دما رطوبت پلتفرم آردوینو IoT Cloud از برد وای فای NodeMCU استفاده شده است. برای ارتباط با پلتفرم بایستی در ابتدا نوع دیوایس را بر روی گزینه Third Party انتخاب کرده و سپس از لیست برد ESP8266 را انتخاب کنید. با توجه به اینکه بردهای زیادی از این تراشه استفاده می‌کنند، دقیقا مدل برد مورد استفاده را انتخاب کنید. در صورتیکه از بردهای دیگری مانند ESP32 و از تولید کننده های دیگر هستید باید اسم برد را در لیست گروه های ESP32, ESP8266 پیدا و انتخاب کنید. اگر برد در لیست نباشد امکان استفاده از آن نیست.

معرفی دیوایس در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 

با انتخاب برد که در این قسمت مدل مورد استفاده NodeMCU1.0 است،پس از تایید صفحه ی زیر در بخش Device نمایش داده می‌شود. وضعیت Status پس از تکمیل اطلاعات در Thing نمایش داده می‌شود و در صورتیکه در این مرحله برای شما Offline است، ادامه تنطیمات را انجام دهید تا به صورت اتوماتیک Online شود.

وضعیت اتصال و عدم اتصال در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 


بخش دوم: معرفی Thing


در قدم دوم بایستی در منو Thing متغیرهای مورد نیاز پروژه دما رطوبت پلتفرم آردوینو IoT Cloud را تعریف کنیم. سپس اطلاعات وای فای به همراه Secret Key مخصوص برد NodeMCU را وارد کنید. در این پروژه میخواهیم فقط یک لامپ را توسط دشبورد روشن ON و خاموش OFF کنیم. از قبل بایستی سناریوی برنامه را برای خود مشخص کنیم تا متغیرها را در همان اول برنامه به Sketch معرفی کنیم. در این بخش تنظیمات شبکه را انجام دهید. اطلاعات وای فای مورد استفاده را به همراه Secret Key برد مورد استفاده در برنامه تعریف کنید.

 

SSID, PASSWORD, Secret Key را در این بخش وارد کنید. Secret Key را قبلا در آموزش مربوط به Thing یاد گرفته ایم. از فایل PDF دانلود شده، قفل را وارد کنید.

تنظیمات شبکه در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 


بخش سوم: معرفی متغیر Variable


مهمترین قدم معرفی متغیر Variable مورد نیاز برای اجرای پروژه دما رطوبت پلتفرم آردوینو IoT Cloud است. هدف از این پروژه دریافت دو داده از سنسور دما رطوبت، پردازش داده دما رطوبت، استخراج داده از سنسور است که در نهایت وظیفه ی نمایش داده بر عهده پلتفرم Arduino IOT Cloud خواهد بود. در قدم اول دو متغیر یکی برای دما Temperature و دیگری رطوبت Humidity در بخش Variable در Thing تعریف می‌کنیم.

متغیر برای دما Temperature

تعریف متغیر دما در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 

متغیر برای رطوبت Humidity

تعریف متغیر رطوبت در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 

هر دو متغیر Variable به لیست متغیرها در صفحه Thing وارد می‌شوند.

بررسی متغییرها در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 


بخش چهارم: ساخت دشبورد Dashboard


پس از معرفی متغیرها در پلتفرم دشبورد را آماده کنید. از منو دشبورد را انتخاب کنید. برای نمایش دما و نمایش رطوبت به دو ویجت نیاز داریم. ویجت دما و ویجت رطوبت که از Gauge استفاده می‌کنیم.

ساخت داشبورد در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 

5 مرحله ایجاد داشبورد در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 

داشبورد رطوبت در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 

دقت داشته باشید هر ویجت را برای یک متغیر لینک کنید.

تنظیمات ویجت در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 


بخش پنجم: نوشتن کد برنامه 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
}

 

آپلود کدهای sketch در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 


بخش ششم: آپلود برنامه Upload Sketch


تا اینجا کد نوشته شده است. پلتفرم Arduino IOT Cloud از ادیتور آنلاین برخوردار است. در همان پلتفرم به محیط Arduino IDE دسترسی دارید و میتوانید کد نویسی آنلاین انجام دهید. کتابخانه ها را فراخوانی و نصب کنید. بردهای جدید را نصب کنید. به نمونه برنامه های از قبل نوشته شده دسترسی دارید، به نمونه برنامه های کتابخانه های نصب شده دسترسی دارید. همه چیز برای نوشتن کد در یک پلتفرم آنلاین در اختیار ما قرار گرفته شده است تا بتوانیم یک تجربه ی متفاوت در برنامه نویسی را رقم بزنیم. کد را کپی و به پلتفرم انتقال دهید. آپلود Upload برنامه دقیقا مشابه همان Arduino IDE است. برد را انتخاب کرده و سپس کد را بر روی برد آپلود کنید.

آپلود کدهای sketch در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 


بخش هفتم: عملکرد داشبورد IoT


حالا کد بر روی برد آپلود شده است و تمامی تنظیمات پلتفرم انجام شده است. وارد دشبورد Dashboard شوید. در این بخش کنترل پروژه دما رطوبت پلتفرم آردوینو IoT Cloud آغاز می‌شود.

مانیتورینگ دما رطوبت در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 

در داشبورد به دلخواه میتوانیم ویجت های دیگری اضافه کنیم. به عنوان نمونه جدول یا همان Chart را انتخاب و تنظیم کنید. برای دما باید به متغیر دما Temperature لینک شود.

افزودن جدول نمایش در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 

پروژه ما آماده است و در هر لحظه به صورت زنده داده ها را در داشبورد نمایش میدهد. برای اتصالات سنسور DHT22 به برد وای فای NodeMCU از تصویر زیر استفاده کنید.

اتصال سنسور DHT به برد Nodemcu - دیجی اسپارک

 


بخش هشتم: کنترل توسط اپلیکیشن Arduino IOT Cloud


از دیگر قابلیت های Arduino IOT Cloud برخورداری از اپلیکیشن Application است. در این آموزش نسخه IOS تست شده است. از APP Store عبارت Arduino IOT Cloud را جست وجو کنید. سپس آن را نصب کنید. با همان اکانتی که در نسخه وب لاگین شده اید، به اپلیکیشن دسترسی پیدا کنید. در اپلیکیشن فقط و فقط به محیط دشبورد دسترسی خواهید داشت.

اپلیکیشن کنترل در پلتفرم آردوینو IoT Cloud - دیجی اسپارک

 

 

 


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


برد وای فای NodeMCU 

 ال ای دی LED

ولوم 

سنسور دما رطوبت DHT22

 

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

 

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

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