در این پست قصد داریم به نحوه ساخت یک دستگاه هشدار دهنده نشتی گاز شهری توسط برد آردوینو Arduino Uno بپردازیم. عملکرد این دستگاه پس از اتمام عملیات ساخت آن به این صورت است که، در صورت نشتی و یا پخش شدن گاز شهری در محیط، دستگاه ضمن پخش آلارم، این موضوع را از طریق تماس تلفنی به شخص مورد نظر ما، اعلام می کند.
از ویژگی های اصلی این پروژه عدم نیاز به خط تلفن ثابت برای برقراری تماس تلفنی در مواقع اضطراری است، چراکه در این پروژه برای برقراری تماس تلفنی از ماژول سیم کارت استفاده شده است. همچنین لازم به ذکر است در طراحی این پروژه برای شناسایی نشتی گاز از ماژول تشخیص گاز متان MQ-4 استفاده شده است، که دارای دقت و پایداری بسیار بالایی می باشد.
لیست قطعات مورد نیاز
برد آردوینو Arduino UNO R3 مدل DIP | 1 عدد |
ماژول بازر اکتیو Active Buzzer | 1 عدد |
ماژول تشخیص گاز متان MQ4 | 1 عدد |
ماژول مخابراتی SIM800L به همراه برد راه انداز | 1 عدد |
لامپ LED قرمز سایز 5mm میلی متر مدل مات | 1 عدد |
مقاومت 220 اهم با توان 0.25 وات و تلرانس 5 درصد | 1 عدد |
سیم جامپر برد بوردی مدل یک سر نری - مادگی (سری 40تایی) | 1 عدد |
آداپتور 5V ولت 2A آمپر | 1 عدد |
مرحله اول : اتصال ماژول گاز MQ-4 به برد آردوینو
1- ابتدا پایه GND ماژول را به یکی از پایه های GND بر روی برد آردوینو متصل کنید.
2- پایه VCC ماژول گاز MQ4 را به پایه دیجیتال شماره 8 بر روی برد آردوینو متصل کنید.
3- پایه DO ماژول سنسور گاز MQ-4 را به پایه دیجیتال شماره 9 بر روی برد آردوینو متصل کنید.
4- پایه AO ماژول MQ-4 به جایی متصل نمی شود.
مرحله دوم : اتصال ماژول Buzzer به برد آردوینو
1- پایه GND ماژول بازر را به یکی از پایه های GND بر روی برد آردوینو متصل کنید.
2- پایه VCC ماژول Buzzer را به پایه دیجیتال شماره 13 بر روی برد آردوینو متصل کنید.
3- پایه I/O ماژول بازر را به پایه دیجیتال شماره 12 بر روی برد آردوینو متصل کنید.
مرحله سوم : اتصال ماژول سیم کارت SIM800L به برد آردوینو
1- پایه GND ماژول SIM800L را به یکی از پایه های GND بر روی برد آردوینو متصل کنید.
2- پایه VCC ماژول GSM را به پایه 5V بر روی برد آردوینو متصل کنید.
3- پایه TXD ماژول سیم کارت را به پایه دیجیتال شماره 2 بر روی برد آردوینو متصل کنید.
3- پایه RXD ماژول SIM800L را به پایه دیجیتال شماره 3 بر روی برد آردوینو متصل کنید.
مرحله چهارم : اتصال لامپ LED به برد آردوینو
در این پروژه برای نمایش وضعیت صحیح و وضعیت خطا از یک لامپ LED پنج میلی متری استفاده شده است، که توسط یک مقاومت 220 اهمی، طبق نقشه شماتیک زیر به برد آردوینو متصل می شود. همچنین عملکرد این لامپ ال.ای.دی به این صورت است، زمانیکه لامپ LED در حالت چشمک زدن است یعنی هنوز ماژول سیم کارت به شبکه GSM متصل نشده و دستگاه آماده کار نیست و زمانیکه لامپ LED به صورت ثابت برای حداقل 15 ثانیه روشن ماند یعنی دستگاه به موفقیت به شبکه GSM متصل شده است و آماده کار می باشد.
1- پایه منفی لامپ LED را به پایه دیجیتال شماره 7 برد آردوینو متصل کنید. همچنین می توانید این پایه را به پایه GND بر روی برد آردوینو نیز متصل کنید.
2- پایه مثبت لامپ LED را به واسطه یک مقاومت 220 اهمی به پایه دیجیتال شماره 6 بر روی برد آردوینو متصل کنید.
مرحله پنجم : پروگرام کردن برنامه بر روی برد آردوینو
1- نرم افزار آردوینو را بر روی سیستم خود اجرا کنید، اگر بار اول است که با برد Arduino کار می کنید و این نرم افزار را بر روی سیستم خود ندارید، می توانید نرم افزار آردوینو و نحوه نصب آن را از اینجا دریافت نمائید.
2- نرم افزار آردوینو را بر روی سیستم خود اجرا کنید.
3- پس از اجرای نرم افزار آردوینو، از طریق منوی File بر روی گزینه New کلیک کنید.
4- تمامی کدهای زیر را کپی کنید و در پنجره جدید باز شده بچسبانید (Paste).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
#include <SoftwareSerial.h> const byte RX_PIN = 2; const byte TX_PIN = 3; SoftwareSerial SIM(RX_PIN, TX_PIN); const byte PIN_VCC_Buzzer = 13; const byte PIN_Trigger_Buzzer = 12; const byte PIN_VCC_MQ4 = 8; const byte PIN_Digital_MQ4 = 9; const byte PIN_VCC_LED = 6; const byte PIN_GND_LED = 7; int _timeout; int ErrorTime; int BuzzerState; String _buffer; String MobileNumber = "";//Enter your mobile number const long interval = 500; unsigned long previousMillis = 0; void setup() { SIM.begin(9600); _buffer.reserve(255); pinMode(PIN_VCC_Buzzer, OUTPUT); pinMode(PIN_Trigger_Buzzer, OUTPUT); pinMode(PIN_VCC_MQ4, OUTPUT); pinMode(PIN_Digital_MQ4, INPUT); pinMode(PIN_VCC_LED, OUTPUT); pinMode(PIN_GND_LED, OUTPUT); digitalWrite(PIN_VCC_Buzzer, HIGH); digitalWrite(PIN_Trigger_Buzzer, HIGH); digitalWrite(PIN_VCC_MQ4, HIGH); digitalWrite(PIN_VCC_LED, HIGH); digitalWrite(PIN_GND_LED, HIGH); SerialOk(); GsmOk(); BasicSettings(); digitalWrite(PIN_GND_LED, LOW); } void loop() { if (digitalRead(PIN_Digital_MQ4) == 0) { Error(); } } void SerialOk() { digitalWrite(PIN_GND_LED, LOW); while (_readSerial("AT").indexOf("OK") == -1) { digitalWrite(PIN_GND_LED, HIGH); delay(1000); digitalWrite(PIN_GND_LED, LOW); } digitalWrite(PIN_GND_LED, HIGH); } void GsmOk() { digitalWrite(PIN_GND_LED, LOW); while (_readSerial("AT+CGREG?").indexOf("+CGREG: 0,1") == -1) { digitalWrite(PIN_GND_LED, HIGH); delay(1000); digitalWrite(PIN_GND_LED, LOW); } digitalWrite(PIN_GND_LED, HIGH); } void BasicSettings() { digitalWrite(PIN_GND_LED, LOW); while (_readSerial("ATE0").indexOf("OK") == -1) { digitalWrite(PIN_GND_LED, HIGH); delay(1000); digitalWrite(PIN_GND_LED, LOW); } digitalWrite(PIN_GND_LED, LOW); while (_readSerial("AT+CMGF=1").indexOf("OK") == -1) { digitalWrite(PIN_GND_LED, HIGH); delay(1000); digitalWrite(PIN_GND_LED, LOW); } digitalWrite(PIN_GND_LED, LOW); while (_readSerial("AT+MORING=1").indexOf("OK") == -1) { digitalWrite(PIN_GND_LED, HIGH); delay(1000); digitalWrite(PIN_GND_LED, LOW); } digitalWrite(PIN_GND_LED, LOW); while (_readSerial("AT+CSMP=17,167,0,0").indexOf("OK") == -1) { digitalWrite(PIN_GND_LED, HIGH); delay(1000); digitalWrite(PIN_GND_LED, LOW); } } void Error() { if (MobileNumber != "") { digitalWrite(PIN_Trigger_Buzzer, LOW); BuzzerState = LOW; SIM.println ("ATH"); delay (1000); SIM.print ("ATD"); SIM.print (MobileNumber); SIM.println (";"); delay (3000); ErrorTime = 0; while (ErrorTime < 70) { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; ErrorTime++; if (BuzzerState == LOW) { BuzzerState = HIGH; } else { BuzzerState = LOW; } digitalWrite(PIN_Trigger_Buzzer, BuzzerState); } } digitalWrite(PIN_Trigger_Buzzer, HIGH); SIM.println ("ATH"); } } String _readSerial(String _print) { SIM.flush(); if (SIM.readString() != "") { while (SIM.readString() != "") { } } _buffer = ""; if (_print != "") { SIM.println (_print); _timeout = 0; while (!SIM.available() && _timeout < 12000 ) { delay(1); _timeout++; } if (SIM.available()) { _buffer = SIM.readString(); } } return _buffer; } |
5- در خط شماره 15 برنامه شماره موبایل مورد نظر خود را که قصد دارید در هنگام تشخیص گاز دستگاه با آن تماس بگیرد را وارد نمائید.
6- حال از طریق منوی File گزینه Save را انتخاب کنید و برنامه را در محل دلخواه خود ذخیره کنید.
7- پس از ذخیره برنامه از طریق منوی Tools به زیر منوی Board رفته و از لیست کشویی باز شده آیتم Arduino/Genuino Uno را انتخاب کنید.
8- دوباره از طریق همان منوی Tools به زیر منوی Port رفته و از لیست کشویی باز شده شماره پورت USB که از طریق آن برد آردینو به کامپیوتر متصل شده است را انتخاب کنید.
9- در پایان برای انتقال برنامه به برد آردوینو کافیست تا بر روی آیکون در نرم افزار آردوینو کلیک کنید.
مرحله ششم : راه اندازی پروژه
1- مطمئن شوید قبل از پروگرام کردن برنامه بر روی برد آردوینو در خط شماره 15 برنامه شماره موبایل مورد نظر خود را جهت دریافت هشدار وارد کرده باشید.
2- برد آردوینو را به صورت کامل از کامپیوتر جدا کنید.
3- یک سیم کارت که مطمئن هستید اعتبار ریالی دارد و سالم است را در سوکت سیم کارت ماژول SIM800L قرار دهید.
4- توسط یک آداپتور 5 ولت DC با حداقل جریان 2 آمپر برد آردوینو را راه اندازی کنید.
5- منتظر بمانید تا لامپ LED به صورت ثابت روشن بماند و هیچگونه چشمکی نزند.
6- ماژول گاز MQ-4 را در مجاورت گاز شهری قرار دهید، همچنین می توانید از فندک برای انجام آزمایش استفاده کنید.
7- پس از تشیخص گاز توسط دستگاه، باید ماژول بازر فعال شود و سپس پس از چند ثانیه شماره تلفنی که در برنامه وارد کرده اید، زنگ بخورد.
سلام دوست عزیز
این پروژه از لحاظ مداری ساده می باشد و به صورت عملی تست شده است فقط باید در هنگام بستن پروژه موارد زیر را رعایت فرمایید:
1- توسط یک مولتی متر مطمئن شوید تمامی سیم ها و اتصالات برقرار هستند.
2- ماژول SIM800L را در خارج از مدار توسط یک باتری موبایل روشن کنید و بررسی کنید که با گذاشتن سیم کارت به شبکه موبایل متصل می شود یا خیر!
3- توسط یک ماژول مبدل سریال به USB بررسی کنید که ماژول SIM800L بر روی باودریت 9600 ارتباط می گیرد یا خیر!
4- پایه شماره 9 برد آردوینو را توسط یک سیم به ولتاژ مثبت 5 ولت متصل کنید حال در صورتیکه برنامه را به درستی بر روی برد آردوینو پروگرام کرده باشید و برد آردوینو شما نیز سالم باشد حتما باید با صفر کردن پایه شماره 9 برد آردوینو، ماژول بازر فعال شود.
5- حتما از یک آداپتور 5 ولت DC با حداقل جریان 2 آمپر برد آردوینو را راه اندازی کنید.
سلام ببخشید من یه ماژل گاز mq135خریدم وقتی وصل می کنم روشن نمی شه پایه هاش رو عوض کردم تا روشن شد ولیکار نکرد حتا برنامه نویسیش رو هم تغییر دادم
لطفا زود جواب بدید🙏🙏من نیاز دارم وقت ندارم
سلام من برنامه نویسی اش را همان که توی سایت بود را کپی کردم ولی 5ولت را می زنم به 9 و در می یارم کار نمی کنه چیکار کنم؟؟
اتصالات هم درست است
سلام خسته نباشید من همه اون کارهایی که گفتین رو انجام دادم ولی وقتی برنامه رو پروگرام یا کد رو اجرا یا منبع تغذیه رو به برد میزنم یازر شروع میکنه به صدا زدن و چراغ چشمک میزنه قبل اینکه من گازی رو مجاورت سنسور بگیرم ، در همین حالت گاز رو میگیرم تماس تلفنی برقرار نمیشه لطفا کمکم کنید.ممنون
سلام من برد رو به لپ تاپ وصل کردم وطبق دستورالعمل انجام دادم ولی در برنامه اردویینو بعد از ران کردن خطا میده
خطای 302
سلام من همه مراحل رو انجام دادم ولی برد رو که ب برق متصل میکنم بوق یکسره میده گاز هم نزدیکش گرفتم تماس نگرفت
با سلام و احترام
در صورتیکه مدار به درستی بسته شده باشد نباید بدون نزدیک کردن گاز به سنسور ماژول بازر فعال شود. لطفا اتصالات و عملکرد ماژول گاز و همچنین بازر را به دقت بررسی کنید.
50 بار اتصالاتو امتحان کردم و باز و بسته کردم نشد و اینکه بجز بازر ک صداش یکسره شده مازول سیمکارت هم تماس برقرار نمیکته
میشه به جای mq4 ماژول mq3 استفاده کرد
با سلام و احترام
بهتر است ابتدا عملکرد ماژول گاز را بررسی کنید، برای انجام این آزمایش ابتدا ماژول گاز را به صورت کامل از مدار جدا کنید و سپس یک ولتاژ 5 ولتی با رعایت پلاریته به پایه های 5V و GND ماژول گاز متصل کنید، پس از آن پلاریته منفی یک لامپ LED را به خروجی پایه Dout ماژول متصل کنید و پایه مثبت لامپ LED را توسط یک مقاومت 220 اهمی به مثبت 5 ولت تغذیه متصل کنید.
حال تغذیه را متصل کنید و سنسور را توسط گاز آزمایش کنید. اگر ماژول شما سالم باشد باید پس از تشخیص نشتی گاز لامپ LED روشن شود.
بله – می توانید استفاده کنید.
سلام ارادت جناب مهندس اکبری خداقوت، دستمریزاد
یسری آموزش ویدئویی آردوینو داخل سایت بود هرچی میگردم پیدا نمیکنم درصورت امکان لیتک رو بذارید ، تشکر از زحمات شما
با سلام و احترام
ممنون از لطف و محبت شما
برای دسترسی به آموزش های آردوینو می توانید لینک زیر را مشاهده فرمایید:
آموزش پروژه محور آردوینو
سلام خداقوت جناب مهندس
ببخشید بنده دانشجو کارشناسی هستم میخوام اگر امکان داره به عنوان پروژه تحویل دانشگاه بدم، قبل از اینکه به دانشگاه بگم، میخواستم بگم این ماژول ها به صورت دیپ و یک رو روی برد میشه لحیم کرد درسته؟ ممنون میشم تشکر
با سلام و احترام
بله، می توانید یک برد مسی سوراخ دار تهیه کنید و ماژول ها را به صورت DIP بر روی برد نصب و لحیم کاری کنید.