تحلیل کتابخانه

تحلیل و بررسی کتابخانه HPMA115.h

HPMA115-h-arduino-library-digispark
نوشته شده توسط معین صابری

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

 


سنسور تشخیص کیفیت هوا HPMA115


سنسورهای تشخیص کیفیت هوا یکی از مهم ترین و پرکابردترین ابزارها در جهت تشخیص میزان آلاینده های موجود در هوا هستند. از این سنسورها در سیستم های مدیریت هوشمند گلخانه ها، سیستم های اعلام دود و حریق و… می توان استفاده نمود. سنسور تشخیص کیفیت هوا HPMA115 یک سنسور کلیدی و کاربردی در پروژه های مربوط به تشخیص کیفیت هواست. این سنسور که از رابط سریال UART بهره می برد، به سادگی می تواند با انواع میکروکنترلرها نظیر ARM و یا بردهای آردوینو و ESP ارتباط برقرار نماید.

سنسور کیفیت هوا HPMA115 - دیجی اسپارک

 

این سنسور می تواند میزان کیفیت هوا برای تنفس را از شاخص ۰ الی ۳۰۰ اندازه گیری کند. جهت راه اندازی این سنسور کتابخانه تحت آردوینو توسعه یافته که در قسمت های بعد به تحلیل و بررسی آن می پردازیم.

 


نصب کتابخانه HPMA115


به منظور استفاده از کتابخانه، ابتدا می بایست آن را نصب کنیم. در این قسمت به نصب کتابخانه با جستجو در مخازن آردوینو می پردازیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.

روش نصب کتابخانه PCF8574.h - دیجی اسپارک

 

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

روش نصب کتابخانه HPMA115 - دیجی اسپارک

 


 الزامات و نکات فنی کتابخانه HPMA115


پس از نصب کتابخانه HPMA115، نوبت به بررسی الزامات و نکات فنی کتابخانه می رسد. توجه داشته باشید که این کتابخانه از پورت سریال جهت ارتباط با برد استفاده می کند. این پورت سریال هم می تواند به صورت سخت افزاری و هم نرم افزاری انتخاب گردد. در رابطه با پورت نرم افزاری، دقت داشته باشید که این پورت در برد آردوینو MEGA روی تعداد خاصی از پایه ها قابلیت اجرا دارند. در کنار این توجه داشته باشید که این کتابخانه بر روی کلیه بردهای مورد پشتیبانی پلتفرم آردوینو قابلیت اجرا دارد. به عبارت دیگر این کتابخانه مستقل از معماری، روی بردهای آردوینو، ESP و ARM قابلیت اجرا دارد. حال که با نکات فنی کتابخانه آشنا شدیم، در قسمت بعد به توابع کلیدی و کاربردی کتابخانه خواهیم پرداخت.

 


توابع کلیدی و کاربردی کتابخانه HPMA115.h


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

شرح تابع
تابع شروع ارتباط با سنسور

در ورودی آدرس پورت سریال قرار می گیرد.

bool begin(Stream *stream)
کنترل وجود داده های جدید

در صورتیکه داده های جدید وجود داشته باشد، خروجی تابع true خواهد شد.

bool isNewDataAvailable()
تابع جمع آوری و خواندن مقادیر

توجه: اجرای تابع برنامه را برای مدت ۲۵ میلی ثانیه متوقف می کند. برای عملکرد بهتر تابع بالا را فراخوانی کرده و در صورت وجود داده جدید این تابع فراخوانی شود.

bool readParticleMeasurementResults()
توقف فرایند خواندن و جمع آوری داده ها

با فراخوانی این تابع فن سنسور متوقف می شود.

  bool stopParticleMeasurement()
شروع به خواندن داده های مربوط به ذرات

فراخوانی این تابع سبب می شود تا سنسور داده ها را هر یک ثانیه یکبار ارسال کند.

اجرای این تابع برنامه را تا پاسخ تابع متوقف می کند. در صورت موفق بودن عملیات خروجی TRUE خواهد شد.

bool startParticleMeasurement()
توقف ارسال خودکار داده ها

با فراخوانی تابع ارسال خودکار متوقف می شود. اجرای تابع تا دریافت پاسخ متوقف می شود.

  bool stopAutoSend()
ارسال خودکار داده ها

فراخوانی تابع اجرای برنامه را تا زمان پاسخ متوقف می کند.

bool startAutoSend()
دریافت خروجی بر مبنای استاندارد میزان غلظت ۱٫۰ uint16_t getPM1()
دریافت خروجی بر مبنای استاندارد میزان غلظت ۲٫۵ uint16_t getPM25()
دریافت خروجی بر مبنای استاندارد میزان غلظت ۴٫۰   uint16_t getPM4()
دریافت خروجی بر مبنای استاندارد میزان غلظت ۱۰٫۰ uint16_t getPM10()
دریافت میزان کیفیت هوا و قرار گیری مقدار در خروجی uint16_t getAQI()

 

 پس از آشنایی با توابع کلیدی و کاربردی، نوبت به اجرای یک نمونه برنامه می رسد. قسمت بعد مربوط به این موضوع است.

 


اجرای یک نمونه برنامه


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

#ifndef UNIT_TEST

#include <Arduino.h>
#include <SoftwareSerial.h>
#include <HPMA115_Compact.h>  //فراخوانی کتابخانه.
SoftwareSerial hpmSerial(4, 5);  //تعریف سریال نرم افزاری
HPMA115_Compact hpm = HPMA115_Compact();  //تعریف شی از کلاس کتابخانه

// متغیر مر بوط به خططا
uint8_t err = 0;
void printResults();  //نمایش مقادیر
void setup() {
  Serial.begin(HPMA115_BAUD);  //این مقدار به صورت پیشفرض ۹۶۰۰ است.
  Serial.println("Hello");
  hpmSerial.begin(HPMA115_BAUD);  //باودریت ۹۶۰۰
  hpm.begin(&hpmSerial);  //ارتباط با سنسور با آدرس سریال نرم افزاری
  delay(1000);

  while (!hpm.isNewDataAvailable()) {  //انتطار برای دریافت داده 
    Serial.println("Still waking up ...");
    delay(1000);
  }

   //توقف مد ارسال خودکار
  hpm.stopAutoSend();
  hpm.readParticleMeasurementResults();  //خواندن مقادیر به صورت دستی
  Serial.println("Manually fetching result:");
  printResults();  //نمای شداده ها

  // Let's set this back to audo-send. We'll catch the readings in the loop().
  hpm.startAutoSend();
  Serial.println("Looping ...");
}

void loop() {
  if (hpm.isNewDataAvailable()) {  //در صورت وجود داده نمایش داده شود.
    printResults();
  }
  delay(1000);
}

void printResults() {
  Serial.print("AQI ");
  Serial.print(hpm.getAQI());
  Serial.print("  PM 1.0 = ");
  Serial.print(hpm.getPM1());
  Serial.print(", PM 2.5 = ");
  Serial.print(hpm.getPM25());
  Serial.print(", PM 4.0 = ");
  Serial.print(hpm.getPM4());
  Serial.print(", PM 10.0 = ");
  Serial.println(hpm.getPM10());
}

#endif

 


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


  1. انواع برد آردوینو
  2. انواع برد ESP
  3. سنسور کیفیت هوا HPMA115

 


جمع بندی


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

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

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