مراقب جودة الهواء باستخدام اردوينو Air Quality Monitor using Arduino اكتب تعليقُا

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

شرح فكرة المشروع

  • في هذا المشروع، سنقوم بتصميم نموذج لمراقبة جودة الهواء في مكان ما (غرفة مثلا).
  • هذا النموذج يمكنه مراقبة جودة الهواء في الغرفة باستخدام حساس جودة الهواء MQ135، كما يقيس درجة الحرارة والرطوبة فيها باستخدام حساس DHT11.
  • يتم عرض البيانات على شاشة OLED.
  • يُوصى بتشغيل حساس MQ135 بجهد 5 فولت (نربط VCC من الحساس بـ 5V في أردوينو و GND من الحساس بـ GND في أردوينو فقط) ووضع الحساس في بيئة نظيفة لمدة 24 ساعة على الأقل قبل استخدامه.
  • تعتبر هذا العملية لازمة لهذا النوع من الحساسات نظرًا لأنه يأتي ملوثًا نوعا ما في البداية.
  • تساعد عملية الحرق على تنظيف الحساس لذاته وتوفير نتائج أكثر دقة.
  • بعد عملية الحرق، يمكنك توصيل الحساس ببقية أدوات الدائرة الالكترونية وتجربة هذا المشروع كمثال.

ادوات المشروع

  • شاشة عرض 0.96 بوصة OLED: عدد 1
  •  اردوينو نانو + كابل اردوينو نانو Arduino Nano: عدد 1
  • وحدة استشعار درجة الحرارة والرطوبة DHT11 Temperature And Humidity Sensor: عدد 1
  • حساس مدى جودة الهواء MQ-135 Air Quality/Gas Detector Sensor: عدد 1
  • أسلاك توصيل أنثى إلى أنثى دوبونت خط 40 دبوس 20 سم Female to Female wires 40pcs 
تنويه: استخدم لوحة Bread board لتوصيل الوحدات بمنفذ 5V و GND

مخطط المشروع

طريقة توصيل المكونات مع أردوينو

حساس DHT11

S -> D2 Pin

+ -> 5V

– -> GND

حساس MQ135

AO -> A0 Pin

VCC -> 5V

GND -> GND

شاشة Oled

SDA Pin -> A4 Pin

SCL Pin -> A5 Pin

VCC Pin -> 5V

GND Pin -> GND

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

تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.
  • للتعرف على تجهيز لوحة أردوينو للبرمجة قم بزيارة الرابط التالي.
  • للإطلاع على كيفية تحميل وتنصيب المكتبات قم بزيارة الرابط التالي.
  • قبل تحميل الكود البرمجي، عليك تنزيل المكتبات التالية:
  • Adafruit_SSD1306.h
  • Adafruit_GFX.h
  • DHT.h
  • في حال لم يعمل هذا الكود البرمجي، قم بتحميل ملف الكود بالضغط على زر التحميل الموجود في الأسفل.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans9pt7b.h>
#include <Fonts/FreeMonoOblique9pt7b.h>
#include <DHT.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define sensor A0
#define DHTPIN 2 // Digital pin 2
#define DHTTYPE DHT11 // DHT 11

int gasLevel = 0; //int variable for gas level
String quality =””;
DHT dht(DHTPIN, DHTTYPE);

void sendSensor()
{
float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(h) || isnan(t)) {
Serial.println(“Failed to read from DHT sensor!”);
return;
}
display.setTextColor(WHITE);
display.setTextSize(1);
display.setFont();
display.setCursor(0, 43);
display.println(“Temp :”);
display.setCursor(80, 43);
display.println(t);
display.setCursor(114, 43);
display.println(“C”);
display.setCursor(0, 56);
display.println(“RH :”);
display.setCursor(80, 56);
display.println(h);
display.setCursor(114, 56);
display.println(“%”);
}

void air_sensor()
{
gasLevel = analogRead(sensor);

if(gasLevel<181){
quality = ” GOOD!”;
}
else if (gasLevel >181 && gasLevel<225){
quality = ” Poor!”;
}
else if (gasLevel >225 && gasLevel<300){
quality = “Very bad!”;
}
else if (gasLevel >300 && gasLevel<350){
quality = “ur dead!”;
}
else{
quality = ” Toxic”;
}

display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(1,5);
display.setFont();
display.println(“Air Quality:”);
display.setTextSize(1);
display.setCursor(20,23);
display.setFont(&FreeMonoOblique9pt7b);
display.println(quality);
}

void setup() {
Serial.begin(9600);
pinMode(sensor,INPUT);
dht.begin();
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) { // Address 0x3D for 128×64
Serial.println(F(“SSD1306 allocation failed”));
}
display.clearDisplay();
display.setTextColor(WHITE);

display.setTextSize(2);
display.setCursor(50, 0);
display.println(“Air”);
display.setTextSize(1);
display.setCursor(23, 20);
display.println(“Qulaity monitor”);
display.display();
delay(1200);
display.clearDisplay();

display.setTextSize(2);
display.setCursor(20, 20);
display.println(“ielectrony”);
display.display();
delay(1000);
display.clearDisplay();
}

void loop() {
display.clearDisplay();
air_sensor();
sendSensor();
display.display();
}

اترك تعليقاً

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