Სარჩევი:

იაფფასიანი IoT ჰაერის ხარისხის მონიტორი RaspberryPi საფუძველზე 4: 15 ნაბიჯი (სურათებით)
იაფფასიანი IoT ჰაერის ხარისხის მონიტორი RaspberryPi საფუძველზე 4: 15 ნაბიჯი (სურათებით)

ვიდეო: იაფფასიანი IoT ჰაერის ხარისხის მონიტორი RaspberryPi საფუძველზე 4: 15 ნაბიჯი (სურათებით)

ვიდეო: იაფფასიანი IoT ჰაერის ხარისხის მონიტორი RaspberryPi საფუძველზე 4: 15 ნაბიჯი (სურათებით)
ვიდეო: How to Use the Wireless Indoor Air Quality Monitor Module for ERV System 2024, ივლისი
Anonim
დაბალფასიანი IoT ჰაერის ხარისხის მონიტორი RaspberryPi 4-ის საფუძველზე
დაბალფასიანი IoT ჰაერის ხარისხის მონიტორი RaspberryPi 4-ის საფუძველზე
დაბალფასიანი IoT ჰაერის ხარისხის მონიტორი RaspberryPi 4-ის საფუძველზე
დაბალფასიანი IoT ჰაერის ხარისხის მონიტორი RaspberryPi 4-ის საფუძველზე
დაბალფასიანი IoT ჰაერის ხარისხის მონიტორი RaspberryPi 4-ის საფუძველზე
დაბალფასიანი IoT ჰაერის ხარისხის მონიტორი RaspberryPi 4-ის საფუძველზე
დაბალფასიანი IoT ჰაერის ხარისხის მონიტორი RaspberryPi 4-ის საფუძველზე
დაბალფასიანი IoT ჰაერის ხარისხის მონიტორი RaspberryPi 4-ის საფუძველზე

სანტიაგო, ჩილე ზამთრის გარემოსდაცვითი გადაუდებელი შემთხვევის დროს აქვს პრივილეგია იცხოვროს მსოფლიოს ერთ -ერთ ულამაზეს ქვეყანაში, მაგრამ, სამწუხაროდ, ეს ყველაფერი ვარდები არ არის. ზამთრის სეზონზე ჩილე ძალიან განიცდის ჰაერის დაბინძურებას, ძირითადად ნაწილაკების გამო, როგორიცაა მტვერი და სმოგი.

ცივი ამინდის გამო, სამხრეთით, ჰაერი დაბინძურებულია ძირითადად ხეზე დაფუძნებული კალფაქტორებით და სანტიაგოში (ქვეყნის მთავარი დედაქალაქი), რომელიც შერეულია ინდუსტრიებიდან, მანქანებიდან და მისი უნიკალური გეოგრაფიული მდგომარეობიდან ორ უზარმაზარ მთის ჯაჭვს შორის.

დღესდღეობით, ჰაერის დაბინძურება დიდი პრობლემაა მთელ მსოფლიოში და ამ სტატიაში ჩვენ შევისწავლით თუ როგორ უნდა განვავითაროთ დაბალი ძვირადღირებული ხელნაკეთი ჰაერის ხარისხის მონიტორი, ჟოლოს პიზე დაყრდნობით. თუ თქვენ დაინტერესებული ხართ ჰაერის ხარისხის შესახებ მეტის გაგებით, ეწვიეთ პროექტს "მსოფლიო ჰაერის ხარისხის ინდექსი".

მარაგები

  • ჟოლო პი 4
  • 1SDS011 - მაღალი სიზუსტის ლაზერული pm2.5 ჰაერის ხარისხის გამოვლენის სენსორი
  • პლასტიკური ყუთი

ნაბიჯი 1: ნაწილაკების მასალა (PM): რა არის ეს? როგორ ხვდება ჰაერში?

ნაწილაკების საკითხი (PM): რა არის ეს? როგორ ხვდება ჰაერში?
ნაწილაკების საკითხი (PM): რა არის ეს? როგორ ხვდება ჰაერში?

ასე რომ, დაბინძურების ან ჰაერის დაბინძურების გასაგებად, ჩვენ უნდა შევისწავლოთ ნაწილაკები, რომლებიც დაკავშირებულია ამასთან, რომელიც ასევე ცნობილია როგორც ნაწილაკები. წინა ნაწილის გრაფიკების დათვალიერებისას ჩვენ შეგვიძლია დავინახოთ, რომ მათ აღნიშნეს PM2.5 და PM10. მოდით გავაკეთოთ სწრაფი მიმოხილვა ამის შესახებ.

PM ნიშნავს ნაწილაკებს (ასევე უწოდებენ ნაწილაკების დაბინძურებას): ტერმინი ჰაერში ნაპოვნი მყარი ნაწილაკების და თხევადი წვეთების ნარევისთვის. ზოგიერთი ნაწილაკი, როგორიცაა მტვერი, ჭუჭყი, ჭვარტლი ან კვამლი, საკმარისად დიდი ან ბნელია, რომ შეუიარაღებელი თვალით ჩანდეს. სხვები იმდენად მცირეა, რომ მათი ამოცნობა შესაძლებელია მხოლოდ ელექტრონული მიკროსკოპის გამოყენებით. ნაწილაკები მოდის ზომის ფართო სპექტრში. 10 მიკრომეტრზე ნაკლები ან ტოლი ნაწილაკები იმდენად მცირეა, რომ მათ შეუძლიათ შეაღწიონ ფილტვებში, რაც პოტენციურად იწვევს ჯანმრთელობის სერიოზულ პრობლემებს. ათი მიკრომეტრი ნაკლებია ერთი ადამიანის თმის სიგანეზე.

ნაწილაკების დაბინძურება მოიცავს მტვრის უხეშ ნაწილაკებს (PM10): ინჰალაციური ნაწილაკები, დიამეტრებით, რომლებიც ჩვეულებრივ 10 მიკრომეტრია და უფრო მცირე. წყაროებში შედის გამანადგურებელი ან დაფქვის სამუშაოები და მტვერი, რომელსაც მანქანები ურევენ გზებზე. წვრილი ნაწილაკები (PM2.5): წვრილი ინჰალაციური ნაწილაკები, დიამეტრებით, რომლებიც ჩვეულებრივ 2.5 მიკრომეტრია და უფრო მცირე. წვრილი ნაწილაკები იწარმოება ყველა სახის წვისგან, მათ შორის სატრანსპორტო საშუალებების, ელექტროსადგურების, საცხოვრებელი ხის დაწვის, ტყის ხანძრების, სასოფლო -სამეურნეო წვისა და ზოგიერთი სამრეწველო პროცესის შესახებ. თქვენ შეგიძლიათ შეიტყოთ მეტი ნაწილაკების შესახებ EPA- ს საიტზე: შეერთებული შტატების გარემოს დაცვის სააგენტო

ნაბიჯი 2: რატომ არის მნიშვნელოვანი ამ ნაწილაკებზე ზრუნვა?

რატომ არის მნიშვნელოვანი ამ დეტალებზე ზრუნვა?
რატომ არის მნიშვნელოვანი ამ დეტალებზე ზრუნვა?

GERARDO ALVARADO Z.- ს მიერ ჩილეს უნივერსიტეტში მუშაობისას, 1930 წელს მეუსის ხეობაში (ბელგია) ჰაერის მაღალი დაბინძურების ეპიზოდების კვლევები, დონორა (პენსილვანია) 1948 წელს და ლონდონი 1952 წელს იყო პირველი დოკუმენტირებული წყაროები, რომლებიც უკავშირდებოდა სიკვდილიანობას. ნაწილაკების დაბინძურებით (Préndez, 1993). ადამიანების ჯანმრთელობაზე ჰაერის დაბინძურების ზემოქმედების გამოძიების მიღწევებმა დაადგინა, რომ ჯანმრთელობის რისკები გამოწვეულია ინჰალაციური ნაწილაკებით, რაც დამოკიდებულია მათ შეღწევადობასა და განლაგებაზე სასუნთქი სისტემის სხვადასხვა მონაკვეთზე და ბიოლოგიურ პასუხზე დაგროვილ მასალებზე.

ყველაზე სქელი ნაწილაკები, დაახლოებით 5 μm, გაფილტრულია ცხვირის პილილაციის წამწამების და ლორწოვანი გარსის ერთობლივი მოქმედებით, რომელიც ფარავს ცხვირის ღრუს და ტრაქეას. ნაწილაკები, რომელთა დიამეტრი 0,5 -დან 5 მკმ -მდეა, შეიძლება ჩაისვა ბრონქებში და ფილტვის ალვეოლებშიც კი, თუმცა, ისინი ბრონქებისა და ბრონქიოლების ცილიკებით გამოიყოფა რამდენიმე საათის შემდეგ. 0.5 მკმ -ზე მცირე ნაწილაკებს შეუძლიათ ღრმად შეაღწიონ ფილტვის ალვეოლში დეპონირებისას, რომელიც დარჩება კვირებიდან წლების განმავლობაში, ვინაიდან არ არსებობს ლორწოვანი გარსის სატრანსპორტო მექანიზმი, რომელიც ხელს უწყობს აღმოფხვრას. ქვემოთ მოყვანილი სურათი გვიჩვენებს ნაწილაკების შეღწევას სასუნთქ სისტემაში მათი ზომის მიხედვით.

ამრიგად, ორივე ტიპის ნაწილაკების (PM2.5 და PM10) ამოცნობა ძალიან მნიშვნელოვანია და კარგი ამბავი ის არის, რომ ორივე იკითხება მარტივი და არა ძვირი სენსორით, SDS011.

ნაბიჯი 3: ნაწილაკების სენსორი - SDS011

ნაწილაკების სენსორი - SDS011
ნაწილაკების სენსორი - SDS011
ნაწილაკების სენსორი - SDS011
ნაწილაკების სენსორი - SDS011

ჰაერის ხარისხის მონიტორინგი არის ცნობილი და დამკვიდრებული მეცნიერება, რომელიც ჯერ კიდევ 80 -იან წლებში დაიწყო. იმ დროს, ტექნოლოგია საკმაოდ შეზღუდული იყო და გამოსავალი გამოყენებული იყო ჰაერის დაბინძურების კომპლექსის შესაფასებლად, მძიმე და მართლაც ძვირი.

საბედნიეროდ, დღესდღეობით, უახლესი და თანამედროვე ტექნოლოგიებით, ჰაერის ხარისხის მონიტორინგისთვის გამოყენებული გადაწყვეტილებები ხდება არა მხოლოდ უფრო ზუსტი, არამედ უფრო სწრაფი გაზომვისას. მოწყობილობები უფრო პატარა ხდება და ღირს ბევრად უფრო ხელმისაწვდომი, ვიდრე ოდესმე.

ამ სტატიაში ჩვენ ყურადღებას გავამახვილებთ ნაწილაკების სენსორზე, რომელსაც შეუძლია გამოავლინოს მტვრის რაოდენობა ჰაერში. მიუხედავად იმისა, რომ პირველ თაობას შეეძლო გაუმჭვირვალეობის დადგენა, უახლეს სენსორებს, როგორიცაა SDS011 INOVAFIT– დან, ჯინანის უნივერსიტეტიდან (შანდონგში), ახლა შეუძლიათ აღმოაჩინონ PM2.5 და PM10.

SDS011 თავისი ზომით არის ალბათ ერთ -ერთი საუკეთესო სენსორი სიზუსტისა და ფასის თვალსაზრისით (40.00 აშშ დოლარზე ნაკლები).

  • გაზომილი მნიშვნელობები: PM2.5, PM10
  • დიაპაზონი: 0–999.9 მკგ /მ³
  • მიწოდების ძაბვა: 5V (4.7-5.3V)
  • ენერგომოხმარება (სამუშაო): 70mA ± 10mA
  • ენერგიის მოხმარება (ძილის რეჟიმი ლაზერი და ვენტილატორი): <4 mA
  • შენახვის ტემპერატურა: -20 -დან +60C- მდე
  • სამუშაო ტემპერატურა: -10 -დან +50C- მდე
  • ტენიანობა (შენახვა): მაქს. 90%
  • ტენიანობა (სამუშაო): მაქს. 70% (წყლის ორთქლის კონდენსაცია აყალბებს კითხვას)
  • სიზუსტე: 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 წამიანი ინტერვალით.

* ლაზერული გაფანტვის პრინციპი: სინათლის გაფანტვა შეიძლება გამოწვეული იყოს, როდესაც ნაწილაკები გადიან გამოვლენის არეს. გაფანტული შუქი გარდაიქმნება ელექტრო სიგნალებად და ეს სიგნალები გაძლიერდება და დამუშავდება. ნაწილაკების რიცხვისა და დიამეტრის მიღება შესაძლებელია ანალიზით, რადგან სიგნალის ტალღის ფორმას აქვს გარკვეული კავშირი ნაწილაკების დიამეტრთან.

ნაბიჯი 4: მაგრამ როგორ შეუძლია SDS011 დაიჭიროს ეს ნაწილაკები?

მაგრამ როგორ შეუძლია SDS011 დაიჭიროს ეს ნაწილაკები?
მაგრამ როგორ შეუძლია SDS011 დაიჭიროს ეს ნაწილაკები?
მაგრამ როგორ შეუძლია SDS011 დაიჭიროს ეს ნაწილაკები?
მაგრამ როგორ შეუძლია SDS011 დაიჭიროს ეს ნაწილაკები?

როგორც უკვე აღვნიშნეთ, SDS011– ის მიერ გამოყენებული პრინციპი არის სინათლის გაფანტვა ან უკეთესი, დინამიური შუქის გაფანტვა (DLS), რომელიც არის ფიზიკის ტექნიკა, რომელიც შეიძლება გამოყენებულ იქნას მცირე ნაწილაკების ზომის განაწილების პროფილის დასადგენად სუსპენზიაში ან პოლიმერებში ხსნარში. DLS– ის ფარგლებში დროებითი რყევები ჩვეულებრივ გაანალიზებულია ინტენსივობის ან ფოტონის ავტოკორელაციის ფუნქციის საშუალებით (ასევე ცნობილია როგორც ფოტონკორელაციის სპექტროსკოპია ან კვაზილასტიური სინათლის გაფანტვა). დროის დომენის ანალიზისას, ავტოკორელაციის ფუნქცია (ACF) ჩვეულებრივ იშლება ნულიდან დაწყებული დროიდან და უფრო მცირე დინამიკა მცირე ნაწილაკების გამო იწვევს გაფანტული ინტენსივობის კვალის სწრაფ დეკორელაციას. ნაჩვენებია, რომ ინტენსივობის ACF არის ენერგიის სპექტრის ფურიეს გარდაქმნა და, შესაბამისად, DLS გაზომვები შეიძლება თანაბრად კარგად შესრულდეს სპექტრულ დომენში.

ორი ნიმუშის ჰიპოთეტური დინამიური სინათლის გაფანტვა: ზედა ნაწილის უფრო დიდი ნაწილაკები (PM10– ის მსგავსად) და ქვედა ნაწილაკები (როგორც PM2.5) ქვედა. ჩვენი სენსორის შიგნით, ჩვენ ვხედავთ, თუ როგორ ხორციელდება სინათლის გაფანტვის პრინციპი.

დიოდზე გადაღებული ელექტრული სიგნალი გადადის დაბალი ხმაურის გამაძლიერებელზე და ამის შემდეგ ციფრულ სიგნალად გარდაიქმნება ADC– ით და გარედან UART– ის საშუალებით.

SDS011– ის შესახებ მეტი რომ იცოდეთ რეალური სამეცნიერო გამოცდილების შესახებ, გთხოვთ გადახედოთ კონსტანტინოს და სხვების 2018 წლის მუშაობას, PM2.5 კონცენტრაციების მონიტორინგის დაბალი ღირებულების პორტატული სისტემის განვითარება და საველე ტესტირება.

ნაბიჯი 5: ჩვენების დრო

Შოუს დრო!
Შოუს დრო!
Შოუს დრო!
Შოუს დრო!

მოდით დავისვენოთ ყველა ამ თეორიაზე და გავამახვილოთ ყურადღება როგორ გავზომოთ ნაწილაკების რაოდენობა ჟოლოს Pi და SDS011 სენსორის გამოყენებით

HW კავშირი სინამდვილეში ძალიან მარტივია. სენსორი იყიდება USB ადაპტერთან ერთად, რათა გამოვიდეს მონაცემები მისი 7 ქინძისთავის UART– დან RPi– ს სტანდარტულ USB კონექტორთან.

SDS011 pinout:

  • პინი 1 - არ არის დაკავშირებული
  • პინი 2 - PM2.5: 0–999μg/მ³; PWM გამომავალი
  • მიამაგრეთ 3-5 ვ
  • პინი 4 - PM10: 0–999 მკგ/მ³; PWM გამომავალი
  • პინი 5 - GND
  • პინი 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. მაგრამ ამ პროექტისთვის საუკეთესოა პითონის ინტერფეისის შემუშავება კოდის გასამარტივებლად. თქვენ შეგიძლიათ შექმნათ თქვენი საკუთარი ინტერფეისი ან გამოიყენოთ ინტერნეტში არსებული ზოგიერთი, როგორც ფრენკ ჰოიერის ან ივან კალჩოვის. ჩვენ გამოვიყენებთ უკანასკნელს, რომელიც ძალიან მარტივია და კარგად მუშაობს (შეგიძლიათ ჩამოტვირთოთ 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 წამი გაზომვებამდე და მინიმუმ 2 წამი ახლის დასაწყებად (იხ. კოდი ზემოთ).

და ეს არის ყველაფერი რაც თქვენ უნდა იცოდეთ SW სენსორის გამოსაყენებლად. მოდით, უფრო ღრმად შევეხოთ ჰაერის ხარისხის კონტროლს! ამ სტატიის დასაწყისში, თუ თქვენ შეისწავლეთ საიტები, რომლებიც გვაწვდიან ინფორმაციას იმის შესახებ, თუ რამდენად კარგია თუ ცუდი ჰაერი, უნდა გააცნობიეროთ, რომ ფერები დაკავშირებულია ამ ღირებულებებთან. თითოეული ფერი არის ინდექსი. მათგან ყველაზე ცნობილია AQI (ჰაერის ხარისხის ინდექსი), რომელიც გამოიყენება აშშ -სა და რამდენიმე სხვა ქვეყანაში.

ნაბიჯი 6: ჰაერის ხარისხის ინდექსი - AQI

ჰაერის ხარისხის ინდექსი - AQI
ჰაერის ხარისხის ინდექსი - AQI
ჰაერის ხარისხის ინდექსი - AQI
ჰაერის ხარისხის ინდექსი - AQI
ჰაერის ხარისხის ინდექსი - AQI
ჰაერის ხარისხის ინდექსი - AQI

AQI არის ინდექსი ყოველდღიური ჰაერის ხარისხის შესახებ. ის გეუბნებათ რამდენად სუფთა ან დაბინძურებულია თქვენი ჰაერი და რა ასოცირებული შედეგები შეიძლება შემაშფოთებელი იყოს თქვენთვის. AQI ყურადღებას ამახვილებს ჯანმრთელობის ეფექტებზე, რომლებიც შეიძლება განიცადოთ დაბინძურებული ჰაერის სუნთქვიდან რამდენიმე საათში ან დღეში.

EPA (შეერთებული შტატების გარემოს დაცვის სააგენტო), მაგალითად, ითვლის AQI– ს არა მხოლოდ ნაწილაკების დაბინძურებისათვის (PM2.5 და PM10), არამედ ჰაერის სხვა ძირითადი დამაბინძურებლებისთვის, რომლებიც რეგულირდება სუფთა ჰაერის აქტით: მიწისქვეშა დონის ოზონი, ნახშირორჟანგი გოგირდის დიოქსიდი და აზოტის დიოქსიდი. თითოეული ამ დამაბინძურებლისთვის EPA- მ დაადგინა ჰაერის ხარისხის ეროვნული სტანდარტები საზოგადოებრივი ჯანმრთელობის დასაცავად. იხილეთ ზემოთ სურათი AQI მნიშვნელობებით, ფერებით და ჯანმრთელობის შეტყობინებით.

როგორც უკვე აღვნიშნეთ, AQI ღირებულებები და ფერები დაკავშირებულია თითოეულ დამაბინძურებელ აგენტთან, მაგრამ როგორ დაუკავშიროთ მათ სენსორების მიერ წარმოქმნილი ღირებულებები? დამატებითი ცხრილი აკავშირებს მათ ყველას, როგორც ნაჩვენებია ზემოთ.

რა თქმა უნდა, აზრი არ აქვს ასეთი მაგიდის გამოყენებას. საბოლოო ჯამში, ეს არის მარტივი მათემატიკური ალგორითმი, რომელიც ახდენს გამოთვლას. ამისათვის ჩვენ შევიტანთ ბიბლიოთეკას AQI მნიშვნელობასა და დამაბინძურებლების კონცენტრაციას შორის (μg/m³): პითონ-აკი.

დააინსტალირეთ ბიბლიოთეკა PIP გამოყენებით და ჩაატარეთ ტესტი (იხ. კოდი ზემოთ)

pip დააინსტალირეთ python-aqi

და რაც შეეხება ჩილეს?

ჩილეში მსგავსი ინდექსი გამოიყენება, ICAP: ჰაერის ხარისხის ინდექსი სუნთქვადი ნაწილაკებისთვის. რესპუბლიკის პრეზიდენტობის გენერალური მდივნის 1998 წლის 16 მარტის უზენაესი ბრძანებულება 59, თავის მუხლში 1, ასო ზ) ადგენს იმ დონეს, რომელიც განსაზღვრავს ICA ამოსუნთქული ნაწილაკების მასალისათვის ICAP.

სიდიდეები ცვალებადია სექციებს შორის, მნიშვნელობა 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] დრო. ძილი (2) pmt_2_5 = მრგვალი (pmt_2_5/n, 1) pmt_10 = მრგვალი (pmt_10/n, 1) სენსორი. ძილის (ძილი = ჭეშმარიტი) დრო. ძილი (2) დაბრუნება pmt_2_5, pmt_10 ზემოთ შეგიძლიათ ნახოთ ტესტის შედეგი. მოდით ასევე გავაკეთოთ ფუნქცია 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 ():

ღია ("შენი გზა აქ/air_quality.csv", "a") როგორც ჟურნალი: dt = datetime.now () log.write ("{}, {}, {}, {}, {} n". ფორმატი (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) ჟურნალი. დახურვა () ერთი მარყუჟის საშუალებით შეგიძლიათ რეგულარულად ჩაწეროთ მონაცემები თქვენს ადგილობრივ ფაილში, მაგალითად, ყოველ წუთში

ხოლო (მართალია):

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: მონაცემების გაგზავნა Cloud სერვისზე

Cloud სერვისზე მონაცემების გაგზავნა
Cloud სერვისზე მონაცემების გაგზავნა

ამ ეტაპზე, ჩვენ ვისწავლეთ თუ როგორ უნდა მივიღოთ მონაცემები სენსორიდან, მათი შენახვა ადგილობრივ CSV ფაილში. ახლა დროა ვნახოთ როგორ გავაგზავნოთ ეს მონაცემები IoT პლატფორმაზე. ამ გაკვეთილზე ჩვენ გამოვიყენებთ ThingSpeak.com.

”ThingSpeak არის ღია ინტერნეტ საგნების (IoT) პროგრამა, რომელიც ინახავს და იძენს მონაცემებს ნივთებიდან, REST და MQTT API– ების გამოყენებით. ThingSpeak საშუალებას გაძლევთ შექმნათ სენსორული პროგრამები, ადგილმდებარეობის თვალყურის დევნება და ნივთების სოციალური ქსელი სტატუსის განახლებით.”

პირველ რიგში, თქვენ უნდა გქონდეთ ანგარიში ThinkSpeak.com– ზე. შემდეგი, მიჰყევით არხის შექმნის ინსტრუქციას, გაითვალისწინეთ მისი არხის ID და ჩაწერეთ 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.mqtt. გამოქვეყნების სახით გამოქვეყნება

და დაიწყოს Thingspeak არხი და MQTT პროტოკოლი. კავშირის ეს მეთოდი არის უმარტივესი და მოითხოვს სისტემის არანაკლებ რესურსებს:

channelID = "თქვენი არხის ID"

apiKey = "შენი დაწერილი გასაღები" თემა = "არხები/" + არხი ID + "/გამოქვეყნება/" + 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 წუთში

ხოლო (მართალია): 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) სცადეთ: გამოქვეყნება. ერთი (თემა, დატვირთვა = 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 ჰაერის ხარისხის მონიტორი მუშაობდა, მე შევიკრიბე RPi პლასტმასის ყუთში, შევინახე სენსორი გარეთ და მოვათავსე ის ჩემი სახლის გარეთ.

შეიქმნა ორი გამოცდილება.

ნაბიჯი 13: ბენზინის ძრავის წვა

ბენზინის ძრავის წვა
ბენზინის ძრავის წვა
ბენზინის ძრავის წვა
ბენზინის ძრავის წვა

სენსორი მოთავსებულია ლამბრეტას გაზზე და მის ძრავაზე ჩართულია. ძრავა რამდენიმე წუთის განმავლობაში მუშაობდა და გამორთულია. ზემოთ მოყვანილი ჟურნალის ფაილიდან, შედეგი, რომელიც მე მივიღე. საინტერესოა იმის დადასტურება, რომ 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.

სალუდო მსოფლიოს სამხრეთიდან!

შევხვდებით ჩემს შემდეგ ინსტრუქტაჟზე!

Გმადლობთ, მარსელო

გირჩევთ: