সুচিপত্র:

RaspberryPi 4:15 ধাপের উপর ভিত্তি করে একটি কম খরচে IoT এয়ার কোয়ালিটি মনিটর (ছবি সহ)
RaspberryPi 4:15 ধাপের উপর ভিত্তি করে একটি কম খরচে IoT এয়ার কোয়ালিটি মনিটর (ছবি সহ)

ভিডিও: RaspberryPi 4:15 ধাপের উপর ভিত্তি করে একটি কম খরচে IoT এয়ার কোয়ালিটি মনিটর (ছবি সহ)

ভিডিও: RaspberryPi 4:15 ধাপের উপর ভিত্তি করে একটি কম খরচে IoT এয়ার কোয়ালিটি মনিটর (ছবি সহ)
ভিডিও: MKS SGEN L V1.0 - TMC2208 UART install 2024, জুলাই
Anonim
RaspberryPi 4 এর উপর ভিত্তি করে একটি কম খরচে IoT এয়ার কোয়ালিটি মনিটর
RaspberryPi 4 এর উপর ভিত্তি করে একটি কম খরচে IoT এয়ার কোয়ালিটি মনিটর
RaspberryPi 4 এর উপর ভিত্তি করে একটি কম খরচে IoT এয়ার কোয়ালিটি মনিটর
RaspberryPi 4 এর উপর ভিত্তি করে একটি কম খরচে IoT এয়ার কোয়ালিটি মনিটর
RaspberryPi 4 এর উপর ভিত্তি করে একটি কম খরচে IoT এয়ার কোয়ালিটি মনিটর
RaspberryPi 4 এর উপর ভিত্তি করে একটি কম খরচে IoT এয়ার কোয়ালিটি মনিটর
RaspberryPi 4 এর উপর ভিত্তি করে একটি কম খরচে IoT এয়ার কোয়ালিটি মনিটর
RaspberryPi 4 এর উপর ভিত্তি করে একটি কম খরচে IoT এয়ার কোয়ালিটি মনিটর

সান্তিয়াগো, চিলি একটি শীতকালীন পরিবেশগত জরুরি অবস্থার সময় বিশ্বের অন্যতম সুন্দর দেশে বসবাস করার সুযোগ আছে, কিন্তু দুর্ভাগ্যবশত, এটি সব গোলাপ নয়। শীত মৌসুমে চিলি বায়ু দূষণের কারণে অনেক ভোগে, প্রধানত ধূলিকণা এবং ধোঁয়াশার মতো কণাযুক্ত পদার্থের কারণে।

ঠান্ডা আবহাওয়ার কারণে, দক্ষিণে, বায়ু দূষণ মূলত কাঠ-ভিত্তিক ক্যালিফ্যাক্টর এবং সান্টিয়াগোতে (দেশের কেন্দ্রে প্রধান রাজধানী) শিল্প, গাড়ি এবং 2 বিশাল পাহাড়ের শৃঙ্খলের মধ্যে তার অনন্য ভৌগোলিক পরিস্থিতির সাথে মিশে থাকে।

আজকাল, বায়ু দূষণ সারা বিশ্বে একটি বড় সমস্যা এবং এই নিবন্ধে আমরা একটি রাস্পবেরি পাই এর উপর ভিত্তি করে একটি কম দামী ঘরে তৈরি এয়ার কোয়ালিটি মনিটর কীভাবে বিকাশ করা যায় তা আবিষ্কার করব। আপনি যদি বাতাসের মান সম্পর্কে আরো জানতে আগ্রহী হন, অনুগ্রহ করে "ওয়ার্ল্ড এয়ার কোয়ালিটি ইনডেক্স" প্রকল্প পরিদর্শন করুন।

সরবরাহ

  • রাস্পবেরি পাই 4
  • 1SDS011 - উচ্চ নির্ভুলতা লেজার pm2.5 বায়ু গুণ সনাক্তকরণ সেন্সর
  • প্লাস্টিক বাক্স

ধাপ 1: পার্টিকুলেট ম্যাটার (PM): এটা কি? এটি কীভাবে বাতাসে প্রবেশ করে?

পার্টিকুলেট ম্যাটার (PM): এটা কি? এটি কীভাবে বাতাসে প্রবেশ করে?
পার্টিকুলেট ম্যাটার (PM): এটা কি? এটি কীভাবে বাতাসে প্রবেশ করে?

সুতরাং, দূষণ বা বায়ু দূষণ বোঝার জন্য, আমাদের অবশ্যই এর সাথে সম্পর্কিত কণাগুলি অধ্যয়ন করতে হবে, যা কণা পদার্থ হিসাবেও পরিচিত। পূর্ববর্তী বিভাগের গ্রাফগুলি দেখে আমরা লক্ষ্য করতে পারি যে তারা PM2.5 এবং PM10 উল্লেখ করেছে। আসুন এর একটি দ্রুত ওভারভিউ দেওয়া যাক।

PM মানে পার্টিকুলেট ম্যাটার (কণা দূষণও বলা হয়): বাতাসে পাওয়া কঠিন কণা এবং তরল ফোঁটার মিশ্রণের শব্দ। কিছু কণা, যেমন ধুলো, ময়লা, কাঁচ, বা ধোঁয়া, খালি চোখে দেখা যায় এমন বড় বা অন্ধকার। অন্যান্যগুলি এত ছোট যে তারা কেবল একটি ইলেক্ট্রন মাইক্রোস্কোপ ব্যবহার করে সনাক্ত করা যায়। কণাগুলি বিভিন্ন আকারের আকারে আসে। 10 মাইক্রোমিটারের ব্যাসের কম বা সমান কণাগুলি এত ছোট যে তারা ফুসফুসে প্রবেশ করতে পারে, যা সম্ভাব্য গুরুতর স্বাস্থ্য সমস্যা সৃষ্টি করে। দশ মাইক্রোমিটার একক মানুষের চুলের প্রস্থের চেয়ে কম।

কণা দূষণের মধ্যে রয়েছে মোটা ধূলিকণা (PM10): ইনহেলেবল কণা, যার ব্যাস সাধারণত 10 মাইক্রোমিটার এবং ছোট। উত্সগুলির মধ্যে রয়েছে গুঁড়ো বা গ্রাইন্ডিং অপারেশন এবং রাস্তায় যানবাহনের দ্বারা ধুলো ফেলা। সূক্ষ্ম কণা (PM2.5): সূক্ষ্ম ইনহেলেবল কণা, ব্যাস যা সাধারণত 2.5 মাইক্রোমিটার এবং ছোট। মোটরযান, বিদ্যুৎকেন্দ্র, আবাসিক কাঠ পোড়ানো, বনভূমিতে আগুন, কৃষি পোড়ানো, এবং কিছু শিল্প প্রক্রিয়াসহ সব ধরনের দহন থেকে সূক্ষ্ম কণা উৎপন্ন হয় যা আপনি EPA সাইটে কণা বিষয় সম্পর্কে আরো জানতে পারেন: মার্কিন যুক্তরাষ্ট্র পরিবেশ সুরক্ষা সংস্থা

ধাপ 2: এই বিশেষ বিষয়ের যত্ন নেওয়া কেন গুরুত্বপূর্ণ?

কেন এই বিশেষ বিষয়ের যত্ন নেওয়া গুরুত্বপূর্ণ?
কেন এই বিশেষ বিষয়ের যত্ন নেওয়া গুরুত্বপূর্ণ?

গেরার্ডো আলভারাদো জেড চিলি বিশ্ববিদ্যালয়ে তার কাজের বর্ণনা অনুসারে, 1930 সালে মিউজ ভ্যালি (বেলজিয়াম), 1948 সালে ডোনোরা (পেনসিলভানিয়া) এবং 1952 সালে লন্ডনে উচ্চ বায়ু দূষণের পর্বগুলি অধ্যয়ন করেছিলেন। কণা দূষণের সাথে (প্রান্ডেজ, 1993)। মানুষের স্বাস্থ্যের উপর বায়ু দূষণের প্রভাবের তদন্তের অগ্রগতি নির্ধারণ করেছে যে শ্বাসযন্ত্রের বিভিন্ন বিভাগে তাদের অনুপ্রবেশ এবং জমার উপর নির্ভর করে, এবং জমা হওয়া পদার্থের জৈবিক প্রতিক্রিয়ার উপর নির্ভর করে শ্বাস -প্রশ্বাসের কণার কারণে স্বাস্থ্য ঝুঁকি তৈরি হয়।

সর্বাধিক ঘন কণা, প্রায় 5 μm, অনুনাসিক প্যাসেজের সিলিয়া এবং নাকের গহ্বর এবং শ্বাসনালীকে আচ্ছাদিত মিউকোসার যৌথ ক্রিয়া দ্বারা ফিল্টার করা হয়। 0.5 থেকে 5 μm এর ব্যাসযুক্ত কণাগুলি ব্রঙ্কিতে এবং এমনকি পালমোনারি অ্যালভিওলিতেও জমা হতে পারে, তবে সেগুলি কয়েক ঘন্টা পরে ব্রোঞ্চি এবং ব্রঙ্কিওলের সিলিয়া দ্বারা নির্মূল হয়। 0.5 μm এর চেয়ে ছোট কণাগুলি গভীরভাবে প্রবেশ করতে পারে যতক্ষণ না সেগুলি পালমোনারি অ্যালভিওলিতে জমা হয়, সপ্তাহ থেকে বছর অবধি অবশিষ্ট থাকে, যেহেতু কোনও শ্লেষ্মা পরিবহন ব্যবস্থা নেই যা নির্মূলের সুবিধা দেয়। নিচের চিত্রটি তাদের আকারের উপর নির্ভর করে শ্বাসযন্ত্রের কণার অনুপ্রবেশ দেখায়।

সুতরাং, উভয় ধরনের কণা (PM2.5 এবং PM10) খুঁজে বের করা খুবই গুরুত্বপূর্ণ এবং সুসংবাদ হল যে উভয়ই একটি সহজ এবং ব্যয়বহুল সেন্সর, SDS011 দ্বারা পাঠযোগ্য।

ধাপ 3: কণা সেন্সর - SDS011

কণা সেন্সর - SDS011
কণা সেন্সর - SDS011
কণা সেন্সর - SDS011
কণা সেন্সর - SDS011

বায়ুর গুণমান পর্যবেক্ষণ সুপরিচিত এবং প্রতিষ্ঠিত বিজ্ঞান যা 80 এর দশকে শুরু হয়েছিল। সেই সময়ে, প্রযুক্তি বেশ সীমিত ছিল, এবং সমাধানটি বায়ু দূষণ জটিল, জটিল এবং সত্যিই ব্যয়বহুল পরিমাপের জন্য ব্যবহৃত হয়েছিল।

ভাগ্যক্রমে, আজকাল, সর্বাধিক সাম্প্রতিক এবং আধুনিক প্রযুক্তির সাথে, বায়ু গুণমান পর্যবেক্ষণের জন্য ব্যবহৃত সমাধানগুলি কেবল আরও সুনির্দিষ্ট নয় বরং পরিমাপের ক্ষেত্রে দ্রুততর হচ্ছে। ডিভাইসগুলি ছোট হয়ে যাচ্ছে, এবং আগের তুলনায় অনেক বেশি সাশ্রয়ী।

এই নিবন্ধে আমরা একটি কণা সেন্সরের উপর ফোকাস করব, যা বাতাসে ধুলোর পরিমাণ সনাক্ত করতে পারে। যদিও প্রথম প্রজন্ম কেবল অস্বচ্ছতার পরিমাণ সনাক্ত করতে সক্ষম হয়েছিল, ইনোভোভিট থেকে SDS011 হিসাবে সাম্প্রতিকতম সেন্সর, জিনান বিশ্ববিদ্যালয়ের (শানডংয়ে) একটি স্পিন-অফ, এখন PM2.5 এবং PM10 সনাক্ত করতে পারে।

এর আকারের সাথে, SDS011 সম্ভবত নির্ভুলতা এবং মূল্যের দিক থেকে সেরা সেন্সরগুলির মধ্যে একটি (USD40.00 এর কম)।

  • পরিমাপ করা মান: PM2.5, PM10
  • পরিসীমা: 0–999.9 μg /m³
  • সরবরাহ ভোল্টেজ: 5V (4.7–5.3V)
  • বিদ্যুৎ খরচ (কাজ): 70mA ± 10mA
  • বিদ্যুৎ খরচ (স্লিপ মোড লেজার ও ফ্যান): <4mA
  • সংগ্রহস্থল তাপমাত্রা: -20 থেকে +60C
  • কাজের তাপমাত্রা: -10 থেকে +50C
  • আর্দ্রতা (সঞ্চয়স্থান): সর্বোচ্চ 90%
  • আর্দ্রতা (কাজ): সর্বোচ্চ। 70% (জলীয় বাষ্পের ঘনীভবন রিডিংগুলিকে মিথ্যা বলে)
  • সঠিকতা: 0.3μm এর জন্য 70% এবং 0.5μm এর জন্য 98%
  • আকার: 71x70x23 মিমি
  • সার্টিফিকেশন: সিই, এফসিসি, RoHS

SD011 পিসিবি কেসিংয়ের একপাশে ব্যবহার করে, এর খরচ কমাতে দেয়। পিসিবি পাশে রিসেপ্টর ডায়োড লাগানো আছে (এটি বাধ্যতামূলক কারণ ডায়োড এবং এলএনএর মধ্যে কোন গোলমাল এড়ানো উচিত)। এমিটার লেজার প্লাস্টিকের বাক্সে লাগানো হয় এবং নমনীয় তারের মাধ্যমে পিসিবির সাথে সংযুক্ত থাকে।

সংক্ষেপে, নোভা ফিটনেস SDS011 একটি পেশাদার লেজার ডাস্ট সেন্সর। সেন্সরে লাগানো ফ্যান স্বয়ংক্রিয়ভাবে বাতাস শুষে নেয়। বায়ুতে স্থগিত ধুলো কণার মান পরিমাপ করতে সেন্সর একটি লেজার লাইট স্ক্যাটারিং নীতি ব্যবহার করে। সেন্সরটি PM2.5 এবং PM10 মানের উচ্চ নির্ভুলতা এবং নির্ভরযোগ্য রিডিং প্রদান করে। পরিবেশে যে কোন পরিবর্তন প্রায় 10 সেকেন্ডের নিচে সংক্ষিপ্ত প্রতিক্রিয়া সময় লক্ষ্য করা যায়। স্ট্যান্ডার্ড মোডে সেন্সর 1-সেকেন্ডের ব্যবধানে পড়ার রিপোর্ট করে।

* লেজার স্ক্যাটারিং নীতি: কণা সনাক্তকরণের ক্ষেত্রের মধ্য দিয়ে গেলে হালকা বিক্ষিপ্ততা প্ররোচিত হতে পারে। বিক্ষিপ্ত আলো বৈদ্যুতিক সংকেতগুলিতে রূপান্তরিত হয় এবং এই সংকেতগুলি সম্প্রসারিত এবং প্রক্রিয়াজাত হবে। কণার সংখ্যা এবং ব্যাস বিশ্লেষণের মাধ্যমে পাওয়া যায় কারণ সংকেত তরঙ্গাকৃতির কণার ব্যাসের সাথে নির্দিষ্ট সম্পর্ক রয়েছে।

ধাপ 4: কিন্তু কিভাবে SDS011 সেই কণাগুলো ক্যাপচার করতে পারে?

কিন্তু কিভাবে SDS011 সেই কণাগুলো ক্যাপচার করতে পারে?
কিন্তু কিভাবে SDS011 সেই কণাগুলো ক্যাপচার করতে পারে?
কিন্তু কিভাবে SDS011 সেই কণাগুলো ক্যাপচার করতে পারে?
কিন্তু কিভাবে SDS011 সেই কণাগুলো ক্যাপচার করতে পারে?

যেমনটি আগে মন্তব্য করা হয়েছে, SDS011 দ্বারা ব্যবহৃত নীতি হল হালকা বিক্ষিপ্ত বা উন্নত, ডায়নামিক লাইট স্ক্যাটারিং (DLS), যা পদার্থবিজ্ঞানের একটি কৌশল যা সাসপেনশনের ছোট কণার আকার বিতরণ প্রোফাইল বা সমাধানের পলিমার নির্ধারণ করতে ব্যবহার করা যেতে পারে। ডিএলএস-এর আওতায়, সাময়িক ওঠানামা সাধারণত তীব্রতা বা ফোটন অটো-পারস্পরিক সম্পর্ক ফাংশনের মাধ্যমে বিশ্লেষণ করা হয় (ফোটন পারস্পরিক সম্পর্ক বর্ণালী বা আধা-ইলাস্টিক আলো ছড়ানো নামেও পরিচিত)। সময় ডোমেন বিশ্লেষণে, অটোকরিলেশন ফাংশন (এসিএফ) সাধারণত শূন্য বিলম্বের সময় থেকে শুরু হয়ে ক্ষয় হয় এবং ছোট কণার কারণে দ্রুত গতিশীলতা বিক্ষিপ্ত তীব্রতার ট্রেসকে দ্রুত ডিকোরিলেশনের দিকে নিয়ে যায়। এটি দেখানো হয়েছে যে তীব্রতা ACF হল পাওয়ার স্পেকট্রামের ফুরিয়ার রূপান্তর, এবং সেইজন্য DLS পরিমাপ বর্ণালী ডোমেনে সমানভাবে ভালভাবে সঞ্চালিত হতে পারে।

দুটি নমুনার একটি কাল্পনিক গতিশীল আলো ছড়ানোর উপরে: উপরে বড় কণা (PM10 এর মত) এবং নীচে ছোট কণা (PM2.5 হিসাবে)। এবং আমাদের সেন্সরের ভিতরে তাকিয়ে আমরা দেখতে পাচ্ছি কিভাবে আলো ছড়িয়ে দেওয়ার নীতি বাস্তবায়িত হয়।

ডায়োডে ধরা বৈদ্যুতিক সিগন্যাল লো নয়েজ এম্প্লিফায়ারে যায় এবং সেখান থেকে একটি এডিসির মাধ্যমে ডিজিটাল সিগন্যালে রূপান্তরিত হয় এবং একটি ইউএআরটির মাধ্যমে বাইরে যায়।

একটি বাস্তব বৈজ্ঞানিক অভিজ্ঞতার উপর SDS011 সম্পর্কে আরো জানতে, দয়া করে PM2.5 কনসেন্ট্রেশন পর্যবেক্ষণের জন্য কম খরচে পোর্টেবল সিস্টেমের ডেভেলপমেন্ট এবং অন-ফিল্ড টেস্টিং এর 2018 এর কাজ দেখুন।

ধাপ 5: শো টাইম

শো টাইম!
শো টাইম!
শো টাইম!
শো টাইম!

আসুন এই সমস্ত তত্ত্বের উপর বিরতি নিই এবং রাস্পবেরি পাই এবং SDS011 সেন্সর ব্যবহার করে কণা বিষয়গুলি কীভাবে পরিমাপ করা যায় সেদিকে মনোনিবেশ করি

HW সংযোগ আসলে খুবই সহজ। সেন্সরটি একটি ইউএসবি অ্যাডাপ্টারের সাথে বিক্রি হয় যার 7 পিন ইউআরটি থেকে আউটপুট ডেটা ইন্টারফেস করার জন্য আরপিআই এর একটি স্ট্যান্ডার্ড ইউএসবি কানেক্টরের সাথে।

SDS011 পিনআউট:

  • পিন 1 - সংযুক্ত নয়
  • পিন 2 - PM2.5: 0–999μg/m³; PWM আউটপুট
  • পিন 3–5V
  • পিন 4 - PM10: 0–999 μg/m³; PWM আউটপুট
  • পিন 5 - GND
  • পিন 6 - RX UART (TTL) 3.3V
  • পিন 7 - TX UART (TTL) 3.3V

এই টিউটোরিয়ালের জন্য, আমি প্রথমবার ব্যবহার করছি, একেবারে নতুন রাস্পবেরি-পাই But।

যত তাড়াতাড়ি আপনি RPi USB পোর্টের একটিতে সেন্সর সংযুক্ত করবেন, আপনি স্বয়ংক্রিয়ভাবে এর ফ্যানের শব্দ শুনতে শুরু করবেন। গোলমাল একটু বিরক্তিকর, তাই হয়তো আপনি এটি আনপ্লাগ এবং SW সঙ্গে সব সেট না হওয়া পর্যন্ত অপেক্ষা করা উচিত।

সেন্সর এবং RPi এর মধ্যে যোগাযোগ হবে একটি সিরিয়াল প্রোটোকলের মাধ্যমে। এই প্রোটোকল সম্পর্কে বিস্তারিত এখানে পাওয়া যাবে: লেজার ডাস্ট সেন্সর কন্ট্রোল প্রোটোকল V1.3। কিন্তু এই প্রকল্পের জন্য, কোডটি ডেভেলপ করা সহজ করার জন্য একটি পাইথন ইন্টারফেস ব্যবহার করা ভাল। আপনি আপনার নিজের ইন্টারফেস তৈরি করতে পারেন বা ইন্টারনেটে উপলব্ধ কিছু ব্যবহার করতে পারেন, যেমন ফ্রাঙ্ক হিউয়ার বা ইভান কালচেভ। আমরা শেষটি ব্যবহার করব, যা খুবই সহজ এবং ভাল কাজ করে (আপনি sds011.py স্ক্রিপ্টটি তার গিটহাব বা আমার থেকে ডাউনলোড করতে পারেন)।

Sds011.py ফাইলটি একই ডিরেক্টরিতে থাকতে হবে যেখানে আপনি আপনার স্ক্রিপ্ট তৈরি করেন।

বিকাশের পর্যায়ে, আমি একটি জুপিটার নোটবুক ব্যবহার করব, তবে আপনি যে কোনও আইডিই ব্যবহার করতে পারেন যা আপনি পছন্দ করেন (উদাহরণস্বরূপ, থোনি বা গিয়ানি, যা রাস্পবেরি পাই ডেবিয়ান প্যাকেজের অংশ উভয়ই খুব ভাল)।

Sds011 আমদানি শুরু করুন, এবং আপনার সেন্সর উদাহরণ তৈরি করুন। SDS011 UART ব্যবহার করে সেন্সর থেকে পড়ার একটি পদ্ধতি প্রদান করে।

sds011 আমদানি থেকে *

সেন্সর = SDS011 ("/dev/ttyUSB0")

আপনি স্লিপ কমান্ড দিয়ে আপনার সেন্সর চালু বা বন্ধ করতে পারেন:

pmt_2_5, pmt_10 = sensor.query ()

পরিমাপের আগে স্থিতিশীলতার জন্য কমপক্ষে 10 সেকেন্ড অপেক্ষা করুন এবং একটি নতুন শুরু করতে কমপক্ষে 2 সেকেন্ড অপেক্ষা করুন (উপরের কোডটি দেখুন)।

এবং সেন্সর ব্যবহার করার জন্য SW- এর পরিপ্রেক্ষিতে আপনার এটাই জানা দরকার। তবে আসুন বায়ুর গুণমান নিয়ন্ত্রণে আরও গভীরে যাই! এই নিবন্ধের শুরুতে, যদি আপনি বায়ু কতটা ভাল বা খারাপ সে সম্পর্কে তথ্য প্রদানকারী সাইটগুলি অন্বেষণ করে থাকেন তবে আপনার বুঝতে হবে যে রঙগুলি সেই মানগুলির সাথে যুক্ত। প্রতিটি রঙ একটি সূচক। এর মধ্যে সবচেয়ে পরিচিত হল AQI (এয়ার কোয়ালিটি ইনডেক্স), যা মার্কিন যুক্তরাষ্ট্র এবং অন্যান্য কয়েকটি দেশে ব্যবহৃত হয়।

ধাপ 6: বায়ু মানের সূচক - AQI

বায়ু মানের সূচক - AQI
বায়ু মানের সূচক - AQI
বায়ু মানের সূচক - AQI
বায়ু মানের সূচক - AQI
বায়ু মানের সূচক - AQI
বায়ু মানের সূচক - AQI

AQI হল দৈনন্দিন বায়ুর গুণমান প্রতিবেদন করার একটি সূচক। এটি আপনাকে বলে যে আপনার বায়ু কতটা পরিষ্কার বা দূষিত, এবং কোন স্বাস্থ্যগত প্রভাবগুলি আপনার জন্য উদ্বেগজনক হতে পারে। AQI দূষিত বায়ু শ্বাস নেওয়ার কয়েক ঘণ্টা বা দিনের মধ্যে আপনি যে স্বাস্থ্যের প্রভাব অনুভব করতে পারেন তার উপর দৃষ্টি নিবদ্ধ করে।

EPA (ইউনাইটেড স্টেটস এনভায়রনমেন্টাল প্রোটেকশন এজেন্সি), উদাহরণস্বরূপ, AQI গণনা করে না শুধুমাত্র কণা দূষণের জন্য (PM2.5 এবং PM10) কিন্তু পরিষ্কার বায়ু আইন দ্বারা নিয়ন্ত্রিত অন্যান্য প্রধান বায়ু দূষণকারীদের জন্যও: ভূ-স্তরের ওজোন, কার্বন মনোক্সাইড, সালফার ডাই অক্সাইড, এবং নাইট্রোজেন ডাই অক্সাইড। এই প্রতিটি দূষণকারীর জন্য, EPA জনস্বাস্থ্য রক্ষার জন্য জাতীয় বায়ু মানের মান প্রতিষ্ঠা করেছে। AQI মান, রঙ এবং স্বাস্থ্য বার্তার সাথে উপরের ছবিটি দেখুন।

AQI- এর মান এবং রঙগুলি দূষণকারী এজেন্টের প্রত্যেকের সাথে সম্পর্কিত হওয়ার আগে মন্তব্য করা হয়েছে, কিন্তু কিভাবে সেন্সর দ্বারা উৎপন্ন মানগুলিকে তাদের সাথে যুক্ত করা যায়? উপরে দেখানো হিসাবে একটি অতিরিক্ত টেবিল তাদের সবাইকে সংযুক্ত করে।

কিন্তু অবশ্যই, এই ধরনের টেবিল ব্যবহার করার কোন মানে হয় না। শেষ পর্যন্ত, এটি একটি সাধারণ গাণিতিক অ্যালগরিদম যা গণনা করে। তার জন্য, আমরা লাইব্রেরি আমদানি করব AQI মান এবং দূষণকারী ঘনত্ব (µg/m³) এর মধ্যে রূপান্তর করতে: পাইথন-আকি।

PIP ব্যবহার করে লাইব্রেরি ইনস্টল করুন এবং একটি পরীক্ষা করুন (উপরের কোড দেখুন)

পাইপ পাইথন-আকি ইনস্টল করুন

এবং চিলি কেমন?

চিলিতে অনুরূপ সূচক ব্যবহার করা হয়, ICAP: শ্বাস -প্রশ্বাসের কণার জন্য বায়ু মানের সূচক। প্রজাতন্ত্রের প্রেসিডেন্সির সাধারণ সম্পাদক মন্ত্রনালয়ের ১ Secretary ই মার্চ, ১ of -এর একটি সুপ্রিম ডিক্রি ৫ 59, তার প্রবন্ধ ১, অক্ষর জি) -এ প্রতিষ্ঠিত করে যে স্তরগুলি আইসিএ -কে ব্রেথেবল পার্টিকুলেট ম্যাটেরিয়াল, আইসিএপি -র সংজ্ঞা দেয়।

বিভাগগুলির মধ্যে মানগুলি রৈখিকভাবে পরিবর্তিত হবে, 500 এর মান সেই সীমা মানের সাথে মিলিত হবে যার উপর এই ঘনত্বের সংস্পর্শে এসে জনসংখ্যার জন্য ঝুঁকি থাকবে। আইসিএপি মান অনুসারে, বিভাগগুলি প্রতিষ্ঠিত হয়েছে যা এমপি 10 এর ঘনত্বের স্তরগুলিকে যোগ্য করে তোলে যেখানে লোকেরা উন্মুক্ত হয়েছিল।

ধাপ 7: স্থানীয়ভাবে ডেটা লগ করা

স্থানীয়ভাবে ডেটা লগ করা
স্থানীয়ভাবে ডেটা লগ করা
স্থানীয়ভাবে ডেটা লগ করা
স্থানীয়ভাবে ডেটা লগ করা
স্থানীয়ভাবে ডেটা লগ করা
স্থানীয়ভাবে ডেটা লগ করা

এই মুহুর্তে, আমাদের কাছে সেন্সর থেকে ডেটা ক্যাপচার করার জন্য সমস্ত সরঞ্জাম রয়েছে এবং সেগুলিকে আরও "পঠনযোগ্য মান" এর জন্য রূপান্তর করতে হবে, এটি হল AQI সূচক।

আসুন সেই মানগুলি ক্যাপচার করার জন্য একটি ফাংশন তৈরি করি। আমরা ক্রম অনুসারে 3 টি মান ক্যাপচার করব তাদের মধ্যে গড়:

def get_data (n = 3):

sensor.sleep (ঘুম = মিথ্যা) pmt_2_5 = 0 pmt_10 = 0 time.sleep (10) i in range (n): x = sensor.query () pmt_2_5 = pmt_2_5 + x [0] pmt_10 = pmt_10 + x [1] time.sleep (2) pmt_2_5 = round (pmt_2_5/n, 1) pmt_10 = round (pmt_10/n, 1) sensor.sleep (sleep = true) time.sleep (2) pmt_2_5, pmt_10 উপরে আপনি পরীক্ষার ফলাফল দেখতে পারেন। আসুন AQI সূচকে PM এর সাংখ্যিক মানগুলি রূপান্তর করার জন্য একটি ফাংশন করি

def conv_aqi (pmt_2_5, pmt_10):

aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) aqi_2_5, aqi_10 উভয় ফাংশন সহ একটি পরীক্ষার ফলাফলের উপরে। কিন্তু তাদের সাথে কি করবেন? সবচেয়ে সহজ উত্তর হল ক্যাপচার করা ডেটা সেভ করার জন্য একটি ফাংশন তৈরি করা, সেগুলো স্থানীয় ফাইলে সেভ করা

def save_log ():

লগ হিসাবে খোলা ("আপনার পথ এখানে/air_quality.csv", "a"): dt = datetime.now () log.write ("{}, {}, {}, {}, {} {n")। বিন্যাস (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close () একটি একক লুপ দিয়ে, আপনি আপনার স্থানীয় ফাইলের নিয়মিত ঘাঁটিতে ডেটা লগ করতে পারেন, উদাহরণস্বরূপ, প্রতি মিনিটে

যখন (সত্য):

pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) try: save_log () ব্যতীত: print ("[INFO] লগিং ডেটাতে ব্যর্থতা") time.sleep (60) প্রতি 60 সেকেন্ডে, টাইমস্ট্যাম্প প্লাস ডেটা এই ফাইলে "সংযুক্ত" হবে, যেমন আমরা উপরে দেখতে পাচ্ছি।

ধাপ 8: ক্লাউড সার্ভিসে ডেটা পাঠানো

ক্লাউড সার্ভিসে ডেটা পাঠানো
ক্লাউড সার্ভিসে ডেটা পাঠানো

এই মুহুর্তে, আমরা সেন্সর থেকে ডেটা ক্যাপচার করতে শিখেছি, সেগুলি স্থানীয় CSV ফাইলে সংরক্ষণ করে। এখন, সেই আইওটি প্ল্যাটফর্মে সেই ডেটাগুলি কীভাবে পাঠানো যায় তা দেখার সময় এসেছে। এই টিউটোরিয়ালে আমরা ThingSpeak.com ব্যবহার করব।

“থিংস্পিক হল একটি ওপেন সোর্স ইন্টারনেট অফ থিংস (আইওটি) অ্যাপ্লিকেশন যা REST এবং MQTT API ব্যবহার করে জিনিসগুলি থেকে তথ্য সংরক্ষণ এবং পুনরুদ্ধার করে। থিংস্পিক সেন্সর লগিং অ্যাপ্লিকেশন, লোকেশন ট্র্যাকিং অ্যাপ্লিকেশন এবং স্ট্যাটাস আপডেট সহ জিনিসগুলির একটি সামাজিক নেটওয়ার্ক তৈরি করতে সক্ষম করে।

প্রথমে আপনার ThinkSpeak.com এ একটি অ্যাকাউন্ট থাকতে হবে। পরবর্তী, একটি চ্যানেল তৈরির নির্দেশাবলী অনুসরণ করুন, এর চ্যানেল আইডি এবং API কী লিখুন।

চ্যানেল তৈরির সময়, আপনাকে অবশ্যই 8 টি ক্ষেত্রের প্রতিটিতে কোন তথ্য আপলোড করা হবে তা নির্ধারণ করতে হবে, যেমনটি উপরে দেখানো হয়েছে (আমাদের ক্ষেত্রে তাদের মধ্যে মাত্র 4 টি ব্যবহার করা হবে)।

ধাপ 9: MQTT প্রোটোকল এবং ThingSpeak সংযোগ

MQTT প্রোটোকল এবং থিংসস্পিক সংযোগ
MQTT প্রোটোকল এবং থিংসস্পিক সংযোগ

MQTT হল একটি পাবলিশ/সাবস্ক্রাইব আর্কিটেকচার যা মূলত ব্যান্ডউইথ এবং পাওয়ার-সীমাবদ্ধ ডিভাইসগুলিকে ওয়্যারলেস নেটওয়ার্কের সাথে সংযুক্ত করার জন্য তৈরি করা হয়েছিল। এটি একটি সহজ এবং লাইটওয়েট প্রোটোকল যা টিসিপি/আইপি সকেট বা ওয়েবসকেটের উপর চলে। MQTT ওভার ওয়েবসকেটস SSL দিয়ে সুরক্ষিত করা যায়। পাবলিশ/সাবস্ক্রাইব আর্কিটেকচার সার্ভারকে ক্রমাগত পোল করার প্রয়োজন ছাড়াই ক্লায়েন্ট ডিভাইসে বার্তাগুলিকে ধাক্কা দিতে সক্ষম করে।

এমকিউটিটি ব্রোকার হল যোগাযোগের কেন্দ্রীয় পয়েন্ট এবং এটি প্রেরক এবং সঠিক রিসিভারের মধ্যে সমস্ত বার্তা প্রেরণের দায়িত্বে রয়েছে। ক্লায়েন্ট হল এমন কোনো ডিভাইস যা ব্রোকারের সাথে সংযোগ স্থাপন করে এবং তথ্য অ্যাক্সেস করার জন্য বিষয়গুলি প্রকাশ বা সাবস্ক্রাইব করতে পারে। একটি বিষয়ে দালালের জন্য রাউটিং তথ্য রয়েছে। প্রতিটি ক্লায়েন্ট যে বার্তা পাঠাতে চায় সেগুলি একটি নির্দিষ্ট বিষয়ে প্রকাশ করে এবং প্রতিটি ক্লায়েন্ট যে বার্তা পেতে চায় তা একটি নির্দিষ্ট বিষয়ে সাবস্ক্রাইব করে। দালাল উপযুক্ত ক্লায়েন্টদের সাথে মিলে যাওয়া বিষয় সহ সমস্ত বার্তা সরবরাহ করে।

ThingSpeak ™ এর URL Mqtt.thingspeak.com এবং পোর্ট 1883 এ MQTT ব্রোকার রয়েছে। থিংস্পিক ব্রোকার MQTT প্রকাশ এবং MQTT সাবস্ক্রাইব উভয়ই সমর্থন করে।

আমাদের ক্ষেত্রে, আমরা MQTT Publish ব্যবহার করব।

ধাপ 10: MQTT প্রকাশ

MQTT প্রকাশ
MQTT প্রকাশ

শুরু করার জন্য, আসুন Eclipse Paho MQTT পাইথন ক্লায়েন্ট লাইব্রেরি ইনস্টল করি, যা MQTT প্রোটোকলের সংস্করণ 3.1 এবং 3.1.1 প্রয়োগ করে

sudo pip ইনস্টল paho-mqtt

এরপরে, আসুন পাহো লাইব্রেরি আমদানি করি:

paho.mqtt.publish আমদানি করুন

এবং থিংসপিক চ্যানেল এবং MQTT প্রোটোকল শুরু করুন। এই সংযোগ পদ্ধতিটি সবচেয়ে সহজ এবং সর্বনিম্ন সিস্টেম সম্পদের প্রয়োজন:

channelID = "আপনার চ্যানেল আইডি"

apiKey = "আপনার লেখার কী" বিষয় = "চ্যানেল/" + channelID + "/প্রকাশ/" + apiKey mqttHost = "mqtt.thingspeak.com" এখন আমাদের অবশ্যই আমাদের "পেলোড" নির্ধারণ করতে হবে

tPayload = "field1 =" + str (pmt_2_5) + "& field2 =" + str (aqi_2_5) + "& field3 =" + str (pmt_10) + "& field4 =" + str (aqi_10)

এবং এটাই! আমরা ক্লাউডে ডেটা পাঠানো শুরু করতে প্রস্তুত! এর থিংস্পিক অংশটি অন্তর্ভুক্ত করার জন্য আগের লুপ ফাংশনটি আবার লিখুন।

# প্রতি 1 মিনিটে থিংসস্পিকে সমস্ত ডেটা পাঠানো হচ্ছে

যখন (সত্য): pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) tPayload = "field1 =" + str (pmt_2_5) + "& field2 =" + str (aqi_2_5) + "& field3 =" + str) তথ্য] ডেটা পাঠাতে ব্যর্থ ") সময়। ঘুম (60) যদি সবকিছু ঠিক থাকে, তাহলে আপনাকে অবশ্যই আপনার চ্যানেলে জিনিসগুলি স্পিক ডট কম -এ দেখানো হবে।

ধাপ 11: চূড়ান্ত স্ক্রিপ্ট

এটা উল্লেখ করা গুরুত্বপূর্ণ যে Jupyter নোটবুক উন্নয়ন এবং প্রতিবেদনের জন্য একটি খুব ভাল হাতিয়ার, কিন্তু উৎপাদনে রাখার জন্য একটি কোড তৈরি করতে হবে না। আপনার এখন যা করা উচিত তা হল কোডের প্রাসঙ্গিক অংশ নিন এবং একটি.py স্ক্রিপ্ট তৈরি করুন এবং এটি আপনার টার্মিনালে চালান।

উদাহরণস্বরূপ, "ts_air_quality_logger.py", যেটি আপনাকে কমান্ড দিয়ে চালানো উচিত:

পাইথন 3 ts_air_quality_logger.py

এই স্ক্রিপ্টটি পাশাপাশি জুপিটার নোটবুক এবং sds011.py RPi_Air_Quality_Sensor এ আমার সংগ্রহস্থলে পাওয়া যাবে।

মনে রাখবেন যে এই স্ক্রিপ্টটি শুধুমাত্র পরীক্ষার জন্যই সম্ভব। চূড়ান্ত লুপের ভিতরে বিলম্ব ব্যবহার না করা (যা কোডটিকে "বিরতিতে" রাখে), পরিবর্তে টাইমার ব্যবহার করুন। অথবা একটি বাস্তব অ্যাপ্লিকেশনের জন্য, সেরা লুপ ব্যবহার করা হয় না, লিনাক্স ক্রোনট্যাব দিয়ে নিয়মিতভাবে স্ক্রিপ্ট চালানোর জন্য প্রোগ্রাম করা।

ধাপ 12: বাইরে মনিটর নেওয়া

মনিটর বাইরে নিয়ে যাওয়া
মনিটর বাইরে নিয়ে যাওয়া
মনিটর বাইরে নিয়ে যাওয়া
মনিটর বাইরে নিয়ে যাওয়া
মনিটর বাইরে নিয়ে যাওয়া
মনিটর বাইরে নিয়ে যাওয়া
মনিটর বাইরে নিয়ে যাওয়া
মনিটর বাইরে নিয়ে যাওয়া

একবার আমার রাস্পবেরি পাই এয়ার কোয়ালিটি মনিটর কাজ করছিল, আমি একটি প্লাস্টিকের বাক্সের ভিতরে RPi একত্রিত করেছিলাম, সেন্সরটি বাইরে রেখে আমার বাড়ির বাইরে রেখেছিলাম।

দুটি অভিজ্ঞতা হয়েছে।

ধাপ 13: পেট্রল মোটর দহন

পেট্রল মোটর জ্বলন
পেট্রল মোটর জ্বলন
পেট্রল মোটর জ্বলন
পেট্রল মোটর জ্বলন

সেন্সরটি ল্যামব্রেটার গ্যাস স্ক্যাপ থেকে প্রায় 1 মিটার দূরে রাখা হয়েছিল এবং এর মোটর চালু হয়েছিল। মোটরটি কয়েক মিনিটের জন্য চলছিল এবং বন্ধ ছিল। উপরের লগ ফাইল থেকে, আমি যে ফলাফল পেয়েছি। মোটর থেকে সৃষ্ট PM2.5 সবচেয়ে বিপজ্জনক কণা তা নিশ্চিত করা আকর্ষণীয়।

ধাপ 14: কাঠ পোড়ানো

কাঠ পোড়ানো
কাঠ পোড়ানো
কাঠ পোড়ানো
কাঠ পোড়ানো

লগ ফাইলের দিকে তাকিয়ে, আমরা বুঝতে পারি যে সেন্সর ডেটা ক্ষণস্থায়ী "রেঞ্জের বাইরে" ছিল এবং AQI রূপান্তর লাইব্রেরি দ্বারা ভালভাবে ধরা পড়েনি, তাই আমি এটি পরিচালনা করার জন্য পূর্ববর্তী কোড পরিবর্তন করি:

def conv_aqi (pmt_2_5, pmt_10):

চেষ্টা করুন: aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) aqi_2_5, aqi_10 ব্যতীত: 600, 600 ফেরত দিন এই পরিস্থিতি মাঠে ঘটতে পারে, যা ঠিক আছে। মনে রাখবেন যে প্রকৃতপক্ষে, AQI পেতে আপনার মুভিং এভারেজ ব্যবহার করা উচিত (অন্তত প্রতি ঘন্টায়, কিন্তু সাধারণত প্রতিদিন)।

ধাপ 15: উপসংহার

উপসংহার
উপসংহার

বরাবরের মতো, আমি আশা করি এই প্রকল্পটি অন্যদের ইলেকট্রনিক্স এবং ডেটা সায়েন্সের উত্তেজনাপূর্ণ জগতে তাদের পথ খুঁজে পেতে সাহায্য করতে পারে!

বিস্তারিত এবং চূড়ান্ত কোডের জন্য, দয়া করে আমার গিটহাব ডিপোজিটরি দেখুন: RPi_Air_Quality_Sensor।

বিশ্বের দক্ষিণ দিক থেকে সালাম!

আমার পরবর্তী নির্দেশনায় দেখা হবে!

ধন্যবাদ, মার্সেলো

প্রস্তাবিত: