آموزش آردوینوپروژه های آردوینو

سنجش کیفیت هوا با آردوینو و سنسور Nova SDS011

آلودگی هوا در بسیاری از شهرها مسئله ای جدی است و شاخص کیفیت هوا هر روز بدتر می شود. براساس گزارش سازمان بهداشت جهانی ، تعداد بیشتری از افراد در اثر ذرات خطرناک در هوا دچار مرگ زودرس میشوند. در این پروژه با آردوینو و سنسور Nova SDS011 دستگاهی را برای نظارت بر کیفیت هوا با اندازه گیری ذرات PM2.5 و PM10 میسازیم. مقادیر محاسبه شده در نمایشگر OLED نمایش داده میشوند. فیلم عملکرد این پروژه را نشان میدهد.

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

شماتیک مدار تجزیه و تحلیل کیفیت هوا با آردوینو

نمودار مدار اندازه گیری ذرات PM2.5 و PM10 با استفاده از Arduino بسیار ساده است و در زیر آورده شده است.

شماتیک مدار تجزیه و تحلیل کیفیت هوا با آردوینو

برای یادگیری آردوینو (برنامه نویسی، ساخت ربات، ارتباط با اندروید) روی دوره آموزش آردوینو کلیک کنید.
برای یادگیری کامل الکترونیک روی دوره آموزش الکترونیک کلیک کنید.

سنسور SDS011 و ماژول نمایش OLED هر دو با +5 ولت و GND تغذیه می شوند. پایه های فرستنده و گیرنده SDS011 به پایه های D3 و D4 آردوینو Nano متصل می شوند. از آنجا که ماژول OLED از ارتباطات SPI استفاده می کند ، ما یک ارتباط SPI بین ماژول OLED و Arduino Nano برقرار کرده ایم. اتصالات در جدول زیر نشان داده شده است:

شماره پین پین ماژول OLED پین آردوینو
1 GND Ground
2 VCC 5V
3 D0 10
4 D1 9
5 RES 13
6 DC 11
7 CS 12

قطعات مورد نیاز

  1. برد آردوینو نانو
  2. سنسور Nova PM SDS011
  3. صفحه نمایش OLED SSD1306 SPI

کد مانیتورینگ کیفیت هوا با SDS011 و آردوینو

کد کامل پروژه در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا قسمت های مهم کد را بررسی میکنیم. این کد از کتابخانه های SDS011 ، Adafruit_GFX و Adafruit_SSD1306 استفاده می کند. برای نصب کتابخانه، آموزش نصب کتابخانه در آردوینو را مشاهده کنید.

پس از نصب کتابخانه ها در Arduino IDE ، کد را با فراخوانی کتابخانه های مورد نیاز آغاز میکنیم.

#include <SDS011.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

در خطوط بعدی ، دو متغیر برای ذخیره مقادیر PM10 و PM2.5 تعریف کنید.

float p10,p25;

سپس دو ثابت برای تعیین طول و عرض نمایشگر OLED ایجاد میکنیم.

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

سپس پایه های ارتباطی SPI را در جایی که OLED Display متصل است تعریف کنید.

#define OLED_MOSI   9
#define OLED_CLK   10
#define OLED_DC    11
#define OLED_CS    12
#define OLED_RESET 13

سپس دستور اصلی پیکربندی نمایشگر OLED را وارد میکنیم.

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

اکنون در داخل تابع setup () کار ارتباط سریال، نمایشگر OLED و سنسور را شروع میکنیم.

my_sds.begin(3,4);
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC);

در داخل void loop () ، مقادیر PM10 و PM2.5 را از سنسور SDS011 میگیریم و مقادیر را روی سریال مانیتور نمایش میدهیم.

void loop() {
  error = my_sds.read(&p25,&p10);
  if (! error) {
    Serial.println("P2.5: "+String(p25));
    Serial.println("P10:  "+String(p10));

بعد از آن ، اندازه متن و رنگ متن را با استفاده از setTextSize () و setTextColor () تنظیم میکنیم.

display.setTextSize(2);
display.setTextColor(WHITE);

سپس در خط بعدی ، موقعیت متن را با استفاده از دستور setCursor (x، y) تعریف کنید. در اینجا ما مقادیر PM2.5 و PM10 را بر روی صفحه نمایش OLED نمایش خواهیم داد بنابراین خط اول از (0،15) شروع می شوو خط دوم از (0 ، 40) شروع می شود.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید
display.setCursor(0,15);
display.println("PM2.5");
display.setCursor(67,15);
display.println(p25);
display.setCursor(0,40);
display.println("PM10");
display.setCursor(67,40);
display.println(p10);

و در آخر ، برای نمایش متن در OLED Display ، دستور display () را وارد میکنیم.

display.display();
display.clearDisplay();

موارد موجود در فایل : سورس کامل

دانلود فایل های پروژه

میخواهید برنامه نویسی STM32 را یاد بگیرید؟

دوره آموزش STM32

میخواهید الکترونیک را یاد بگیرید؟

دوره آموزش الکترونیک
دوره آموزش آردوینو

میخواهید آردوینو را به صورت پروژه محور یاد بگیرید؟ برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید

برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام آیرنکس عضو شوید.

محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید) سعی میکنم تمام نظرات را پاسخ دهم.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *