اینترنت اشیا IOT پلتفرم Arduino Cloud

آموزش کار با پلتفرم Arduino IOT Cloud بخش هشتم: پروژه تردد افراد با PIR501

getting-started-with-arduino-iot-cloud-part-eight-pir501-human-traffic-digispark
نوشته شده توسط پریسا پوربلورچیان

کنترل تردد و رفت و آمد در محیط چه برای خانه، چه فضای اداری و تجاری از مهمترین پارامترهای قابل اندازه گیری است. در پروژه های IOT توسط سنسورهای مادون قرمز کنترل تردد برای ما قابل انجام خواهد بود. در این پروژه توسط سنسور مادون قرمز تشخیص حرکت PIR عبور و مرور را کنترل کرده و در صورت عبور شخص از مجاورت سنسور پیغام در پلتفرم IOT مبنی بر حضور فرد ارسال خواهد کرد. در ادامه پروژه تردد افراد با PIR501 روش دریافت داده از سنسور و ارسال پیام رشته ای String به پلتفرم اینترنت اشیا را یاد خواهیم گرفت. در ادامه با مرجع تخصصی آموزش پلتفرم Arduino IoT Cloug به زبان فارسی، دیجیی اسپارک همراه باشید.

داشبورد پروژه تردد افراد با PIR501 پلتفرم arduino iot cloud - دیجی اسپارک

 


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


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

تعریف device در پلتفرم arduino cloud - دیجی اسپارک

 

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

تنظیمات پلتفرم اینترنت اشیا arduino - دیجی اسپارک

 


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


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

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

تنظیمات معرفی thing در پلتفرم اینترنت اشیا Arduino cloud - دیجی اسپارک

 


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


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

تعریف متغیر در پلتفرم arduino cloud - دیجی اسپارک

 

سپس بر روی Save کلیک کنید. متغیر بعدی برای پیام رشته ای است. اگر بخواهیم یک رشته پیام در طول برنامه ارسال و دریافت کنیم،نیاز به تعریف Stirng در برنامه داریم. برای اینکار کافیست از نوع داده String استفاده کنید و یک متغیر به آن نسبت دهید. چون در این بخش میخواهیم یک پیام را برای فعال شدن ورودی و خروجی دریافت کنیم، از متغیر message استفاده می‌کنیم.

انتخاب نوع پیام در پلتفرم arduino cloud - دیجی اسپارک

 

سپس هر دو داده و متفیرها در لیست نمایش داده می‌شود.

ادامه ی تنظیمات در پلتفرم arduino cloud - دیجی اسپارک

 


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


در قدم بعدی دشبورد را متناسب با متغیرهایی که تعریف کرده ایم، آماده می‌کنیم. برای اینکار وارد منو Dashboards شوید. دو متغیر داریم. یک متغیر برای نمایش وضعیت سنسور ورودی تشخیص حرکت است که وضعیت سنسور را به صورت فعال و غیرفعال به ما اعلام می‌کند. در پلتفرم Arduino IOT Cloud یک Status برای اینکار در دشبورد Dashbaord طراحی شده است. با فراخوانی ویجت استتوس Status میتوانیم به متغیر ورودی تعریف شده pirstate لینک کنیم. ویجت را وارد صفحه کنید.

 

با کلیک روی این گزینه وارد صفحه تنظیم ویجت شوید.

تنظیمات داشبورد در پلتفرم arduino iot cloud - دیجی اسپارک

 

  1. یک اسم دلخواه برای Status مشخص کنید.
  2. به متغیر مورد نظر در اینجا pirstate لینک کنید.
  3. برای متغیر به دلخواه Lable مشخص کنید.
  4. سپس تنظیمات را ذخیره کنید.

ادامه تنظیمات داشبورد در پلتفرم arduino cloud - دیجی اسپارک

 

متغیر دوم پیام رسان است که پیام وضعیت ورودی را در دشبورد پلتفرم نمایش میدهد. برای اینکار از ویجت Messenger استفاده خواهیم کرد.

تنظیمات ویجت messenger در پلتفرم arduino cloud - دیجی اسپارک

 

ادامه تنظیمات داشبورد در پلتفرم arduino cloud - دیجی اسپارک

 

به همین ترتیب دشبورد آماده است تا برنامه اصلی نوشته شود.

نهایی سازی داشبورد arduino cloud - دیجی اسپارک

 


بخش پنجم:نوشتن کد برنامه Sketch


برای نوشتن برنامه تردد افراد با PIR501 سنسور تشخیص حرکت نیاز به تعریف سنسور ورودی و یک خروجی در برنامه برای مشخص شدن وضعیت آن داریم. به این صورت که پس از هر بار تشخیص حرکت یک ال ای دی LED در خروجی تعبیه شده باشد تا با روشن شدن نماد تشخیص حرکت و با خاموش شدن ال ای دی LED نماد عدم تشخیص حرکت را برای ما مشخص کند. به همین صورت بایستی کد برنامه را با دستورات ورودی و خروجی در برنامه مشخص کنیم. در ابتدای Sketch متغیرهایی که در Thing ایحاد کرده ایم، نمایش داده می‌شود.

  String message;

  bool pirstatus;

 

سپس برای سنسور PIR و ال ای دی خروجی یک پایه را در نظر میگیریم.

#define led D0
#define pirsensor D3
#define light D4
bool pir;

 

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

void pirstatedata()
{
  pir=digitalRead(pirsensor); 
  if(pir==HIGH) 
 {
   Serial.println("Yeki Omad"); 
   digitalWrite(light, HIGH); 
   message="Yeki Omad";
   digitalWrite(led,HIGH);
   pirstatus=HIGH;
   delay(1000); 
 
 }
  else
  {
       Serial.println("Yeki Raft"); 
 
       digitalWrite(light, LOW);
        message="Yeki Raft";
         digitalWrite(led,LOW);
         pirstatus=LOW;
         
 
  }
}

 

به همین ترتیب میتوانید یک کد کامل برای سنسور تشخیص حرکت و خروجی ال ای دی در پلتفرم Arduino IOT Cloud بنویسید. کد کامل پروژه تردد افراد با PIR501 و نمایش در پلتفرم 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

  String message;

  bool pirstatus;

  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"




#define led D0
#define pirsensor D3
#define light D4
bool pir;





void setup() {
  // Initialize serial and wait for port to open:
  Serial.begin(9600);
  
  // This delay gives the chance to wait for a Serial Monitor without blocking if none is found
  delay(1500); 
  
  pinMode(pirsensor,INPUT);
  pinMode(light,OUTPUT);
  digitalWrite(light, LOW);
  
  
  

  // 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();

  pirstatedata();
  
 delay(2000);


}




/*
  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.
*/




/*
  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
}

/*
  Since Test is READ_WRITE variable, onTestChange() is
  executed every time a new value is received from IoT Cloud.
*/
void onTestChange()  {
  // Add your code here to act upon Test change
}


/*
  Since Pirstatus is READ_WRITE variable, onPirstatusChange() is
  executed every time a new value is received from IoT Cloud.
*/
void onPirstatusChange()  {
  // Add your code here to act upon Pirstatus change
}

/*
  Since Message is READ_WRITE variable, onMessageChange() is
  executed every time a new value is received from IoT Cloud.
*/
void onMessageChange()  {
  // Add your code here to act upon Message change
}



void pirstatedata()
{
  pir=digitalRead(pirsensor); 
  if(pir==HIGH) 
 {
   Serial.println("Yeki Omad"); 
   digitalWrite(light, HIGH); 
   message="Yeki Omad";
   digitalWrite(led,HIGH);
   pirstatus=HIGH;
   delay(1000); 
 
 }
  else
  {
       Serial.println("Yeki Raft"); 
 
       digitalWrite(light, LOW);
        message="Yeki Raft";
         digitalWrite(led,LOW);
         pirstatus=LOW;
         
 
  }
}


 

برنامه نویسی برد ESP در پروژه تردد افراد با PIR501 - دیجی اسپارک

 


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


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

آپلود کدهای پرژه تردد افراد با PIR501 روی برد esp - دیجی اسپارک

 

پیغام آپلود موفقیت آمیز کدها در پلتفرم arduino - دیجی اسپارک

 


بخش هفتم: عملکرد سنسور تشخیص حرکت


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

تنظیمات سنسور pir501 در پلتفرم arduino cloud - دیجی اسپارک

 

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

اتصال سنسور pir501 به برد nodemcu esp8266 - دیجی اسپارک

 

اجرای پروژه تردد افراد با PIR501 - دیجی اسپارک

 

 پس از انجام اتصالات مجدد از منو Dashbaord تغییرات را مشاهده کنید. با هر بار تشخیص سنسور و مانع در مجاورتش ویجت Status از OFF به ON تغییر وضعیت داده و رنگ ویجت از قرمز به سبز تغییر می‌کند. سپس یک ویجت دیگر برای پیام در دشبورد طراحی شده است که دقیقا همان پیامی که در متن کد نوشته شده است را چاپ می‌کند. در این کد پس از تشخیص افراد، پیغام Yeki Omad نمایش داده شده و در صورت عدم حضور شخص پیغام Yeki Raft را نمایش میدهد.

نمایش پیغام تشخیص تردد افراد با پلتفرم آردوینو cloud - دیجی اسپارک

 

نهایی سازی پروژه تردد افراد با PIR501 - دیجی اسپارک

 


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


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

 

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

 


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


برد وای فای NodeMCU 

 ال ای دی LED

سنسور تشخیص حرکت PIR

 

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

 

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

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

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

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

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

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