Svrha projekta je povećati kvalitetu boravka u prostoriji, svim ljudima koji se u njoj nalaze.
Svi stanari kuće, stana, ili korisnici nekog poslovnog prostora. Dodatno, sustav je primjenjiv na industrijske pogone i tvornice gdje je moguće pratiti trenutno stanje u prostorijama.
1) Ostvariti sustav ambijentalnih senzora u svrhu poboljšanja ugode u prostoriji.
2) Kreirati algoritam izračuna PPD i PMV vrijednosti na temelju očitanih vrijednosti sa senzora
3) U skladu sa željama korisnika koji se trenutno nalaze u prostoriji aktivirati potrebne aktuatore (klima, grijanje, svjetlo…)
Sustav je ostvaren na Arduino platformi (Arduino Mega 2560). Za mjerenje fizikalnih veličina korištena su tri senzorska modula:
Korisničko sučelje izvedeno je pomoću LCD prikaznika i tipkovnice za Arduino. Dobivanje informacije o trenutnom vremenu ostvareno je preko RTC modula:
Podsustav za spremanje podataka sadrži:
Spajanje i slanje podataka o trenutnom stanju senzora na web server realizirano je pomoću:
Za sve navedene module korištene su besplatne biblioteke i programska podrška za Arduino. Više o programskoj implementaciji može se naći u pdf verziji dokumentacije projekta.
Nemogućnost ostvarivanja svih potrebnih mjerenja za izračun PPD i PMV. Na primjer, za detekciju odjeće koja se nalazi na osobama potreban je računalni vid, ali zbog nedostatka vremena i resursa takvo mjerenje se neće realizirati. Sve fizičke veličine osim sobne temperature, vlažnosti i tlaka zraka postavljene su u očekivane vrijednosti koje su dobivene iz referentne literature.
Nedostatak aktuatora koji bi mijenjali uvjete u prostoriji. Njihov utjecaj će biti zamijenjen LED-icama koje ih simboliziraju. Regulacije temperature realizirana je jednostavnom naredbom uključivanja/isključivanja “klime”. Razina željene svijetlosti korisnika simbolizirana je svjetlinom druge LED diode. Detektor buke pali treću LED diodu ako je razina buke iznad prosječne vrijednosti od strane korisnika.
Središnji dio sustava je Arduino MEGA2560 na koji se spajaju periferni senzorski moduli s kojima se komunicira preko SPI-ja i I2C sabirnice. Temperaturni senzor i senzor buke svoje podatke šalju putem analognog ulaza.
Zapisivanje na microSD karticu se vrši pomoću SPI sabirnice, dok se tipkovnica u sklopu korisničkog sučelja povezuje sa središnjim sustavom s 8 linija. Način komunikacije putem tih 8 linija je definiran u dokumentaciji KeyPada, ukratko pritiskom gumba se kratko spajaju dvije linije od 8 linija raspoređenih u 4×4 matricu. Tako se jednoznačno određuje koji je gumb pritisnut.
Za komunikaciju s internetom je korišten modul “WeMos D1 pro” koji koristi ESP8266. Preko tog modula šalju se podaci sa senzora i trenutno stanje broja korisnika na zavodski server, putem predefiniranog formata. Zavodski server stoji iza domene echo.zesoi.fer.hr, kojem smo dali alias spvp.anteo.me.
Uloga na projektu
U sklopu projekta ostvario sam organizaciju i implementaciju glavnog i prekidnog programa. U glavnom programu organizirao sam korisnike, kao i njihove strukture i preferirane parametre koji ih karakteriziraju. Struktura je ostvarena tako da svaki pojedini korisnik bude definiran s preferiranim vrijednostima svih mjerenih vrijednosti, korisničkim ID-em, te zastavicom prisutnosti u prostoriji.
Osim toga, sintetizirao sam čitanje sa svih senzora koje su kolege inicijalizirali, njihov matrični zapis te računanje srednje vrijednosti za svakog od njih u predodređenim ciklusima. Senzori su u matrici organizirani prema prethodno definiranoj enumeraciji. Svaki od senzora posjeduje svoj jedinstveni ID. Vrijednosti senzora osvježavaju se svakim prolazom kroz glavnu petlju programa, dok se njihov prosjek računa svakih nekoliko ciklusa (inicijalno u programu predodređeno 10, točnije - podaci sa senzora dostupni su i osvježeni svakih 10 sekundi).
U glavnom se programu još nalazi izračun PMV i PPD vrijednosti, na temelju prethodno izračunatih prosjeka vrijednosti svih senzora, dok je ažuriranje aktuatora, te slanje svih podataka na web server u stvarnom vremenu ostvareno preko Wemos D1 Mini Pro modula. Komunikaciju s modulom ostvarili su kolege. U prekidnom programu napravio sam parsiranje primljenih podataka s tipkovnice, tako da svaki uneseni znak ispisujem na LCD-u, te ga učitavam u glavnom programu, te nakon pritiska predodređene tipke, spremam unesenu vrijednost u potrebu varijablu.
Kreiranje novih korisnika, ažuriranje postojećih i brisanje korisnika ostvareno je pritiskom tipke na dijelu korisničkog sučelja koje se nalazi na tipkovnici.
Uz nabrojene konkretne zadataka nužne za funkcionalnost sustava, implementirao sam dodatne pomoćne funkcije koji služe za bolju čitljivost i organizaciju koda, kao što su: brisanje podataka iz svakog buffera, osvježavanje podataka na LCD-u, pozicioniranje na LCD-u, iteriranje kroz bazu korisnika itd.