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

پروژه تشخیص نشت گاز با شیلد ProMake Nano و پلتفرم Arduino IoT

gas-leak-detection-with-promake-nano-shield-arduino-iot-cloud-platform-digispark
نوشته شده توسط پریسا پوربلورچیان

برای اجرای پروژه های IoT تحت پلتفرم ها نیاز به استفاده از بردهای IoT است. کمپانی آردوینو Arduino در سری بردهای خانواده Nano 33 برد اینترنت اشیا Arduino NANO 33 IoT را برای اجرای پروژه های تحت وای فای Wifi تولید کرده است. این برد قابلیت اتصال به شبکه وای فای دارد و میتوانید از طریق تراشه ublox قرار گرفته شده در روی برد داده های دریافتی از سنسورها را بر روی پلتفرم ها ارسال و مانیتورینگ کنید. در این پروژه از شیلد ProMake مدل Arduino Nano Kit استفاده خواهیم کرد. شیلد پرومیک قابلیت اتصال برد آردوینو Nano 33 IoT به همراه سه ماژول دارد. در این پروژه هدف اندازه گیری درصد گاز PPM در محیط است که از ماژول تشخیص گازی MQ2 استفاده شده است. در ادامه پروژه نشت گاز با شیلد ProMake با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

پروژه نشت گاز با شیلد ProMake easy IoT و پلتفرم آردوینو کلاد - دیجی اسپارک

 


Arduino Nano Kit کیت آردوینو نانو ProMake


شیلد ProMake با هدف استفاده از بردهای آردوینو سری Nano طراحی شده است. کمپانی آردوینو بردهای آردوینو Nano را در یک ابعاد مشخص تولید کرده است که تفاوت آن ها در قابلیت های داخلی Internal است. تعداد پایه های I/O در تمامی بردهای آردوینو نانو Nano یکسان است و کاربری یکسانی دارند. تفاوت اصلی در ساخت برد است که از چه چیپ و امکاناتی در ساخت برد استفاده شده است. این تمایزها در تراشه اصلی ساخت برد، وجود تراشه وای فای و یا تراشه بلوتوث به همراه سنسورهای داخلی است که برای طراحی به برد اضافه شده است. با توجه به اینکه شیلد پرومیک از تمامی بردهای آردوینو نانو پشتیبانی می‌کند، از هر بردی از خانواده Nano میتوانید استفاده کنید. بر روی شیلد Arduino Nano Kit از سه ماژول پرومیک پشتیبانی می‌کند. ماژول های پرومیک قرار گرفته شده بر روی شیلد قابلیت اتصال به ماژول های GSM, Relay, Temperature دارد.

  • تطابق با همه ماژولهای استاندارد آردوینو نانو
  • پشتیبانی از ۳ ماژول ®ProMake، که به سادگی و بدون هیچ لحیم کاری بر روی کیت قرار می گیرند
  • ارتباطات SPI,I2C و آنالوگ برای اولین ماژول
  • ارتباطات SPI,I2C برای دومین ماژول
  • ارتباطات I2C, سریال و آنالوگ برای سومین ماژول
  • دارای چیپ ساعت (RTC) با باتری پشتیبان
  • دو عدد RGB LED
  • بازر
  • کلید فشاری
  • کانکتورهای توسعه ای SparkFun QWIIC و Seeed Studio Grove
  • کانکتور هدر برای نمایشگر I2C OLED

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

 

  • تغذیه شیلد توسط پورت تایپ C تامین می‌شود.
  • رابط برای اتصال نمایشگر OLED بر روی شیلد قرار گرفته شده است.
  • از رابط Grove برای ارتباط با سایر ماژول ها استفاده شده است.
  • دو ال ای دی RGB بر روی برد قرار گرفته شده است.

 


استفاده از برد Nano 33 و قرار گرفتن روی شیلد ProMake


در پروژه نشت گاز با شیلد ProMake هدف محاسبه درصد گاز در محیط است که توسط برد آردوینو Nano 33 IoT و شیلد پرومیک انجام می‌شود. در این پروژه داده ی دریافتی از سنسور MQ بر روی پلتفرم اینترنت اشیا Arduino IoT CLOUD در دشبورد نمایش داده می‌شود. در ابتدا نیاز به یک عدد برد Arduino Nano 33 IoT به همراه ماژول ProMake GAS MQ داریم. همانند تصویر زیر برد آردوینو را بر روی شیلد قرار دهید.

آردوینو نانو 33 در شیلد پرومیک EasyIoT و پروژه نشت گاز - دیجی اسپارک

 

سه عدد رابط برای اتصال ماژول های ProMake بر روی شیلد قرار گرفته شده است. از یکی از آن ها برای اتصال ماژول GAS MQ استفاده کنید. برای اتصال پایه های بر روی ماژول را تطبیق دهید.

اتصال سنسور گاز در پروژه نشت گاز با شیلد ProMake - دیجی اسپارک

 

در نهایت پروتوتایپ به صورت زیر است. برد آردوینو Nano 33 IoT به همراه ماژول MQ بر روی شیلد نانو قرار گرفته شده است. تغدیه شیلد تایپ C است و برای تامین تغذیه برد آردوینو از کابل Micro usb استفاده کنید.

  پروژه نشت گاز با شیلد ProMake آردوینو نانو 33 - دیجی اسپارک

 


برنامه نویسی برد Arduino Nano Kit


کدنویسی ماژول گاز را با برد وای فای اینترنت اشیا Arduino Nano 33 IoT اجرا می‌کنیم. برای اجرای پروژه نشت گاز با شیلد ProMake از پلتفرم Arduino IoT CLOUD استفاده می‌کنیم. Arduino IoT CLOUD از وب ادیتور برخط آنلاین استفاده می‌کند و برای کار با این پلتفرم بایستی Arduino Agent برای برقراری ارتباط برد با مرورگر را نصب کنید.

ساخت حساب کاربری در Arduino IoT CLOUD

تمامی این مراحل قبلا در آموزش کار با پلتفرم Arduino IOT Cloud بخش اول: معرفی و ساخت حساب آموزش داده شده است. پلتفرم Arduino IOT Cloud اینترنت اشیا با هدف اجرای پروژه های اینترنت اشیا IOT پدید آمده است. از بردهای آردوینو سری وای فای و بردهای جانبی مانند ESP8266, ESP32 , loRaWAN پشتیبانی می‌کند. پلتفرم Arduino CLoud توسط کمپانی آردوینو تولید شده است. برنامه نویسی در محیط آنلاین، برخورداری از وب ادیتور آنلاین، برای کدنویسی یک محیط جذاب را فراهم کرده است. در این پلتفرم به محیط برنامه نویسی Arduino IDE دسترسی داریم و همانند نرم افزار تمامی ویژگی ها از جمله نصب کتابخانه، انتخاب بردها، سریال مانیتور در اختیار ما قرار گرفته شده است. بدون نیاز به ارتباط سریال کدنویسی انجام شده و در لحظه آپدیت می‌شود. محیط همان محیط برنامه نویسی Arduino IDE است و هیچ تغییری ایجاد نشده است. داده ها در دو فضای ابری و IDE نوشته شده و سپس مقادیرها با هم یکسان می‌شود. برد را به لپتاپ متصل کنید. عبارت Arduino IoT CLOUD را گوگل کنید. برای ایجاد حساب کاربری از طریق Gmail همی میتوانید اقدام کنید.

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

 

شناسایی برد Arduino Nano 33 IOT در CLOUD

روش ساخت Devices در پلتفرم Arduino IOT Cloud همان انتخاب میکروکنترلر است. برای شروع ارتباط قدم اول انتخاب برد است. پلتفرم Arduino IOT Cloud از دو مدل میکروکنترلر پشتیبانی می‎‌کند که هر کدام به چندین زیر شاخه تقسیم بندی می‌شوند. بخش اول Arduino Device هستند. بردهای خانواده ESP در این بخش معرفی شده است و با توجه به نوع میکروکنترلری که دارید، میتوانید برد را انتخاب کنید. موس را بر روی علامت ! نگه دارید. تمامی بردهایی که در این بخش پشتیبانی می‌شوند، نمایش داده خواهد شد. از این لیست برد آردوینو Nano 33 را انتخاب کنید. ادامه‌ی مسیر مطابق تصاویر زیر است. به تصاویر دقت کرده و قدم به قدم مراحل را دنبال کنید.

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

 

 

 

 

 

 

ایجاد Thing

در پلتفرم اینترنت اشیا Arduino IoT پس از انتخاب دیوایس Device قدم بعدی ورود به صفحه Things است. پس از کلیک بر روی Things صفحه ی زیر نمایش داده می‌شود. مراحل زیر برای ایجاد Things بایستی دنبال شوند.

  1. نمایش Variable
  2. ساخت یک متغیر جدید
  3. انتخاب سخت افزار از قبل ساخته شده
  4. تغییرات سخت افزار
  5. اتصال به شبکه وای فای

ایجاد Thing در پلتفرم اینترنت اشیا Arduino Cloud - دیجی اسپارک

 

قدم اول ساخت یک متغیر برای سخت افزار است. اما کمی عمیق تر نگاه کنیم. برای کدنویسی یک سخت افزار اولین قدم در برنامه مشخص کردن ورودی و خروجی ها یا همان دیوایس های متصل به میکروکنترلر است. مانند انواع سنسورها دما رطوبت، تشخیص رنگ، فشار سنج، رطوبت خاک، شدت نور و سنسورهای گازی و … که هر کدام با یک اسم مشخص و منحصر به فرد در کد برنامه معرفی می‌شوند. هدف نهایی ما از برنامه نویسی دریافت داده، پردازش داده و دریافت خروجی است. پس داده ها حرف اول را میزنند. تا زمانی که نتوانیم داده ها و نوع داده ها را در برنامه به درستی مشخص و از هم تفکیک کنیم، عملا مابقی اجرای پروژه نشت گاز با شیلد ProMake با مشکل رو به رو خواهد شد. در صفحه ی تنظیم Things اولین بخش Add Variable است. در این بخش بایستی سخت افزارهایی که به میکروکنترلر متصل کرده ایم را به صورت متغیرهای منحصر به فرد همراه با نوع داده مشخص کنیم. داده int, float, bool و… همگی در این بخش قابل انتخاب است. انتخاب اسم برای متغیر هم دلخواه است. با انتخاب متغیرها، برای هر متغیر در سرویس ابری آردوینو به صورت اتوماتیک متغیر ساخته شده و سپس مجدد به صورت اتوماتیک در کد Sketch برنامه نوشته می‌شود! بله برنامه نویسی در این بخش به صورت آنلاین و اتوماتیک صورت میگیرد. به ازای تعریف هر متغیر در این بخش، در فضای ابری Cloud آردوینو یک متغیر در کد برنامه ساخته شده و یک تابع سفارسی Custom Function به صورت اختصاصی پس از حلقه Loop در برنامه Sketch اضافه می‌شود. قدرت Arduino IOT Cloud در این بخش است که آن را نسبت به سایر پلتفرم ها متمایز کرده است. برای تست بر روی Add Variable کلیک کنید.

ساخت thing در پلتفرم Arduino Cloud - دیجی اسپارک

 

با توجه به اینکه از سنسور گازی استفاده می‌کنیم، میتوانیم نوع داده دریافتی از سنسور را به صورت اعشاری float در برنامه تعریف کنیم. یک اسم به دلخواه برای سنسور گاز تعریف کرده و مطابق تصویر تنظیمات را انجام دهید تا در لیست Thing ها نمایش داده شود. سپس برای کدنویسی گزینه Sketch را انتخاب کنید.

 


کد آردوینو دریافت درصد PPM سنسور گاز


از منو Arduino IoT CLOUD گزینه Sketch را انتخاب کنید. سپس کد زیر را کپی و به آن انتقال دهید. حتما از اسمی که بنده در کدها مشخص کردم استفاده کنید. کدنویسی در Arduino IoT Cloud به صورت تابع های سفارشی است. برای هر بخش از برنامه بایستی یک تابع سفارشی در کد اضافه کنید. در بخش Setup اولین پارامتری که اضافه کردیم، داده سنسور گازی با نام gas است که در قسمت ابتدایی برنامه به صورت اتوماتیک اضافه شده است. با اضافه کردن هر متغیر یک تابع سفارشی ( کاستوم ) در برنامه ساخته می‌شود. بایستی هر تابع سفارشی را به صورت دستی در قسمت Loop وارد کنید. در کد برنامه کامل تمامی موارد لحاظ شده است.

کد آردوینو دریافت درصد PPM سنسور گاز در پروژه نشت گاز - دیجی اسپارک

 

/* 
  Sketch generated by the Arduino IoT Cloud Thing "Untitled 2"
  https://create.arduino.cc/cloud/things/74905868-c64e-4782-8861-88ba7919ee20 

  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"

#define relay 5
#define thershold 2.0






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();
 
  // Your code here 
  
  
}



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


/*
  Since Gas is READ_WRITE variable, onGasChange() is
  executed every time a new value is received from IoT Cloud.
*/
void onGasChange()  {
  // Add your code here to act upon Gas change
}
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/1.33;  // 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;
    
    
    }




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

 

همانند نرم افزار آردوینو کد را پس از انتقال پس از شناسایی اتوماتیک برد و پورت بر روی برد آردوینو آپلود کنید. سپس وارد قسمت Setup شوید. بایستی برد آنلاین شده باشد.

مراحل راه اندازی پروژه نشت گاز با شیلد پرومیک EasyIoT - دیجی اسپارک

 

در قسمت Cloud Variables یک Thing با نام gas به همراه Last Value و Last Update نمایش داده شده است. آخرین داده دریافتی از سنسور گاز متصل به شیلد پرومیک Arduino Nano Kit در این بخش قابل مشاهده است. با تغییر درصد و غلظت PPM این عدد در لحظه تغییر خواهد کرد.

 


نمایش داده PPM GAS در داشبورد Arduino IoT CLOUD


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

ساخت داشبورد Arduino IOT Cloud - دیجی اسپارک

 

از منو بر روی Dashboards کلیک کنید. با صفحه ی بالا رو به رو خواهید شد. بر روی گزینه Build Dashboard کلیک کنید.

گزینه های انتخاب در داشبورد Arduino IOT Cloud - دیجی اسپارک

 

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

مراحل نمایش داده PPM GAS در دشبورد Arduino IoT CLOUD - دیجی اسپارک

 

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

 

راه اندازی سنسور گاز در پلتفرم اینترنت اشیا Arduino Cloud - دیجی اسپارک

 

داده دریافتی از سنسور گازی MQ در دشبورد محیط Arduino IoT CLOUD به صورت زیر نمایش داده می‌شود.

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

 

پروژه نشت گاز با شیلد پرومیک EasyIoT و نانو 33 - دیجی اسپارک

 


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


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

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

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

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

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

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

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

۳ دیدگاه

    • سلام
      کاربر گرامی سپاس از همراهی شما
      امیدوارم مفید واقع شده باشد.

  • سلام لطفا پروژه ی نشت گاز و گزارش شعله رو که بصورت انلاین رو وب سرور نمایش میده و موقعیت مکانی روی نقشه نشون بده و قابلیت تماس رو نیز داشته رو بزارید
    ممنون میشم