قياس تركيز ثاني أكسيد الكربون في الهواء باستخدام مستشعر MQ-135 و الاردوينو اكتب تعليقُا

 تم نشر هذا المشروع لجميع الأشخاص المهتمين في مجال تصنيع وابتكار المشاريع الإلكترونية والبرمجية، و نود التنويه أن موقع انا الكتروني يخلي مسؤوليته التامة في حال لم يعمل المشروع لدى العميل أو في حال الاستخدام الخاطئ للمكونات الإلكترونية والكهربائية التي قد تؤدي لحدوث الحرائق أو غيرها لا سمح الله.

ــــــ MQ-135

لمحة سريعة
  • يتزايد مستوى ثاني أكسيد الكربون في الغلاف الجوي للأرض يومًا بعد يوم .
  • بلغ المتوسط العالمي لثاني أكسيد الكربون في الغلاف الجوي في عام 2019 بلغ 409.8 جزء في المليون وفي أكتوبر -2020 بلغ 411.29.
  • ثاني أكسيد الكربون هو أحد الغازات الدفيئة الرئيسية وهو مسؤول عن حوالي ثلاثة أرباع الانبعاثات.
  • لذلك بدأت مراقبة مستوى ثاني أكسيد الكربون تكتسب أهمية أيضًا.

 في هذا المشروع ، سنستخدم مستشعر MQ-135 مع Arduino لقياس تركيز ثاني أكسيد الكربون. سيتم عرض قيم تركيز ثاني أكسيد الكربون المقاسة على وحدة OLED .

المكونات المطلوبة للمشروع
وحدة عرض OLED مقاس 0.96 بوصة

OLED  هي أختصار من (Organic Light-Emitting Diodes) وهي تقنية ذاتية للضوء ، يتم إنشاؤها عن طريق وضع سلسلة من الأغشية الرقيقة  بين موصلين. تستخدم OLEDs نفس التكنولوجيا المستخدمة في أجهزة التلفزيون ، ولكن بها عدد بكسلات أقل من معظم أجهزة التلفزيون لدينا.

OLED-Module

بالنسبة لهذا المشروع ، نستخدم شاشة OLED أحادية اللون ذات 7 أطراف 0.96 بوصة. يمكن أن تعمل على ثلاثة بروتوكولات اتصالات مختلفة : SPI 3 Wire mode و SPI four-wire mode و I2C mode.

  يتم شرح الاطراف ووظائفها في الجدول أدناه :

Pin Name Other Names Description
Gnd Ground Ground pin of the module
Vdd Vcc, 5V Power pin (3-5V tolerable)
SCK D0,SCL,CLK Acts as the clock pin. Used for both I2C and SPI
SDA D1,MOSI Data pin of the module. Used for both IIC and SPI
RES RST, RESET Resets the module (useful during SPI)
DC A0 Data Command pin. Used for SPI protocol
CS Chip Select Useful when more than one module is used under SPI protocol
مخطط الدائرة لمواجهة MQ135 مع Arduino

فيما يلي المخطط الكاملة لتوصيل مستشعر الغاز MQ-135 مع Arduino:

Interface-MQ135-with-Arduino
  • الدائرة بسيطة للغاية لأننا نقوم فقط بتوصيل مستشعر MQ-135 ووحدة عرض OLED مع Arduino Nano.
  • يتم تشغيل مستشعر الغاز MQ-135 ووحدة العرض OLED مع + 5V و GND.
  • يتم توصيل دبوس Analog Out الخاص بمستشعر MQ-135 بالدبوس A0 في Arduino Nano.
  • نظرًا لأن وحدة عرض OLED تستخدم اتصال SPI ، فقد أنشأنا اتصال SPI بين وحدة OLED و Arduino Nano.

التوصيلات موضحة في الجدول أدناه:

rduino Nano. The connections are shown in the below table:

S.No OLED Module Pin Arduino Pin
1 GND Ground
2 VCC 5V
3 D0 10
4 D1 9
5 RES 13
6 DC 11
7 CS 12
الكود الرمجي لمواجهة MQ-135

قبل تحميل الكود الرمجي ، قم بتثبيت مكتبات Adafruit SSD1306 بواسطة Adafruit من داخل برنامج الاردوينو نفسه . أو يمكنك تنزيل مكتبة MQ135 من هنا.

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

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

// Interfacing MQ135 Gas Senor with Arduin
// The load resistance on the board
#define RLOAD 22.0
#include "MQ135.h"
#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);
MQ135 gasSensor = MQ135(A0);
int val;
int sensorPin = A0;
int sensorValue = 0;
void setup() {
  Serial.begin(9600);
  pinMode(sensorPin, INPUT);
  display.begin(SSD1306_SWITCHCAPVCC);
  display.clearDisplay();
  display.display();
}
void loop() {
  val = analogRead(A0);
  Serial.print ("raw = ");
  Serial.println (val);
 // float zero = gasSensor.getRZero();
 // Serial.print ("rzero: ");
  //Serial.println (zero);
  float ppm = gasSensor.getPPM();
  Serial.print ("ppm: ");
  Serial.println (ppm);
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(18,43);
  display.println("CO2");
  display.setCursor(63,43);
  display.println("(PPM)");
  display.setTextSize(2);
  display.setCursor(28,5);
  display.println(ppm);
  display.display();
  display.clearDisplay();
  delay(2000);
}

أنتهت !!!

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *