جدول المحتويات:

جهاز مراقبة جودة الهواء IoT منخفض التكلفة يعتمد على RaspberryPi 4: 15 خطوات (مع صور)
جهاز مراقبة جودة الهواء IoT منخفض التكلفة يعتمد على RaspberryPi 4: 15 خطوات (مع صور)

فيديو: جهاز مراقبة جودة الهواء IoT منخفض التكلفة يعتمد على RaspberryPi 4: 15 خطوات (مع صور)

فيديو: جهاز مراقبة جودة الهواء IoT منخفض التكلفة يعتمد على RaspberryPi 4: 15 خطوات (مع صور)
فيديو: Water Quality Monitoring: Temperature, LDR, PH, Water Level, and Turbidity Using Arduino 2024, يوليو
Anonim
جهاز مراقبة جودة هواء إنترنت الأشياء منخفض التكلفة يعتمد على RaspberryPi 4
جهاز مراقبة جودة هواء إنترنت الأشياء منخفض التكلفة يعتمد على RaspberryPi 4
جهاز مراقبة جودة هواء إنترنت الأشياء منخفض التكلفة يعتمد على RaspberryPi 4
جهاز مراقبة جودة هواء إنترنت الأشياء منخفض التكلفة يعتمد على RaspberryPi 4
جهاز مراقبة جودة هواء إنترنت الأشياء منخفض التكلفة يعتمد على RaspberryPi 4
جهاز مراقبة جودة هواء إنترنت الأشياء منخفض التكلفة يعتمد على RaspberryPi 4
جهاز مراقبة جودة هواء إنترنت الأشياء منخفض التكلفة يعتمد على RaspberryPi 4
جهاز مراقبة جودة هواء إنترنت الأشياء منخفض التكلفة يعتمد على RaspberryPi 4

تتمتع سانتياغو ، تشيلي ، خلال فترة الطوارئ البيئية الشتوية ، بامتياز العيش في واحدة من أجمل البلدان في العالم ، ولكن للأسف ، ليس كل الورود. تعاني تشيلي خلال فصل الشتاء كثيرًا من تلوث الهواء ، ويرجع ذلك أساسًا إلى المواد الجسيمية مثل الغبار والضباب الدخاني.

بسبب الطقس البارد ، في الجنوب ، يرجع تلوث الهواء بشكل أساسي إلى العوامل المسيرة الخشبية وفي سانتياغو (العاصمة الرئيسية في وسط البلاد) مختلطة من الصناعات والسيارات وموقعها الجغرافي الفريد بين سلسلتين جبليتين ضخمتين.

في الوقت الحاضر ، يعد تلوث الهواء مشكلة كبيرة في جميع أنحاء العالم ، وفي هذه المقالة سوف نستكشف كيفية تطوير جهاز مراقبة جودة الهواء منخفض التكلفة محلي الصنع ، استنادًا إلى Raspberry Pi. إذا كنت مهتمًا بمعرفة المزيد عن جودة الهواء ، فيرجى زيارة مشروع "مؤشر جودة الهواء العالمي".

اللوازم

  • رازبيري باي 4
  • 1SDS011 - مستشعر الكشف عن جودة الهواء بالليزر pm2.5 عالي الدقة
  • صندوق بلاستيكي

الخطوة 1: المادة الجسيمية (PM): ما هي؟ كيف تصل إلى الهواء؟

المادة الجسيمية (PM): ما هي؟ كيف تصل إلى الهواء؟
المادة الجسيمية (PM): ما هي؟ كيف تصل إلى الهواء؟

لذلك ، لفهم التلوث أو تلوث الهواء ، يجب علينا دراسة الجسيمات المرتبطة بذلك ، والتي تُعرف أيضًا باسم الجسيمات. بالنظر إلى الرسوم البيانية في القسم السابق يمكننا أن نلاحظ أنهم ذكروا PM2.5 و PM10. دعونا نقدم نظرة عامة سريعة على ذلك.

يشير مصطلح PM إلى الجسيمات (وتسمى أيضًا تلوث الجسيمات): مصطلح يشير إلى مزيج من الجسيمات الصلبة والقطرات السائلة الموجودة في الهواء. بعض الجسيمات ، مثل الغبار أو الأوساخ أو السخام أو الدخان ، تكون كبيرة أو مظلمة بما يكفي لتراها بالعين المجردة. البعض الآخر صغير جدًا بحيث لا يمكن اكتشافه إلا باستخدام المجهر الإلكتروني. تأتي الجسيمات في مجموعة واسعة من الأحجام. الجسيمات التي يقل قطرها عن 10 ميكرومتر أو تساويها صغيرة جدًا بحيث يمكنها الوصول إلى الرئتين ، مما قد يتسبب في مشاكل صحية خطيرة. عشرة ميكرومتر أقل من عرض شعرة واحدة.

يشمل تلوث الجسيمات جزيئات الغبار الخشنة (PM10): جسيمات قابلة للاستنشاق ، بأقطار عادة ما تكون 10 ميكرومتر وأصغر. وتشمل المصادر عمليات التكسير أو الطحن والغبار الذي تثيره المركبات على الطرق. الجسيمات الدقيقة (PM2.5): جسيمات دقيقة قابلة للاستنشاق ، بأقطار عادة 2.5 ميكرومتر وأصغر. يتم إنتاج الجسيمات الدقيقة من جميع أنواع الاحتراق ، بما في ذلك السيارات ومحطات الطاقة وحرق الأخشاب السكنية وحرائق الغابات والحرق الزراعي وبعض العمليات الصناعية ، يمكنك العثور على المزيد حول الجسيمات على موقع وكالة حماية البيئة الأمريكية: وكالة حماية البيئة الأمريكية

الخطوة 2: لماذا من المهم الاهتمام بهذه الجسيمات؟

لماذا من المهم الاهتمام بهذه المسائل الجسيمية؟
لماذا من المهم الاهتمام بهذه المسائل الجسيمية؟

كما وصفه جيراردو ألفارادو ز. في عمله في جامعة تشيلي ، كانت دراسات حلقات تلوث الهواء المرتفع في وادي ميوز (بلجيكا) في عام 1930 ، ودونورا (بنسلفانيا) في عام 1948 ولندن في عام 1952 ، أول مصادر موثقة تتعلق بالوفيات. مع تلوث الجسيمات (Préndez ، 1993). حدد التقدم في التحقيق في آثار تلوث الهواء على صحة الناس أن المخاطر الصحية ناتجة عن جزيئات قابلة للاستنشاق ، اعتمادًا على تغلغلها وترسبها في أقسام مختلفة من الجهاز التنفسي ، والاستجابة البيولوجية للمواد المترسبة.

يتم ترشيح الجزيئات السميكة ، حوالي 5 ميكرومتر ، من خلال العمل المشترك لأهداب الممر الأنفي والغشاء المخاطي الذي يغطي تجويف الأنف والقصبة الهوائية. يمكن أن تترسب الجسيمات التي يتراوح قطرها بين 0.5 و 5 ميكرومتر في القصبات الهوائية وحتى في الحويصلات الرئوية ، ومع ذلك ، يتم التخلص منها بواسطة أهداب القصبات والشعيبات بعد بضع ساعات. يمكن للجسيمات الأصغر من 0.5 ميكرومتر أن تخترق بعمق حتى تترسب في الحويصلات الرئوية ، وتبقى من أسابيع إلى سنوات ، حيث لا توجد آلية نقل مخاطية تسهل التخلص منها. يوضح الشكل التالي تغلغل الجزيئات في الجهاز التنفسي حسب حجمها.

لذلك ، من المهم للغاية اكتشاف كلا النوعين من الجسيمات (PM2.5 و PM10) والخبر السار هو أن كلاهما يمكن قراءته بواسطة مستشعر بسيط وغير مكلف ، SDS011.

الخطوة 3: جهاز استشعار الجسيمات - SDS011

مستشعر الجسيمات - SDS011
مستشعر الجسيمات - SDS011
مستشعر الجسيمات - SDS011
مستشعر الجسيمات - SDS011

مراقبة جودة الهواء علم معروف وراسخ بدأ في الثمانينيات. في ذلك الوقت ، كانت التكنولوجيا محدودة للغاية ، وكان الحل المستخدم في تحديد مجمع تلوث الهواء مرهقًا ومكلفًا حقًا.

لحسن الحظ ، في الوقت الحاضر ، مع أحدث التقنيات الحديثة ، أصبحت الحلول المستخدمة لمراقبة جودة الهواء ليست فقط أكثر دقة ولكن أيضًا أسرع في القياس. أصبحت الأجهزة أصغر حجمًا ، وأصبحت تكلفتها أقل بكثير من أي وقت مضى.

في هذه المقالة سوف نركز على مستشعر الجسيمات ، الذي يمكنه الكشف عن كمية الغبار في الهواء. في حين أن الجيل الأول كان قادرًا على اكتشاف مقدار التعتيم ، فإن أحدث المستشعرات مثل SDS011 من INOVAFIT ، وهو فرع من جامعة جينان (في شاندونغ) ، يمكنه الآن اكتشاف PM2.5 و PM10.

مع حجمه ، من المحتمل أن يكون SDS011 أحد أفضل أجهزة الاستشعار من حيث الدقة والسعر (أقل من USD40.00).

  • القيم المقاسة: PM2.5 ، PM10
  • النطاق: 0-999.9 ميكروغرام / متر مكعب
  • جهد الإمداد: 5 فولت (4.7-5.3 فولت)
  • استهلاك الطاقة (العمل): 70mA ± 10mA
  • استهلاك الطاقة (ليزر وضع السكون ومروحة): <4mA
  • درجة حرارة التخزين: -20 إلى +60 درجة مئوية
  • درجة حرارة العمل: -10 إلى +50 درجة مئوية
  • الرطوبة (التخزين): ماكس. 90٪
  • الرطوبة (العمل): ماكس. 70٪ (تكثيف بخار الماء قراءات مزيفة)
  • الدقة: 70٪ لـ 0.3μm و 98٪ لـ 0.5μm
  • الحجم: 71x70x23 ملم
  • إصدار الشهادات: CE، FCC، RoHS

يستخدم SD011 PCB كجانب واحد من الغلاف ، مما يسمح بتقليل تكلفته. يتم تثبيت الصمام الثنائي المستقبل على جانب ثنائي الفينيل متعدد الكلور (هذا إلزامي حيث يجب تجنب أي ضوضاء بين الصمام الثنائي والمضخم منخفض الضوضاء). يتم تثبيت الليزر الباعث على الصندوق البلاستيكي ومتصل بـ PCB عبر سلك مرن.

باختصار ، Nova Fitness SDS011 عبارة عن مستشعر غبار بالليزر احترافي. المروحة المثبتة على المستشعر تمتص الهواء تلقائيًا. يستخدم المستشعر مبدأ تشتت ضوء الليزر * لقياس قيمة جزيئات الغبار العالقة في الهواء. يوفر المستشعر قراءات عالية الدقة وموثوقة لقيم PM2.5 و PM10. يمكن ملاحظة أي تغيير في البيئة وقت الاستجابة القصير على الفور تقريبًا أقل من 10 ثوانٍ. يُبلغ المستشعر في الوضع القياسي عن القراءة بفاصل زمني مدته ثانية.

* مبدأ تشتت الليزر: يمكن أن يحدث تشتت الضوء عندما تمر الجسيمات عبر منطقة الكشف. يتحول الضوء المتناثر إلى إشارات كهربائية ويتم تضخيم هذه الإشارات ومعالجتها. يمكن الحصول على عدد الجسيمات وقطرها عن طريق التحليل لأن شكل موجة الإشارة له علاقات معينة مع قطر الجسيمات.

الخطوة 4: لكن كيف يمكن لـ SDS011 التقاط هذه الجسيمات؟

ولكن كيف يمكن لـ SDS011 التقاط هذه الجسيمات؟
ولكن كيف يمكن لـ SDS011 التقاط هذه الجسيمات؟
ولكن كيف يمكن لـ SDS011 التقاط هذه الجسيمات؟
ولكن كيف يمكن لـ SDS011 التقاط هذه الجسيمات؟

كما تم التعليق عليه من قبل ، فإن المبدأ المستخدم بواسطة SDS011 هو تشتت الضوء أو أفضل منه ، تشتت الضوء الديناميكي (DLS) ، وهي تقنية في الفيزياء يمكن استخدامها لتحديد ملف توزيع الحجم للجسيمات الصغيرة في التعليق أو البوليمرات في المحلول. في نطاق DLS ، عادةً ما يتم تحليل التقلبات الزمنية عن طريق الكثافة أو وظيفة الارتباط التلقائي للفوتون (المعروف أيضًا باسم التحليل الطيفي للارتباط الفوتوني أو تشتت الضوء شبه المرن). في تحليل المجال الزمني ، عادةً ما تتحلل وظيفة الارتباط التلقائي (ACF) بدءًا من وقت التأخير الصفري ، وتؤدي الديناميكيات الأسرع بسبب الجسيمات الأصغر إلى ارتباط ديكور أسرع لتتبع الكثافة المتناثرة. لقد ثبت أن كثافة ACF هي تحويل فورييه لطيف القدرة ، وبالتالي يمكن إجراء قياسات DLS بشكل جيد في المجال الطيفي.

فوق تشتت ضوئي ديناميكي افتراضي لعينتين: جزيئات أكبر (مثل PM10) في الجزء العلوي وجزيئات أصغر (مثل PM2.5) في الأسفل. وبالنظر إلى داخل جهاز الاستشعار الخاص بنا ، يمكننا أن نرى كيف يتم تطبيق مبدأ تشتت الضوء.

تنتقل الإشارة الكهربائية الملتقطة على الصمام الثنائي إلى مضخم منخفض الضوضاء ومن ذلك يتم تحويلها إلى إشارة رقمية من خلال ADC وإلى الخارج عبر UART.

لمعرفة المزيد عن SDS011 من خلال تجربة علمية حقيقية ، يرجى إلقاء نظرة على عمل Konstantinos et al لعام 2018 ، وهو تطوير واختبار ميداني لنظام محمول منخفض التكلفة لرصد تركيزات PM2.5.

الخطوة الخامسة: شوتايم

موعد العرض!
موعد العرض!
موعد العرض!
موعد العرض!

دعونا نأخذ استراحة من كل هذه النظرية ونركز على كيفية قياس الجسيمات باستخدام Raspberry Pi ومستشعر SDS011

اتصال المخلفات الخطرة في الحقيقة بسيط للغاية. يباع المستشعر مع محول USB لربط بيانات الإخراج من 7 دبابيس UART بأحد موصلات RPi القياسية USB.

SDS011 pinout:

  • دبوس 1 - غير متصل
  • دبوس 2 - PM2.5: 0-999 ميكروغرام / متر مكعب ؛ خرج PWM
  • دبوس 3-5 فولت
  • دبوس 4 - PM10: 0-999 ميكروغرام / متر مكعب ؛ خرج PWM
  • دبوس 5 - GND
  • دبوس 6 - RX UART (TTL) 3.3 فولت
  • دبوس 7 - TX UART (TTL) 3.3 فولت

في هذا البرنامج التعليمي ، أستخدم لأول مرة Raspberry-Pi 4. جديد تمامًا ولكن بالطبع ، أي نموذج سابق سيعمل أيضًا بشكل جيد.

بمجرد توصيل المستشعر بأحد منافذ RPi USB ، ستبدأ تلقائيًا في الاستماع إلى صوت المروحة. الضوضاء مزعجة بعض الشيء ، لذا ربما يجب عليك فصلها والانتظار حتى تنتهي من ضبط SW.

سيكون الاتصال بين المستشعر و RPi من خلال بروتوكول تسلسلي. يمكن العثور على تفاصيل حول هذا البروتوكول هنا: بروتوكول التحكم في مستشعر غبار الليزر V1.3. ولكن بالنسبة لهذا المشروع ، من الأفضل استخدام واجهة بيثون لتبسيط الكود المطلوب تطويره. يمكنك إنشاء واجهتك الخاصة أو استخدام بعض ما هو متاح على الإنترنت ، مثل Frank Heuer أو Ivan Kalchev. سنستخدم الأخير ، وهو بسيط للغاية ويعمل بشكل جيد (يمكنك تنزيل البرنامج النصي 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 ثوانٍ على الأقل لتحقيق الاستقرار قبل القياسات وثانيتين على الأقل لبدء واحدة جديدة (انظر الكود أعلاه).

وهذا كل ما تحتاج إلى معرفته من حيث SW لاستخدام المستشعر. لكن دعونا نتعمق أكثر في مراقبة جودة الهواء! في بداية هذه المقالة ، إذا قمت باستكشاف المواقع التي تقدم معلومات حول مدى جودة الهواء أو سوء حالته ، فيجب أن تدرك أن الألوان مرتبطة بهذه القيم. كل لون هو فهرس. وأشهرها هو AQI (مؤشر جودة الهواء) المستخدم في الولايات المتحدة والعديد من البلدان الأخرى.

الخطوة 6: مؤشر جودة الهواء - AQI

مؤشر جودة الهواء - AQI
مؤشر جودة الهواء - AQI
مؤشر جودة الهواء - AQI
مؤشر جودة الهواء - AQI
مؤشر جودة الهواء - AQI
مؤشر جودة الهواء - AQI

AQI هو مؤشر للإبلاغ عن جودة الهواء اليومية. يخبرك بمدى نظافة الهواء أو تلوثه ، وما الآثار الصحية المرتبطة به التي قد تكون مصدر قلق لك. يركز مؤشر جودة الهواء على الآثار الصحية التي قد تواجهها في غضون ساعات أو أيام قليلة بعد استنشاق هواء ملوث.

وكالة حماية البيئة الأمريكية (وكالة حماية البيئة الأمريكية) ، على سبيل المثال ، تحسب مؤشر جودة الهواء ليس فقط لتلوث الجسيمات (PM2.5 و PM10) ولكن أيضًا لملوثات الهواء الرئيسية الأخرى التي ينظمها قانون الهواء النظيف: الأوزون على مستوى الأرض ، وأول أكسيد الكربون وثاني أكسيد الكبريت وثاني أكسيد النيتروجين. لكل من هذه الملوثات ، أنشأت وكالة حماية البيئة معايير جودة الهواء الوطنية لحماية الصحة العامة. انظر الصورة أعلاه مع قيم AQI والألوان والرسالة الصحية المرتبطة.

كما تم التعليق عليه من قبل ، فإن قيم وألوان مؤشر جودة الهواء تلك مرتبطة بكل عامل من العوامل الملوثة ، ولكن كيف يتم ربط القيم الناتجة عن أجهزة الاستشعار بها؟ يربطهم جدول إضافي جميعًا كما هو موضح أعلاه.

لكن بالطبع ، ليس من المنطقي الاستفادة من مثل هذا الجدول. في النهاية ، إنها خوارزمية رياضية بسيطة تقوم بالحساب. لذلك ، سنقوم باستيراد المكتبة للتحويل بين قيمة AQI وتركيز الملوثات (µg / m³): python-aqi.

قم بتثبيت المكتبة باستخدام PIP وقم بإجراء اختبار (انظر الرمز أعلاه)

نقطة تثبيت python-aqi

وماذا عن تشيلي؟

في شيلي ، يتم استخدام مؤشر مماثل ، ICAP: مؤشر جودة الهواء للجسيمات القابلة للتنفس. ينص المرسوم السامي رقم 59 الصادر في 16 مارس 1998 ، الصادر عن الأمين العام لوزارة رئاسة الجمهورية ، في مادته 1 ، الحرف ز) على أن المستويات التي تحدد ICA للمواد الجسيمية القابلة للتنفس ، ICAP.

ستختلف القيم خطيًا بين الأقسام ، وستتوافق القيمة 500 مع القيمة الحدية التي قد يكون هناك خطر على السكان عند تعرضها لهذه التركيزات. وفقًا لقيم ICAP ، حددت الفئات التي تؤهل مستويات تركيز MP10 التي تعرض لها الأشخاص.

الخطوة 7: تسجيل البيانات محليًا

تسجيل البيانات محليا
تسجيل البيانات محليا
تسجيل البيانات محليا
تسجيل البيانات محليا
تسجيل البيانات محليا
تسجيل البيانات محليا

في هذه المرحلة ، لدينا جميع الأدوات لالتقاط البيانات من المستشعر وتحويلها أيضًا للحصول على "قيمة قابلة للقراءة" ، وهي مؤشر AQI.

دعونا ننشئ وظيفة لالتقاط تلك القيم. سنلتقط 3 قيم متتالية مع أخذ المتوسط فيما بينها:

def get_data (ن = 3):

sensor.sleep (sleep = False) pmt_2_5 = 0 pmt_10 = 0 time.sleep (10) for i in range (n): x = sensor.query () pmt_2_5 = pmt_2_5 + x [0] pmt_10 = pmt_10 + x [1] الوقت. أعلاه يمكنك رؤية نتيجة الاختبار. لنفعل أيضًا وظيفة لتحويل القيم الرقمية لـ PM في مؤشر 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 فوق نتيجة اختبار مع كلتا الوظيفتين. لكن ماذا تفعل معهم؟ أبسط إجابة هي إنشاء وظيفة لحفظ البيانات الملتقطة وحفظها في ملف محلي

def save_log ():

مع open ("YOUR PATH HERE / 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) جرب: save_log () باستثناء: print ("[INFO] Failure in logging data") time.sleep (60) كل 60 ثانية ، سيتم "إلحاق" الطابع الزمني بالإضافة إلى البيانات بهذا الملف ، كما نرى أعلاه.

الخطوة 8: إرسال البيانات إلى خدمة سحابية

إرسال البيانات إلى خدمة سحابية
إرسال البيانات إلى خدمة سحابية

في هذه المرحلة ، تعلمنا كيفية التقاط البيانات من المستشعر وحفظها في ملف CSV محلي. حان الوقت الآن لمعرفة كيفية إرسال هذه البيانات إلى منصة إنترنت الأشياء. في هذا البرنامج التعليمي ، سوف نستخدم ThingSpeak.com.

“ThingSpeak هو تطبيق إنترنت الأشياء (IoT) مفتوح المصدر لتخزين واسترداد البيانات من الأشياء ، باستخدام واجهات برمجة تطبيقات REST و MQTT. يتيح ThingSpeak إنشاء تطبيقات تسجيل أجهزة الاستشعار وتطبيقات تتبع الموقع وشبكة اجتماعية للأشياء مع تحديثات الحالة.

أولاً ، يجب أن يكون لديك حساب في ThinkSpeak.com. بعد ذلك ، اتبع التعليمات لإنشاء قناة ، مع ملاحظة معرف القناة ومفتاح واجهة برمجة التطبيقات للكتابة.

عند إنشاء القناة ، يجب عليك أيضًا تحديد المعلومات التي سيتم تحميلها على كل حقل من الحقول الثمانية ، كما هو موضح أعلاه (في حالتنا ، سيتم استخدام 4 منها فقط).

الخطوة 9: بروتوكول MQTT واتصال ThingSpeak

بروتوكول MQTT واتصال ThingSpeak
بروتوكول MQTT واتصال ThingSpeak

MQTT هي بنية نشر / اشتراك تم تطويرها بشكل أساسي لتوصيل النطاق الترددي والأجهزة المقيدة بالطاقة عبر الشبكات اللاسلكية. إنه بروتوكول بسيط وخفيف الوزن يتم تشغيله عبر مآخذ TCP / IP أو WebSockets. يمكن تأمين MQTT عبر WebSockets باستخدام SSL. تتيح بنية النشر / الاشتراك دفع الرسائل إلى أجهزة العميل دون الحاجة إلى قيام الجهاز باستقصاء الخادم باستمرار.

وسيط MQTT هو نقطة الاتصال المركزية ، وهو المسؤول عن إرسال جميع الرسائل بين المرسلين والمستلمين الشرعيين. العميل هو أي جهاز يتصل بالوسيط ويمكنه نشر الموضوعات أو الاشتراك فيها للوصول إلى المعلومات. يحتوي الموضوع على معلومات التوجيه الخاصة بالوسيط. كل عميل يريد إرسال رسائل ينشرها لموضوع معين ، وكل عميل يريد استقبال الرسائل يشترك في موضوع معين. يقوم الوسيط بتسليم جميع الرسائل ذات الموضوع المطابق للعملاء المناسبين.

ThingSpeak ™ لديه وسيط 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 = "YOUR WRITE KEY" topic = "channels /" + channelID + "/ publish /" + 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 (aqi_2_5) + "& field3 =" + str (aqi_2_5) + (pmt_10) + "& field4 =" + str (aqi_10) جرب: publish.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.

لاحظ أن هذا البرنامج النصي ممكن للاختبار فقط. الأفضل هو عدم استخدام التأخيرات داخل الحلقة النهائية (التي تضع الرمز في "إيقاف مؤقت") ، بدلاً من استخدام المؤقتات. أو بالنسبة إلى تطبيق حقيقي ، فإن الأفضل هو عدم استخدام الحلقة ، حيث تمت برمجة Linux لتنفيذ البرنامج النصي بشكل منتظم باستخدام crontab.

الخطوة 12: إخراج الشاشة إلى الخارج

إخراج الشاشة إلى الخارج
إخراج الشاشة إلى الخارج
إخراج الشاشة إلى الخارج
إخراج الشاشة إلى الخارج
إخراج الشاشة إلى الخارج
إخراج الشاشة إلى الخارج
إخراج الشاشة إلى الخارج
إخراج الشاشة إلى الخارج

بمجرد أن تعمل شاشة Raspberry Pi Air Quality الخاصة بي ، قمت بتجميع RPi داخل صندوق بلاستيكي ، مع إبقاء المستشعر بالخارج ووضعه خارج منزلي.

تم إجراء تجربتين.

الخطوة 13: احتراق محرك البنزين

احتراق محرك البنزين
احتراق محرك البنزين
احتراق محرك البنزين
احتراق محرك البنزين

تم وضع المستشعر على بعد حوالي متر واحد من نطاق الغاز في Lambretta ، وتم تشغيل محركه. كان المحرك يعمل لبضع دقائق ثم توقف. من ملف السجل أعلاه ، النتيجة التي حصلت عليها. من المثير للاهتمام أن نؤكد أن 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 باستثناء: return 600 aqi_2_5، aqi_10 يمكن أن يحدث هذا الموقف في الميدان ، وهو أمر لا بأس به. تذكر أنه في الواقع ، يجب عليك استخدام المتوسط المتحرك للحصول على AQI حقًا (كل ساعة على الأقل ، ولكن عادةً يوميًا).

الخطوة 15: الخاتمة

استنتاج
استنتاج

كما هو الحال دائمًا ، آمل أن يساعد هذا المشروع الآخرين في العثور على طريقهم إلى عالم الإلكترونيات وعلوم البيانات المثير!

للحصول على التفاصيل والرمز النهائي ، يرجى زيارة مستودع GitHub الخاص بي: RPi_Air_Quality_Sensor.

Saludos من جنوب العالم!

نراكم في بلدي التعليمات القادمة!

شكرا لك،

مارسيلو

موصى به: