Բովանդակություն:

Oածր ծախսերի IoT օդի որակի մոնիտոր ՝ հիմնված RaspberryPi 4: 15 քայլերի վրա (նկարներով)
Oածր ծախսերի IoT օդի որակի մոնիտոր ՝ հիմնված RaspberryPi 4: 15 քայլերի վրա (նկարներով)

Video: Oածր ծախսերի IoT օդի որակի մոնիտոր ՝ հիմնված RaspberryPi 4: 15 քայլերի վրա (նկարներով)

Video: Oածր ծախսերի IoT օդի որակի մոնիտոր ՝ հիմնված RaspberryPi 4: 15 քայլերի վրա (նկարներով)
Video: Օրը՝ 60 վայրկյանում | 26.10.2023 2024, Նոյեմբեր
Anonim
Oածրարժեք IoT օդի որակի մոնիտոր ՝ հիմնված RaspberryPi 4-ի վրա
Oածրարժեք IoT օդի որակի մոնիտոր ՝ հիմնված RaspberryPi 4-ի վրա
Oածրարժեք IoT օդի որակի մոնիտոր ՝ հիմնված RaspberryPi 4-ի վրա
Oածրարժեք IoT օդի որակի մոնիտոր ՝ հիմնված RaspberryPi 4-ի վրա
Oածրարժեք IoT օդի որակի մոնիտոր ՝ հիմնված RaspberryPi 4-ի վրա
Oածրարժեք IoT օդի որակի մոնիտոր ՝ հիմնված RaspberryPi 4-ի վրա
Oածրարժեք IoT օդի որակի մոնիտոր ՝ հիմնված RaspberryPi 4-ի վրա
Oածրարժեք IoT օդի որակի մոնիտոր ՝ հիմնված RaspberryPi 4-ի վրա

Սանտյագո, Չիլի, ձմեռային բնապահպանական արտակարգ իրավիճակներում արտոնություն ունեն ապրելու աշխարհի ամենագեղեցիկ երկրներից մեկում, բայց, ցավոք, դա բոլորը վարդեր չեն: Ձմեռային սեզոնի ընթացքում Չիլին շատ է տուժում օդի աղտոտվածությունից ՝ հիմնականում մասնիկների ՝ փոշու և ծխի պատճառով:

Coldուրտ եղանակի պատճառով, հարավում, օդի աղտոտվածությունը հիմնականում պայմանավորված է փայտի վրա հիմնված քլեֆակտորներով, իսկ Սանտյագոյում (երկրի կենտրոնական կենտրոնը) արդյունաբերությունից, մեքենաներից և նրա հսկայական աշխարհագրական իրավիճակից 2 հսկայական լեռնային շղթաների միջև:

Մեր օրերում օդի աղտոտվածությունը մեծ խնդիր է ամբողջ աշխարհում, և այս հոդվածում մենք կքննարկենք, թե ինչպես մշակել օդի որակի ցածր թանկարժեք տնային մոնիտոր `հիմնված Raspberry Pi- ի վրա: Եթե ձեզ հետաքրքրում է օդի որակի մասին ավելին իմանալը, այցելեք «Օդի որակի համաշխարհային ինդեքս» նախագիծը:

Պարագաներ

  • Ազնվամորի Պի 4
  • 1SDS011 - Բարձր ճշգրիտ լազերային PM2.5 օդի որակի հայտնաբերման տվիչ
  • Պլաստիկ տուփ

Քայլ 1. Մասնիկների նյութ (PM). Ի՞նչ է դա: Ինչպե՞ս է այն մտնում օդ:

Մասնիկների նյութ (PM). Ի՞նչ է դա: Ինչպե՞ս է այն մտնում օդ
Մասնիկների նյութ (PM). Ի՞նչ է դա: Ինչպե՞ս է այն մտնում օդ

Այսպիսով, աղտոտումը կամ օդի աղտոտվածությունը հասկանալու համար մենք պետք է ուսումնասիրենք դրա հետ կապված մասնիկները, որը նաև հայտնի է որպես մասնիկ նյութ: Նայելով նախորդ բաժնի գրաֆիկներին ՝ կարող ենք նկատել, որ դրանք նշել են PM2.5 և PM10: Եկեք դրա արագ ակնարկը տանք:

PM- ը հանդես է գալիս որպես մասնիկներ (կոչվում է նաև մասնիկների աղտոտում) ՝ օդում գտնված պինդ մասնիկների և հեղուկ կաթիլների խառնուրդ տերմինը: Որոշ մասնիկներ, ինչպիսիք են փոշին, կեղտը, մուրը կամ ծուխը, այնքան մեծ են կամ մութ, որ դրանք կարելի է տեսնել անզեն աչքով: Մյուսներն այնքան փոքր են, որ դրանք կարող են հայտնաբերվել միայն էլեկտրոնային մանրադիտակով: Մասնիկները գալիս են չափերի լայն տեսականիով: 10 միկրոմետրից փոքր կամ հավասար մասնիկները այնքան փոքր են, որ կարող են թոքերի մեջ մտնել ՝ պոտենցիալ առողջական լուրջ խնդիրներ առաջացնելով: Տասը միկրոմետրը պակաս է մեկ մազի լայնությունից:

Մասնիկների աղտոտվածությունը ներառում է փոշու կոպիտ մասնիկներ (PM10). Աղբյուրները ներառում են ջարդման կամ հղկման աշխատանքներ և ճանապարհներին տրանսպորտային միջոցների կողմից առաջացած փոշին: Նուրբ մասնիկներ (PM2.5). Լավ ներշնչվող մասնիկներ, որոնց տրամագիծը, ընդհանուր առմամբ, 2,5 միկրո և ավելի փոքր է: Նուրբ մասնիկները արտադրվում են այրման բոլոր տեսակներից, ներառյալ շարժիչային տրանսպորտային միջոցները, էլեկտրակայանները, բնակելի փայտի այրումը, անտառային հրդեհները, գյուղատնտեսական այրումը և որոշ արդյունաբերական գործընթացներ: Մասնիկների մասին մանրամասն կարող եք գտնել EPA կայքում.

Քայլ 2. Ինչու՞ է կարևոր հոգ տանել այդ մասնավոր հարցերի մասին:

Ինչու՞ է կարևոր հոգ տանել այդ մասնավոր հարցերի մասին
Ինչու՞ է կարևոր հոգ տանել այդ մասնավոր հարցերի մասին

Ինչպես նկարագրել է ERԵՐԱՐԴՈ ԱԼՎԱՐԱԴՈ.. Չիլիի համալսարանում իր աշխատանքում, 1930 -ին Մեյսի հովտում (Բելգիա) օդի բարձր աղտոտվածության դրվագների, 1948 -ի Դոնորայի (Փենսիլվանիա) և 1952 -ի Լոնդոնի առաջին ուսումնասիրությունները եղել են մահացության հետ կապված առաջին փաստաթղթերը: մասնիկների աղտոտվածությամբ (Պրենդեզ, 1993): Մարդկանց առողջության վրա օդի աղտոտման հետևանքների հետազոտման առաջընթացը պարզել է, որ առողջության ռիսկերը պայմանավորված են ներշնչվող մասնիկներով `կախված շնչառական համակարգի տարբեր հատվածներում դրանց ներթափանցումից և նստվածքից և նստած նյութերին կենսաբանական արձագանքից:

Ամենախիտ մասնիկները ՝ մոտ 5 մկմ, զտվում են քթի անցքի թարթիչների և քթի խոռոչն ու շնչափողը ծածկող լորձաթաղանթի համատեղ գործողությամբ: 0.5 -ից 5 մկմ տրամագծով մասնիկները կարող են տեղակայվել բրոնխներում և նույնիսկ թոքային ալվեոլներում, սակայն դրանք մի քանի ժամ անց վերացվում են բրոնխների և բրոնխիոլների թարթիչներով: 0.5 մկմ -ից փոքր մասնիկները կարող են խորը ներթափանցել, մինչև դրանք չդրվեն թոքային ալվեոլներում ՝ մնալով շաբաթներից մինչև տարիներ, քանի որ չկա լորձաթաղանթային տրանսպորտային մեխանիզմ, որը հեշտացնում է հեռացումը: Հետևյալ նկարը ցույց է տալիս մասնիկների ներթափանցումը շնչառական համակարգում ՝ կախված դրանց չափից:

Այսպիսով, երկու տեսակի մասնիկները (PM2.5 և PM10) նշելը շատ կարևոր են, և լավ նորությունն այն է, որ երկուսն էլ ընթեռնելի են պարզ և ոչ թանկարժեք սենսորով ՝ SDS011:

Քայլ 3. Մասնիկների սենսոր - SDS011

Մասնիկների սենսոր - SDS011
Մասնիկների սենսոր - SDS011
Մասնիկների սենսոր - SDS011
Մասնիկների սենսոր - SDS011

Օդի որակի մոնիտորինգը հայտնի և հաստատված գիտություն է, որը սկսվել է դեռ 80 -ականներին: Այն ժամանակ տեխնոլոգիան բավականին սահմանափակ էր, և լուծումը, որն օգտագործվում էր օդի աղտոտվածության համալիրը քանակականացնելու համար, ծանր ու իսկապես թանկ էր:

Բարեբախտաբար, մեր օրերում, ամենաթարմ և ժամանակակից տեխնոլոգիաներով, օդի որակի մոնիտորինգի համար օգտագործվող լուծումները դառնում են ոչ միայն ավելի ճշգրիտ, այլև ավելի արագ չափման մեջ: Սարքերը դառնում են ավելի փոքր և արժեն շատ ավելի մատչելի, քան երբևէ:

Այս հոդվածում մենք կենտրոնանալու ենք մասնիկների սենսորի վրա, որը կարող է հայտնաբերել օդում փոշու քանակությունը: Թեև առաջին սերունդը պարզապես կարողացավ հայտնաբերել անթափանցելիության չափը, վերջին սենսորները, ինչպիսիք են SDS011- ը INOVAFIT- ից, inanինանի համալսարանից (Շանդունգում), այժմ կարող են հայտնաբերել PM2.5 և PM10:

Իր չափսերով, SDS011- ը, հավանաբար, ճշգրիտ և գնի առումով լավագույն սենսորներից մեկն է (40.00 ԱՄՆ դոլարից պակաս):

  • Չափված արժեքներ ՝ PM2.5, PM10
  • Միջակայք `0–999.9 մկգ /մ³
  • Մատակարարման լարումը `5V (4.7-5.3V)
  • Էլեկտրաէներգիայի սպառում (աշխատանք) `70 մԱ ± 10 մԱ
  • Էներգիայի սպառումը (քնի ռեժիմի լազերային և օդափոխիչ) ՝ <4 մԱ
  • Պահպանման ջերմաստիճանը `-20 -ից +60C
  • Աշխատանքային ջերմաստիճանը `-10 -ից +50C
  • Խոնավություն (պահեստ) `առավելագույնը: 90%
  • Խոնավություն (աշխատանք) ՝ առավելագույնը: 70% (ջրի գոլորշու խտացումը կեղծում է ընթերցումները)
  • Accշգրտություն ՝ 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 վայրկյան ընդմիջումով:

* Լազերային ցրման սկզբունք. Լույսի ցրումը կարող է առաջանալ, երբ մասնիկները անցնում են հայտնաբերման տարածքով: Lightրված լույսը վերածվում է էլեկտրական ազդանշանների, և այդ ազդանշանները կուժեղացվեն և կվերամշակվեն: Մասնիկների քանակը և տրամագիծը կարելի է ստանալ վերլուծության միջոցով, քանի որ ազդանշանային ալիքի ձևը որոշակի հարաբերություններ ունի մասնիկների տրամագծի հետ:

Քայլ 4. Բայց ինչպե՞ս կարող է SDS011- ը գրավել այդ մասնիկները:

Բայց ինչպե՞ս կարող է SDS011- ը գրավել այդ մասնիկները
Բայց ինչպե՞ս կարող է SDS011- ը գրավել այդ մասնիկները
Բայց ինչպե՞ս կարող է SDS011- ը գրավել այդ մասնիկները
Բայց ինչպե՞ս կարող է SDS011- ը գրավել այդ մասնիկները

Ինչպես արդեն մեկնաբանվել էր, SDS011- ի կիրառած սկզբունքը լույսի ցրումն է կամ ավելի լավ ՝ Dynamic Light Scattering (DLS), որը ֆիզիկայի տեխնիկա է, որը կարող է օգտագործվել կասեցման կամ լուծույթում պոլիմերների փոքր մասնիկների բաշխման պրոֆիլի որոշման համար: DLS- ի շրջանակում ժամանակային տատանումները սովորաբար վերլուծվում են ինտենսիվության կամ ֆոտոնային ինքնագնահատման ֆունկցիայի միջոցով (հայտնի է նաև որպես ֆոտոնային հարաբերակցության սպեկտրոսկոպիա կամ լույսի քվազիլաստիկ ցրում): Domainամանակի տիրույթի վերլուծության ժամանակ ավտոկորելյացիայի գործառույթը (ACF) սովորաբար քայքայվում է ՝ սկսած զրոյական հետաձգման ժամանակից, իսկ ավելի փոքր դինամիկան ՝ փոքր մասնիկների պատճառով, հանգեցնում է ցրված ինտենսիվության հետքի ավելի արագ ապակողմնորոշմանը: Ույց է տրված, որ ACF ինտենսիվությունը ուժի սպեկտրի Ֆուրյեի փոխակերպումն է, և, հետևաբար, DLS չափումները կարող են հավասարապես լավ կատարվել սպեկտրալ տիրույթում:

Երկու նմուշի հիպոթետիկ դինամիկ լույսի ցրման վերևում. Ավելի մեծ մասնիկներ (ինչպես PM10) վերևում և փոքր մասնիկներ (PM2.5) ներքևում: Եվ մեր սենսորի ներսում նայելով ՝ մենք կարող ենք տեսնել, թե ինչպես է կիրառվում լույսի ցրման սկզբունքը:

Դիոդի վրա գրավված էլեկտրական ազդանշանը գնում է դեպի ցածր աղմուկի ուժեղացուցիչ և դրանից վերածվում է թվային ազդանշանի ՝ ADC- ի միջոցով, իսկ դրսից ՝ UART- ի միջոցով:

Իրական գիտական փորձի վերաբերյալ SDS011- ի մասին ավելին իմանալու համար խնդրում ենք դիտել Կոնստանտինոս և այլների 2018 թ. Աշխատանքը, PM2.5 կոնցենտրացիաների մոնիտորինգի ցածր գնով շարժական համակարգի զարգացում և դաշտային փորձարկում:

Քայլ 5: Showtime

Showtime!
Showtime!
Showtime!
Showtime!

Եկեք ընդմիջենք այս ամբողջ տեսությունը և կենտրոնանանք այն բանի վրա, թե ինչպես չափել մասնիկները ՝ Raspberry Pi- ի և SDS011 սենսորի միջոցով:

HW միացումն իրականում շատ պարզ է: Սենսորը վաճառվում է USB ադապտերով `իր UIN 7 -կապանի ելքային տվյալները միացնելու համար RPi- ի ստանդարտ USB միակցիչներից մեկին:

SDS011 pinout:

  • Պին 1 - միացված չէ
  • Պին 2 - PM2.5: 0–999μg/մ³; PWM արտադրանք
  • Պին 3-5 Վ
  • Կապում 4 - PM10: 0–999 մկգ/մ³; PWM արտադրանք
  • Pin 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: Բայց այս նախագծի համար լավագույնը պիթոնի ինտերֆեյսի օգտագործումն է `պարզելու համար մշակվելիք կոդը: Դուք կարող եք ստեղծել ձեր սեփական ինտերֆեյսը կամ օգտագործել ինտերնետում առկա որոշ ինտերֆեյսեր, ինչպես Ֆրանկ Հոյերի կամ Իվան Կալչովի: Մենք կօգտագործենք վերջինը, որը շատ պարզ է և լավ է աշխատում (կարող եք ներբեռնել sds011.py սցենարը դրա GitHub- ից կամ իմից):

Sds011.py ֆայլը պետք է լինի նույն գրացուցակում, որտեղ դուք ստեղծում եք ձեր սցենարը:

Phaseարգացման փուլում ես կօգտագործեմ 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: Շնչառական մասնիկների օդի որակի ինդեքս: Հանրապետության Նախագահի Գլխավոր քարտուղարի 1998 թվականի մարտի 16 -ի Գերագույն հրամանագիրը 59 -ն իր հոդվածում սահմանում է ՝ է), որը սահմանում է այն մակարդակները, որոնք սահմանում են շնչառական մասնիկների նյութի 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 in 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 ():

բաց («ՔՈ PԱՄԱՆՈՄԸ ԱՅՍՏԵ air/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] Failure in logging data") time.sleep (60) Յուրաքանչյուր 60 վայրկյանը մեկ ժամանակային նշանը գումարած տվյալներով «կցվում» է այս ֆայլին, ինչպես տեսնում ենք վերևում:

Քայլ 8: Տվյալների ուղարկում ամպային ծառայությանը

Տվյալների ուղարկում ամպային ծառայություն
Տվյալների ուղարկում ամպային ծառայություն

Այս պահին մենք սովորեցինք, թե ինչպես կարելի է տվյալներ վերցնել սենսորից ՝ դրանք պահելով տեղական CSV ֆայլում: Այժմ, ժամանակն է տեսնել, թե ինչպես ուղարկել այդ տվյալները IoT հարթակ: Այս ձեռնարկի վրա մենք կօգտագործենք ThingSpeak.com- ը:

«ThingSpeak- ը բաց կոդով բաների ինտերնետ (IoT) ծրագիր է ՝ բաներից տվյալներ պահելու և ստանալու համար ՝ օգտագործելով REST և MQTT API- ներ: ThingSpeak- ը հնարավորություն է տալիս ստեղծել սենսորների գրանցման ծրագրեր, տեղադրության հետևման ծրագրեր և իրերի սոցիալական ցանց ՝ կարգավիճակի թարմացումներով »:

Նախ, դուք պետք է հաշիվ ունենաք ThinkSpeak.com կայքում: Հաջորդը, հետևեք ալիք ստեղծելու հրահանգներին ՝ հաշվի առնելով դրա ալիքի ID- ն և Write API բանալին:

Ալիքը ստեղծելիս պետք է նաև սահմանել, թե ինչ տեղեկատվություն կբեռնվի 8 դաշտերից յուրաքանչյուրում, ինչպես ցույց է տրված վերևում (մեր դեպքում դրանցից միայն 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 հաճախորդների գրադարանը, որն իրականացնում է MQTT արձանագրության 3.1 և 3.1.1 տարբերակները

sudo pip տեղադրել paho-mqtt

Հաջորդը, եկեք ներմուծենք paho գրադարանը.

ներմուծել paho.mqtt. հրապարակել որպես հրապարակել

և նախաձեռնել Thingspeak ալիքը և MQTT արձանագրությունը: Կապի այս մեթոդը ամենապարզն է և պահանջում է նվազագույն համակարգի ռեսուրսներ.

channelID = "ՔՈ ԱԼԻՔԻ ID- ն"

apiKey = "ՔՈ ԳՐՈ K Բանալին" թեմա = "ալիքներ/" + 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 րոպեն մեկ

մինչդեռ (Trueշմարիտ). (pmt_10) + "& field4 =" + փող (aqi_10) փորձեք. հրապարակել. մեկ (թեմա, բեռնվածություն = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) save_log () բացառությամբ ՝ տպել ("

Քայլ 11: Վերջնական սցենարը

Կարևոր է նշել, որ Jupyter Notebook- ը զարգացման և հաշվետվության շատ լավ գործիք է, բայց ոչ ՝ արտադրության մեջ տեղադրելու համար կոդ ստեղծելու համար: Այն, ինչ այժմ պետք է անեք, վերցրեք ծածկագրի համապատասխան մասը և ստեղծեք.py սցենար և գործարկեք այն ձեր տերմինալում:

Օրինակ ՝ «ts_air_quality_logger.py», որը պետք է գործարկեք հետևյալ հրամանով.

python 3 ts_air_quality_logger.py

Այս սցենարը, ինչպես նաև Jupyter Notebook- ը և sds011.py- ն կարելի է գտնել իմ շտեմարանում ՝ RPi_Air_Quality_Sensor:

Նկատի ունեցեք, որ այս սցենարը իրագործելի է միայն փորձարկման համար: Ամենալավն այն է, որ չօգտագործեք ուշացումներ վերջնական հանգույցի ներսում (որը ծածկագիրը դնում է «դադար»), փոխարենը օգտագործեք ժամանակաչափեր: Կամ իսկական կիրառման համար ամենալավն այն է, որ չօգտագործվի օղակը, քանի որ Linux- ը ծրագրված է սցենարը կանոնավոր կերպով կատարելու crontab- ով:

Քայլ 12. Մոնիտորը դրսում վերցնելը

Մոնիտորը դրսում վերցնելը
Մոնիտորը դրսում վերցնելը
Մոնիտորը դրսում վերցնելը
Մոնիտորը դրսում վերցնելը
Մոնիտորը դրսում վերցնելը
Մոնիտորը դրսում վերցնելը
Մոնիտորը դրսում վերցնելը
Մոնիտորը դրսում վերցնելը

Երբ իմ Raspberry Pi Air Quality մոնիտորը աշխատում էր, ես 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, փող (pmt_10)) վերադարձեք aqi_2_5, aqi_10 բացառությամբ ՝ վերադարձ 600, 600 Այս իրավիճակը կարող է պատահել դաշտում, ինչը նորմալ է: Հիշեք, որ իրականում դուք պետք է օգտագործեք շարժվող միջին ՝ AQI- ն իսկապես ստանալու համար (առնվազն ժամային, բայց սովորաբար ամենօրյա):

Քայլ 15: Եզրակացություն

Եզրակացություն
Եզրակացություն

Ինչպես միշտ, ես հույս ունեմ, որ այս նախագիծը կարող է օգնել ուրիշներին իրենց ճանապարհը գտնել էլեկտրոնիկայի և տվյալների գիտության հետաքրքիր աշխարհում:

Մանրամասների և վերջնական ծածկագրի համար այցելեք իմ GitHub ավանդապահ ՝ RPi_Air_Quality_Sensor:

Սալուդոս աշխարհի հարավից:

Կհանդիպենք իմ հաջորդ հրահանգին:

Շնորհակալություն, Մարսելո

Խորհուրդ ենք տալիս: