اتصال سنسور گاز های آتش زا و دود MQ-2 به آردوینو

امروزه سنسورها با تشخیص دود، آتش یا گاز و ارائه هشدار به کاربر، نقش عمده ای در ایمنی و امنیت بسیاری از آپارتمان ها، منازل و ادارات مختلف ایفا می کنند. به همین دلیل است که در مقاله امروز قصد داریم در مورد یکی از این سنسورها صحبت کنیم که معمولاً در آشکارسازهای دود و گاز استفاده می شود، یعنی سنسور گاز های آتش زا و دود MQ-2. این سنسور نه تنها می تواند گاز یا دود را تشخیص دهد، بلکه می تواند LPG، الکل، پروپان، هیدروژن، متان و مونوکسید کربن را نیز تشخیص دهد. بنابراین، بیایید یاد بگیریم که چگونه می توانیم از آن برای دادن حس بویایی به پروژه هایمان استفاده کنیم.
سنسور گاز MQ-2
ماژول حسگر تشخیص گاز MQ-2 دارای چهار پین VCC، GND، Aout و Dout است که میتوان از آنها برای دریافت اطلاعات ضروری از سنسور استفاده کرد.
- VCC پایه منبع تغذیه سنسور تشخیص گاز است که می تواند به 5 ولت متصل شود.
- GND پایه زمین برد است و باید به پایه GND آردوینو متصل شود.
- DOUT پین خروجی دیجیتال برد است، خروجی Low نشان می دهد گاز یا دود در جو وجود ندارد و خروجی High نشان دهنده وجود گاز یا دود در جو است.
- AOUT پین خروجی آنالوگ برد است که به ما سیگنال آنالوگ می دهد که بر اساس سطح گاز شناسایی شده بین vcc و زمین متفاوت است.
مدار راه اندازی سنسور گاز MQ-2 با آردوینو UNO
اتصال سنسور گاز های قابل اشتعال MQ2 به برد آردوینو اونو بسیار ساده است. در تصویر زیر مدار این اتصال را مشاهده میکنید. برای کار با سنسور ابتدا باید سنسور را تغذیه کنیم، برای این کار از پایه 5 ولت و GND برد آردوینو UNO استفاده می کنیم و پایه خروجی سنسور را به پایه A0 آردوینو وصل می کنیم.
همانطور که در شماتیک بالا نشان داده شده است، ما یک LED را به پین دیجیتال 6 آردوینو وصل کرده ایم و پایه آنالوگ سنسور به پایه A0 آردوینو وصل شده است و پایه GND بین LED و سنسور مشترک است. ما آردوینو را طوری برنامه ریزی می کنیم که روشنایی LED بسته به غلظت گاز موجود در جو تغییر کند.
کد آردوینو برای اتصال ماژول گاز MQ-2
کد ماژول حسگر گاز آردوینو mq-2 بسیار ساده و قابل درک است. ما فقط داده های آنالوگ را از سنسور می خوانیم و روشنایی LED را با توجه به داده های دریافتی تغییر می دهیم. لطفاً به یاد داشته باشید که ما فقط داده های آنالوگ خارج شده از سنسور را پردازش می کنیم. برای داده های دیجیتالی می توانید چراغ LED موجود در ماژول را ببینید.
کد خود را با اعلام دو ماکرو مقداردهی اولیه می کنیم، اولی برای led است که به آن یک LED وصل می کنیم و دومی sensorPin است که از طریق آن داده های خارج شده از سنسور را می خوانیم.
// پین سنسور خروجی ال ای دی پین D6، ورودی آنالوگ پین A0 #define ledPin 6 #define sensorPin A0
در مرحله بعد تابع setup() را داریم. در تابع setup، ارتباط سریال را با 9600 baud مقداردهی اولیه می کنیم. ما همچنین ledPin را به عنوان خروجی تنظیم می کنیم و پایه را LOW می کنیم. به این ترتیب در هنگام روشن کردن برد، ال ای دی خاموش میماند.
void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); }
در مرحله بعد تابع loop() را داریم، در تابع loop “خروجی آنالوگ:” را به صورت متن در نمایشگر سریال چاپ می کنیم و سپس تابع readSensor() را در داخل تابع Serial.println() فراخوانی می کنیم تا زمانی که readSensor() تابع اجرا می شود، داده برگشتی روی سریال مانیتور نمایش داده شود.
void loop() { Serial.print("Analog output: "); Serial.println(readSensor()); delay(500); }
در نهایت، تابع readSensor() خود را داریم که مقدار آنالوگ خوانده شده از طریق پین A0 آردوینو را برمی گرداند. در خط اول این تابع، متغیری به نام sensorValue را اعلام و تعریف کردهایم که در آن دادههای خامی را که از طریق A0 در آردوینو خوانده میشوند، قرار میدهیم. این داده در فرمت 10 بیتی است و از 0 -1023 است. به همین دلیل است که ما از تابع map استفاده کردهایم که عدد را به فرمت 8 بیتی یعنی از 0 تا 255 تبدیل میکند. زمانی که تابع map دادهها را خروجی میدهد، متغیر دیگری outputValue را ایجاد کردهایم و دادههای ایجاد شده را درون آن متغیر قرار میدهیم. در نهایت، ما از تابع داخلی analogWrite(ledPin، outputValue) آردوینو برای تولید یک سیگنال PWM که متناسب با داده های ورودی خوانده شده توسط ADC آردوینو است، استفاده کرده ایم.
int readSensor() { unsigned int sensorValue = analogRead(sensorPin); // خواندن خروجی سنسور unsigned int outputValue = map(sensorValue, 0, 1023, 0, 255); // تبدیل 10 به 8 بیتی if (outputValue > 65) analogWrite(ledPin, outputValue); // ایجاد سیگنال PWM else digitalWrite(ledPin, LOW); return outputValue; // برکرداندن مقدار }
این نشان دهنده پایان بخش کد سنسور گاز آردوینو MQ-2 است. اگر در مورد کد سوالی دارید در قسمت نظرات اعلام کنید.
توجه: لطفاً توجه داشته باشید که کد به گونهای نوشته شده است که led پس از رسیدن به مقدار مشخصی روشن میشود، اما اگر برنامه شما نیاز به خاموش کردن این ویژگی دارد، میتوانید این کار را به سادگی با حذف تابع analogWrite داخل if…else انجام دهید.
گیف زیر سنسور گاز MQ-2 را در حال کار نشان می دهد. در ابتدا می توانید ببینید که شدت روشنایی ال ای دی روی برد بورد کم است، اما وقتی فندک نزدیک سنسور میشود و گاز LPG به سنسور برخورد میکند، ال ای دی روشن میشود.
موارد موجود در فایل : سورس