Turinys:

Pigių daiktų interneto oro kokybės monitorius, pagrįstas RaspberryPi 4: 15 žingsniais (su nuotraukomis)
Pigių daiktų interneto oro kokybės monitorius, pagrįstas RaspberryPi 4: 15 žingsniais (su nuotraukomis)

Video: Pigių daiktų interneto oro kokybės monitorius, pagrįstas RaspberryPi 4: 15 žingsniais (su nuotraukomis)

Video: Pigių daiktų interneto oro kokybės monitorius, pagrįstas RaspberryPi 4: 15 žingsniais (su nuotraukomis)
Video: MANE UŽPUOLĖ PIKTAS ŠUO |VLOG #3 2024, Liepa
Anonim
Pigių daiktų interneto oro kokybės monitorius, pagrįstas „RaspberryPi 4“
Pigių daiktų interneto oro kokybės monitorius, pagrįstas „RaspberryPi 4“
Pigių daiktų interneto oro kokybės monitorius, pagrįstas „RaspberryPi 4“
Pigių daiktų interneto oro kokybės monitorius, pagrįstas „RaspberryPi 4“
Pigių daiktų interneto oro kokybės monitorius, pagrįstas „RaspberryPi 4“
Pigių daiktų interneto oro kokybės monitorius, pagrįstas „RaspberryPi 4“
Pigių daiktų interneto oro kokybės monitorius, pagrįstas „RaspberryPi 4“
Pigių daiktų interneto oro kokybės monitorius, pagrįstas „RaspberryPi 4“

Santjage, Čilėje žiemos ekstremalių situacijų metu, privilegija gyventi vienoje gražiausių pasaulio šalių, deja, tai ne visos rožės. Čilė žiemos sezono metu labai kenčia nuo oro taršos, daugiausia dėl kietųjų dalelių, tokių kaip dulkės ir smogas.

Dėl šalto oro, pietuose, oro tarša daugiausia susijusi su medienos pagrindu veikiančiais veiksniais ir Santjage (pagrindinė šalies sostinė), susimaišiusia iš pramonės šakų, automobilių ir dėl unikalios geografinės padėties tarp dviejų didžiulių kalnų grandinių.

Šiais laikais oro tarša yra didelė problema visame pasaulyje ir šiame straipsnyje mes išnagrinėsime, kaip sukurti nebrangų naminį oro kokybės monitorių, pagrįstą „Raspberry Pi“. Jei norite sužinoti daugiau apie oro kokybę, apsilankykite „Pasaulio oro kokybės indekso“projekte.

Prekės

  • Raspberry Pi 4
  • 1SDS011 - didelio tikslumo lazerinis pm2.5 oro kokybės aptikimo jutiklis
  • Plastikinė dėžė

1 žingsnis: kietųjų dalelių medžiaga (PM): kas tai yra? Kaip jis patenka į orą?

Kietųjų dalelių medžiaga (PM): kas tai yra? Kaip jis patenka į orą?
Kietųjų dalelių medžiaga (PM): kas tai yra? Kaip jis patenka į orą?

Taigi, norėdami suprasti taršą ar oro užterštumą, turime ištirti su tuo susijusias daleles, kurios taip pat žinomos kaip kietosios dalelės. Žvelgdami į ankstesnio skyriaus grafikus galime pastebėti, kad jie paminėjo PM2.5 ir PM10. Pateiksime greitą to apžvalgą.

PM reiškia kietąsias daleles (dar vadinamas dalelių tarša): ore esančių kietų dalelių ir skysčių lašelių mišinio terminas. Kai kurios dalelės, tokios kaip dulkės, purvas, suodžiai ar dūmai, yra pakankamai didelės arba tamsios, kad jas būtų galima pamatyti plika akimi. Kiti yra tokie maži, kad juos galima aptikti tik naudojant elektroninį mikroskopą. Dalelės būna įvairių dydžių. Dalelės, kurių skersmuo yra mažesnis arba lygus 10 mikrometrų, yra tokios mažos, kad gali patekti į plaučius ir sukelti rimtų sveikatos problemų. Dešimt mikrometrų yra mažesnis už vieno žmogaus plauko plotį.

Dalelių tarša apima šiurkščias dulkių daleles (PM10): įkvepiamas daleles, kurių skersmuo paprastai yra 10 mikrometrų ir mažesnis. Šaltiniai apima smulkinimo ar šlifavimo operacijas ir transporto priemonėse keliuose dulkes. Smulkios dalelės (PM2.5): smulkiai įkvepiamos dalelės, kurių skersmuo paprastai yra 2,5 mikrometro ir mažesnis. Smulkios dalelės susidaro iš visų rūšių degimo, įskaitant variklines transporto priemones, elektrines, gyvenamųjų patalpų malkų deginimą, miškų gaisrus, žemės ūkio deginimą ir kai kuriuos pramoninius procesus, daugiau apie kietąsias daleles galite rasti EPA svetainėje: Jungtinių Valstijų aplinkos apsaugos agentūra

2 žingsnis: Kodėl svarbu rūpintis tomis kietosiomis dalelėmis?

Kodėl svarbu rūpintis tomis kietosiomis dalelėmis?
Kodėl svarbu rūpintis tomis kietosiomis dalelėmis?

Kaip aprašė GERARDO ALVARADO Z. savo darbe Čilės universitete, didelės oro taršos epizodų tyrimai Meuse slėnyje (Belgija) 1930 m., Donoroje (Pensilvanija) 1948 m. Ir Londone 1952 m. Buvo pirmieji dokumentuoti šaltiniai, susiję su mirtingumu su dalelių užteršimu (Préndez, 1993). Pažanga tiriant oro taršos poveikį žmonių sveikatai nustatė, kad pavojų sveikatai kelia įkvepiamos dalelės, priklausomai nuo jų įsiskverbimo ir nusėdimo įvairiose kvėpavimo sistemos dalyse bei biologinio atsako į nusėdusias medžiagas.

Storiausios dalelės, apie 5 μm, filtruojamos kartu veikiant nosies ertmės blakstienoms ir nosies ertmę bei trachėją dengiančiai gleivinei. Dalelės, kurių skersmuo yra nuo 0,5 iki 5 μm, gali nusėsti bronchuose ir net plaučių alveolėse, tačiau po kelių valandų jas pašalina bronchų ir bronchiolių blakstienos. Mažesnės nei 0,5 μm dalelės gali prasiskverbti giliai, kol jos nusėda plaučių alveolėse, likusios nuo savaičių iki metų, nes nėra mukociliarinio pernešimo mechanizmo, kuris palengvintų pašalinimą. Šis paveikslėlis rodo dalelių įsiskverbimą į kvėpavimo sistemą, priklausomai nuo jų dydžio.

Taigi, norint pastebėti abiejų tipų daleles (PM2.5 ir PM10) yra labai svarbu, ir gera žinia yra ta, kad abi jos gali nuskaityti paprastas ir nebrangus jutiklis SDS011.

3 žingsnis: dalelių jutiklis - SDS011

Dalelių jutiklis - SDS011
Dalelių jutiklis - SDS011
Dalelių jutiklis - SDS011
Dalelių jutiklis - SDS011

Oro kokybės stebėjimas yra gerai žinomas ir nusistovėjęs mokslas, pradėtas dar devintajame dešimtmetyje. Tuo metu technologija buvo gana ribota, o sprendimas, naudojamas kiekybiškai įvertinti oro taršos kompleksą, buvo sudėtingas ir tikrai brangus.

Laimei, šiais laikais, naudojant naujausias ir moderniausias technologijas, oro kokybės stebėsenos sprendimai tampa ne tik tikslesni, bet ir greitesni matuojant. Įrenginiai tampa mažesni ir kainuoja daug labiau nei bet kada anksčiau.

Šiame straipsnyje mes sutelksime dėmesį į dalelių jutiklį, kuris gali aptikti dulkių kiekį ore. Nors pirmoji karta ką tik sugebėjo aptikti neskaidrumą, naujausi jutikliai, kaip SDS011 iš INOVAFIT, Jinan universiteto (Shandongo universitete), dabar gali aptikti PM2.5 ir PM10.

Savo dydžiu SDS011 tikriausiai yra vienas geriausių jutiklių pagal tikslumą ir kainą (mažiau nei 40,00 USD).

  • Išmatuotos vertės: PM2.5, PM10
  • Diapazonas: 0–999,9 μg /m³
  • Maitinimo įtampa: 5V (4,7–5,3V)
  • Energijos sąnaudos (darbas): 70mA ± 10mA
  • Energijos suvartojimas (miego režimo lazeris ir ventiliatorius): <4mA
  • Laikymo temperatūra: nuo -20 iki +60C
  • Darbinė temperatūra: nuo -10 iki +50C
  • Drėgmė (laikymas): maks. 90%
  • Drėgmė (darbas): maks. 70% (vandens garų kondensacija kenkia rodmenims)
  • Tikslumas: 70% 0,3 μm ir 98% 0,5 μm
  • Dydis: 71x70x23 mm
  • Sertifikavimas: CE, FCC, RoHS

SD011 naudoja PCB kaip vieną korpuso pusę, todėl sumažėja jo kaina. Receptoriaus diodas yra sumontuotas PCB pusėje (tai privaloma, nes reikia vengti bet kokio triukšmo tarp diodo ir LNA). Emiteris lazeris yra sumontuotas ant plastikinės dėžutės ir prijungtas prie PCB per lanksčią laidą.

Trumpai tariant, „Nova Fitness SDS011“yra profesionalus lazerinis dulkių jutiklis. Ventiliatorius, sumontuotas ant jutiklio, automatiškai siurbia orą. Jutiklis naudoja lazerio šviesos sklaidos principą*, kad išmatuotų ore suspenduotų dulkių dalelių vertę. Jutiklis užtikrina labai tikslius ir patikimus PM2.5 ir PM10 verčių rodmenis. Bet kokius aplinkos pokyčius galima pastebėti beveik akimirksniu, trumpą reakcijos laiką, trumpesnį nei 10 sekundžių. Standartinio režimo jutiklis praneša apie rodmenis 1 sekundės intervalu.

* Lazerio sklaidos principas: šviesos sklaidą galima sukelti, kai dalelės praeina per aptikimo zoną. Išsklaidyta šviesa paverčiama elektriniais signalais ir šie signalai bus sustiprinami ir apdorojami. Dalelių skaičių ir skersmenį galima gauti analizuojant, nes signalo bangos forma turi tam tikrą ryšį su dalelių skersmeniu.

4 žingsnis: Bet kaip SDS011 gali užfiksuoti tas daleles?

Bet kaip SDS011 gali užfiksuoti tas daleles?
Bet kaip SDS011 gali užfiksuoti tas daleles?
Bet kaip SDS011 gali užfiksuoti tas daleles?
Bet kaip SDS011 gali užfiksuoti tas daleles?

Kaip minėta anksčiau, SDS011 naudojamas principas yra šviesos sklaida arba geresnis - dinaminis šviesos sklaida (DLS) - tai fizikos metodas, kuriuo galima nustatyti mažų dalelių, esančių suspensijoje, arba tirpalo polimerų, dydžio pasiskirstymą. DLS srityje laiko svyravimai paprastai analizuojami naudojant intensyvumo arba fotonų automatinės koreliacijos funkciją (taip pat žinomą kaip fotonų koreliacijos spektroskopija arba kvazi elastinga šviesos sklaida). Atliekant laiko srities analizę, autokoreliacijos funkcija (ACF) paprastai suyra, pradedant nuo nulio delsos laiko, o spartesnė dinamika dėl mažesnių dalelių lemia greitesnį išsklaidyto intensyvumo pėdsako dekoreliaciją. Buvo įrodyta, kad intensyvumas ACF yra Furjė galios spektro transformacija, todėl DLS matavimai gali būti vienodai gerai atliekami spektrinėje srityje.

Virš hipotetinio dviejų mėginių dinaminio šviesos sklaidos: didesnės dalelės (pvz., PM10) viršuje ir mažesnės dalelės (kaip PM2.5) apačioje. Pažvelgę į savo jutiklį galime pamatyti, kaip įgyvendinamas šviesos sklaidos principas.

Elektrinis signalas, užfiksuotas ant diodo, patenka į mažo triukšmo stiprintuvą ir iš jo turi būti paverstas skaitmeniniu signalu per ADC, o į išorę per UART.

Norėdami sužinoti daugiau apie SDS011 apie tikrą mokslinę patirtį, pažvelkite į 2018 m. Konstantinos ir kt. Darbą „Pigių nešiojamų nešiojamųjų sistemų kūrimas ir bandymai vietoje PM2,5 koncentracijos stebėjimui“.

5 žingsnis: „Showtime“

Pasirodymas!
Pasirodymas!
Pasirodymas!
Pasirodymas!

Padarykime pertrauką prie visos šios teorijos ir sutelkime dėmesį į tai, kaip išmatuoti kietųjų dalelių kiekį naudojant „Raspberry Pi“ir SDS011 jutiklį

Iš tikrųjų HW jungtis yra labai paprasta. Jutiklis parduodamas su USB adapteriu, kad būtų galima sujungti išvesties duomenis iš 7 kontaktų UART su viena iš standartinių RPi USB jungčių.

SDS011 kontaktas:

  • 1 kaištis - neprijungtas
  • 2 kaištis - PM2.5: 0–999μg/m³; PWM išvestis
  • Kištukas 3-5 V
  • 4 kaištis - PM10: 0–999 μg/m³; PWM išvestis
  • 5 kaištis - GND
  • 6 kaištis - RX UART (TTL) 3.3V
  • 7 kaištis - TX UART (TTL) 3.3V

Šiai pamokai aš pirmą kartą naudoju visiškai naują Raspberry-Pi 4. Bet, žinoma, bet koks ankstesnis modelis taip pat veiks gerai.

Kai tik prijungsite jutiklį prie vieno iš RPi USB prievadų, automatiškai pradėsite klausytis jo ventiliatoriaus garso. Triukšmas šiek tiek erzina, todėl galbūt turėtumėte jį atjungti ir palaukti, kol viskas bus nustatyta naudojant SW.

Ryšys tarp jutiklio ir RPi vyks per nuoseklųjį protokolą. Išsamią informaciją apie šį protokolą rasite čia: Lazerinis dulkių jutiklio valdymo protokolas V1.3. Tačiau šiam projektui geriausia naudoti „python“sąsają, kad būtų supaprastintas kuriamas kodas. Galite sukurti savo sąsają arba naudoti kai kurias internete esančias sąsajas, kaip Frank Heuer ar Ivan Kalchev. Mes naudosime paskutinį, kuris yra labai paprastas ir puikiai veikia (sds011.py scenarijų galite atsisiųsti iš jo „GitHub“arba mano).

Failas sds011.py turi būti tame pačiame kataloge, kuriame kuriate scenarijų.

Kurimo etape naudosiu „Jupyter“nešiojamąjį kompiuterį, bet jūs galite naudoti bet kurį jums patinkantį IDE (pvz., „Thonny“ar „Geany“, kurie yra „Raspberry Pi Debian“paketo dalis, yra labai geri).

Pradėkite importuoti „sds011“ir kurkite jutiklio egzempliorių. SDS011 pateikia metodą skaityti iš jutiklio naudojant UART.

iš sds011 importo *

jutiklis = SDS011 ("/dev/ttyUSB0")

Galite įjungti arba išjungti jutiklį naudodami miego komandą:

pmt_2_5, pmt_10 = sensor.query ()

Prieš matavimus palaukite mažiausiai 10 sekundžių, kol stabilizuosis, ir mažiausiai 2 sekundes, kad pradėtumėte naują (žr. Kodą aukščiau).

Ir tai yra viskas, ką reikia žinoti SW atžvilgiu, kad galėtumėte naudoti jutiklį. Bet gilinkimės į oro kokybės kontrolę! Šio straipsnio pradžioje, jei ištyrėte svetaines, kuriose pateikiama informacija apie tai, koks geras ar blogas oras, turėtumėte suprasti, kad spalvos yra susijusios su tomis vertybėmis. Kiekviena spalva yra indeksas. Labiausiai žinomas yra AQI (oro kokybės indeksas), naudojamas JAV ir keliose kitose šalyse.

6 žingsnis: oro kokybės indeksas - AQI

Oro kokybės indeksas - AQI
Oro kokybės indeksas - AQI
Oro kokybės indeksas - AQI
Oro kokybės indeksas - AQI
Oro kokybės indeksas - AQI
Oro kokybės indeksas - AQI

AQI yra indeksas, leidžiantis pranešti apie kasdienę oro kokybę. Jame pasakojama, koks švarus ar užterštas yra jūsų oras ir koks su tuo susijęs poveikis sveikatai gali jums rūpėti. AQI yra sutelktas į poveikį sveikatai, kurį galite patirti per kelias valandas ar dienas įkvėpus užteršto oro.

Pavyzdžiui, EPA (Jungtinių Valstijų aplinkos apsaugos agentūra) apskaičiuoja AQI ne tik taršą dalelėmis (KD2,5 ir KD10), bet ir kitus pagrindinius oro teršalus, kuriuos reglamentuoja Švaraus oro įstatymas: žemės paviršiaus ozonas, anglies monoksidas, sieros dioksidas ir azoto dioksidas. Kiekvienam iš šių teršalų EPA nustatė nacionalinius oro kokybės standartus, skirtus visuomenės sveikatai apsaugoti. Žr. Paveikslėlį su AQI reikšmėmis, spalvomis ir sveikatos pranešimu.

Kaip minėta anksčiau, šios AQI vertės ir spalvos yra susijusios su kiekvienu iš teršalų, bet kaip su jomis susieti jutiklių sukurtas vertes? Papildoma lentelė sujungia juos visus, kaip parodyta aukščiau.

Bet, žinoma, nėra prasmės naudotis tokia lentele. Galų gale, tai yra paprastas matematinis algoritmas, leidžiantis apskaičiuoti. Norėdami tai padaryti, importuosime biblioteką, kad būtų galima konvertuoti AQI vertę į teršalų koncentraciją (µg/m³): python-aqi.

Įdiekite biblioteką naudodami PIP ir atlikite testą (žr. Kodą aukščiau)

pip įdiegti python-aqi

O kaip Čilė?

Čilėje naudojamas panašus indeksas - ICAP: kvėpuojančių dalelių oro kokybės indeksas. 1998 m. Kovo 16 d. Respublikos Prezidentūros ministerijos generalinio sekretoriaus Aukščiausiojo dekreto 59 1 straipsnio g punkte nustatyta, kad lygiai, apibrėžiantys kvėpuojančių kietųjų dalelių ICA, ICAP.

Vertės skirsniuose skirsis tiesiškai, 500 vertė atitiktų ribinę vertę, kurią viršijus susidarytų pavojus gyventojams, susidūrus su šiomis koncentracijomis. Remiantis ICAP vertėmis, buvo nustatytos kategorijos, kurios atitinka MP10 koncentracijos lygius, su kuriais susidūrė žmonės.

7 veiksmas: duomenų registravimas vietoje

Duomenų registravimas vietoje
Duomenų registravimas vietoje
Duomenų registravimas vietoje
Duomenų registravimas vietoje
Duomenų registravimas vietoje
Duomenų registravimas vietoje

Šiuo metu mes turime visus įrankius, kad galėtume surinkti duomenis iš jutiklio ir konvertuoti juos taip, kad jie būtų „skaitomesni“, ty tai yra AQI indeksas.

Sukurkime funkciją šioms vertybėms fiksuoti. Mes užfiksuosime 3 vertes iš eilės, atsižvelgdami į jų vidurkį:

def get_data (n = 3):

sensor.sleep (sleep = False) pmt_2_5 = 0 pmt_10 = 0 time.sleep (10), kai aš (n): x = sensor.query () pmt_2_5 = pmt_2_5 + x [0] pmt_10 = pmt_10 + x [1] time.sleep (2) pmt_2_5 = apvalus (pmt_2_5/n, 1) pmt_10 = round (pmt_10/n, 1) sensor.sleep (sleep = True) time.sleep (2) grįžimas pmt_2_5, pmt_10 Viršuje galite pamatyti bandymo rezultatą. Taip pat atlikime funkciją, kad konvertuotume PM skaitines vertes AQI indekse

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)) grąžinti aqi_2_5, aqi_10 viršija abiejų funkcijų bandymo rezultatą. Bet ką su jais daryti? Paprasčiausias atsakymas yra sukurti funkciją išsaugotiems duomenims išsaugoti, išsaugojant juos vietiniame faile

def save_log ():

su atvira („JŪSŲ KELIAS ČIA/air_quality.csv“, „a“) kaip žurnalas: dt = datetime.now () log.write („{}, {}, {}, {}, {} n“. formatas (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close () Naudodami vieną ciklą, galite reguliariai registruoti duomenis savo vietiniame faile, pavyzdžiui, kiekvieną minutę

o (tiesa):

pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) pabandykite: save_log () išskyrus: print ("[INFO] Nepavyko registruoti duomenų") time.sleep (60) Kas 60 sekundžių laiko žyma ir duomenys bus „pridėti“prie šio failo, kaip matome aukščiau.

8 veiksmas: duomenų siuntimas į „Cloud Service“

Duomenų siuntimas į „Cloud Service“
Duomenų siuntimas į „Cloud Service“

Šiuo metu mes išmokome užfiksuoti duomenis iš jutiklio ir išsaugoti juos vietiniame CSV faile. Dabar atėjo laikas pamatyti, kaip nusiųsti tuos duomenis į daiktų interneto platformą. Šioje pamokoje naudosime „ThingSpeak.com“.

„„ ThingSpeak “yra atvirojo kodo daiktų interneto (IoT) programa, skirta saugoti ir gauti duomenis iš daiktų, naudojant REST ir MQTT API. „ThingSpeak“leidžia kurti jutiklių registravimo programas, vietos stebėjimo programas ir socialinį tinklą, kuriame atnaujinami būsenos duomenys.

Pirma, jūs turite turėti paskyrą „ThinkSpeak.com“. Tada vykdykite instrukcijas, kad sukurtumėte kanalą, atsižvelgdami į jo kanalo ID ir „Write API Key“.

Kurdami kanalą taip pat turite apibrėžti, kokia informacija bus įkelta į kiekvieną iš 8 laukų, kaip parodyta aukščiau (mūsų atveju bus naudojami tik 4 iš jų).

9 veiksmas: MQTT protokolas ir „ThingSpeak“ryšys

MQTT protokolas ir „ThingSpeak“ryšys
MQTT protokolas ir „ThingSpeak“ryšys

„MQTT“yra paskelbimo/prenumeratos architektūra, sukurta pirmiausia siekiant sujungti pralaidumą ir ribotos galios įrenginius belaidžiais tinklais. Tai paprastas ir lengvas protokolas, veikiantis per TCP/IP lizdus arba „WebSockets“. MQTT per „WebSockets“gali būti apsaugotas naudojant SSL. Paskelbimo/prenumeratos architektūra leidžia pranešimus perkelti į kliento įrenginius, įrenginiui nereikia nuolat apklausti serverio.

MQTT brokeris yra pagrindinis komunikacijos taškas ir yra atsakingas už visų pranešimų siuntimą tarp siuntėjų ir teisėtų gavėjų. Klientas yra bet koks įrenginys, jungiantis prie tarpininko ir galintis paskelbti ar užsiprenumeruoti temas, kad galėtų pasiekti informaciją. Temoje yra tarpininko informacija apie maršrutą. Kiekvienas klientas, norintis siųsti pranešimus, skelbia juos tam tikra tema, o kiekvienas klientas, norintis gauti pranešimus, užsisako tam tikrą temą. Tarpininkas pristato visus pranešimus atitinkančia tema atitinkamiems klientams.

„ThingSpeak ™“turi MQTT tarpininką URL adresu mqtt.thingspeak.com ir prievadas 1883. „ThingSpeak“tarpininkas palaiko ir MQTT paskelbimą, ir MQTT prenumeratą.

Mūsų atveju naudosime „MQTT Publish“.

10 veiksmas: MQTT paskelbimas

Publikuoti MQTT
Publikuoti MQTT

Norėdami pradėti, įdiekime „Eclipse Paho MQTT Python“klientų biblioteką, kuri įgyvendina MQTT protokolo 3.1 ir 3.1.1 versijas

sudo pip įdiegti paho-mqtt

Toliau importuokime paho biblioteką:

importuoti paho.mqtt.publish kaip paskelbti

ir inicijuoti „Thingspeak“kanalą bei MQTT protokolą. Šis ryšio metodas yra paprasčiausias ir reikalauja mažiausiai sistemos išteklių:

channelID = "JŪSŲ KANALO ID"

apiKey = "JŪSŲ RAŠYMO RAKTAS" tema = "kanalai/" + kanalo ID + "/paskelbti/" + apiKey mqttHost = "mqtt.thingspeak.com" Dabar turime apibrėžti savo „naudingąją apkrovą“

tPayload = "field1 =" + str (pmt_2_5) + "& field2 =" + str (aqi_2_5) + "& field3 =" + str (pmt_10) + "& field4 =" + str (aqi_10)

Štai ir viskas! mes pasiruošę pradėti siųsti duomenis į debesį! Perrašykime ankstesnę ciklo funkciją, kad į ją būtų įtraukta ir „ThingSpeak“dalis.

# Siunčiami visi duomenys į „ThingSpeak“kas 1 minutę

o (tiesa): 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) pabandykite: public.single (tema, naudingoji apkrova = tPayload, pagrindinio kompiuterio pavadinimas = mqttHost, port = tPort, tls = tTLS, transport = tTransport) save_log (), išskyrus: print ("[INFO] Nepavyko išsiųsti duomenų ") time.sleep (60) Jei viskas gerai, turite matyti, kad duomenys taip pat būtų rodomi jūsų kanale thingspeak.com, kaip parodyta aukščiau.

11 žingsnis: galutinis scenarijus

Svarbu pažymėti, kad „Jupyter Notebook“yra labai geras kūrimo ir ataskaitų teikimo įrankis, bet ne norint sukurti kodą, kurį būtų galima pradėti gaminti. Dabar turėtumėte imtis atitinkamos kodo dalies ir sukurti.py scenarijų ir paleisti jį savo terminale.

Pavyzdžiui, „ts_air_quality_logger.py“, kurį turėtumėte paleisti naudodami komandą:

„python 3“ts_air_quality_logger.py

Šį scenarijų, taip pat „Jupyter Notebook“ir sds011.py galima rasti mano saugykloje adresu RPi_Air_Quality_Sensor.

Atminkite, kad šį scenarijų galima tik išbandyti. Geriausia nenaudoti vėlavimų galutinės kilpos viduje (dėl to kodas pristabdomas), o naudoti laikmačius. Arba realiai programai geriausia nenaudoti kilpos, užprogramavus „Linux“reguliariai vykdyti scenarijų naudojant „crontab“.

12 veiksmas: monitoriaus išėmimas iš išorės

Monitoriaus išėmimas iš išorės
Monitoriaus išėmimas iš išorės
Monitoriaus išėmimas iš išorės
Monitoriaus išėmimas iš išorės
Monitoriaus išėmimas iš išorės
Monitoriaus išėmimas iš išorės
Monitoriaus išėmimas iš išorės
Monitoriaus išėmimas iš išorės

Kai mano „Raspberry Pi“oro kokybės monitorius veikė, aš surinkau RPi plastikinėje dėžutėje, laikydamas jutiklį lauke ir padėjęs jį už savo namų.

Buvo padaryta dvi patirtys.

13 žingsnis: benzininio variklio degimas

Benzininio variklio degimas
Benzininio variklio degimas
Benzininio variklio degimas
Benzininio variklio degimas

Jutiklis buvo pastatytas maždaug 1 m atstumu nuo „Lambretta“dujų skalės, o jo variklis buvo įjungtas. Variklis veikė porą minučių ir išsijungė. Iš aukščiau pateikto žurnalo failo gavau rezultatą. Įdomu patvirtinti, kad PM2.5 buvo pavojingiausios variklio dalelės.

14 žingsnis: medžio deginimas

Medienos deginimas
Medienos deginimas
Medienos deginimas
Medienos deginimas

Žiūrėdami į žurnalo failą, mes suprantame, kad jutiklio duomenys buvo momentiniai „už diapazono ribų“ir nebuvo gerai užfiksuoti AQI konversijos bibliotekoje, todėl pakeičiu ankstesnį kodą, kad jį tvarkyčiau:

def conv_aqi (pmt_2_5, pmt_10):

pabandykite: aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) grąžinti aqi_2_5, aqi_10, išskyrus: 600, Ši situacija gali atsitikti lauke, o tai gerai. Atminkite, kad iš tikrųjų turėtumėte naudoti slankųjį vidurkį, kad tikrai gautumėte AQI (bent valandą, bet paprastai kasdien).

15 žingsnis: Išvada

Išvada
Išvada

Kaip visada, tikiuosi, kad šis projektas gali padėti kitiems rasti kelią į jaudinantį elektronikos ir duomenų mokslo pasaulį!

Norėdami gauti daugiau informacijos ir galutinį kodą, apsilankykite mano „GitHub“saugykloje: RPi_Air_Quality_Sensor.

Saludos iš pasaulio pietų!

Iki pasimatymo mano kitoje pamokoje!

Ačiū, Marcelo

Rekomenduojamas: