Korisnički alati

Site alati


2017:studenti:aoreskovic:projektni_zadatak

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 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

hobbycomponents.com_2267-thickbox_default_wemos-d1-mini-pro-esp8266-development-board.jpg

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.

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"
}​​

Moja uloga na projektu

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.

2017/studenti/aoreskovic/projektni_zadatak.txt · Zadnja izmjena: 2017/06/28 20:39 od aoreskovic