LAKI PINGVINI<>
062019<><>

DIY: Mini meteo stanica

Za komarce i bozone

S proleća kreće i pojava veće prašine, polena i drugih sitnih čestica koje udišemo. Ne reagujemo svi isto na njih i ne možemo puno učiniti da ih eliminišemo iz našeg okruženja, ali bar možemo znati koja je količina tih čestica u pitanju. Pred vama je još jedan DIY (do it yourself) projekat gde ćemo vam prikazati uređaj koji meri količinu čestica u vazduhu, a pride i temperaturu, relativnu vlažnost vazduha i vazdušni pritisak. Da malo začinimo, upotrebili smo neke tehnike o kojima do sada nismo pisali, a najzanimljivija je automatsko isključivanje Arduina (ili bilo kog mikrokontrolera) nakon zadatog vremenskog intervala i njegovo uključivanje na taster.

 
Za projekat smo upotrebili plastično kućište dimenzija 12,5 × 8 × 3 centimetra, koje je sasvim dovoljno da u njega stane prototipska PCB dimenzija 9 × 5 centimetara na koju smo spakovali sve komponente. Sistem će raditi na jednu bateriju 18650, a strujna kola koja će se starati o njenom punjenju i regulisanju napona su već poznata iz ranijih projekata i pokazala su se kao pouzdana. Za punjenje smo upotrebili modul sa TP4056 čipom koji će našu bateriju od 3,7 volti čuvati od prevelikog punjenja i preteranog pražnjenja, i naravno, puniti po potrebi. Za naše senzore i mikrokontroler nam treba stabilan napon od pet volti i u tu svrhu smo upotrebili step-up MT3608 modul. Ovaj setup smo koristili kada smo pisali o daljinskom očitavanju temperature (SK 2/2019) i tada je bilo više reči o njemu. S tim što je ovde reč o portable uređaju koji je prvenstveno namenjen da radi na bateriji, tako da ovde nemamo strujni adapter, već smo dodali mikro USB priključak, gde ćemo naš uređaj puniti klasičnim punjačem telefona, baš kao i sam telefon.

Srce sistema će činiti Wavgatov klon Pro Minija koji ima određene bagove gde je možda i najveći problem sa Serialom. U suštini ove ploče vrše posao, ali ako se ipak za njih odlučite, projekat je bolje razvijati na Unu ili sličnoj ploči, pa ga tek onda prebaciti na ovaj Wavgat. Ploča radi na pet volti, kao i ostatak projekta, pa nema potrebe za dodatnim naponskim regulatorima. Wavgat ima i bag sa naponskom sekcijom i mora se napajati preko VCC pina regulisanim naponom od pet volti, iako je tu i RAW pin. Devet volti na RAW pinu ne dovodi ni dva volta do mikrokontrolera. U okviru IDE potrebno je dodati ploču i odgovarajuće biblioteke koje možete preuzeti sa adrese bit.ly/2IMcVV2. Za Wavgat, iako bagovit, odlučili smo se jer ih imamo i moramo ih negde potrošiti, a u suštini ploče rade svoj posao.

 
Ono što možemo navesti kao highlight projekta je automatsko gašenje mikrokontrolera, samim tim i celog sistema. Da bismo to postigli, upotrebili smo dva MOSFET-a i par otpornika. O otpornicima smo tu i tamo i pisali, ali o MOSFET tranzistorima ne. MOSFET, iako u suštini tranzistor, ipak ima određene razlike u odnosu na klasičan tranzistor. Bipolarni tranzistori su strujno upravljivi, dok je MOSFET naponski upravljiv. Ovi tranzistori takođe imaju tri nožice: imamo G (gate), što je upravljačka elektroda, D (drain) je odvod, dok je S (source) ulaz. Protok struje između drain i source nožica se kontroliše preko gatea. Razlikujemo N i P mosfete. Kod N (negative) MOSFET-a protok struje kontrolišemo dovođenjem pozitivnog napona, dok kod P (positive) to radimo dovođenjem negativnog napona. MOSFET-i zahtevaju mnogo više od pasusa, ali dovoljno je reći da ih možemo koristiti u razne svrhe, u našem slučaju za automatiku uključivanje i isključivanje Arduina. Ideja je sledeća: pritiskom na taster mi šaljemo GND na gate MOSFET-a 6020P. MOSFET će propustiti pet volti direktno na VCC našeg Wavgata, što će biti sasvim dovoljno da on pokrene mikrokontroler. Sa ovim će ploča raditi samo dok držimo pritisnut taster. Da bi ploča ostala upaljena onoliko koliko nama treba, pribegli smo vrlo prostom triku. Već u setup funkciji definišemo jedan digitalni pin (u našem slučaju pin 9) i postavljamo ga na HIGH. Ovaj pin šalje pet volti preko otpornika od 150 oma na gate IRLZ44N MOSFET-a, koji u tom slučaju sa svog source zatvara GND na 6020P i na taj način ga drži „otvorenim”, a ovaj opet šalje onih pet volti nazad i drži Wavgat uključenim. U okviru skeča je dovoljno postaviti pin na LOW i ceo sistem je ugašen do ponovnog pritiska na taster. To može biti nakon nekog vremena ili nakon određenog broja očitavanja senzora. Prevedeno: naš uređaj palimo pritiskom na taster, Wavgat šalje pet volti ka MOSFET-ima i na taj način sam sebe drži uključenim. Kada u logici skeča dođe da pin ka MOSFET-ima postavi na LOW, tada se sam i isključuje. Otpornici koje smo dodali imaju ulogu da drže gate na MOSFET-ima zatvorenim i povezani su na GND (ili pet volti) shodno tipu i ulozi samog MOSFET-a (N ili P). Sa ovakvom postavkom isključen uređaj će „vući” nula ampera.

Napomena:

 
Rad sa MOSFET-ima je svakako zanimljiv, ali treba biti veoma obazriv prilikom njihove ugradnje. MOSFET-i su veoma osetljivi na statički elektricitet i treba izbegavati dodirivanje izvoda prstima, a posebno Gate izvod. Mi smo u startu uspeli jednom primerku 6020P da dođemo glave tako što je Gate ostao otvoren sve vreme i morali smo da ga zamenimo.

Za ispisivanje podataka smo upotrebili OLED ekran 128 x 64 piksela, koji se sa mikrokontrolerom povezuje putem I2C interfejsa. Bez seriala je teško videti koju I2C adresu koristi ovaj ekran i to je jedan od razloga što nam treba druga (po ovom pitanju) ispravna ploča. Za merenje količine čestica u vazduhu smo upotrebili optički senzor prašine sa oznakom GP2Y1010AUOF. Senzor je dizajnirao Sharp, gde postoje dve varijante, ovaj naš i precizniji model sa „1014” u oznaci. Senzor funkcioniše tako što prikuplja rasipanje svetlosti usled količine čestica prašine. Ovo se postiže tako što su u njemu ugrađeni izvor svetla (IRED – infrared emitting diode) i foto-detektor, koji su postavljeni dijagonalno. Foto-detektor će prikupiti samo svetlost koja se odbije od čestica prašine. To je i razlog što za povezivanje imamo čak šest žica. Potrošnja struje ne prelazi 20 miliampera, te uređaj spada u grupu malih potrošača. Sharpov senzor je u stanju da detektuje čestice manje od pola mikrona, ali ne i da pravi razliku u njihovoj veličini. Ipak, zahvaljujući uzorcima uzetim prema pulsu, moguće je napraviti razliku između dima i prašine. S obzirom na to da govorimo o izuzetno malim česticama, reći ćemo samo da ovaj senzor spada u grupu PM2.5 uređaja (particulate matter – čestična materija), što će reći u grupu senzora koji detektuju čestice manje od 2,5 mikrona. Za detekciju senzor koristi svojevrsnu komoru u obliku tunela koja mora biti otvorena sa obe strane. Mi smo ovo postigli sa otvorima na kućištu. Za povezivanje senzora na sistem se koriste otpornik od 150 oma i kondenzator od 200 mikrofarada, koji se dobijaju uz senzor, a povezivanje ide prema šemi. Dodali smo i BME280 senzor da bi nam uređaj dao malo više podataka. O ovim senzorima je bilo reči na stranicama SK LABS (4/2017). Tada smo rekli da senzor meri temperaturu, relativnu vlažnost vazduha, vazdušni pritisak i, posredno, nadmorsku visinu.

 
O povezivanju baterije i modula vezanih za naponski deo smo već pisali. Izvode step up modula VOUT+ i VOUT- vodimo do mosfeta i tastera koje povezujemo prema šemi. Dalje, pet volti i GND vodimo do senzora, ekrana i mikrokontrolera. Sve smo lemili na jednoslojnu prototipsku PCB i sve zatvorili u prikladno kućište.

Skeč projekta možete preuzeti sa adrese bit.ly/2J6l0Dh. Nakon dodavanja neophodnih biblioteka i pravljenja objekata za ekran i BME280 senzor, dodajemo određene definicije i konstante za naš senzor prašine. Na mreži se može preuzeti i namenska biblioteka koju smo probali i sa kojom smo zadovoljni. Problem je što smo sa njom opasno blizu limitima memorije Wavgata. Umesto toga odlučili smo se za drugačiji pristup koji je kapacitete memorije zadržao u 80 odsto. GPIO 7 smo dodelili LED pinu senzora, dok smo detektor povezali na analogni A0. Digitalni pin 9 smo povezali sa MOSFET-om zaduženim za automatiku iznad. U setup funkciji prvo što radimo je to da powerFet (pin za držanje Wavgata upaljenim) postavljamo kao OUTPUT i na HIGH da bi uređaj radio. Vreme smo limitirali na 40 sekundi. Uz standardno pokretanje ekrana i BME280 senzora koristimo priliku da formatiramo ekran. Dodali smo dve opcione funkcije, printValue() i eraseField(), gde se kod prve pravi mnogo kompaktniji skeč, ali možda malo teži za praćenje. Dovoljno je u okviru loopa samo preneti neophodne vrednosti za svaki senzor i dobiti jedva pet linija koda. Mi smo ovu opciju ostavili u komentarima i odlučili se za širu varijantu, gde koristimo eraseField() da obrišemo polja unutar ekrana nakon svakog ispisa vrednosti senzora.

 
Na kraju da pojasnimo logiku prikupljanja i obrade podataka senzora za prašinu. Prema dokumentaciji LED unutar senzora treba da bude uključena na svakih deset milisekundi (kod nas 9,68), uz trajanje pulsa od 0,32 milisekunde. Za ovo pulsiranje su i zaduženi kondenzator od 220 mikrofarada i otpornik od 150 oma koje smo dobili. Za vreme dok je LED upaljena prikupljamo analogne uzorke nakon 280 mikrosekundi. Daljim kalkulacijama dolazimo do broja čestica izraženih u mikrogramima po metru kubnom). Šta nam dobijene brojke govore? Ako govorimo o česticama fine prašine, vrednosti ispod 50 mikrograma/m3 (za PM2,5) ne bi trebalo da imaju negativnih posledica po naše zdravlje, dok se vrednosti do 100 mikrograma/m3 mogu u određenoj meri tolerisati. Vrednosti se odnose na AQI (air quality index) sistem koji umnogome zavisi od regulativa same države. Ono što možemo videti na aqicn.org jeste da su standardne vrednosti za Beograd (recimo) oko 74 mikrograma/m3. Kako vrednosti počnu da se povećavaju, tako bi i vreme našeg prisustva u prostoru/prostoriji trebalo da se smanjuje. Naše kalkulacije nisu u stanju da nam daju sliku da li je u pitanju prašina ili duvanski dim i za to je bolje koristiti pomenutu biblioteku. Isto tako ne možemo znati da li se u otvoru senzora nalazi komarac ili Higsov bozon. Samim tim će dim lemilice koji prođe kroz otvor senzora podići očitane vrednosti na nivo kontaminacije Xingtaija. Ipak, za svakodnevnu (ili povremenu) upotrebu bi svakako trebalo da nam da koliko-toliko jasnu sliku o zagađenosti vazduha. Za ispravnu sliku zagađenosti vazduha bi pored sitnih čestica PM2.5 i PM10 trebalo izmeriti vrednosti ugljen-dioksida, ugljen-monoksida, polena i sličnih čestica, što može biti dodatak neke buduće verzije uređaja, a što možete i vi razraditi i podeliti na SK forumu.

• • •

Uređaj koji smo napravili je krajnje funkcionalan i potrošnja celog setupa je minimalna. Uzevši ovo u obzir, vidimo da uz povremenu upotrebu baterija može dugo da potraje. Ono što bi možda moglo da se doda je indikator napunjenosti baterije, što možemo ostaviti za V2.0, a eventualni update ćemo postaviti na forumu. Takođe, još elegantnije bi bilo zadržavati očitavanja funkcijom millis(), pre nego delay(). Jedna od varijanti može biti i dodatni taster kojim ćemo našem powerFet pinu ispisati LOW i na taj način ugasiti uređaj, nevezano za vreme. Kao i do sada, sva vaša pitanja i predloge možete postaviti na forum. Eventualni predlog za projekat, takođe.

Dejan PETROVIĆ

 
Ubuntu 19.04
Converseen 0.9.7.2
DIY: Mini meteo stanica
Šta mislite o ovom tekstu?
Nuts and Bolts (2): 74HC165 IC
Croduino Nova2 i Maker Display
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 3.22
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera