در این پروژه، ما قصد داریم از یک سنسور MQ-135 با آردوینو برای اندازه گیری غلظت CO2 استفاده کنیم. مقادیر غلظت CO2 اندازه گیری شده بر روی ماژول OLED نمایش داده می شود. در ادامه این مطلب اندازه گیری غلظت CO2 هوا با استفاده از آردوینو و سنسور MQ-135 به طور کامل توضیح داده شده است.
اندازه گیری غلظت CO2 هوا بوسیله آردوینو و سنسور MQ-135
المان های مورد نیاز
- آردوینو Nano
- سنسور MQ-135
- سیم های جامپر
- ماژول SSD1306
- برد بورد
- مقاومت 22KΩ
برای این پروژه ، از SSD1306 که یک صفحه ی نمایشگر دو رنگ است استفاده می کنیم. این دستگاه می تواند بر روی سه پروتکل ارتباطی مختلف کار کند: حالت 3 سیمه SPI ، حالت 4 سیمه SPI و حالت I2C. در ادامه با اصول اولیه صفحه نمایش OLED آشنا می شویم .
مشخصات OLED:
اندازه: 0.96 اینچ
نوع صفحه نمایش: OLED
چیپ درایور: SSD1306
رزولوشن: 64 * 128 (پیکسل)
اندازه ماژول: 27.8 × 27.3 میلی متر
دمای کاری: 70 ~ 20- درجه سانتی گراد
دمای نگهداری: 80 ~ 30- درجه سانتی گراد
ولتاژ کاری: 3.3 ولت / 5 ولت
توان مصرفی: با تمام روشنایی حدود 25 میلی آمپر و در حالت خاموش حدود 1.5 میلی آمپر.
راه اندازی سنسور MQ-135
سنسور گاز MQ-135 یک سنسور کیفیت هوا برای تشخیص طیف وسیعی از گازها از جمله NH3 ، NOx ، الکل ، بنزن ، دود و CO2 است. در این پروژه ، ما از یک ماژول سنسور MQ-135 برای اندازه گیری غلظت CO2 در هوا استفاده می کنیم. دیاگرام مدار برای برد MQ-135 به صورت زیر است:
مقاومت بار RL نقش بسیار مهمی در کارکرد سنسور دارد. این مقاومت با توجه به غلظت گاز مقدار مقاومت خود را تغییر می دهد. با توجه به دیتاشیت MQ-135 ، مقدار مقاومت بار می تواند در هر نقطه از 10KΩ تا 47KΩ متغیر باشد.
بنابراین برای اندازه گیری CO2 با دقت بالاتر ، باید مقاومت 1KΩ را با مقاومت 22KΩ جایگزین کنید تا مقدار اندازه گیری شده به واقعیت نزدیک تر باشد.
دیاگرام مدار اتصال MQ135 و OLED به آردوینو
مدار بسیار ساده است زیرا ما فقط ماژول سنسور MQ-135 و صفحه نمایش OLED را به آردوینو نانو متصل می کنیم. سنسور گاز MQ-135 و ماژول نمایش OLED هر دو با +5V و GND تغذیه می شوند. پین Analog Out سنسور MQ-135 به پین A0 آردوینو نانو متصل می کنیم. از آنجا که ماژول صفحه نمایش OLED از ارتباط SPI استفاده می کند ، ما یک ارتباط SPI بین ماژول OLED و آردوینو نانو برقرار کرده ایم. اتصالات را درجدول زیر نشان داده ایم:
محاسبه مقدار Ro سنسور MQ-135
اکنون که مقدار RL را می دانیم ، حال مقدار Ro در هوای پاک را بدست می آوریم. ابتدا کتابخانه MQ-135 دانلود می کنیم ، از کد زیر برای خواندن مقادیر Ro استفاده می کنیم:
1 2 3 4 5 6 7 8 9 10 |
#include "MQ135.h" void setup (){ Serial.begin (9600); } void loop() { MQ135 gasSensor = MQ135(A0); // Attach sensor to pin A0 float rzero = gasSensor.getRZero(); Serial.println (rzero); delay(1000); } |
اکنون که مقادیر Ro را تغییر داده ایم ، به مسیر زیر می رویم و فایل MQ135.h را باز کرده و مقادیر RLOAD & RZERO را تغییر می دهیم.
تا مقادیر رفرنس ما در کتابخانه جهت خواندن میزان فعلی گاز در اتمسفر صحیح باشد.
Documents > Arduino > libraries > MQ135-master folder
1 2 3 4 |
///The load resistance on the board #define RLOAD 22.0 ///Calibration resistence at atmospheric CO2 level #define RZERO 5804.99 |
کد آردوینو برای اندازه گیری CO2 با استفاده از سنسور MQ135
از کتابخانه های Adafruit_GFX و Adafruit_SSD1306 و MQ135.h استفاده می کنیم.
1 2 3 4 |
#include "MQ135.h" #include <SPI.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> |
عرض و ارتفاع OLED را تعریف می کنیم . در این پروژه ، ما از یک صفحه نمایش 128 × 64 SPI OLED استفاده می کنیم. می توانیم متغیرهای SCREEN_WIDTH و SCREEN_HEIGHT را با توجه به صفحه نمایش خود تغییر دهیم.
1 2 |
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 |
سپس پین های ارتباطی OLEDرا تعریف می کنیم.
1 2 3 4 5 |
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13 |
پس از آن ، پین آردوینو را که سنسور MQ-135 به آن متصل است پیکربندی می کنیم.
1 |
int sensorIn = A0; |
اکنون در داخل تابع ()setup ، به صفحه نمایش OLED با تابع ()begin مقدار اولیه میدهیم.
1 2 3 |
Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC); display.clearDisplay(); |
در داخل تابع () loop ، ابتدا با فراخوانی تابع () analogRead مقادیر سیگنال را در پین آنالوگ آردوینو می خوانیم.
1 2 |
val = analogRead(A0); Serial.print ("raw = "); |
سپس در خط بعدی با دستور ()Sensor.get PPM مقدار ppm گاز را در سریال مانیتور مشاهده می کنیم.
1 2 3 |
float ppm = gasSensor.getPPM(); Serial.print ("ppm: "); Serial.println (ppm); |
پس از آن ، اندازه متن و رنگ متن را با استفاده از() setTextSize و ()setTextColor تنظیم می کنیم.
1 2 |
display.setTextSize(1); display.setTextColor(WHITE); |
سپس در خط بعدی ، موقعیتی را که متن با استفاده از متد setCursor (x ، y) شروع می شود ، تعریف می کنیم. و مقادیر CO2 را روی صفحه نمایش OLED با استفاده از تابع () display.println چاپ می کنیم.
1 2 3 4 5 6 7 |
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 را فراخوانی کنید تا متن روی صفحه نمایش OLED نمایش داده شود.
1 2 |
display.display(); display.clearDisplay(); |
پس از آماده شدن سخت افزار و کد ، زمان تست سنسور است. برای این کار ، Arduino را به لپ تاپ متصل کرده ، پورت و برد را انتخاب کرده و دکمه آپلود را فشار می دهیم سپس مانیتور سریال خود را باز کرده و مدتی منتظر می مانیم (فرآیند پیش گرم کردن) ، سپس داده های نهایی را مشاهده خواهیم کرد. مقادیر مطابق شکل زیر بر روی صفحه نمایش OLED نمایش داده می شوند:
ارسال پاسخ