فهرست مطالب:

مانیتور ارزان قیمت IoT کیفیت هوا بر اساس RaspberryPi 4: 15 مرحله (همراه با تصاویر)
مانیتور ارزان قیمت IoT کیفیت هوا بر اساس RaspberryPi 4: 15 مرحله (همراه با تصاویر)

تصویری: مانیتور ارزان قیمت IoT کیفیت هوا بر اساس RaspberryPi 4: 15 مرحله (همراه با تصاویر)

تصویری: مانیتور ارزان قیمت IoT کیفیت هوا بر اساس RaspberryPi 4: 15 مرحله (همراه با تصاویر)
تصویری: 3000+ Common English Words with British Pronunciation 2024, جولای
Anonim
مانیتور ارزان قیمت IoT کیفیت هوا بر اساس RaspberryPi 4
مانیتور ارزان قیمت IoT کیفیت هوا بر اساس RaspberryPi 4
مانیتور ارزان قیمت IoT کیفیت هوا بر اساس RaspberryPi 4
مانیتور ارزان قیمت IoT کیفیت هوا بر اساس RaspberryPi 4
مانیتور ارزان قیمت IoT کیفیت هوا بر اساس RaspberryPi 4
مانیتور ارزان قیمت IoT کیفیت هوا بر اساس RaspberryPi 4
یک مانیتور ارزان قیمت IoT کیفیت هوا بر اساس RaspberryPi 4
یک مانیتور ارزان قیمت IoT کیفیت هوا بر اساس RaspberryPi 4

سانتیاگو ، شیلی در شرایط اضطراری محیطی زمستانی این امتیاز را دارد که در یکی از زیباترین کشورهای جهان زندگی کند ، اما متأسفانه ، این همه گل رز نیست. شیلی در فصل زمستان از آلودگی هوا رنج می برد ، عمدتا به دلیل ذرات معلق به عنوان گرد و غبار و مه.

به دلیل آب و هوای سرد ، در جنوب ، آلودگی هوا عمدتا به دلیل مواد مخدر چوبی و در سانتیاگو (پایتخت اصلی در مرکز کشور) از صنایع ، خودروها و موقعیت جغرافیایی منحصر به فرد آن بین 2 زنجیره کوه بزرگ است.

امروزه آلودگی هوا یک مشکل بزرگ در سراسر جهان است و در این مقاله ما نحوه ایجاد یک مانیتور ارزان قیمت خانگی کیفیت هوا بر اساس رزبری پای را بررسی خواهیم کرد. اگر علاقه مند به درک بیشتر در مورد کیفیت هوا هستید ، لطفاً از پروژه "شاخص کیفیت هوا در جهان" دیدن کنید.

تدارکات

  • تمشک پای 4
  • 1SDS011 - سنسور تشخیص کیفیت هوا با لیزر pm2.5 با دقت بالا
  • جعبه پلاستیکی

مرحله 1: ماده ذرات معلق (PM): چیست؟ چگونه به هوا می رود؟

ذرات معلق (PM): چیست؟ چگونه به هوا می رود؟
ذرات معلق (PM): چیست؟ چگونه به هوا می رود؟

بنابراین ، برای درک آلودگی یا آلودگی هوا ، باید ذرات مربوط به آن را که به عنوان ذرات معلق نیز شناخته می شود ، مطالعه کنیم. با نگاهی به نمودارهای قسمت قبل می توانیم مشاهده کنیم که آنها PM2.5 و PM10 را ذکر کرده اند. اجازه دهید یک مرور سریع در مورد آن ارائه دهیم.

PM مخفف ذرات معلق (که آلودگی ذرات نیز نامیده می شود) است: عبارت مخلوط ذرات جامد و قطرات مایع موجود در هوا. برخی از ذرات مانند گرد و غبار ، خاک ، دوده یا دود به اندازه کافی بزرگ یا تیره هستند که با چشم غیر مسلح قابل مشاهده هستند. سایرین آنقدر کوچک هستند که فقط با استفاده از میکروسکوپ الکترونی قابل تشخیص هستند. اندازه ذرات در طیف گسترده ای وجود دارد. ذرات کوچکتر یا مساوی 10 میکرومتر آنقدر کوچک هستند که می توانند وارد ریه ها شوند و به طور بالقوه مشکلات جدی برای سلامتی ایجاد می کنند. ده میکرومتر کمتر از عرض یک تار موی انسان است.

آلودگی ذرات شامل ذرات گرد و غبار درشت (PM10) است: ذرات قابل استنشاق ، با قطرهایی که عموماً 10 میکرومتر و کوچکتر هستند. منابع شامل عملیات خرد کردن یا سنگ زنی و گرد و غبار ناشی از وسایل نقلیه در جاده ها است. ذرات ریز (PM2.5): ذرات ریز قابل استنشاق ، با قطرهایی که عموماً 2.5 میکرومتر و کوچکتر هستند. ذرات نازک از انواع احتراق از جمله وسایل نقلیه موتوری ، نیروگاه ها ، سوزاندن چوب مسکونی ، آتش سوزی جنگل ها ، سوزاندن کشاورزی و برخی فرآیندهای صنعتی تولید می شوند که می توانید در مورد ذرات معلق در سایت EPA بیشتر بیابید: آژانس حفاظت از محیط زیست ایالات متحده

مرحله 2: چرا اهمیت دادن به مسائل ذره ای مهم است؟

چرا اهمیت دادن به آن مسائل ذره ای مهم است؟
چرا اهمیت دادن به آن مسائل ذره ای مهم است؟

همانطور که توسط GERARDO ALVARADO Z در کار خود در دانشگاه شیلی توضیح داده شد ، مطالعات مربوط به دوره های آلودگی زیاد هوا در دره Meuse (بلژیک) در سال 1930 ، Donora (پنسیلوانیا) در سال 1948 و لندن در 1952 اولین منابع مستندی بوده است که مرگ و میر را مرتبط کرده است. با آلودگی ذرات (پرندز ، 1993). پیشرفت های انجام شده در زمینه بررسی اثرات آلودگی هوا بر سلامت افراد مشخص کرده است که خطرات ناشی از ذرات قابل استنشاق بسته به نفوذ و رسوب آنها در بخشهای مختلف دستگاه تنفسی و پاسخ بیولوژیکی به مواد ته نشین شده است.

ضخیم ترین ذرات ، حدود 5 میکرومتر ، توسط عمل مشترک مژک های گذرگاه بینی و مخاطی که حفره بینی و نای را می پوشاند ، فیلتر می شوند. ذرات با قطر بین 0.5 تا 5 میکرومتر را می توان در برونش ها و حتی در آلوئول های ریوی رسوب داد ، با این حال ، آنها بعد از چند ساعت توسط مژک های برونش و برونشیول ها حذف می شوند. ذرات کوچکتر از 0.5 میکرومتر می توانند تا زمانی که در آلوئولهای ریوی رسوب نگیرند ، عمیقاً نفوذ کنند و هفته ها تا سالها باقی می مانند ، زیرا هیچ مکانیسم انتقال مخاطی وجود ندارد که دفع را تسهیل می کند. شکل زیر نفوذ ذرات در دستگاه تنفسی را بسته به اندازه آنها نشان می دهد.

بنابراین ، تشخیص هر دو نوع ذره (PM2.5 و PM10) بسیار مهم است و خبر خوب این است که هر دو توسط یک سنسور ساده و گران قیمت ، SDS011 قابل خواندن هستند.

مرحله 3: سنسور ذرات - SDS011

سنسور ذرات - SDS011
سنسور ذرات - SDS011
سنسور ذرات - SDS011
سنسور ذرات - SDS011

نظارت بر کیفیت هوا یک علم شناخته شده و ثابت است که در دهه 80 آغاز شد. در آن زمان ، فناوری کاملاً محدود بود و راه حلی که برای تعیین کمی مجموعه آلودگی هوا استفاده می شد ، دست و پا گیر و واقعا گران بود.

خوشبختانه امروزه با جدیدترین و جدیدترین فناوری ها ، راه حل های مورد استفاده برای نظارت بر کیفیت هوا نه تنها دقیق تر ، بلکه سریعتر اندازه گیری می شوند. دستگاهها کوچکتر شده و قیمت آنها بسیار مقرون به صرفه تر از گذشته است.

در این مقاله ما روی سنسور ذرات تمرکز می کنیم که می تواند میزان گرد و غبار موجود در هوا را تشخیص دهد. در حالی که نسل اول فقط قادر به تشخیص میزان کدورت بود ، سنسورهای اخیر به عنوان SDS011 از INOVAFIT ، جدا شده از دانشگاه جینان (در شاندونگ) ، اکنون می توانند PM2.5 و PM10 را تشخیص دهند.

SDS011 با اندازه ، احتمالاً یکی از بهترین سنسورها از نظر دقت و قیمت است (کمتر از 40.00 دلار آمریکا).

  • مقادیر اندازه گیری شده: PM2.5 ، PM10
  • محدوده: 0-999.9 میکروگرم /متر مربع
  • ولتاژ تغذیه: 5V (4.7-5.3V)
  • مصرف برق (کار): 70mA ± 10mA
  • مصرف برق (لیزر حالت خواب و فن): <4 میلی آمپر
  • دمای ذخیره سازی: -20 تا +60 درجه سانتی گراد
  • دمای کار: -10 تا +50 درجه سانتی گراد
  • رطوبت (ذخیره سازی): حداکثر. 90٪
  • رطوبت (کار): حداکثر. 70 ((تراکم بخار آب قرائت را جعل می کند)
  • دقت: 70٪ برای 0.3μm و 98٪ برای 0.5μm
  • اندازه: 71x70x23 میلی متر
  • گواهینامه: CE ، FCC ، RoHS

SD011 از PCB به عنوان یک طرف بدنه استفاده می کند و هزینه آن را کاهش می دهد. دیود گیرنده در طرف PCB نصب شده است (این امر اجباری است زیرا از هرگونه سر و صدا بین دیود و LNA باید اجتناب شود). لیزر امیتر بر روی جعبه پلاستیکی نصب شده و از طریق یک سیم انعطاف پذیر به PCB متصل می شود.

به طور خلاصه ، Nova Fitness SDS011 یک سنسور حرفه ای گرد و غبار لیزری است. فن نصب شده روی سنسور به طور خودکار هوا را می مکد. این سنسور از اصل پراکندگی نور لیزری* برای اندازه گیری مقدار ذرات گرد و غبار معلق در هوا استفاده می کند. این سنسور دقت بالا و قابل اطمینان مقادیر PM2.5 و PM10 را ارائه می دهد. هرگونه تغییر در محیط را می توان تقریباً فوراً زمان پاسخ کوتاه زیر 10 ثانیه مشاهده کرد. سنسور در حالت استاندارد خواندن را با فاصله 1 ثانیه گزارش می دهد.

* اصل پراکندگی لیزر: هنگامی که ذرات از ناحیه تشخیص عبور می کنند ، پراکندگی نور ایجاد می شود. نور پراکنده به سیگنال های الکتریکی تبدیل می شود و این سیگنال ها تقویت و پردازش می شوند. تعداد و قطر ذرات را می توان با تجزیه و تحلیل بدست آورد زیرا شکل موج سیگنال با قطر ذرات رابطه خاصی دارد.

مرحله 4: اما SDS011 چگونه می تواند این ذرات را ضبط کند؟

اما SDS011 چگونه می تواند این ذرات را ضبط کند؟
اما SDS011 چگونه می تواند این ذرات را ضبط کند؟
اما SDS011 چگونه می تواند این ذرات را ضبط کند؟
اما SDS011 چگونه می تواند این ذرات را ضبط کند؟

همانطور که قبلاً توضیح داده شد ، اصل استفاده شده توسط SDS011 پراکندگی نور یا بهتر آن ، پراکندگی نور پویا (DLS) است ، که یک تکنیک در فیزیک است که می تواند برای تعیین مشخصات توزیع اندازه ذرات کوچک در سوسپانسیون یا پلیمرها در محلول استفاده شود. در محدوده DLS ، نوسانات زمانی معمولاً با استفاده از شدت یا عملکرد خود همبستگی فوتون (همچنین به عنوان طیف سنجی همبستگی فوتونی یا پراکندگی نور شبه الاستیک شناخته می شود) مورد تجزیه و تحلیل قرار می گیرد. در تجزیه و تحلیل حوزه زمانی ، عملکرد همبستگی خودکار (ACF) معمولاً از زمان تاخیر صفر شروع می شود و پویایی سریعتر به دلیل ذرات کوچکتر منجر به عدم همبستگی سریعتر از شدت شدت پراکنده می شود. نشان داده شده است که شدت ACF تبدیل فوریه طیف قدرت است و بنابراین اندازه گیری DLS را می توان در حوزه طیفی به خوبی انجام داد.

در بالای پراکندگی نور پویای دو نمونه: ذرات بزرگتر (مانند PM10) در بالا و ذرات کوچکتر (به عنوان PM2.5) در پایین. و با نگاه کردن به داخل سنسور خود ، می بینیم که چگونه اصل پراکندگی نور اجرا شده است.

سیگنال الکتریکی ضبط شده روی دیود به تقویت کننده کم صدا می رود و از آن طریق از طریق ADC به سیگنال دیجیتال و از طریق UART به خارج تبدیل می شود.

برای کسب اطلاعات بیشتر در مورد SDS011 در یک تجربه علمی واقعی ، لطفاً به کار کنستانتینوس و همکاران در سال 2018 ، توسعه و آزمایش در زمین سیستم پرتابل کم هزینه برای نظارت بر غلظت PM2.5 نگاهی بیندازید.

مرحله 5: زمان نمایش

زمان نمایش!
زمان نمایش!
زمان نمایش!
زمان نمایش!

بیایید روی این نظریه کمی استراحت کنیم و روی نحوه اندازه گیری ذرات معلق با استفاده از رزبری پای و سنسور SDS011 تمرکز کنیم.

اتصال HW در واقع بسیار ساده است. این سنسور با یک آداپتور USB به فروش می رسد تا داده های خروجی 7 پین UART خود را با یکی از اتصالات USB استاندارد RPi متصل کند.

SDS011 pinout:

  • پین 1 - متصل نیست
  • پین 2 - PM2.5: 0–999μg/m³ ؛ خروجی PWM
  • پین 3-5 ولت
  • پین 4 - PM10: 0-999 μg/m³ ؛ خروجی PWM
  • پین 5 - GND
  • پین 6 - RX UART (TTL) 3.3V
  • پین 7 - TX UART (TTL) 3.3V

برای این آموزش ، من برای اولین بار از Raspberry-Pi 4 جدید استفاده می کنم ، اما البته ، هر مدل قبلی نیز خوب کار می کند.

به محض اتصال سنسور به یکی از پورت های USB RPi ، به طور خودکار به صدای فن آن گوش می دهید. سر و صدا کمی آزاردهنده است ، بنابراین شاید باید آن را از برق بکشید و منتظر بمانید تا همه چیز با SW تنظیم شود.

ارتباط بین سنسور و RPi از طریق یک پروتکل سریال انجام می شود. جزئیات مربوط به این پروتکل را می توانید در اینجا پیدا کنید: Laser Dust Sensor Control Protocol V1.3. اما برای این پروژه ، بهترین کار استفاده از رابط پایتون برای ساده سازی کد توسعه است. می توانید رابط کاربری خود را بسازید یا از برخی از آنها که در اینترنت موجود است استفاده کنید ، مانند فرانک هویر یا ایوان کالچف. ما از آخرین مورد استفاده می کنیم ، که بسیار ساده است و خوب کار می کند (می توانید اسکریپت sds011.py را از GitHub یا معدن آن بارگیری کنید).

فایل sds011.py باید در همان دایرکتوری باشد که اسکریپت خود را در آنجا ایجاد می کنید.

در مرحله توسعه ، من از Jupyter Notebook استفاده می کنم ، اما شما می توانید از هر IDE که دوست دارید استفاده کنید (برای مثال Thonny یا Geany که بخشی از بسته Raspberry Pi Debian هستند ، هر دو بسیار خوب هستند).

وارد کردن 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³) وارد می کنیم: python-aqi.

کتابخانه را با استفاده از PIP نصب کرده و آزمایش کنید (کد بالا را ببینید)

pip نصب python-aqi

و شیلی چطور؟

در شیلی از شاخص مشابهی استفاده می شود ، ICAP: شاخص کیفیت هوا برای ذرات قابل تنفس. فرمان عالی 59 ، 16 مارس 1998 ، از سوی دبیرکل وزارت امور خارجه ریاست جمهوری ، در مقاله 1 ، حرف g) تعیین می کند که سطوح تعیین کننده ICA برای مواد ذرات قابل تنفس ، ICAP.

مقادیر به طور خطی بین بخش ها متفاوت خواهد بود ، مقدار 500 با مقدار محدودی مطابقت دارد که در صورت قرار گرفتن در معرض این غلظت ها برای مردم خطر ایجاد می شود. با توجه به مقادیر ICAP ، دسته هایی تعیین شده اند که سطح غلظت MP10 را که افراد در معرض آن قرار گرفته اند ، واجد شرایط می دانند.

مرحله 7: ثبت داده ها به صورت محلی

ثبت اطلاعات بصورت محلی
ثبت اطلاعات بصورت محلی
ثبت اطلاعات بصورت محلی
ثبت اطلاعات بصورت محلی
ثبت اطلاعات بصورت محلی
ثبت اطلاعات بصورت محلی

در این مرحله ، ما همه ابزارها را برای گرفتن اطلاعات از سنسور و همچنین تبدیل آنها به "ارزش خواندنی" ، یعنی شاخص AQI ، در اختیار داریم.

بیایید یک تابع برای جذب آن مقادیر ایجاد کنیم. ما 3 مقدار را به ترتیب و میانگین آنها را به ترتیب دنبال می کنیم:

def get_data (n = 3):

sensor.sleep (sleep = False) pmt_2_5 = 0 pmt_10 = 0 time.sleep (10) برای i در محدوده (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.leep (2) return pmt_2_5 ، pmt_10 در بالا می توانید نتیجه آزمایش را مشاهده کنید. بیایید همچنین یک تابع برای تبدیل مقادیر عددی PM در شاخص AQI انجام دهیم

def conv_aqi (pmt_2_5 ، pmt_10):

aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25 ، خیابان (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10 ، خیابان (pmt_10)) بازگشت aqi_2_5 ، aqi_10 بالاتر از نتیجه آزمایش با هر دو عملکرد. اما با آنها چه باید کرد؟ ساده ترین پاسخ این است که یک تابع برای ذخیره داده های گرفته شده ایجاد کنید ، آنها را در یک فایل محلی ذخیره کنید

def save_log ():

با باز کردن ("مسیر شما در اینجا/air_quality.csv" ، "a") به عنوان log: 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) سعی کنید: save_log () به جز: print ("[INFO] Failure in logging data") time.sleep (60) همانطور که در بالا می بینیم ، هر 60 ثانیه ، زمان بندی به علاوه داده ها به این فایل "ضمیمه" می شود.

مرحله 8: ارسال داده ها به سرویس ابری

ارسال اطلاعات به سرویس ابری
ارسال اطلاعات به سرویس ابری

در این مرحله ، ما نحوه گرفتن اطلاعات از سنسور و ذخیره آنها در یک فایل CSV محلی را آموخته ایم. اکنون وقت آن است که ببینیم چگونه این داده ها را به پلت فرم IoT ارسال کنیم. در این آموزش ، ما از ThingSpeak.com استفاده می کنیم.

ThingSpeak یک برنامه اینترنت اشیا (IoT) منبع باز برای ذخیره و بازیابی داده ها از چیزها با استفاده از API های REST و MQTT است. ThingSpeak امکان ایجاد برنامه های ثبت سنسور ، برنامه های ردیابی موقعیت مکانی و یک شبکه اجتماعی از موارد را با به روز رسانی وضعیت فراهم می کند."

ابتدا ، باید یک حساب کاربری در ThinkSpeak.com داشته باشید. در مرحله بعد ، دستورالعمل های مربوط به ایجاد یک کانال را دنبال کنید و به شناسه کانال آن و نوشتن کلید API توجه کنید.

هنگام ایجاد کانال ، همچنین باید مشخص کنید که اطلاعاتی که در هریک از 8 فیلد بارگذاری می شود ، همانطور که در بالا نشان داده شده است (در مورد ما فقط 4 مورد از آنها استفاده خواهد شد).

مرحله 9: پروتکل MQTT و ThingSpeak Connection

پروتکل MQTT و ThingSpeak Connection
پروتکل MQTT و ThingSpeak Connection

MQTT یک معماری انتشار/اشتراک است که عمدتا برای اتصال پهنای باند و دستگاه های محدود کننده قدرت بر روی شبکه های بی سیم توسعه یافته است. این یک پروتکل ساده و سبک است که روی سوکت های TCP/IP یا WebSockets اجرا می شود. MQTT روی WebSockets را می توان با SSL ایمن کرد. معماری انتشار/اشتراک ، پیامها را بدون نیاز به نظرسنجی مداوم سرور به دستگاههای سرویس گیرنده منتقل می کند.

کارگزار MQTT نقطه مرکزی ارتباطات است و وظیفه ارسال همه پیامها بین فرستندگان و گیرندگان قانونی را بر عهده دارد. مشتری هر دستگاهی است که به کارگزار متصل می شود و می تواند موضوعاتی را برای دسترسی به اطلاعات منتشر یا مشترک کند. یک موضوع حاوی اطلاعات مسیریابی برای کارگزار است. هر مشتری که می خواهد پیام ارسال کند آنها را در یک موضوع خاص منتشر می کند و هر مشتری که می خواهد پیام دریافت کند در یک موضوع خاص مشترک می شود. کارگزار همه پیامها را با موضوع منطبق به مشتریان مناسب می رساند.

ThingSpeak bro دارای یک کارگزار MQTT در آدرس URL mqtt.thingspeak.com و پورت 1883 است. کارگزار ThingSpeak از انتشار MQTT و اشتراک MQTT پشتیبانی می کند.

در مورد ما ، ما از MQTT Publish استفاده می کنیم.

مرحله 10: انتشار MQTT

انتشار MQTT
انتشار MQTT

برای شروع ، بیایید کتابخانه کلاینت Eclipse Paho MQTT Python را نصب کنیم که نسخه های 3.1 و 3.1.1 پروتکل MQTT را پیاده سازی می کند.

sudo pip paho-mqtt را نصب کنید

بعد ، بیایید کتابخانه paho را وارد کنیم:

وارد کردن paho.mqtt.publish به عنوان انتشار

و کانال Thingspeak و پروتکل 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)

و بس! ما آماده شروع ارسال داده ها به ابر هستیم! بیایید تابع حلقه قبلی را بازنویسی کنیم تا بخشی از ThingSpeak را نیز شامل شود.

# ارسال همه داده ها به ThingSpeak هر 1 دقیقه

while (True): 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 (pmt_10) + "& field4 =" + str (aqi_10) try: published.single (topic، payload = tPayload، hostname = mqttHost، port = tPort، tls = tTLS، transport = tTransport) save_log () به جز: print ("

مرحله 11: فیلمنامه نهایی

ذکر این نکته ضروری است که Jupyter Notebook یک ابزار بسیار خوب برای توسعه و گزارش است ، اما برای ایجاد یک کد برای تولید مناسب نیست. کاری که اکنون باید انجام دهید این است که قسمت مربوطه کد را بردارید و یک اسکریپت.py ایجاد کنید و آن را در ترمینال خود اجرا کنید.

به عنوان مثال ، "ts_air_quality_logger.py" ، که باید با فرمان اجرا کنید:

پایتون 3 ts_air_quality_logger.py

این اسکریپت و همچنین Jupyter Notebook و sds011.py را می توانید در مخزن من در RPi_Air_Quality_Sensor پیدا کنید.

توجه داشته باشید که این اسکریپت فقط برای آزمایش امکان پذیر است. بهترین کار این است که از تاخیرها در حلقه نهایی (که کد را در "مکث" قرار می دهد) استفاده نکنید ، در عوض از تایمرها استفاده کنید. یا برای یک برنامه واقعی ، بهترین استفاده از حلقه نیست ، زیرا لینوکس برنامه ریزی شده است تا اسکریپت را به طور منظم با crontab اجرا کند.

مرحله 12: بیرون آوردن مانیتور

بیرون آوردن مانیتور
بیرون آوردن مانیتور
بیرون آوردن مانیتور
بیرون آوردن مانیتور
بیرون آوردن مانیتور
بیرون آوردن مانیتور
بیرون آوردن مانیتور
بیرون آوردن مانیتور

هنگامی که مانیتور کیفیت رزبری پای هوای من کار می کرد ، من RPi را داخل یک جعبه پلاستیکی مونتاژ کردم ، سنسور را بیرون نگه داشتم و در خارج از خانه خود قرار دادم.

دو تجربه ایجاد شد.

مرحله 13: احتراق موتور بنزین

احتراق موتور بنزینی
احتراق موتور بنزینی
احتراق موتور بنزینی
احتراق موتور بنزینی

سنسور در فاصله 1 متری گاز لامبرتا قرار گرفت و موتور آن روشن شد. موتور چند دقیقه روشن بود و خاموش شد. از فایل لاگ بالا ، نتیجه ای که من گرفتم. جالب است که تایید کنم PM2.5 خطرناک ترین ذره ای است که از موتور به وجود آمده است.

مرحله 14: سوزاندن چوب

سوختن چوب
سوختن چوب
سوختن چوب
سوختن چوب

با نگاه کردن به پرونده گزارش ، متوجه می شویم که داده های سنسور لحظه ای "خارج از محدوده" بوده و توسط کتابخانه تبدیل AQI به خوبی ضبط نشده است ، بنابراین من کد قبلی را برای مدیریت آن تغییر می دهم:

def conv_aqi (pmt_2_5 ، pmt_10):

try: 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: نتیجه گیری

نتیجه
نتیجه

مثل همیشه ، امیدوارم این پروژه بتواند به دیگران کمک کند تا به دنیای هیجان انگیز علم الکترونیک و داده ها راه پیدا کنند!

برای اطلاعات بیشتر و کد نهایی ، لطفاً از سپرده گذاری GitHub من دیدن کنید: RPi_Air_Quality_Sensor.

سلودوس از جنوب جهان!

شما را در دستورالعمل بعدی من می بینم!

متشکرم،

مارسلو

توصیه شده: