آردوینو پروژه های آردوینو پلتفرم Arduino Cloud

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

arduino-iot-cloud-platform-mq2-gas-rate-with-nodemcu-esp8266-digispark
نوشته شده توسط پریسا پوربلورچیان

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

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

 


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


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

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

 

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

راه اندازی پروژه با arduino iot cloud درصد گاز  - دیجی اسپارک

 


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


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

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

تنظیمات thing در iot cloud  - دیجی اسپارک

 


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


برای ارتباط سنسور و کدنویسی برنامه در اولین قدم بایستی متغیر سنسور گازی MQ5 را در پلتفرم در بخش Things معرفی کنیم. یک نام به دلخواه برای متغیر سنسور گازی در نظر بگیرید. سپس با توجه به نوع داده دریافتی بایستی نوع داده را مشخص کنید. قطعا عدد سنسور گاز بر حسب PPM و به صورت اعشاری است که در این بخش نوع داده را float در نظر میگیریم. داده فقط به صورت خواندن Read است و میتوانیم مشخص کنیم، به روز رسانی داده ها با چه بازه ی زمانی انجام شود. از بخش Things یک متغیر جدید اضافه کنید.

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

 

پس از Save متغیر گاز به صفحه اضافه خواهد شد.

 


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


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

  • ویجت Value
  • ویجت Percentage

ساخت داشبورد و ایجاد ویجت مناسب - دیجی اسپارک

 

ویجت درصد گاز در پلتفرم iot cloud - دیجی اسپارک

 

محل نمایش اطلاعات سنسور گاز در پلتفرم iot cloud - دیجی اسپارک

 


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


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

در پروژه تشخیص گاز شهری با آردوینو سنسور به پایه A0 متصل است که در برد Nodemcu فقط یک پایه آنالوگ داریم. در این کد در ابتدا بادریت سنسور را بر روی ۹۶۰۰ تنظیم و در کد برنامه در بخش Void Setup وارد کنید. در حلقه برنامه مقادیر ورودی از سنسور بر واحد اعشاری float دریافت و خوانده شده و در یک متغیر که به دلخواه با نام دلخواه sensorvolt ساخته شده است، ذخیره می‌کنیم. مقادیر ولتاژ از پایه A0 سنسور توسط دستور analogRead(A0) خوانده شده و سپس در متغیری به نام Sensorvalue ذخیره می‌شود. سپس مقادیر ذخیره شده در متغیر Sensorvalue در بازه آنالوگ تقسیم بر ۱۰۲۴*۵ شده و مقادیر نهایی در متغیر Sensor volt ذخیره می‌شود. سپس مقادیر را توسط دستورات سریال مانیتور در سریال مانیتور نمایش میدهیم. این مقادیر کاملا بر شرایط محیطی وابسته است. با تغییر دما و رطوبت عدد خروجی تغییر خواهد کرد. برای پایداری در محیط کافیست سنسور در فضا مدتی فعال شده تا خروجی ثابتی نمایش دهد.

float sensor_volt;
    float sensorValue;
 
    sensorValue = analogRead(A0);
    sensor_volt = sensorValue/1024*5.0;
 
    Serial.print("sensor_volt = ");
    Serial.print(sensor_volt);
    Serial.println("V");
    delay(1000);

 

در این کد مقادیر تقریبی غلظت گاز برای تشخیص گاز شهری با آردوینو محاسبه می‌شود. این اعداد طبق اطلاعات درج شده در دیتاشیت برای شرایط استاندارد گفته شده است و به همین دلیل کالیبره نیست. با تغییر دما و رطوبت در محیط این عدد تغییر خواهد کرد. در هر خط از برنامه تحلیل فارسی نوشته شده است. کد را کپی و به نرم افزار آردوینو IDE Arduino منتقل کنید. در ابتدا همانند کد قبل ولتاژ پایه A0 از سنسور را در متغیر Sensor Volt دریافت و ذخیره می‌کنیم. سپس یک متغیر برای مقاومت RS و یک متغیر برای مقاومت RO با داده float تعریف می‌کنیم. در نهایت با فرمول های نوشته شده در کد مقدار RS و RO را محاسبه می‌کنیم. در نهایت برای محاسبه نسبت RS/RO در پروژه درصد گاز شهری MQ5 با سنسور گازی MQ از فرمول زیر در کد برنامه استفاده می‌کنیم.به جای RO مقدار دریافتی در کد قبلی را جایگزین کنید. به همین ترتیب میتوانید یک کد کامل برای راه اندازی سنسور گازی با پلتفرم IOT پیاده سازی کنید. . کد کامل پروژه کنترل تردد با سنسور تشخیص حرکت و نمایش در پلتفرم 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 gas;
 

  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"








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); 
 
  // 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();
  gassensordata();
  delay(2000);
 
}

 void gassensordata(){
    float sensor_volt;
    float RS_gas; // دریافت مقدار RS از گاز
    float ratio; // دریافت نسبت RS/RO
    int sensorValue = analogRead(A0);
    sensor_volt=(float)sensorValue/1024*5.0;
    RS_gas = (5.0-sensor_volt)/sensor_volt; 
 
         // مقدار RO دریافتی از سنسور خود را به جای عدد ۲٫۸۱ که مربوط به RO سنسور من است قرار دهید.
    ratio = RS_gas/2.81;  // ratio = RS/R0 فرمول 
          
    Serial.print("sensor_volt = ");
    Serial.println(sensor_volt);
    Serial.print("RS_ratio = ");
    Serial.println(RS_gas);
    Serial.print("Rs/R0 = ");
    Serial.println(ratio);
    Serial.print("\n\n");
    delay(1000);
     gas=ratio;
    }

 


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


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

آپلود برنامه از طریق arduino iot cloud - دیجی اسپارک

 


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


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

نمایش وضعیت سنسور mq2 در داشبورد آردوینو IoT Cloud - دیجی اسپارک

 

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

اتصالات mq2 به برد nodemcu - دیجی اسپارک

 

پروژه درصد گاز mq2 با nodemcu و پلتفرم آردوینو کلاد - دیجی اسپارک

 

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

 


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


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

نمایش وضعیت سنسور گاز روی اپلیکیشن Iot - دیجی اسپارک

 


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


برد وای فای NodeMCU 

سنسور تشخیص گاز شهری MQ5

 

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

 

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

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

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

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

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

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

۲ دیدگاه

  • درود بر شما خسته نباشید سرکار خانم اگر مرجع خارجی را ذکر میکردید خیلی خوب بود . زحممت کشیدید ولی ترجمه در برخی موارد گسیختگی دارد و ضمنا بجای اموزش و چرایی مخاطب در واقع باید یک سری اعمال دیکته شده را کپی پیست کند .

    • با سلام
      کاربر گرامی این آموزش به صورت انحصاری توسط تیم دیجی اسپارک تولید و منتشر شده است. اگر سوالی دارید میتوانید مطرح کنید. ما آموزش را از جایی ترجمه نمیکنیم و به شدت نسبت به این مورد حساس هستیم.