در این پروژه ، ما قصد داریم از یک سنسور MQ-135 با آردوینو برای اندازه گیری غلظت CO2 استفاده کنیم. مقادیر غلظت CO2 اندازه گیری شده بر روی ماژول OLED نمایش داده می شود .
المان های مورد نیاز
آردوینو 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 نمایش داده می شوند:
ارسال پاسخ