1 UVOD Ljudje preživimo večino svojega življenja v prostorih, a obenem vemo več o svojem okolju in vremenu, ki je zunaj. V okolju zaprtega prostora imamo okoljske dejavnike, ki tako kot v zunanjem okolju vplivajo na človeka. A vendar se razen s termostati, redko odločamo, da bi notranje okolje merili ali upravljali. Razlogi so delno zgodovinski, delno pa tehnični. Imeti termometer na steni je še vedno dokaj običajno v domačih gospodinjstvih. Z razvojem tehnike, pa je ta termometer zamenjal termostat. V najboljšem primeru se meri tudi vlaga, a vse druge dejavnike pa zanemarimo. Raziskave kažejo, da okolje bistveno vpliva na počutje, zdravje in produktivnost. V slabo osvetljenem delovnem prostoru nas npr. pekoče oči opozorijo, da osvetljenost okolja ni primerna za delo. Raziskave so pokazale, da ljudje v zmerno hrupnih okoljih trpijo za povečanim sproščanjem adrenalina v krvni obtok in opravijo 40 % manj poizkusov, da bi rešili neki problem[1]. Druge raziskave, ki so osredinjene na temperaturo, so pokazale, da že majhne spremembe temperature delovnega prostora vplivajo na produktivnost ljudi [2]. Dejavniki, kot sta temperatura in vlaga, lahko bistveno vplivajo na infektivno sposobnost nekaterih virusov, kot je npr. virus gripe. Dokazano je, da je virus gripe zelo občutljiv na relativno vlago in temperaturo, kar tudi Prejet 27. julij, 2015 Odobren 30. september, 2015 mailto:rok.cesnovar@fri.uni-lj.si BREZŽIČNI SISTEM ZA SPREMLJANJE ŽIVLJENJSKEGA IN DELOVNEGA OKOLJA V REALNEM ČASU 273 razloži, zakaj se gripa bolj prenaša v jesenskem času [2]. Kakovost zraka v prostorih postaja tako pereč problem, da je Svetovna zdravstvena organizacija WHO izdala priporočila, da naj države naslovijo ta problem sistemsko [3]. Hlapne spojine, ki jih ljudje vnašamo s predmeti in čistili, lahko povzročajo čedalje večjo težavo za zdravje ljudi. A kljub dokazanim vplivom na ljudi je na trgu zelo malo naprav, ki bi omogočale sistematično spremljanje kakovosti bivanja v prostorih. Še najbliže temu so tipala v sobnih termostatih, ki pa imajo največkrat težavo, da so pritrjena na steno, kar pomeni, da so ob termičnem akumulatorju in da uporabljajo nizkokakovostne termometre z velikimi odstopanji. S sodobnim razvojem pametnih hiš in domačih naprav, ki jih je mogoče upravljati na daljavo, se je potreba po sistematičnem spremljanju okolja povečala. Le če lahko merimo okolje, lahko tudi učinkovito upravljamo aktuatorje, ki tako okolje aktivno spreminjajo. Slika 1: Naprava CubeSensors V tem članku predstavljamo naprave CubeSensors, ki smo jih razvili za kontinuirano spremljanje kakovosti bivanja v prostorih. Značilnosti naprav, ki smo jih razvili, so: majhnost, preprosta uporaba, kontinuirano spremljanje okolja v realnem času in beleženje podatkov v skupni bazi podatkov na oblaku. V naslednjih poglavjih bomo napravo, ki smo jo razvili, podrobneje predstavili. V 2. poglavju bomo predstavili, iz česa je sestavljena naprava Cubesensors, v 3. poglavju bomo predstavili, kako je zasnovana programska oprema, ki teče na napravah, ter kako je zasnovan sistem, ki sprejema podatke iz naprave Cubesensors in jih pošilja v podatkovno bazo na t. i. oblak.. V 4. poglavju bomo predstavili sklepe in predlagali možnosti za izboljšave. 2 NAPRAVA CUBESENSORS Na sliki 1 je prikazana naprava CubeSensors. Ima plastično ohišje, na sprednji in zadnji strani pa kovinski ploščici z velikim številom lukenj. V notranjosti se skriva tiskano vezje s procesorjem, senzorji, polnilnim čipom in drugimi elektronskimi deli ter vgradna baterija, ki napaja elemente na tiskanem vezju. Tiskano vezje je vidno na slikah 2 in 3. Slika 2: Zgornja stran tiskanega vezja z označenimi glavnimi deli 2.1 Mikrokrmilnik Osrčje naprave CubeSensors je mikrokrmilnik STM32F050K6U6A z 32-bitnim procesorjem ARM Cortex-M0 s frekvenco ure 48 MHz. Mikrokrmilnik ima 32 kilobytov pomnilnika Flash, ter 4 kilobyte pomnilnika SRAM. Nominalna disipacija moči pri TA=85°C je 526 mW. Omenjeni mikrokrmilnik je bil izbran zato, ker je majhen in posledično poceni ter ima majhno porabo pri vseh načinih delovanja. Zanima nas predvsem poraba v načinu STOP, ki ga uporabljamo za zmanjšanje porabe. Kot je zapisano v 3. poglavju, je procesor večino časa neaktiven, zato je poraba v neaktivnem stanju ključnega pomena za majhno porabo in posledično daljšo dobo delovanja na bateriji. Način STOP je bil izbran, ker nam poleg manjše porabe omogoča tudi ohranjanje stanja registrov in pomnilnika SRAM. To je pomembno, če želimo ohranjati informacijo o stanju sistema (smo povezani, kam smo povezani, kakšno je stanje omrežja itd.). Zato nismo uporabili načina STANDBY, medtem ko način SLEEP premalo zmanjša porabo. 2.2 Senzorji in LED Za merjenje temperature in vlage se uporablja senzor Sensirion SHT21. Ta je sestavljen iz kapacitivnega senzorja za vlago, temperaturnega senzorja, ki deluje na osnovi energijskih rež, AD-pretvornika ter digitalnega vezja za komunikacijo. Vsak senzor je predhodno umerjen, pri čemer velja, da imajo senzorji medsebojna temperaturna odstopanja približno ±0,5 stopinje Celzija ter ±2 odstotka relativne vlage. S senzorjem komunciramo prek protokola I2C. 274 ČEŠNOVAR, ŠPETIČ Slika 3: Spodnja stran tiskanega vezja z označenimi glavnimi deli Za merjenje zračnega pritiska uporabljamo senzor FreeScale MPL115A2. To je nizkocenovni senzor, ki je predhodno tovarniško umerjen in je primeren za merjenje pritiska od 50 do 115 kPa. Senzor odlikuje majhna poraba pri načinu Shutdown. Poraba je namreč pri tem načinu približno 1µA. Tudi s tem senzorjem komuniciramo prek protokola I2 C. Pri podatkih, ki jih prejmemo ob rednih meritvah, upoštevamo tovarniško nastavljene konstante, ki so bile vnesene pri umerjanju. Za merjenje hrupa se uporablja SiSonic SPM0408LE5H-TB. To je majhen in zmogljiv mikrofon z majhno porabo energije. Mikrofon je sestavljen iz zvočnega senzorja, vhodnega medpomnilnika in izhodnega ojačevalnika. Največje ojačenje izhodnega ojačevalnika je 20 dB. Upor in kondenzator sta izbrana tako, da je mejna frekvenca visokoprepustnega filtra na 30 Hz. Zaradi značilnosti procesorja, ki nima enote za računanje s plavajočo vejico, ter premalo pomnilnika, da bi hranili vzorce iz mikrofona, smo razvili algoritem za digitalni filter na podlagi celih števil brez pomnjenja, podoben algoritmu, predstavljenem v [4]. Za zaznavanje jakosti svetlobe uporabljamo senzor Osram SFH3710. To je analogni senzor (fototranzistor), ki je občutljiv na vire svetlobe z valovnimi dolžinami med 350 in 950 nm. Senzor je najbolj občutljiv za vire z valovno dolžino 570 nm. Vrednosti senzorja odčitavamo s pomočjo 12-bitnega AD-pretvornika. Tako dobimo vrednost od 0 do 4095, ki jo pozneje pretvorimo v mersko enoto lux. Za spremljanje emisij hlapnih organskih spojin (Volatile Organic Compounds oz. VOC) uporabljamo senzor IAQ-Core, ki ga izdeluje podjetje AppliedSensor. To je nizkocenovna rešitev za zaznavanje slabe kakovosti zraka. Senzor uporablja metaloksidno polprevodniško tehnologijo za zaznavanje širokega spektra plinov, kot so ogljikov monoksid ali hlapi organskih spojin. Prisotnost omenjenih plinov povzroči spremembe v upornosti, te spremembe pa se pretvorijo v vrednosti, ki so približen ekvivalent enot ppm (parts per million) za CO2 oz. ppb (parts per billion) za VOC. Številsko vrednost, ki jo sporoča ta senzor, gledamo torej bolj v smislu sprememb kot pa v smislu absolutnih vrednosti. S senzorjem komuniciramo prek protokola I2C. Zadnjega izmed senzorjev uporabljamo za zaznavanje premikov naprave CubeSensor. FreeScale MMA7660FCT, je triosni pospeškometer z majhno porabo v stanju mirovanja. Senzor omogoča zaznavanje premikanja, tresljajev, gibov in orientacije. V napravi CubeSensors nas zanimajo predvsem tresljaji. Pospeškometer ob inicializaciji nastavimo tako, da tedaj, ko tresenje preseže vnaprej določen prag, senzor sproži prekinitev na enemu izmed pinov. S senzorjem komuniciramo prek protokola I2C. 2.3 Polnilni del Poleg senzorjev imamo na tiskanem vezju tudi polnilni čip BQ24022, ki ga izdeluje Texas Instruments. Ta nadzira polnjenje baterije. Baterija se polni tako, da priklopimo USB-polnilec v vtič MicroUSB. Polnilni čip skrbi za to, da se baterija, če je preveč prazna, ne segreje. Skrbi za to, da se baterija ne napolni preveč ter da polnjenje ne traja predolgo, kar bi nam lahko povzročilo težave. Polnilni čip mikrokrmilniku sporoča stanje, v katerem se nahaja, prek dveh pinov, STAT1 in STAT2. Stanja, v katerih se lahko nahaja polnili čip, pa so: zagonsko polnjenje, navadno polnjenje, polna baterija ali brez polnjenja. 2.4 ZigBee ZigBee [5] je protokol za brezžično komunikacijo, ki je bil zasnovan tako, da omogoča majhno porabo energije, visoke in nizke hitrosti prenosa podatkov ter je varen in zanesljiv. Zaradi teh lastnosti se je v zadnjih letih zelo razširil tako v industrijskem svetu kot v t. i. »internetu stvari« (angl. Internet of Things), v katerega uvrščamo tudi napravo CubeSensors. Za komunikacijo ZigBee v predstavljeni napravi skrbi modul Telegesis ETRX357. Gre za navaden modul ZigBee, ki deluje na 2,4 GHz. Glavni sestavni deli so »sistem na čipu« (angl. SoC) Ember E357, ki skrbi za logiko ZigBee modula, kristal s frekvenco 24 MHz, ki modulu daje takt, ter radiofrekvenčni del, ki skrbi za brezžično komunikacijo. Z modulom komuniciramo prek protokola UART. Majhno porabo energije v sistemu zagotavljamo tako, da senzorje in module čim več časa držimo v načinih delovanja, ki porabijo kar najmanj energije. Module, ki takih načinov delovanja ne omogočajo, to sta predvsem senzor za svetlobo in mikrofon, pa izklapljamo napajanje prek za to predvidenega tranzistorja. 2.5. Bazna postaja Bazna postaja, ki sprejema podatke iz več naprav Cubesensors, je sestavljena iz sistema Raspberry Pi [6], na katerega je priključen razširitven modul z enakim BREZŽIČNI SISTEM ZA SPREMLJANJE ŽIVLJENJSKEGA IN DELOVNEGA OKOLJA V REALNEM ČASU 275 ZigBee, kot je bil predstavljen v 2.4. Bazna postaja skrbi za zajem podatkov iz naprav, nadgradnjo aplikacij na napravah, ter pošiljanje podatkov v podatkovno bazo, ki se nahaja v »oblaku«. 3 PROGRAMSKA OPREMA Vgradna programska oprema na mikrokrmilniku je razdeljenja v dva dela: bootloader in aplikacijo. Za izdelavo obeh delov smo uporabili programski jezik C in v manjšem delu zbirni jezik za ARM. Poleg vgradne programske opreme na mikrokrmilniku za delovanje sistema skrbi tudi programska oprema na bazni postaji, kamor naprave pošiljajo svoje podatke. Bazna postaja podatke iz naprav pošilja v bazo podatkov na »oblak«, iz katerega podatke pozneje črpajo aplikacije za pametne telefone. 3.1 Bootloader V del programa, ki mu rečemo bootloader, pridemo, ko pride do ponovnega zagona sistema oziroma reseta. V bootloaderju se najprej preveri, ali je naprava priključena na napajalnik. Če je, sistem pošlje zahtevo po novi različici aplikacije na bazno postajo, s katero je brezžično povezan. Bazna postaja začne pošiljati novo različico aplikacije, če je le-ta na voljo, ali pa vrne, da nova različica ni na voljo. Po tem se nadzor nad sistemom prepusti aplikaciji, ki je predstavljena v nadaljevanju in na sliki 4. 3.2 Aplikacija Prvi korak po tem, ko nadzor nad sistemom prevzame aplikacija, je inicializacija vseh naprav, pinov, ur itd. Prav tako se vsem senzorjem, ki delujejo z majhno porabo, le-ta vklopi. Po tem se vzpostavi komunikacija z modulom ZigBee in preveri, ali je le-ta v pravilnem načinu delovanja. Če ni, se nastavitve modula popravijo. Inicializacijskemu delu sledi postopek povezovanja na bazno postajo. Modul ZigBee najprej skuša poiskati vsa omrežja ZigBee v bližini. Če zazna omrežje, za katero vemo, da je omrežje naprav CubeSensors, se nanj poskuša povezati. Če napravi to uspe, preide v redni način delovanja, v katerem se bo nahajala, dokler bo na omrežju ali dokler se ne izprazni baterija. Če naprava ne najde primernega omrežja ali se ji na najdeno omrežje ne uspe povezati, to ponovi nekajkrat. Če še vedno ne uspe, za eno minuto preide v spalni način. V tem načinu so vsi senzorji in moduli v načinih z majhno porabo energije ali izklopljeni, procesor pa v načinu STANDBY. Pred iztekom minute lahko napravo zbudimo tako, da jo potresemo. Pospeškometer namreč v spalnem načinu še vedno proži prekinitve. Po minuti spalnega načina se zopet nekajkrat poskuša povezati. Če se napravi zopet ne uspe povezati, poveča dolžino Slika 4: Diagram poteka aplikacije, ki teče na napravi CubeSensors spalnega načina na dve minuti in ponovi postopek. Dolžino spalnega načina potem naprej povečujemo na štiri, osem, šestnajst in trideset minut. Če se napravi še vedno ne uspe povezati, se sproži globok spalni način, v katerem se izklopi tudi pospeškometer. Iz globokega spalnega načina lahko napravo zbudimo le tako, da nanjo priklopimo napajalnik. Če se napravi v kateremkoli trenutku uspe povezati, preidemo v reden način delovanja. V tem načinu najprej vse senzorje vklopimo ali zbudimo iz načinov z majhno porabo energije. Nato preberemo vse podatke iz enostavnih senzorjev in izmerimo hrup s prej omenjenim algoritmom. Vse podatke zberemo v vnaprej definiran paket, ki ga pošljemo na bazno postajo. Če bazna postaja paket prejme, nam odgovori s povratnim sporočilom, v katerem se nahaja tudi enostavna številska vrednost, ki nam sporoča oceno, kako kakovostno je okolje, v katerem se nahaja naprava. Ko naprava prejme povratno sporočilo, gre za eno minuto v redni spalni način, iz katerega jo lahko 276 ČEŠNOVAR, ŠPETIČ predhodno zbudimo s tresenjem ali priklopom polnjenja. Če bazna postaja ne prejme paketa, to sporoča, da ni več v omrežju ZigBee. Temu sledi poizkušanje ponovnega povezovanja, kot je že bilo opisano v tem poglavju. 4 SKLEP V članku smo razložili, zakaj je smiselno imeti sistem za kontinuirano spremljanje okolja, v katerem bivamo ali delamo. Predstavili smo napravo CubeSensors, njene sestavne dele ter zgradbo programske opreme, ki omogoča spremljanje in zbiranje podatkov v okolju v realnem času z izjemno majhno porabo energije, ki je ključnega pomena v baterijsko napajanem sistemu. Tako zbrani podatki so osnova za bodočo povezljivost z aktuatorji in pametnimi hišami, saj sistem omogoča koreliranje različnih dejavnikov med seboj in pametno odločanje: npr. hitra sprememba temperature, vlage in kakovosti zraka pomeni, da se je zrak nenavadno hitro zamenjal v prostoru, kar lahko pomeni razbito okno. Takih primerov je poljubno veliko, saj v primerjavi s termostatom, ko se meri en dejavnik v enem prostoru, poberemo šest dejavnikov v vseh prostorih in tako dobimo razširjen in popoln pregled nad kakovostjo bivanja notranjih prostorov. Kot tak je sistem CubeSensors edini na trgu, ki omogoča temeljit pregled kakovosti bivanja v prostoru.