Slijede razlike između dviju inačica stranice
2017:studenti:aoreskovic:projektni_zadatak [2017/06/28 19:20] aoreskovic |
2017:studenti:aoreskovic:projektni_zadatak [2023/06/19 18:11] |
||
---|---|---|---|
Redak 1: | Redak 1: | ||
- | ====== Svrha projekta ====== | ||
- | |||
- | Svrha projekta je povećati kvalitetu boravka u prostoriji, svim ljudima koji se u njoj nalaze. | ||
- | |||
- | ====== Korisnici projekta ====== | ||
- | |||
- | Svi stanari kuće, stana, ili korisnici nekog poslovnog prostora. | ||
- | |||
- | ====== Ciljevi projekta ====== | ||
- | |||
- | 1) Ostvariti sustav ambijentalnih senzora u svrhu poboljšanja ugode u prostoriji. | ||
- | |||
- | * Praćenje vrijednosti temperature, vlažnosti zraka, buke, tlaka i osvjetljenja u prostoriji | ||
- | * Unos željenih vrijednosti preko prilagođenog korisničkog sučelja s povratnim informacijama | ||
- | * Regulacija stanja u prostoriji na temelju unesenih preferenci korisnika i vrijednosti senzora | ||
- | * Implementacija aktuatora za temperaturu, buku i svjetlost, simbolički predstavljene LED diodama | ||
- | * Mogućnost praćenja trenutnih iznosa mjerenih vrijednosti preko web preglednika | ||
- | |||
- | 2) Ostvariti izračun PPD i PMV vrijednosti na temelju očitanih vrijednosti sa senzora te prikazati rezultat na korisničkom sučelju | ||
- | |||
- | ====== Resursi ====== | ||
- | |||
- | Sustav je ostvaren na Arduino platformi (Arduino Mega 2560). Za mjerenje fizikalnih veličina korištena su tri senzorska modula: | ||
- | |||
- | * senzor za temperaturu, vlagu i tlak BME280 - korištena I2C komunikacija prema Arduinu | ||
- | * senzor za buku MAX4466 - uređaj se s Arduinom jednostavno spaja pomoću tri priključka: OUT, GND i VCC, OUT priključak se spaja na jedan od analognih priključaka Arduina | ||
- | * senzor za intenzitet svjetlosti - fotootpornik, spaja se na analogni priključak Arduina | ||
- | |||
- | Korisničko sučelje izvedeno je pomoću LCD prikaznika i tipkovnice za Arduino. Dobivanje informacije o trenutnom vremenu ostvareno je preko RTC modula: | ||
- | |||
- | * LCD-2004A - spoj LCD-a sa „Arduino Mega 2560“ ostvaren je koristeći međusklop „YwRobot LCM1602 V1“ namjenjenog jednostavnijem ostvarivanju I2C serijske veze | ||
- | * Matrična tipkovnica - spaja se na proizvoljne digitalne izvode Arduina | ||
- | * DS3231 RTC, međusklop ZS-042 - daje informaciju o stvarnom vremenu, spaja na napajanje od 3.3 V te koristi I2C sabirnicu | ||
- | |||
- | Podsustav za spremanje podataka sadrži: | ||
- | |||
- | * proizvoljnu microSD karticu | ||
- | * Arduino SD modul za čitanje i pisanje - koristi SPI komunikaciju gdje se vanjski međusklop ponaša kao //slave//, dok Arduino predstavlja //master// | ||
- | |||
- | Spajanje i slanje podataka o trenutnom stanju senzora na web server realizirano je pomoću: | ||
- | |||
- | * ESP8266 mikrokontroler, međusklop Wemos D1 Mini Pro - slanje podataka senzora s Arduina na ESP8266 ostavareno je preko UART-a, a sam modul ostvaruje internet vezu prema web serveru | ||
- | |||
- | 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. | ||
- | |||
- | ====== Ograničenja ====== | ||
- | |||
- | 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 [[http://ieeexplore.ieee.org/document/6427051/|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. | ||
- | |||
- | ====== Komunikacija s ostalim podsustavima ====== | ||
- | |||
- | Središnji dio sustava će biti Arduino MEGA2560 na koji će se spajati periferni senzorski moduli. Komunikacija će se odvijati koristeći postojeći dogovor za svaki od senzora - većinom serijska veza pomoću SPI ili I2C. | ||
- | |||
- | Moj dio projekta u ovome dijelu je bio omogućiti komunikaciju s Wemos D1 sklopom baziranim na ESP8266 bežičnim kontrolera. Komunikacija između arduina i WeMosa je izvedena pomoću UART-a - asinkrone serijske komunikacije. Serial1 s arduina je spojen na Wemos Serial priključak i to Tx→Rx i Rx→Tx. | ||
- | |||
- | Takvu poruku je jednostavno kreirati i jednostavno parsirati. | ||
- | |||
- | Da bi se što veći teret s Arduina (koji je u ovom slučaju imao značajno manju procesorsku snagu → 8 bitni na 16 MHz, naspram WeMosa koji ima 32 bitni procesor na 80 ili 160 MHz), dogovoren je format “^&DATUM&TEMP&VLAGA&TLAK&SVJETLINA&BUKA&PORUKA&$”. Takav string se može jednostavno formatirati na arduinu, i time je sav ostatak procesiranja (spajanje na internet, komunikacija sa serverom, HTTP zahtjevi) migriran s arduina na WeMos. Takav string se također veoma jednostavno parsira. Serijski port sluša od pojavljivanja znaka '^' do pojavljivanja znaka '$'. Nakon toga se stringovi dijele po '&', na način da se kao prvi string (datum) uzima sav tekst između prvog pojavljivanja '&' do drugog pojavljivanja '&', idući string, temperature je teks od drugog do trećeg pojavljivanja znaka '&' itd. | ||
- | |||
- | ====== Komunikacija s vanjskim sustavima ====== | ||
- | |||
- | {{ http://hobbycomponents.com/2267-thickbox_default/wemos-d1-mini-pro-esp8266-development-board.jpg?nolink&300x300}} | ||
- | |||
- | Za komunikaciju s internetom je korišten modul “WeeMos D1 pro” koji koristi ESP8266. Uređaj je programiran u Arduino IDE. WeeMos prima formatirani string preko UART komunikacije. Taj string onda parsira i kreira JSON paket. Taj paket se onda post upitom šalje na zavodski server. Zavodski server stoji iza domene echo.zesoi.fer.hr, kojem smo dali alias spvp.anteo.me. Na njemu se vrti aplikacija pisana u okruženju “Ruby on rails”. Kada dobije zahtjev, obradi ga, ubaci vrijednosti u grafove, ispiše poruke i vrati HTTP 201 odgovor. | ||
- | |||
- | <code> | ||
- | POST /logs HTTP/1.1 | ||
- | Host: spvp.anteo.me | ||
- | Content-Type: application/json | ||
- | X-Auth-Token: --TAJNI-KLJUČ-- | ||
- | { | ||
- | "created_at": "2017-06-05 03:00:55", | ||
- | "temperature": "32", | ||
- | "moisture": "88.62415", | ||
- | "pressure": "991.99443", | ||
- | "brightness": "5.22814", | ||
- | "noise": "5.94466", | ||
- | "message": "Poruka" | ||
- | } | ||
- | </code> | ||
- | |||
- | ====== Moja uloga na projektu ====== | ||
- | |||
- | Moja uloga na projektu je razjašnjena kroz poglavlja "Komunikacija s ostalim podsustavima" i "Komunikacija s vanjskim sustavima" | ||
- | |||