সুচিপত্র:

Arduino চালিত ধুলো কণা পর্যবেক্ষণ স্টেশন: 4 টি ধাপ (ছবি সহ)
Arduino চালিত ধুলো কণা পর্যবেক্ষণ স্টেশন: 4 টি ধাপ (ছবি সহ)

ভিডিও: Arduino চালিত ধুলো কণা পর্যবেক্ষণ স্টেশন: 4 টি ধাপ (ছবি সহ)

ভিডিও: Arduino চালিত ধুলো কণা পর্যবেক্ষণ স্টেশন: 4 টি ধাপ (ছবি সহ)
ভিডিও: Thorium: An energy solution - THORIUM REMIX 2011 2024, নভেম্বর
Anonim
Arduino চালিত ধুলো কণা পর্যবেক্ষণ কেন্দ্র
Arduino চালিত ধুলো কণা পর্যবেক্ষণ কেন্দ্র

আপনি মোটামুটি সহজেই এমন একটি DIY ইন্টারনেট তৈরি করতে পারেন যা আপনার বাড়িতে $ 50 এরও কম সময়ে ধুলো দূষণ পর্যবেক্ষণ করে এবং যখন ধূলিকণার মাত্রা খুব বেশি হয়ে যায় তখন বিজ্ঞপ্তি পান যাতে আপনি রুমটি বায়ুচলাচল করতে পারেন, অথবা আপনি এটি বাইরে সেট করতে পারেন এবং যদি এটি হয় তবে বিজ্ঞপ্তি পেতে পারেন আপনি যদি অত্যন্ত দূষিত এলাকায় থাকেন তাহলে বাইরে যাওয়া নিরাপদ।

আমি এটি একটি স্কুল প্রকল্প হিসাবে তৈরি করেছি, তাই আমার কাছে এমন একটি পরিষেবা খুঁজে পাওয়ার যথেষ্ট সময় ছিল না যা MQTT বার্তা গ্রহণ করবে এবং সেগুলি আপনাকে বিজ্ঞপ্তি বা ইমেলের মতো পাঠাবে।

এছাড়াও মনে রাখবেন যে সেন্সরটি সর্বদা চালিত রাখলে ফ্যানের জীবনকাল হ্রাস পাবে।

ধাপ 1: যন্ত্রাংশ প্রয়োজন

যন্ত্রাংশ প্রয়োজন
যন্ত্রাংশ প্রয়োজন

আপনার যা লাগবে

  • আরডুইনো উনো
  • Arduino ইথারনেট ieldাল
  • পার্টিকুলেট ম্যাটার লেজার সেন্সর (সাধারণত ইবে/অ্যালিয়েপ্রেস এ $ 10- $ 30 এর জন্য যান)
  • DHT11 তাপমাত্রা এবং আর্দ্রতা সেন্সর (alচ্ছিক)
  • ব্রেডবোর্ড
  • জাম্পারের তার

পদক্ষেপ 2: অংশগুলি একত্রিত করুন

অংশগুলি একত্রিত করুন
অংশগুলি একত্রিত করুন

প্রথমে, আপনাকে Arduino এ ইথারনেট ieldাল প্লাগ করতে হবে

PM সেন্সরের একাধিক তার আছে, কিন্তু আমাদের যেগুলো দরকার তা হল VCC, GND, TX, RX।

VCC এবং GND কে যথাক্রমে + এবং - ব্রেডবোর্ডে সংযুক্ত করুন।

Arduino হার্ডওয়্যার RX এবং TX পিন আছে, কিন্তু আমরা যথাক্রমে RX এবং TX পিনের সফ্টওয়্যার এমুলেশন পিন 2 এবং 3 এ ব্যবহার করব। সেন্সরের RX কে Arduino এর TX এবং সেন্সরের TX কে Arduino এর RX এ প্লাগ করুন।

আপনি যদি তাপমাত্রা সেন্সর ব্যবহার করতে যাচ্ছেন, VCC এবং GND লাইনগুলিকে + এবং - ব্রেডবোর্ডে এবং ডাটা লাইনে 7 পিন করুন।

ধাপ 3: কোড

আপনি হয় রাস্পবেরি পাই বা কম্পিউটারে বাড়িতে সবসময় MQTT ব্রোকার ইনস্টল করতে পারেন, অথবা ক্লাউড MQTT পরিষেবা যেমন ক্লাউড MQTT ব্যবহার করতে পারেন। তারপরে আপনি একটি স্ক্রিপ্ট লিখতে পারেন যা আইএফটিটি ওয়েবহুকের কাছে এইচটিটিপি হিসাবে ডেটা প্রেরণ করে, কারণ তারা এখনও এমকিউটিটি ওয়েবহুক সমর্থন করে না এবং আপনার বাড়িতে ধুলোর মাত্রা খুব বেশি হলে বিজ্ঞপ্তি সেট আপ করে।

আরডুইনো এয়ার স্টেশন

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IPAddress ip (169, 169, 100, 98);
বাইট ম্যাক = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
constchar *mqtt_server = "m23.cloudmqtt.com";
constint mqtt_port = 11895;
constchar *mqtt_user = "jhetjewk";
constchar *mqtt_pass = "QB2p9PiMV6pn";
constchar *mqtt_client_name = "arduinoClient1"; // ক্লায়েন্ট সংযোগগুলির একই সংযোগের নাম নেই
ইথারনেট ক্লায়েন্ট ethClient;
PubSubClient ক্লায়েন্ট (ethClient);
সফটওয়্যার সিরিয়াল pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
স্বাক্ষরবিহীন আইডি;
// ফাইল myFile;
স্ট্রিং গুলি;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
অকার্যকর সেটআপ() {
Serial.begin (57600);
pmSerial.begin (9600);
আইডি = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
যদি (Ethernet.begin (mac) == 0)
{
Serial.println ("DHCP ব্যবহার করে ইথারনেট কনফিগার করতে ব্যর্থ");
// নির্দিষ্ট আইপি অ্যাডারের সাথে চেষ্টা করুন
Ethernet.begin (ম্যাক, আইপি);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (কলব্যাক);
বিলম্ব (2000);
Serial.println (Ethernet.localIP ());
client.connect ("arduinoClient", mqtt_user, mqtt_pass);
সিরিয়াল.প্রিন্ট ("rc =");
Serial.print (client.state ());
সিরিয়াল.প্রিন্ট ("\ n");
}
voidloop () {
intindex = 0;
গৃহ মান;
পূর্ববর্তী মান;
যদি (! client.connected ())
{
যদি (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("সংযুক্ত");
}
}
যখন (pmSerial.available ()) {
মান = pmSerial.read ();
যদি ((index == 0 && value! = 0x42) || (index == 1 && value! = 0x4d)) {
Serial.println ("ডেটা হেডার খুঁজে পাচ্ছি না।");
প্রত্যাবর্তন;
}
যদি (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) {
previousValue = মান;
}
elseif (index == 5) {
pm1 = 256 * previousValue + value;
মূল ["pm1"] = abs (pm1);
}
elseif (index == 7) {
pm2_5 = 256 * previousValue + value;
মূল ["pm2_5"] = abs (pm2_5);
}
elseif (index == 9) {
pm10 = 256 * previousValue + value;
মূল ["pm10"] = abs (pm10);
}
elseif (সূচী> 15) {
বিরতি;
}
সূচক ++;
}
যখন (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
যদি (DHT.temperature == -999 || DHT.humidity == -999) {
মূল ["তাপমাত্রা"] = "N/A";
মূল ["আর্দ্রতা"] = "N/A";
} অন্য {
মূল ["তাপমাত্রা"] = DHT.temperature;
মূল ["আর্দ্রতা"] = DHT. আর্দ্রতা;
}
sendResults ();
আইডি ++;
বিলম্ব (5000);
}
voidsendResults () {
// এমকিউটিটিতে প্রকাশ করুন
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// সিরিয়াল থেকে ডিবাগ
root.printTo (সিরিয়াল);
সিরিয়াল.প্রিন্ট ('\ n');
}
// সাবস্ক্রাইব করা টপিক (গুলি) এ আগত বার্তাগুলি পরিচালনা করে
voidcallback (char* topic, byte* payload, unsignedint length) {
}

GitHub দ্বারা air দিয়ে হোস্ট করা rawair_quality.ino দেখুন

ধাপ 4: বাক্সটি একত্রিত করুন

বাক্সটি একত্রিত করুন
বাক্সটি একত্রিত করুন
বাক্সটি একত্রিত করুন
বাক্সটি একত্রিত করুন
বাক্সটি একত্রিত করুন
বাক্সটি একত্রিত করুন

আমি শুধু একটি বাক্স ব্যবহার করেছি যা আমি চারপাশে পড়ে ছিলাম এবং সেন্সর থেকে বাতাস বের করার জন্য একটি ছিদ্র করেছিলাম এবং তারগুলি বাইরে যাওয়ার জন্য একটি গর্ত কেটে ফেলেছিলাম (যদিও এটি কিছুটা বড় ছিল)।

আমি বাক্সে সেন্সর সংযুক্ত করতে আঠালো প্যাড ব্যবহার করেছি, বাক্সে ড্রিল করা গর্তের সাথে সেন্সরের ইনপুট হোলটি সারিবদ্ধ করে।

অবশেষে, আমি ইথারনেট এবং পাওয়ার ক্যাবল প্লাগ করেছি।

প্রস্তাবিত: