Мазмуну:

RaspberryPi 4: 15ке негизделген арзан IoT абанын сапаты монитору (Сүрөттөр менен)
RaspberryPi 4: 15ке негизделген арзан IoT абанын сапаты монитору (Сүрөттөр менен)

Video: RaspberryPi 4: 15ке негизделген арзан IoT абанын сапаты монитору (Сүрөттөр менен)

Video: RaspberryPi 4: 15ке негизделген арзан IoT абанын сапаты монитору (Сүрөттөр менен)
Video: Электрический или водяной полотенцесушитель? Что выбрать? Установка. #25 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): бул эмне? Ал абага кантип түшөт?

Particulate Matter (PM): Бул эмне? Ал абага кантип түшөт?
Particulate Matter (PM): Бул эмне? Ал абага кантип түшөт?

Ошентип, булганууну же абанын булгануусун түшүнүү үчүн, биз ага тиешелүү болгон бөлүкчөлөрдү изилдешибиз керек, ал бөлүкчө катары да белгилүү. Мурунку бөлүмдөгү графиктерди карасак, алар PM2.5 жана PM10 жөнүндө айтылганын байкоого болот. Келгиле, бул жөнүндө кыскача маалымат берели.

PM бөлүкчөлөрдү билдирет (бөлүкчө булганышы деп да аталат): абада табылган катуу бөлүкчөлөр менен суюк тамчылардын аралашмасы. Чаң, кир, көө же түтүн сыяктуу кээ бир бөлүкчөлөр чоң же караңгы болгондуктан, көзгө көрүнбөйт. Башкалары ушунчалык кичинекей болгондуктан, электрондук микроскоптун жардамы менен гана аныкталат. Бөлүкчөлөр ар кандай өлчөмдө болот. Диаметри 10 микрометрден кичирээк же барабар болгон бөлүкчөлөр ушунчалык кичинекей болгондуктан өпкөгө кирип, ден соолукка олуттуу көйгөйлөрдү жаратышы мүмкүн. Он микрометр адамдын бир чачынын туурасынан азыраак.

Бөлүкчөлөрдүн булганышына орой чаң бөлүкчөлөрү (PM10) кирет: дем алуу бөлүкчөлөрү, диаметри жалпысынан 10 микрометр жана андан кичирээк. Булактарга майдалоо же майдалоо иштери жана жолдордо унаалар көтөргөн чаң кирет. Майда бөлүкчөлөр (PM2.5): жакшы дем алган бөлүкчөлөр, диаметри жалпысынан 2,5 микрометр жана андан кичирээк. Майда бөлүкчөлөр күйүүнүн бардык түрлөрүнөн, анын ичинде автотранспорт, электр станциялары, турак үйлөрдүн отун күйгүзүүсү, токой өрттөрү, айыл чарбасынын өрттөнүшү жана кээ бир өндүрүштүк процесстерден EPA сайтындагы бөлүкчөлөр жөнүндө көбүрөөк биле аласыз: Америка Кошмо Штаттарынын Айлана -чөйрөнү коргоо агенттиги

2 -кадам: Бул бөлүкчөлөргө кам көрүү эмне үчүн маанилүү?

Бул бөлүкчөлөргө кам көрүү эмне үчүн маанилүү?
Бул бөлүкчөлөргө кам көрүү эмне үчүн маанилүү?

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

Эң калың бөлүкчөлөр, болжол менен 5 мкм, мурундун кире челинин жана мурун көңдөйүн жана трахеяны каптаган былжыр челинин биргелешкен аракети аркылуу чыпкаланат. Диаметри 0,5тен 5 мкмге чейинки бөлүкчөлөр бронхторго, ал тургай өпкө альвеолаларына да түшүшү мүмкүн, бирок алар бир нече сааттан кийин бронхтордун жана бронхиолалардын кирпиктери менен жок кылынат. 0,5 мкмден кичинекей бөлүкчөлөр өпкө альвеолаларына түшмөйүнчө терең кире алат, бир нече жумадан жылдарга чейин, анткени жок кылууну жеңилдетүүчү мукоцилиардык транспорттук механизм жок. Төмөнкү сүрөттө бөлүкчөлөрдүн чоңдугуна жараша дем алуу системасына кирүүсү көрсөтүлгөн.

Ошентип, бөлүкчөлөрдүн эки түрүн (PM2.5 жана PM10) аныктоо абдан маанилүү жана жакшы кабар экөө тең жөнөкөй жана кымбат эмес сенсор SDS011 тарабынан окулат.

3 -кадам: Бөлүкчөлөрдүн сенсору - SDS011

Бөлүкчөлөрдүн сенсору - SDS011
Бөлүкчөлөрдүн сенсору - SDS011
Бөлүкчөлөрдүн сенсору - SDS011
Бөлүкчөлөрдүн сенсору - SDS011

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

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

Бул макалада биз абанын чаңын аныктай турган бөлүкчөлөрдүн сенсоруна токтолобуз. Биринчи муун тунуктуктун өлчөмүн аныктай алса, акыркы сенсорлор INOVAFITтин SDS011 катары, Цзянань университетинен (Шандунг) бөлүнүп, эми PM2.5 жана PM10ду аныктай алат.

Анын өлчөмү менен, SDS011, балким, тактык жана баа жагынан мыкты сенсорлордун бири (USD40.00дөн аз).

  • Ченелген баалуулуктар: PM2.5, PM10
  • Диапазону: 0–999.9 мкг /м³
  • Жеткирүү чыңалуусу: 5V (4.7–5.3V)
  • Power керектөө (иш): 70mA ± 10mA
  • Электр керектөө (уйку режими лазер жана желдеткич): <4mA
  • Сактоо температурасы: -20дан +60Ске чейин
  • Иш температурасы: -10 +50С
  • Нымдуулук (сактоо): Max. 90%
  • Нымдуулук (жумуш): Max. 70% (суу буусунун конденсациясы көрсөткүчтөрдү бурмалайт)
  • Тактык: 0.3μm үчүн 70% жана 0.5μm үчүн 98%
  • Көлөм: 71x70x23 мм
  • Тастыктоо: CE, FCC, RoHS

SD011 корпустун бир тарабы катары ПХБны колдонуп, анын баасын төмөндөтөт. Рецептордук диод ПХБ тарапка орнотулган (бул диод менен ЛНКнын ортосундагы ар кандай ызы -чуудан алыс болуу керек). Эмиттердик лазер пластикалык кутуга орнотулган жана ийкемдүү зым аркылуу ПХБга туташкан.

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

5 -кадам: Showtime

Showtime!
Showtime!
Showtime!
Showtime!

Келгиле, бул теориянын бардыгына токтолуп, Raspberry Pi жана SDS011 сенсорунун жардамы менен бөлүкчөлөрдү кантип өлчөөгө көңүл буралы.

HW туташуусу чындыгында абдан жөнөкөй. Сенсор RPi стандарттык USB коннекторлорунун бири менен UART 7 казыгынан алынган маалыматтарды интерфейске алуу үчүн USB адаптери менен сатылат.

SDS011 түйүнү:

  • Pin 1 - туташкан жок
  • Pin 2 - PM2.5: 0–999μg/m³; PWM чыгаруу
  • 3-5V пин
  • Pin 4 - PM10: 0–999 мкг/м³; PWM чыгаруу
  • Pin 5 - GND
  • Pin 6 - RX UART (TTL) 3.3V
  • Pin 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 (Air Quality Index).

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 -жылдын 16 -мартындагы 59 Жогорку Жарлыгы, 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) 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) return pmt_2_5, pmt_10 Жогоруда тесттин жыйынтыгын көрө аласыз. Келгиле, AQI индексиндеги PMдин сандык маанилерин өзгөртүү функциясын аткаралы

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 ():

open ("СИЗДИН ЖОЛУҢАР БУЛ ЖЕРДЕ/air_quality.csv", "a") журнал катары: dt = datetime.now () log.write ("{}, {}, {}, {}, {} n"). формат (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close () Бир цикл менен, сиз маалыматты, мисалы, ар бир мүнөт сайын, жергиликтүү файлыңыздагы үзгүлтүксүз негизде каттай аласыз

while (True):

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до эсеп болушу керек. Андан кийин, Каналдын идентификаторун жана API ачкычын жазуусун эске алуу менен Канал түзүү боюнча нускамаларды аткарыңыз.

Каналды түзүүдө, жогоруда көрсөтүлгөндөй, 8 талаанын ар бирине кандай маалымат жүктөлөөрүн аныктоо керек (биздин учурда алардын 4ү гана колдонулат).

9 -кадам: MQTT протоколу жана ThingSpeak Connection

MQTT протоколу жана ThingSpeak Connection
MQTT протоколу жана ThingSpeak Connection

MQTT-бул көбүнчө зымсыз тармактар аркылуу өткөрүү жөндөмдүүлүгүн жана кубаттуулугу чектелген түзмөктөрдү туташтыруу үчүн иштелип чыккан жарыялоо/жазылуу архитектурасы. Бул TCP/IP розеткалары же WebSockets аркылуу иштеген жөнөкөй жана жеңил протокол. WebSockets аркылуу MQTT SSL менен корголушу мүмкүн. Жарыялоо/жазылуу архитектурасы серверди үзгүлтүксүз сурамжылоого муктаж болбостон, билдирүүлөрдү кардар түзмөктөрүнө жөнөтүүгө мүмкүндүк берет.

MQTT брокери байланыштын борбордук чекити болуп саналат жана ал жөнөтүүчүлөр менен мыйзамдуу алуучулардын ортосундагы бардык билдирүүлөрдү жөнөтүү үчүн жооптуу. Кардар - бул брокерге туташкан жана маалыматка жетүү үчүн темаларды жарыялап же жазыла турган каалаган түзмөк. Тема брокер үчүн багыттоо маалыматын камтыйт. Билдирүүлөрдү жөнөтүүнү каалаган ар бир кардар аларды белгилүү бир темага жарыялайт, ал эми билдирүүлөрдү алгысы келген ар бир кардар белгилүү бир темага жазылат. Брокер дал келген темадагы бардык билдирүүлөрдү тиешелүү кардарларга жеткирет.

ThingSpeak ™ mqtt.thingspeak.com жана 1883 портунда MQTT брокери бар. ThingSpeak брокери MQTT жарыялоону жана MQTT жазылуусун колдойт.

Биздин учурда, биз MQTT Publish колдонобуз.

10 -кадам: MQTT Publish

MQTT Publish
MQTT Publish

Баштоо үчүн, MQTT протоколунун 3.1 жана 3.1.1 версияларын ишке ашырган Eclipse Paho MQTT Python кардар китепканасын орнотолу.

sudo pip орнотуу paho-mqtt

Андан кийин, paho китепканасын импорттойлу:

paho.mqtt.pport катары жарыялоо

жана 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) аракет кылыңыз: publish.single (тема, payload = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) save_log () тышкары: print ("[INFO] Маалымат жөнөтүлбөй калуу ") time.sleep (60) Эгерде баары ойдогудай болсо, сиз да каналыңызда thingspeak.com сайтында көрсөтүлгөн маалыматтарды көрүшүңүз керек.

11 -кадам: Акыркы Script

Jupyter Notebook - бул иштеп чыгуу жана отчет берүү үчүн эң жакшы курал экенин, бирок өндүрүшкө кое турган кодду түзбөөнү белгилөө маанилүү. Эми эмне кылыш керек болсо, коддун тиешелүү бөлүгүн алып,.py скриптин түзүп, аны терминалыңызда иштетиңиз.

Мисалы, "ts_air_quality_logger.py", сиз төмөнкү буйрук менен иштешиңиз керек:

python 3 ts_air_quality_logger.py

Бул сценарийди, ошондой эле Jupyter дептерин жана sds011.py'ди RPi_Air_Quality_Sensor дарегиндеги репозиторийимден тапса болот.

Бул скрипт тестирлөө үчүн гана мүмкүн экенин эске алыңыз. Эң жакшысы, акыркы циклдин ичиндеги кечигүүлөрдү колдонбоо (бул кодду "паузага" коет), анын ордуна таймерлерди колдонуу. Же чыныгы тиркеме үчүн, циклди колдонбоо эң жакшы, Linuxтун скриптин үзгүлтүксүз crontab менен аткарууга программаланган.

12 -кадам: Мониторду сыртка алып чыгуу

Мониторду сырттан алуу
Мониторду сырттан алуу
Мониторду сырттан алуу
Мониторду сырттан алуу
Мониторду сырттан алуу
Мониторду сырттан алуу
Мониторду сырттан алуу
Мониторду сырттан алуу

Менин Raspberry Pi Air Quality мониторум иштеп баштагандан кийин, мен сенсорду сыртта кармап, пластикалык кутунун ичине RPi чогулттум жана аны үйүмдүн сыртына койдум.

Эки тажрыйба жасалды.

13 -кадам: Бензин моторунун күйүшү

Бензин мотору
Бензин мотору
Бензин мотору
Бензин мотору

Сенсор Ламбреттанын газ скважинасынан 1м тегерегинде жайгашып, мотору күйгүзүлгөн. Мотор бир нече мүнөт иштеп, өчүп калды. Жогорудагы журнал файлынан мен алган жыйынтык. PM2.5 кыймылдаткычтан чыккан эң коркунучтуу бөлүкчө экенин ырастоо кызыктуу.

14 -кадам: Жыгачтын күйүшү

Wood Burning
Wood Burning
Wood Burning
Wood Burning

Журнал файлын карап, биз сенсордун маалыматтары "чектен чыккан" экенин жана 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дон башка: кайтуу 600, 600 Мындай абал талаада болушу мүмкүн, бул жакшы. Эсиңизде болсун, чындыгында AQIди алуу үчүн орточо кыймылдуу ыкманы колдонуу керек (жок дегенде саат сайын, бирок, адатта, күн сайын).

15 -кадам: Жыйынтык

Жыйынтык
Жыйынтык

Адаттагыдай эле, бул долбоор башкаларга электроника жана маалымат илиминин кызыктуу дүйнөсүнө жол табууга жардам берет деп үмүттөнөм!

Чоо -жайын жана акыркы кодду алуу үчүн GitHub депозитарийиме баш багыңыз: RPi_Air_Quality_Sensor.

Дүйнөнүн түштүгүнөн салам!

Кийинки көрсөтмөмдө көрүшкөнчө!

Рахмат, Marcelo

Сунушталууда: