به نام خدا
پروژه ی محاسبه ی آلودگی هوا با آردوینو همراه با کد پروژه
آلودگی هوا یکی از بزرگترین معضلات شهر های بزرگ است. در این پروژه ما قصد داریم سیستم بررسی آلودگی هوا با آردوینو بسازیم که کیفیت هوا را با استفاده از یک سرور اینترنتی بررسی می کند و هنگامی که میزان آلودگی از یک سطحی بیشتر شد و مقدار گاز های آلوده افزایش یافت و کیفیت هوا پایین آمد ، سیستم شروع به هشدار دادن می کند. دی اکسید کربن ، دود الکل ، بنزن و NH3 از گاز های مضری هستند که اگر مقدار پی پی امشان افزایش یابد و از حدی عبور کند سیستم شروع به هشدار می کند.
در این پروژه ما با استفاده از سنسور MQ135 این سیستم را ساخته ایم. این سنسور یکی از بهترین گزینه ها برای بررسی کیفیت هوا می باشد که می تواند اکثر گاز های مضر را تشخیص دهد و مقدار دقیق آن ها را نیز بدست آورد. با استفاده از این سیستم شما می توانید کیفیت هوای هر جایی که هستید بدست آوردید. البته باید کامپیوتر و یا موبایل با خود داشته باشید.
قطعات مورد نیاز پروژه ی بررسی آلودگی هوا با آردوینو:
سنسور گاز MQ135
آردوینو یونو (UNO)
ماژول وای فای ESP8266
ال سی دی
برد بورد
پتانسیومتر ۱۰ کیلو اهمی
یک عدد مقاومت ۱۰ کیلو اهمی و یک عدد مقاومت ۲۲۰ اهمی
بازر
توضیحات مدار و شماتیک آن:
قبل از همه باید ماژول وای فای ESP8266 را به آردوینو متصل کنیم. ESP8266 در ولتاژ ۳٫۳v راه اندازی میشود و اگر ۵ ولت به آن دهیم دچار آسیب می شود. Vcc و CH_PD را به پین ۳٫۳v آردوینو متصل کنید.
پین Rx ماژول ESP8266 نیز با ۳٫۳ ولت کار می کند و اگر آن به طور مستقیم به آردوینو وصل کنیم ، با آن ارتباط برقرار نمی کند. بنابراین باید تقسیم ولتاژ انجام دهیم تا ۵ ولت به ۳٫۳ تبدیل شود.همان طور که مشاهده می کنید این کار با اتصال سری سه مقاومت انجام می شود.
پین Tx و Rx ماژول ESP8266 به پین ۱۰ و ۹ آردوینو وصل شده اند.
ماژول وای فای به شما اجازه ی دسترسی به اینترنت را می دهد. ESP8266 قطعه ای بسیار ارزان است که باعث کارامد تر شدن سیستم ما می شود.
سپس باید ماژول MQ135 را به آردوینو متصل کنیم. Vcc سنسور با به ۵ ولت آردوینو و زمین سنسور را به زمین آردوینو متصل می کنیم. سپس پین آنالوگ سنسور را به پین A0 متصل می کنیم.
بازر نیز به پین هشت آردوینو متصل شده است.
نحوه ی کار:
سنسور MQ135 گاز های مضر را تشخیص می دهد و این مقدار را بر اساس پی پی ام به ما نشان می دهد. خروجی سنسور بر اساس سطح ولتاژ است که باید آن را به پی پی ام تبدیل کنیم. برای اینکار از کتابخانه ی آماده استفاده کرده ایم. هنگامی که مقدار کمتر از ۱۰۰۰ پی پی ام باشد ال سی دی و صفحه ی وب به ما هوای پاک را نشان می دهد. و هنگامی که از این مقدار عبور کرد و کمتر از ۲۰۰۰ پی پی ام بود ، بازر شروع به صدا دادن می کند و ال سی دی و صفحه ی وب هوای آلوده را نشان می دهد و اگر از ۲۰۰۰ پی پی ام بیشتر شد بازر به صدا دادن ادامه می دهد و نمایشگر ها به ما اعلان خطر می کنند.
دانلود کد پروژه :
دانلود فایل#include "MQ135.h" #include <SoftwareSerial.h> #define DEBUG true SoftwareSerial esp8266(9,10); // This makes pin 9 of Arduino as RX pin and pin 10 of Arduino as the TX pin const int sensorPin= 0; int air_quality; #include <LiquidCrystal.h> LiquidCrystal lcd(12,11, 5, 4, 3, 2); void setup() { pinMode(8, OUTPUT); lcd.begin(16,2); lcd.setCursor (0,0); lcd.print ("circuitdigest "); lcd.setCursor (0,1); lcd.print ("Sensor Warming "); delay(1000); Serial.begin(115200); esp8266.begin(115200); // your esp's baud rate might be different sendData("AT+RST\r\n",2000,DEBUG); // reset module sendData("AT+CWMODE=2\r\n",1000,DEBUG); // configure as access point sendData("AT+CIFSR\r\n",1000,DEBUG); // get ip address sendData("AT+CIPMUair_quality=1\r\n",1000,DEBUG); // configure for multiple connections sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80 pinMode(sensorPin, INPUT); //Gas sensor will be an input to the arduino lcd.clear(); } void loop() { MQ135 gasSensor = MQ135(A0); float air_quality = gasSensor.getPPM(); if(esp8266.available()) // check if the esp is sending a message { if(esp8266.find("+IPD,")) { delay(1000); int connectionId = esp8266.read()-48; /* We are subtracting 48 from the output because the read() function returns the ASCII decimal value and the first decimal number which is 0 starts at 48*/ String webpage = "<h1>IOT Air Pollution Monitoring System</h1>"; webpage += "<p><h2>"; webpage+= " Air Quality is "; webpage+= air_quality; webpage+=" PPM"; webpage += "<p>"; if (air_quality<=1000) { webpage+= "Fresh Air"; } else if(air_quality<=2000 && air_quality>=1000) { webpage+= "Poor Air"; } else if (air_quality>=2000 ) { webpage+= "Danger! Move to Fresh Air"; } webpage += "</h2></p></body>"; String cipSend = "AT+CIPSEND="; cipSend += connectionId; cipSend += ","; cipSend +=webpage.length(); cipSend +="\r\n"; sendData(cipSend,1000,DEBUG); sendData(webpage,1000,DEBUG); cipSend = "AT+CIPSEND="; cipSend += connectionId; cipSend += ","; cipSend +=webpage.length(); cipSend +="\r\n"; String closeCommand = "AT+CIPCLOSE="; closeCommand+=connectionId; // append connection id closeCommand+="\r\n"; sendData(closeCommand,3000,DEBUG); } } lcd.setCursor (0, 0); lcd.print ("Air Quality is "); lcd.print (air_quality); lcd.print (" PPM "); lcd.setCursor (0,1); if (air_quality<=1000) { lcd.print("Fresh Air"); digitalWrite(8, LOW); } else if( air_quality>=1000 && air_quality<=2000 ) { lcd.print("Poor Air, Open Windows"); digitalWrite(8, HIGH ); } else if (air_quality>=2000 ) { lcd.print("Danger! Move to Fresh Air"); digitalWrite(8, HIGH); // turn the LED on } lcd.scrollDisplayLeft(); delay(1000); } String sendData(String command, const int timeout, boolean debug) { String response = ""; esp8266.print(command); // send the read character to the esp8266 long int time = millis(); while( (time+timeout) > millis()) { while(esp8266.available()) { // The esp has data so display its output to the serial window char c = esp8266.read(); // read the next character. response+=c; } } if(debug) { Serial.print(response); } return response; }
دیدگاهها (0)