مقدمة

يعتبر تلوث الهواء مشكلةً رئيسيةً في العديد من البلدان، حيث إنَّ الهواء الملوث يسبب الكثير من المشاكل الصحية للإنسان وخصوصاً للذين يعانون من مشاكلٍ في الجهاز التنفسي، لذلك أصبحت مراقبة نقاوة و جودة الهواء المحيط بنا ضرورةً ملحة لا بد .منها

مراقبة جودة الهواء باستخدام الأردوينو

سنوضِح في هذا المقال كيفية إجراء تصميمٍ أولي لنظام مراقبة لجودة الهواء باستخدام الأردوينو نانو (Arduino Nano) وحساس قياس كثافة الغبار في الهواء ( GP2Y1014AU0F)،و الذي يعتبر فعال جداً في اكتشاف الجسيمات الدقيقة، ويستخدم في أجهزةِ تنقية الهواء والمكيفات، وشاشة OLED لعرض قراءات الحساس.

المكونات المطلوبة لتصميم نظام مراقبة جودة الهواء

  • Arduino Nano
  • GP2Y1014AU0F
  • شاشة OLED
  • مكثف 220μf
  • مقاومة 150Ω
  • أسلاك.
  1. Arduino Nano

Arduino Nano

عبارة عن لوحة تطوير إلكترونية صغيرة وملائمة للوحات التجارب، تَعتمدُ على المتحكِّم Atmega328P. لمعرفة المزيد  من المعلومات والمواصفات التقنية يمكن قراءة المقال التالي: Arduino Nano

 2. حساس قياس كثافة الغبار في الهواء ( GP2Y1014AU0F)

حساس قياس كثافة الغبار في الهواء ( GP2Y1014AU0F)

يعتمد حساس الغبار على وجود (IR LED) يصدر أشعة تحت حمراء و ديود ضوئي (photodiode) يتم وضعهما ضمن غرفة معتمة داخل الحساس بشكل قطري بالقرب من مدخل الهواء. حيث يتم قياس مقدار الضوء المتناثر في الغرفة الناتج عن وجود جزيئات الغبار، مما يؤدي إلى قياس كثافة جزيئات الغبار في الهواء.

يتكون حساس الغبار من ستة أطراف Pins وهي موضحة بالجدول التالي مع وظيفة كل منها:

 

1 V-LED ليد إشارة لمنفذ التغذية يتم ربطة مع جهد 5V و مقاومة 150Ω على التسلسل
2 LED-GND ليد إشارة للأرضي يتم ربطة مع GND
3 LED يستخدم للتبديل بين تشغيل / إيقاف تشغيل LED.يتم ربطة بأي PIN رقمي من Arduino
4 S-GND الأرضي GND يتم ربطة مع أرضي الأردوينو
5 VOUT خرج الحساس تشابهي Analog يتم ربطة مع أي رجل Analog مثل A0
6 VCC رجل التغذية الأساسي للحساس 5V
 مواصفات GP2Y1014AU0F
  • استهلاك منخفض التيار (20mA max).
  • جهد التشغيل النموذجي (4.5V to 5.5V).
  • الحد الأدنى لحجم الغبار القابل للكشف (0.5µm).
  • نطاق استشعار كثافة الغبار (Up to 580 ug/m3).
  • زمن الاستشعار أقل من ثانية واحدة.

3.OLED Display

OLED Display

شاشات OLED أكثر فعالية وبساطة من شاشات LCD، ومن ميزاتها لا تعتمد على إضاءة الخلفية ولا الفلاتر، وتؤمن جودة صورة جيدة بوضوح عالٍ، وكذلك لها ميزات لونية رائعة، ويمكن ربطها بالمتحكم بطرق عدةٍ بما في ذلك بروتوكولات I2C و SPI، و بشكلٍ عام يعتبر بروتوكول SPI أسرع من SPI لكنَّه يتطلب عدد منافذ Pins أكثر، بينما يتطلب I2C منفذين فقط.

إن عملية المفاضلة بين عدد المنافذ والسرعة المطلوبة للتصميم هي التي تحدد اختيارك لبروتوكول الاتصال المستخدم.

 مواصفات OLED :
  • الدِّقة: 128 × 64
  • الزاوية البصرية أكبر من 160 درجة.
  • جهد الدخل: (3.3 V – 6 V)
  • لون البكسل: أزرق
  • درجة حرارة العمل: (-30~ 70) درجة مئوية

وللاطلاع أكثر على شاشات OLED يمكنك قراءة المقال التالي: شاشات OLED

 مخطط توصيل الدارة:

 مخطط توصيل الدارة

توصيلات الأردوينو وشاشة ال OLED:

CS DC RES D1   D0 VCC GND OLED Pin
12 11 13 9 10 5 V Ground Arduino Pin

 

توصيلات الأردوينو و الحساس:

V-LED LED-GND LED S- GND V0 VCC Sensor Pin
5V through 150 resistor GND 7 GND A5 5 V Arduino Pin

 

الكود البرمجي:

  • يتم في الكود استخدم مكتبة Adafruit_GFX ومكتبة Adafruit_SSD1306، حيث يمكن تحميل كل منهما من Manager Arduino IDE وتثبيتهما من هناك.

#include <SPI.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels

#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for SSD1306 display connected using software SPI (default case):

#define OLED_MOSI   9

#define OLED_CLK   10

#define OLED_DC        11

#define OLED_CS        12

#define OLED_RESET 13

Adafruit_SSD1306 display (SCREEN_WIDTH, SCREEN_HEIGHT,

OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

  • تحديد المنافذ الخاصة بحساس الغبار والليد، حيث إنَّ منفذ الاستشعار هو عبارة عن منفذ الخرج لحساس الغبار المستخدم لقراءة قيم الجهد، في حين منافذ LED تستخدم لتشغيل و إطفاء ليد الأشعة تحت الحمراء IR LED.

int measurePin = A5;

int ledPower = 7;

  • تحديد قيم كل من (voMeasured وcalcVoltage وdustDensity):

float voMeasured = 0;

float calcVoltage = 0;

float dustDensity = 0;

  • في دالة Void setup نعرف المخرجات والمدخلات ونقوم بتهيئة شاشة

Void setup () {

  Serial. Begin (9600);

  Pin Mode (ledPower, OUTPUT);

  display.begin (SSD1306_SWITCHCAPVCC);

  display.clearDisplay ();

  display. Display ();

}

  • في دالة Void loop يتم تشغيل وإطفاء  الليد الموجود في حساس الغبار ونقوم بقراءة البيانات من المنفذ التناظري

Void loop () {

  digitalWrite (ledPower, LOW);

  delay Microseconds (280);

  VoMeasured = analog Read (measurePin);

  delayMicroseconds(40);

  digitalWrite(ledPower,HIGH);

  delayMicroseconds(9680);

  • ثم يتم إجراء عملية حسابية لحساب تركيز ذرات الغبار في الجو المحيط بالميكروغرام أي واحد على مليون من الغرام لكل متر مكعب من الهواء، وفي حال كان ناتج العملية أي “تركيز جزيئات الغبار” سالب يتم اعتبار القيمة صفر.

  CalcVoltage = voMeasured*(5.0/1024);

  dustDensity = 0.17*calcVoltage-0.1;

  If (dustDensity < 0)

  { dustDensity = 0.00; }

  Serial.println(“Raw Signal Value (0-1023):”);

  Serial.println(voMeasured);

  Serial.println(“Voltage:”);

  Serial.println(calcVoltage);

  Serial.println(“Dust Density:”);

  Serial.println(dustDensity);

  • ثم بعد إجراء العملية الحسابية تتم طباعة القيمة على شاشة OLED.

  display.setTextSize(1);

  display.setTextColor(WHITE);

  display.setCursor(85,22);

  display.println(“Dust”);

  display.setCursor(85,38);

  display.println(“Density”);

  display.setTextSize(3);

  display.setCursor(0,13);

  display.println(dustDensity);

  display.setCursor(6,43);

  display.setTextSize(2);

  display.println(“ug/m3”);

  display.display();

  display.clearDisplay();

  delay (1000);

}

وهكذا يكون قد تم تقديم شرح تفصيلي للمكونات الأساسية اللازمة لتصميم نظام مراقبة جودة الهواء باستخدام الأردوينو وحساس الغبار وكذلك  تم توضيح مخطط توصيل الدارة والكود البرمجي.


إعداد: حسن شليحه، مراجعة: مهند العبيد، تصميم: علي العلي، تدقيق لغوي: بولا ابراهيم، تحرير: رؤى حمود