سنجش کیفیت هوا با آردوینو و سنسور 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 |
قطعات مورد نیاز
- برد آردوینو نانو
- سنسور Nova PM SDS011
- صفحه نمایش 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();
موارد موجود در فایل : سورس کامل