Slijede razlike između dviju inačica stranice
Starije izmjene na obje strane Starija izmjena Novija izmjena | Starija izmjena | ||
2017:studenti:aoreskovic:projektni_zadatak [2017/06/26 16:46] aoreskovic obrisano |
2017:studenti:aoreskovic:projektni_zadatak [2023/06/19 16:11] (trenutno) |
||
---|---|---|---|
Redak 11: | Redak 11: | ||
1) Ostvariti sustav ambijentalnih senzora u svrhu poboljšanja ugode u prostoriji. | 1) Ostvariti sustav ambijentalnih senzora u svrhu poboljšanja ugode u prostoriji. | ||
- | * pretvaranje fizikalnih veličina u električne | + | * Praćenje vrijednosti temperature, vlažnosti zraka, buke, tlaka i osvjetljenja u prostoriji |
- | * očitavanje električnih veličina sa Arduino modulima | + | * Unos željenih vrijednosti preko prilagođenog korisničkog sučelja s povratnim informacijama |
- | * komunikacija Arduina sa senzorskim modulima | + | * Regulacija stanja u prostoriji na temelju unesenih preferenci korisnika i vrijednosti senzora |
- | * obrada primljenih podataka | + | * Implementacija aktuatora za temperaturu, buku i svjetlost, simbolički predstavljene LED diodama |
- | * izvršavanje potrebnih naredbi | + | * Mogućnost praćenja trenutnih iznosa mjerenih vrijednosti preko web preglednika |
- | 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…) | + | 2) Ostvariti izračun PPD i PMV vrijednosti na temelju očitanih vrijednosti sa senzora te prikazati rezultat na korisničkom sučelju |
====== Resursi ====== | ====== Resursi ====== | ||
- | Ostvarit će se na Arduino platformi, povezanom s nekoliko perifernih senzorskih modula. \\ Koristit će se besplatne biblioteke i programska podrška za Arduino periferne module. | + | 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 ====== | ====== Ograničenja ====== | ||
- | Nemogućnost ostvarivanja svih potrebnih mjerenja za izračun PPD i PMV uslijed nedostatka vremena i resursa za potreban računalni vid (detekcija odjeće koja se nalazi na osobama). \\ Nedostatak aktuatora koji bi mijenjali uvjete u prostoriji. Njihov utjecaj će biti zamijenjen LED-icama koje ih simboliziraju. | + | 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 ====== | ====== Komunikacija s ostalim podsustavima ====== | ||
Redak 31: | Redak 54: | ||
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. | 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 | + | 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. | ||
- | 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) | ||
====== Komunikacija s vanjskim sustavima ====== | ====== Komunikacija s vanjskim sustavima ====== | ||
- | Za komunikaciju s internetom je korišten modul “WeeMos 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. | + | {{ 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, kako je upisano u prošlom poglavlju. Taj string onda parsira i kreira JSON paket, koji izgleda kao što je prikazano ispod POST zahtjeva. | ||
+ | |||
+ | Taj paket se onda post upitom šalje na zavodski server koristeći POST zahtjev. Zahtjev osim standarnih rubrika sadrži i "X-Auth-Token!", 1024 bitni ključ koji osigurava da samo noi koji ga znaju mogu slati podatke na 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 ====== | ||
- | ====== Plan projekta ====== | + | Moja uloga na projektu detaljno je razjašnjena kroz poglavlja "Komunikacija s ostalim podsustavima" i "Komunikacija s vanjskim sustavima". Kao što je opisano svodilo se na komunikaciju Arduino → WeeMos → Web Server. |