Мазмұны:

RaspberryPi 4: 15 қадамына негізделген арзан IoT ауа сапасының мониторы (суреттермен)
RaspberryPi 4: 15 қадамына негізделген арзан IoT ауа сапасының мониторы (суреттермен)

Бейне: RaspberryPi 4: 15 қадамына негізделген арзан IoT ауа сапасының мониторы (суреттермен)

Бейне: RaspberryPi 4: 15 қадамына негізделген арзан IoT ауа сапасының мониторы (суреттермен)
Бейне: Объяснение прошивки Marlin 2.0.x 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 негізіндегі үйдегі арзан ауа сапасының мониторын қалай жасау керектігін қарастырамыз. Егер сіз ауа сапасы туралы көбірек білгіңіз келсе, «Ауа сапасының әлемдік индексі» жобасына кіріңіз.

Жабдықтар

  • Таңқурай Pi 4
  • 1SDS011 - жоғары дәлдіктегі лазерлік pm2.5 ауа сапасын анықтау датчигі
  • Пластикалық қорап

1 -қадам: Бөлшек зат (PM): бұл не? Ол ауаға қалай түседі?

Бөлшектелген зат (PM): бұл не? Ол ауаға қалай түседі?
Бөлшектелген зат (PM): бұл не? Ол ауаға қалай түседі?

Сонымен, ластануды немесе ауаның ластануын түсіну үшін біз соған байланысты бөлшектерді зерттеуіміз керек, ол бөлшектер деп те аталады. Алдыңғы бөлімдегі графиктерге қарап, олардың PM2.5 және PM10 туралы айтқанын байқауға болады. Бұл туралы қысқаша шолу жасайық.

PM бөлшектерді білдіреді (бөлшектердің ластануы деп те аталады): ауада кездесетін қатты бөлшектер мен сұйық тамшылардың қоспасы. Кейбір бөлшектер, мысалы, шаң, кір, күйе немесе түтін, көзбен көру үшін жеткілікті үлкен немесе қараңғы. Басқалары соншалықты кішкентай, оларды электронды микроскоптың көмегімен ғана анықтауға болады. Бөлшектер әртүрлі мөлшерде келеді. Диаметрі 10 микрометрден кіші немесе оған тең бөлшектердің өкпеге еніп кетуі ықтимал, олар денсаулығына елеулі проблемалар туғызады. Он микрометр адамның бір шашының енінен аз.

Бөлшектердің ластануына өрескел шаң бөлшектері (PM10) кіреді: ингаляциялық бөлшектер, диаметрі әдетте 10 микрометр және одан кіші. Дереккөздерге ұсақтау немесе ұнтақтау жұмыстары мен жолдарда автокөліктер көтерген шаң кіреді. Жұқа бөлшектер (PM2.5): жұқа ингаляциялық бөлшектер, диаметрі әдетте 2,5 мкм және одан кіші. Жұқа бөлшектер жанудың барлық түрлерінен, соның ішінде автокөліктерден, электр станцияларынан, тұрғын үй ағаштарын жағудан, орман өрттерінен, ауыл шаруашылығынан және кейбір өндірістік процестерден өндіріледі, сіз бөлшектер туралы EPA сайтында біле аласыз: Америка Құрама Штаттарының Қоршаған ортаны қорғау агенттігі

2 -қадам: Неліктен бұл бөлшектерге қамқорлық жасау маңызды?

Неліктен бұл бөлшектер туралы қамқорлық маңызды?
Неліктен бұл бөлшектер туралы қамқорлық маңызды?

Джерардо АЛВАРАДО З. Чили университетіндегі жұмысында сипаттағандай, 1930 жылы Мэйз аңғарында (Бельгия), 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 мкг /м³
  • Қоректену кернеуі: 5В (4,7–5,3В)
  • Қуат тұтыну (жұмыс): 70мА ± 10мА
  • Қуат шығыны (ұйқы режимі лазер мен желдеткіш): <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 өлшемдерін спектрлік облыста бірдей жақсы орындауға болады.

Жоғарыда екі үлгінің гипотетикалық динамикалық жарық шашырауы: үлкен бөлшектер (РМ10 сияқты) және кіші бөлшектер (РМ2.5 түрінде) төменгі жағында. Сенсордың ішіне қарасақ, жарықтың шашырау принципі қалай жүзеге асатынын көруге болады.

Диодта жазылған электр сигналы төмен шуды күшейткішке түседі, одан ADC арқылы цифрлық сигналға және UART арқылы сыртқа шығарылады.

Нақты ғылыми тәжірибе туралы SDS011 туралы көбірек білу үшін Konstantinos et al, PM2.5 концентрациясын бақылауға арналған арзан портативті жүйені әзірлеу және далада тестілеудің 2018 жылғы жұмысын қараңыз.

5 -қадам: Шоу уақыты

Көрсетілім уақыты!
Көрсетілім уақыты!
Көрсетілім уақыты!
Көрсетілім уақыты!

Осы теорияның барлығына үзіліс жасап, Raspberry Pi мен SDS011 сенсорының көмегімен бөлшектерді қалай өлшеуге болатынына тоқталайық.

HW байланысы шын мәнінде өте қарапайым. Сенсор USB адаптерімен сатылады, оның 7 түйреуішті UART шығыс деректерін RPi стандартты USB қосқыштарымен байланыстырады.

SDS011 түйреуіші:

  • 1 -түйреуіш - қосылмаған
  • 2 -түйреуіш - PM2.5: 0–999 мкг/м³; PWM шығысы
  • 3-5В түйреуіш
  • 4 түйреуіш - PM10: 0–999 мкг/м³; PWM шығысы
  • 5 -түйреуіш - GND
  • 6 -түйреуіш - RX UART (TTL) 3.3V
  • 7 -түйреуіш - TX UART (TTL) 3.3V

Бұл оқулық үшін мен бірінші рет Raspberry-Pi 4 жаңа нұсқасын қолданамын. Бірақ, әрине, алдыңғы модель де жақсы жұмыс істейді.

Сенсорды RPi USB порттарының біріне қосқаннан кейін сіз автоматты түрде оның желдеткішінің дыбысын тыңдай бастайсыз. Шу аздап тітіркендіреді, сондықтан сіз оны электр желісінен ажыратып, SW орнатылғанша күтуіңіз керек шығар.

Сенсор мен RPi арасындағы байланыс сериялық хаттама арқылы болады. Бұл хаттама туралы толығырақ мына жерден білуге болады: V1.3 лазерлік шаң датчигін басқару хаттамасы. Бірақ бұл жоба үшін ең жақсысы - әзірленетін кодты жеңілдету үшін питон интерфейсін қолдану. Сіз өзіңіздің жеке интерфейсіңізді жасай аласыз немесе Интернетте Франк Хейер немесе Иван Калчев сияқты интернетте бар кейбірін қолдана аласыз. Біз соңғысын қолданамыз, ол өте қарапайым және жақсы жұмыс істейді (sds011.py сценарийін GitHub немесе менікінен жүктеуге болады).

Sds011.py файлы сценарий жасайтын каталогта болуы керек.

Әзірлеу кезеңінде мен Jupyter жазу кітапшасын қолданамын, бірақ сіз өзіңізге ұнайтын кез келген IDE -ді қолдана аласыз (мысалы, Thonny немесе Geany, Raspberry Pi Debian пакетіне кіреді, екеуі де өте жақсы).

Sds011 импорттауды бастаңыз және сенсор данасын жасаңыз. SDS011 сенсордан UART көмегімен оқу әдісін ұсынады.

sds011 импортынан *

сенсор = SDS011 («/dev/ttyUSB0»)

Сенсорды ұйқы пәрменімен қосуға немесе өшіруге болады:

pmt_2_5, pmt_10 = sensor.query ()

Өлшеу алдында тұрақтандыру үшін кемінде 10 секунд күтіңіз және жаңасын бастау үшін кемінде 2 секунд күтіңіз (жоғарыдағы кодты қараңыз).

Бұл сенсорды пайдалану үшін БҚ тұрғысынан білуіңіз керек нәрсе. Бірақ ауа сапасын бақылауды тереңірек қарастырайық! Мақаланың басында, егер сіз ауаның қаншалықты жақсы немесе жаман екендігі туралы ақпарат беретін сайттарды зерттеген болсаңыз, түстердің осы құндылықтармен байланысты екенін түсінуіңіз керек. Әр түс - индекс. Олардың ішіндегі ең белгілісі - АҚШ пен басқа да бірнеше елдерде қолданылатын 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 жылғы 16 наурыздағы 59 -шы Жоғарғы Жарлығы өзінің 1 -бабының g) әрпінде тыныс алатын бөлшектер үшін ICA анықтайтын деңгейлерді белгілейді.

Мәндер бөлімдер арасында сызықтық түрде өзгереді, 500 мәні осы концентрацияға ұшыраған кезде популяция үшін қауіпті болатын шекті мәнге сәйкес келеді. ICAP мәндеріне сәйкес, адамдар әсер еткен MP10 концентрациясының деңгейіне сәйкес келетін категориялар анықталды.

7 -қадам: Деректерді жергілікті түрде тіркеу

Жергілікті деректерді тіркеу
Жергілікті деректерді тіркеу
Жергілікті деректерді тіркеу
Жергілікті деректерді тіркеу
Жергілікті деректерді тіркеу
Жергілікті деректерді тіркеу

Бұл кезде бізде сенсордан деректерді алуға және оларды «оқылатын мәнге» айналдыруға арналған барлық құралдар бар, бұл AQI индексі.

Осы мәндерді алу үшін функция құрайық. Біз 3 мәнді кезекпен аламыз, олардың арасындағы орташа мәнді аламыз:

def get_data (n = 3):

сенсор.ұйқы (ұйқы = Жалған) pmt_2_5 = 0 pmt_10 = 0 уақыт. ұйқы (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.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, стр (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») журнал ретінде: 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 () қоспағанда: басып шығару («[INFO] Деректерді тіркеуде қате») time.sleep (60) Әр 60 секунд сайын уақыт белгісі мен деректер осы файлға «қосылады», біз жоғарыда көріп отырмыз.

8 -қадам: Деректерді бұлтты қызметке жіберу

Деректерді бұлтты қызметке жіберу
Деректерді бұлтты қызметке жіберу

Бұл кезде біз сенсордан деректерді жергілікті CSV файлына сақтап алуды үйрендік. Енді бұл деректерді IoT платформасына қалай жіберуге болатынын көру уақыты келді. Бұл оқулықта біз ThingSpeak.com қолданамыз.

«ThingSpeak-бұл REST және MQTT API интерфейстерін қолдана отырып, заттардан деректерді сақтауға және алуға арналған ашық көзі бар Интернет (IoT) қосымшасы. ThingSpeak сенсорларды тіркеу қосымшаларын, орналасқан жерін бақылау қосымшаларын және күй жаңартулары бар заттардың әлеуметтік желісін құруға мүмкіндік береді.

Біріншіден, сізде ThinkSpeak.com сайтында тіркелгі болуы керек. Әрі қарай, арна идентификаторын және 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 жариялау

MQTT жариялау
MQTT жариялау

Бастау үшін MQTT хаттамасының 3.1 және 3.1.1 нұсқаларын іске асыратын Eclipse Paho MQTT Python клиенттік кітапханасын орнатамыз.

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) көріңіз: 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 блокнотын және sds011.py файлын RPi_Air_Quality_Sensor мекенжайындағы репозиторийімде табуға болады.

Бұл сценарий тек тестілеу үшін ғана мүмкін екенін ескеріңіз. Ең жақсысы - соңғы цикл ішінде кідірістерді пайдаланбау (бұл кодты «кідіртуге» қояды), оның орнына таймерлерді қолданыңыз. Немесе нақты қолданба үшін циклды қолданбаған дұрыс, Linux жүйелі түрде 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, стр (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.

Әлемнің оңтүстігінен сәлем!

Келесі нұсқаулықта кездескенше!

Рақмет сізге, Марсело

Ұсынылған: