Агуулгын хүснэгт:

RaspberryPi 4: 15 алхам дээр суурилсан хямд үнэтэй IoT агаарын чанарын хяналт (зурагтай)
RaspberryPi 4: 15 алхам дээр суурилсан хямд үнэтэй IoT агаарын чанарын хяналт (зурагтай)

Видео: RaspberryPi 4: 15 алхам дээр суурилсан хямд үнэтэй IoT агаарын чанарын хяналт (зурагтай)

Видео: RaspberryPi 4: 15 алхам дээр суурилсан хямд үнэтэй IoT агаарын чанарын хяналт (зурагтай)
Видео: SCP-261 Пан-мерное Торговый и эксперимент Войти 261 объявление Де + полный + 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 том уулын гинж хоорондын өвөрмөц газарзүйн нөхцөл байдалтай холилдсон Сантьяго хотод байдаг.

Өнөө үед агаарын бохирдол нь дэлхийн өнцөг булан бүрт том асуудал болж байгаа бөгөөд энэ нийтлэлд бид Raspberry Pi дээр суурилсан хямд үнэтэй гар хийцийн агаарын чанарын мониторыг хэрхэн хөгжүүлэх талаар судлах болно. Хэрэв та агаарын чанарын талаар илүү ихийг мэдэхийг хүсч байвал "Дэлхийн агаарын чанарын индекс" төсөлтэй танилцана уу.

Хангамж

  • Raspberry Pi 4
  • 1SDS011 - Өндөр нарийвчлалтай лазер pm2.5 агаарын чанарыг илрүүлэх мэдрэгч
  • Хуванцар хайрцаг

Алхам 1: тоосонцор (PM): Энэ юу вэ? Энэ нь агаарт хэрхэн ордог вэ?

Бөөмийн бодис (PM): Энэ юу вэ? Энэ нь агаарт хэрхэн ордог вэ?
Бөөмийн бодис (PM): Энэ юу вэ? Энэ нь агаарт хэрхэн ордог вэ?

Тиймээс бохирдол эсвэл агаарын бохирдлыг ойлгохын тулд бид үүнтэй холбоотой тоосонцорыг судлах ёстой бөгөөд үүнийг тоосонцор гэж нэрлэдэг. Өмнөх хэсгийн графикийг харвал тэд PM2.5 ба PM10 -ийн талаар дурдсан болохыг харж болно. Үүний талаар товч тойм өгье.

PM гэдэг нь тоосонцор (бөөмийн бохирдол гэж нэрлэдэг) гэсэн утгатай: агаарт байгаа хатуу тоосонцор ба шингэн дуслын холимог гэсэн нэр томъёо. Тоос, шороо, хөө тортог, утаа зэрэг зарим тоосонцор нь нүцгэн нүдээр харахад хангалттай том эсвэл харанхуй байдаг. Бусад нь маш жижиг тул зөвхөн электрон микроскопоор илрүүлдэг. Бөөмс нь маш олон төрлийн хэмжээтэй байдаг. 10 микрометрээс бага хэмжээтэй тэнцүү хэсгүүд нь маш жижиг хэмжээтэй тул уушгинд нэвтэрч, эрүүл мэндэд ноцтой асуудал үүсгэж болзошгүй юм. Арван микрометр нь нэг хүний үсний өргөнөөс бага юм.

Бөөмийн бохирдолд бүдүүн тоосны тоосонцор (PM10) орно: амьсгалах хэсгүүд, ерөнхийдөө 10 микрометр ба түүнээс бага диаметртэй. Эх сурвалжид бутлах, нунтаглах үйл ажиллагаа, зам дээр тээврийн хэрэгслийн өдөөгдсөн тоос орно. Нарийн тоосонцор (PM2.5): диаметр нь ерөнхийдөө 2.5 микрометр ба түүнээс бага хэмжээтэй, нарийн амьсгалдаг тоосонцор. Нарийн тоосонцорыг автомашин, цахилгаан станц, орон сууцны мод шатаах, ойн түймэр, хөдөө аж ахуйн шаталт, үйлдвэрлэлийн зарим процесс зэрэг бүх төрлийн шаталтаас гаргаж авдаг.

Алхам 2: Эдгээр тоосонцорыг анхаарч үзэх нь яагаад чухал вэ?

Эдгээр тоосонцорыг анхаарч үзэх нь яагаад чухал вэ?
Эдгээр тоосонцорыг анхаарч үзэх нь яагаад чухал вэ?

GERARDO ALVARADO Z -ийн Чилийн их сургуульд хийсэн ажлынхаа дагуу 1930 онд Meuse Valley (Бельги), 1948 онд Донора (Пенсильвани), 1952 онд Лондонд агаарын бохирдол өндөр гарсан тухай судалгаа нь нас баралттай холбоотой анхны баримтжуулсан эх сурвалж болсон юм. бөөмийн бохирдлоор (Préndez, 1993). Агаарын бохирдол хүний эрүүл мэндэд хэрхэн нөлөөлж байгааг судлах явцад гарсан ахиц дэвшил нь амьсгалын тогтолцооны янз бүрийн хэсэгт нэвтэрч, хуримтлагдах, хуримтлагдсан материалд үзүүлэх биологийн хариу урвал зэргээс шалтгаалан амьсгалах тоосонцороос үүдэлтэй болохыг тогтоожээ.

Хамгийн зузаан хэсгүүд нь ойролцоогоор 5 мкм бөгөөд хамрын хөндийн цилиа, хамрын хөндий, гуурсан хоолойг хамарсан салст бүрхүүлийн хамтарсан үйлдлээр шүүгддэг. 0.5 -аас 5 мкм -ийн диаметртэй бөөмсийг гуурсан хоолойд, тэр ч байтугай уушигны цулцан дотор хуримтлуулж болох боловч хэдхэн цагийн дараа гуурсан хоолой, бронхиолийн хөөсөөр арилдаг. 0.5 мкм -ээс бага тоосонцор нь уушигны цулцан дотор хуримтлагдах хүртэл гүн нэвтэрч, хэдэн долоо хоногоос хэдэн жил хүртэл үлддэг, учир нь устгахад хялбар салст бүрхүүлийн тээвэрлэлтийн механизм байхгүй байна. Дараах зураг нь тоосонцороос хамаарч амьсгалын тогтолцоонд нэвтэрч байгааг харуулж байна.

Тиймээс, хоёр төрлийн тоосонцорыг (PM2.5 ба PM10) ялгах нь маш чухал бөгөөд сайн мэдээ бол хоёуланг нь SDS011 энгийн бөгөөд үнэтэй биш мэдрэгчээр унших боломжтой юм.

Алхам 3: Бөөмийн мэдрэгч - SDS011

Бөөмийн мэдрэгч - SDS011
Бөөмийн мэдрэгч - SDS011
Бөөмийн мэдрэгч - SDS011
Бөөмийн мэдрэгч - SDS011

Агаарын чанарын хяналт нь 80 -аад оноос эхэлсэн шинжлэх ухаан бөгөөд сайн мэддэг. Тухайн үед технологи нь нэлээд хязгаарлагдмал байсан бөгөөд шийдэл нь агаарын бохирдлын цогцолборыг тооцоолоход төвөгтэй, үнэхээр үнэтэй байв.

Аз болоход, өнөө үед хамгийн сүүлийн үеийн, орчин үеийн технологийн тусламжтайгаар Агаарын чанарыг хянах шийдлүүд нь илүү нарийвчлалтай төдийгүй хэмжихэд илүү хурдан болж байна. Төхөөрөмжүүд жижиг болж, өртөг нь урьд өмнөхөөс хамаагүй илүү хямд болсон.

Энэ нийтлэлд бид агаар дахь тоосонцорыг илрүүлэх чадвартай бөөмийн мэдрэгч дээр анхаарлаа хандуулах болно. Эхний үе нь тунгалаг байдлын хэмжээг дөнгөж олж чаддаг байсан бол хамгийн сүүлийн үеийн мэдрэгч нь Jinan их сургуулийн (Шандун муж) INOVAFIT-ийн SDS011 мэдрэгч нь одоо PM2.5 ба PM10-ийг илрүүлэх боломжтой болжээ.

Хэмжээгээрээ SDS011 нь нарийвчлал, үнийн хувьд хамгийн сайн мэдрэгчүүдийн нэг юм (40.00 доллараас бага).

  • Хэмжилсэн утга: PM2.5, PM10
  • Хүрээ: 0–999.9 мкг /м³
  • Нийлүүлэлтийн хүчдэл: 5V (4.7–5.3V)
  • Эрчим хүчний хэрэглээ (ажил): 70mA ± 10mA
  • Цахилгаан хэрэглээ (унтах горим лазер ба сэнс): <4mA
  • Хадгалах температур: -20 -аас +60 хэм хүртэл
  • Ажлын температур: -10 -аас +50 хэм хүртэл
  • Чийгшил (хадгалах): Хамгийн их. 90%
  • Чийгшил (ажил): Хамгийн их. 70% (усны уурын конденсаци нь уншилтыг гажуудуулдаг)
  • Нарийвчлал: 0.3мм -ийн хувьд 70%, 0.5мм -ийн хувьд 98%
  • Хэмжээ: 71x70x23 мм
  • Гэрчилгээ: CE, FCC, RoHS

SD011 нь ПХБ -ийг бүрхүүлийн нэг тал болгон ашигладаг бөгөөд энэ нь түүний өртөгийг бууруулах боломжийг олгодог. Рецептор диодыг ПХБ -ийн талд суурилуулсан (диод ба LNA -ийн хоорондох аливаа дуу чимээнээс зайлсхийх шаардлагатай тул үүнийг заавал хийх ёстой). Ялгаруулагч лазерыг хуванцар хайрцган дээр суурилуулж, уян хатан утсаар ПХБ -д холбодог.

Товчхондоо 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-ийн талаар илүү ихийг мэдэхийг хүсвэл PM2.5-ийн концентрацийг хянах хямд өртөгтэй зөөврийн системийг хөгжүүлэх, хээрийн туршилт хийх Константинос нар нарын 2018 оны ажлыг үзнэ үү.

Алхам 5: Showtime

Шоуны цаг!
Шоуны цаг!
Шоуны цаг!
Шоуны цаг!

Энэ бүх онолыг түр завсарлаж, Raspberry Pi болон SDS011 мэдрэгч ашиглан тоосонцорыг хэрхэн хэмжих талаар анхаарлаа хандуулцгаая.

HW холболт нь үнэндээ маш энгийн. 7 мэдрэгчтэй UART -ийн гаралтын өгөгдлийг RPi -ийн стандарт USB холбогчтой холбохын тулд мэдрэгчийг USB адаптераар зардаг.

SDS011 холбогч:

  • Pin 1 - холбогдоогүй байна
  • Зүү 2 - PM2.5: 0-999μg/m³; ХОУХ -ны гаралт
  • 3-5 В зүү
  • Зүү 4 - PM10: 0–999 мкг/м³; ХОУХ -ны гаралт
  • 5 -р зүү - GND
  • Зүү 6 - RX UART (TTL) 3.3V
  • Зүү 7 - TX UART (TTL) 3.3V

Энэхүү гарын авлагад би цоо шинэ Raspberry-Pi 4-ийг анх удаа ашиглаж байна. Гэхдээ мэдээжийн хэрэг өмнөх ямар ч загвар сайн ажиллах болно.

Та мэдрэгчийг RPi USB портуудын аль нэгэнд холбосны дараа автоматаар түүний сэнсний дууг сонсож эхэлнэ. Дуу чимээ нь бага зэрэг ядаргаатай байдаг тул та үүнийг салгаж, бүх зүйлийг SW -ийг тохируулж дуустал хүлээх хэрэгтэй болов уу.

Мэдрэгч ба RPi -ийн хоорондох холбоо нь цуваа протоколоор дамжина. Энэхүү протоколын талаарх дэлгэрэнгүй мэдээллийг эндээс авах боломжтой: Laser Dust Sensor Control Protocol V1.3. Гэхдээ энэ төслийн хувьд боловсруулж буй кодыг хялбарчлахын тулд python интерфэйсийг ашиглах нь хамгийн сайн арга юм. Та өөрийн интерфэйсийг бий болгох эсвэл интернэтэд байгаа заримыг ашиглаж болно, тухайлбал Фрэнк Хэер эсвэл Иван Калчевынх. Бид сүүлийг нь ашиглах болно, энэ нь маш энгийн бөгөөд сайн ажилладаг (та sds011.py скриптийг GitHub эсвэл уурхайгаас татаж авах боломжтой).

Sds011.py файл нь таны скриптийг үүсгэсэн лавлах санд байх ёстой.

Хөгжүүлэлтийн үе шатанд би Jupyter дэвтэр ашиглах болно, гэхдээ та дуртай IDE -ийг ашиглаж болно (жишээлбэл, Raspberry Pi Debian багцын нэг хэсэг болох Thonny эсвэл Geany бол маш сайн).

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 утга болон бохирдуулагч бодисын концентраци (мкг/м³) хооронд хөрвүүлэхийн тулд импортлох болно: python-aqi.

Номын санг PIP ашиглан суулгаад тест хийнэ үү (дээрх кодыг үзнэ үү)

python-aqi-ийг суулгах

Тэгээд Чили яах вэ?

Чилид ижил төстэй индексийг ашигладаг бөгөөд амьсгалах боломжтой хэсгүүдийн ICAP: Агаарын чанарын индекс юм. Бүгд Найрамдах Улсын Ерөнхийлөгчийн Яамны Ерөнхий нарийн бичгийн даргын 1998 оны 3 -р сарын 16 -ны өдрийн 59 -р дээд зарлигаар 1 -р зүйлийн g) үсэг нь ICA -аас амьсгалж буй тоосонцортой материалын ICA -ийг тодорхойлдог түвшинг тогтоожээ.

Утга нь хэсгүүдийн хооронд шугаман байдлаар өөр өөр байх бөгөөд 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) for i for 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 ():

open ("ТАНЫ ЗАМЫН ЭНД/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] Өгөгдөл бүртгэхэд алдаа гарсан") time.sleep (60) 60 секунд тутамд цагийн тэмдэг, өгөгдлийг энэ файлд "хавсаргах" болно.

Алхам 8: Клоуд үйлчилгээнд өгөгдөл илгээх

Клоуд үйлчилгээнд өгөгдөл илгээх
Клоуд үйлчилгээнд өгөгдөл илгээх

Энэ үед бид мэдрэгчийн өгөгдлийг орон нутгийн CSV файл дээр хадгалах аргыг сурч мэдсэн. Одоо эдгээр өгөгдлийг IoT платформ руу хэрхэн илгээхийг харах цаг болжээ. Энэ заавар дээр бид ThingSpeak.com -ийг ашиглах болно.

ThingSpeak бол REST болон MQTT API-ийг ашиглан аливаа зүйлээс өгөгдөл хадгалах, авах зориулалттай нээлттэй эхийн зүйлсийн интернет (IoT) програм юм. ThingSpeak нь мэдрэгчийг бүртгэх програмууд, байршлыг хянах програмууд, статусын шинэчлэлт бүхий олон нийтийн сүлжээг бий болгох боломжийг олгодог.

Нэгдүгээрт, та ThinkSpeak.com дээр данстай байх ёстой. Дараа нь Суваг үүсгэх зааврыг дагаж сувгийн ID болон API түлхүүрийг бичнэ үү.

Суваг үүсгэх үед дээр дурдсанчлан 8 талбар тус бүрт ямар мэдээлэл байршуулахыг тодорхойлох ёстой (манай тохиолдолд зөвхөн 4 -ийг нь ашиглах болно).

Алхам 9: MQTT протокол ба ThingSpeak холболт

MQTT протокол ба ThingSpeak холболт
MQTT протокол ба ThingSpeak холболт

MQTT бол утасгүй сүлжээгээр дамжуулах чадвар, хязгаарлагдмал төхөөрөмжүүдийг холбох зорилгоор боловсруулсан нийтлэх/захиалах архитектур юм. Энэ бол TCP/IP залгуур эсвэл WebSockets дээр ажилладаг энгийн бөгөөд хөнгөн протокол юм. WebSockets дээрх MQTT -ийг SSL -ээр хамгаалж болно. Хэвлэн нийтлэх/захиалах архитектур нь серверийг тасралтгүй санал асуулгад оруулах шаардлагагүй төхөөрөмжөөр дамжуулан мессежийг үйлчлүүлэгчийн төхөөрөмж рүү шилжүүлэх боломжийг олгодог.

MQTT брокер нь харилцааны төв цэг бөгөөд илгээгч болон хүлээн авагчдын хооронд бүх мессежийг илгээх үүрэгтэй. Үйлчлүүлэгч гэдэг нь зуучлагчтай холбогддог бөгөөд мэдээлэлд хандах сэдвүүдийг нийтлэх эсвэл захиалах боломжтой аливаа төхөөрөмж юм. Сэдэв нь зуучлагчийн чиглүүлэлтийн мэдээллийг агуулдаг. Зурвас илгээхийг хүссэн үйлчлүүлэгч бүр тэдгээрийг тодорхой сэдвээр нийтэлдэг бөгөөд мессеж хүлээн авахыг хүссэн үйлчлүүлэгч бүр тодорхой сэдвээр захиалдаг. Брокер нь тохирох сэдэвтэй бүх мессежийг зохих үйлчлүүлэгчдэд хүргэдэг.

ThingSpeak ™ нь mqtt.thingspeak.com болон 1883 порт дээр MQTT зуучлагчтай байдаг. ThingSpeak брокер нь MQTT нийтлэх болон MQTT захиалах үйлчилгээг дэмждэг.

Манай тохиолдолд бид MQTT Publish -ийг ашиглах болно.

Алхам 10: MQTT Publish

MQTT нийтлэх
MQTT нийтлэх

Эхлэхийн тулд MQTT протоколын 3.1 ба 3.1.1 хувилбаруудыг хэрэгжүүлдэг Eclipse Paho MQTT Python үйлчлүүлэгчийн номын санг суулгацгаая.

sudo pip суулгах paho-mqtt

Дараа нь paho номын санг импортлоорой.

paho.mqtt импортлох. хэвлэн нийтлэх

мөн Thingspeak суваг болон MQTT протоколыг эхлүүлэх. Энэхүү холболтын арга нь хамгийн энгийн бөгөөд хамгийн бага системийн нөөц шаарддаг:

channelID = "ТАНЫ СУВГИЙН ID"

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 (Үнэн): 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) оролдох: publish.single (сэдэв, ачаалал = tPayload, хостын нэр = mqttHost, порт = tPort, tls = tTLS, тээвэр = tTransport) save_log () -аас бусад: хэвлэх ("[INFO] Өгөгдөл илгээж чадаагүй ") time.sleep (60) Хэрэв бүх зүйл хэвийн байгаа бол өгөгдөл дээр дурдсанчлан thingspeak.com дээрх суваг дээр гарч ирэх ёстой.

Алхам 11: Эцсийн скрипт

Jupyter Notebook бол хөгжүүлэлт хийх, тайлагнах маш сайн хэрэгсэл боловч үйлдвэрлэлд оруулах кодыг бүтээх боломжгүй гэдгийг тэмдэглэх нь зүйтэй. Та одоо хийх ёстой зүйл бол кодын холбогдох хэсгийг аваад.py скрипт үүсгээд терминал дээрээ ажиллуулах явдал юм.

Жишээлбэл, "ts_air_quality_logger.py", та дараах тушаалыг ажиллуулах ёстой:

python 3 ts_air_quality_logger.py

Энэ скрипт болон Jupyter Notebook болон sds011.py -ийг RPi_Air_Quality_Sensor дахь миний репозитороос олж болно.

Энэ скриптийг зөвхөн туршихад ашиглах боломжтой гэдгийг анхаарна уу. Хамгийн сайн арга бол эцсийн давталтын доторх хоцролтыг ашиглахгүй байх (кодыг "түр зогсоодог"), харин оронд нь таймер ашиглана уу. Эсвэл жинхэнэ програмын хувьд давталтыг ашиглахгүй байх нь зүйтэй бөгөөд Линукс нь скриптийг crontab ашиглан тогтмол ажиллуулахаар програмчлагдсан байдаг.

Алхам 12: Дэлгэцийг гаднаас нь авах

Мониторыг гаднаас нь авч байна
Мониторыг гаднаас нь авч байна
Мониторыг гаднаас нь авч байна
Мониторыг гаднаас нь авч байна
Мониторыг гаднаас нь авч байна
Мониторыг гаднаас нь авч байна
Мониторыг гаднаас нь авч байна
Мониторыг гаднаас нь авч байна

Миний Raspberry Pi агаарын чанарын монитор ажиллаж эхэлмэгц би 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: Дүгнэлт

Дүгнэлт
Дүгнэлт

Урьдын адил энэ төсөл нь бусад хүмүүст электроник, өгөгдлийн шинжлэх ухааны сонирхолтой ертөнцөд ороход нь тусална гэж найдаж байна!

Дэлгэрэнгүй мэдээлэл, эцсийн кодыг авахыг хүсвэл миний GitHub хадгаламжинд зочилно уу: RPi_Air_Quality_Sensor.

Дэлхийн өмнөд хэсгээс мэндчилгээ дэвшүүлье!

Миний дараагийн зааварчилгаа дээр уулзацгаая!

Баярлалаа, Марсело

Зөвлөмж болгож буй: