niksaniksic_upravljanje sustavima u kuci preko interneta

16
Nikša Nikšić 0036440090 Tekst je namijenjen svima koje zanima ova i slične teme Potrebna predznanja (osnove): C, C#, PHP, HTML SEMINARSKI RAD - SPVP 6. lipanj 2011

Upload: dinkic

Post on 18-Aug-2015

223 views

Category:

Documents


2 download

DESCRIPTION

zanimljivo

TRANSCRIPT

Nika Niki 0036440090 Tekst je namijenjen svima kojezanima ova i sline teme Potrebna predznanja (osnove): C, C#, PHP, HTML SEMINARSKI RAD - SPVP 6. lipanj 2011 Upravljanje sustavima u kui preko Interneta Saetak Uovomseminarskomraduopisanjenainpovezivanja mikrokontrolerskeploice(Arduino)sraunalomtakodameusobno komunicirajuprekowebstranicekoristeiprogramskejezikePHPiC#. Napravljena je jednostavna web stranica koja predstavlja nadzornu plou pametne kue preko koje jemogue ukljuivanje i iskljuivanje nekoliko ureajaspojenihnaArduino,prikaztrenutnetemperatureizadavanje eljenetemperature.Opisanjenainmjerenjatemperaturepomou termistora i analogno-digitalnog pretvornika ugraenog u mikrokontroler. Sustav omoguuje udaljeno upravljanje (preko Interneta) bilo kojim ureajemukui,stanu,zgradi,uzuvjetdatakua,stan,zgradaima neprekinuti pristup Internetu. Sadraj 1.UVOD ............................................................................................................ 3 2.PROGRAMSKA PODRKA .................................................................................. 4 2.1.XAMPP .................................................................................................... 4 3.PHP APLIKACIJA ............................................................................................. 5 3.1.Komunikacija s mikrokontrolerom (Arduinom) ............................................. 6 3.1.1.Protokol komunikacije ........................................................................ 6 4.C# APLIKACIJA ............................................................................................... 8 5.SKLOPOVSKA REALIZACIJA SUSTAVA...............................................................10 5.1.Mjerenje temperature pomou termistora...................................................11 6.ARDUINO PROGRAMSKA PODRKA ..................................................................13 7.ZAKLJUAK ...................................................................................................15 8.LITERATURA..................................................................................................15 9.POJMOVNIK ..................................................................................................16 OvajseminarskiradjeizraenuokvirupredmetaSustavizapracenjeivoenjeprocesana Zavoduzaelektronikesustaveiobradbuinformacija,Fakultetaelektrotehnikeiraunarstva, Sveuilita u Zagrebu. Sadraj ovog rada moe se slobodno koristiti, umnoavati i distribuirati djelomino ili u cijelosti, uz uvjet da je uvijek naveden izvor dokumenta i autor, te da se time ne ostvaruje materijalna korist, a rezultirajue djelo daje na koritenje pod istim ili slinim ovakvim uvjetima. Upravljanje sustavima u kui preko Interneta 1. Uvod SustavzaupravljanjesustavimaukuiprekoInternetaomoguuje udaljeno upravljanje ureajima i sustavima u kui, s bilo kojeg mjesta na Zemlji uz uvjet da ima pristup Internetu. Smisao je da se ukuani, nakon odlaskabilonaposaoiliodmor,nemorajubrinutijesuliostavilineki ureaj ukljuen, zaboravili zakljuati kuu i sl. jer to mogu lako provjeriti prekoInternetaipopotrebiizvritiodgovarajuuakciju.Takoermogu prije povratka kui ukljuiti grijanje ili hlaenje kue. CijelisustavprikazujeSlika1.1.RaunaloClientpredstavljabilo koje raunalo spojeno na Internet. PHP Server je raunalo koje se nalazi u kui u kojoj elimo kontrolirati pojedine ureaje. Na to raunalo spojena je mikrokontrolerskaploica(Arduino)nakojusemoguspojitisviureaji koje elimo kontrolirati. Slika 1.1: Prikaz cijelog sustava za upravljanje preko Interneta Upravljanje sustavima u kui preko Interneta 2. Programska podrka Za izradu ovog projekta potrebni su sljedei programi: Bilo koji tekst-procesor (preporua seNotepad++) Microsoft Visual Studio (ili Microsoft Visual C#) Arduino XAMPP 2.1.XAMPP XAMPP svako raunalo pretvara u server. XAMPP je paket programa od kojih su za ovaj projekt potrebni Apache server i PHP. Nakon instalacije paketa XAMPP, web stranice koje se izrade u tekst-procesoru potrebno je spremiti u mapu \xampp\htdocs. Za otvaranje tih stranicauwebpregledniku,potrebnojekaoadresuupisati localhost/mapa_unutar_htdocs/naziv_dokumenta.phpili localhost/mapa_unutar_htdocs/naziv_dokumenta.html. Slika 2.1: XAMPP aplikacija

Upravljanje sustavima u kui preko Interneta 3. PHP aplikacija PHPaplikacija(nadzornaPloca2.php)napravljenajekaonadzorna ploakojojsepristupaprekoInternetpreglednika.Omoguujesljedee funkcionalnosti: ukljuivanjeiiskljuivanjeetiriureaja(mogueproirenje na vie ureaja) mjerenjetemperature(prikaztemperatureseosvjeava pritiskom na bilo koju tipku nadzorne ploe) provjerustatusa(provjerustanjaukljuenostipojedinih ureaja i trenutne temperature) regulacijutemperatureslanjemeljenetemperature, mikrokontrolerodravatutemperaturu(ukljuivanjemi iskljuivanjem grijanja) kontrolu pristupa povezivanjem s drugim projektom Slika 3.1: PHP aplikacija otvorena u Internet pregledniku NadzornuploupametnekueprikazujeSlika3.1.Bojeprikazuju stanjaukljuenosti;crvenoiskljueno,zelenoukljueno. Upravljanje sustavima u kui preko Interneta 3.1.Komunikacija s mikrokontrolerom (Arduinom) KomunikacijaseizvodiprekoUSBsabirnicekojasenaraunalu vidikaoobianserijskiCOMport.TojemoguezahvaljujuiFTDIipu (FT232RL)kojisenalazinaArduinoploici.Njegovajefunkcijada omoguikomunikacijumikrokontrolera(kojinemaugraenoUSBsuelje nego samo UART) i raunala preko USB sabirnice. Funkcija za komunikaciju napravljena je u programskom jeziku C#. Prima tri argumenta: COMportportnakojijespojenamikrokontrolerskaploica (Arduino) BaudRatebrzinaprijenosapodatakaizraenaubitovimapo sekundi [bps] Znak koji se alje Nain pozivanja funkcije: SerialControl(COMport BaudRate znak); Primjer u PHP-u: $COMport='COM13'; $BaudRate=9600; exec("SerialControl $COMport $BaudRate 1"); 3.1.1.Protokol komunikacije Protokol se temelji na slanju odreenih znakova koji odreuju to e mikrokontroler raditi (Tabela 3-1). Upravljanje sustavima u kui preko Interneta Tabela 3-1: Protokol komunikacije ZNAKFUNKCIJA KOJU MIKROKONTROLER OBAVLJA 0Iskljui svjetlo 1Ukljui svjetlo 2Iskljui grijanje 3Ukljui grijanje 4Iskljui ureaj1 5Ukljui ureaj1 6Iskljui ureaj2 7Ukljui ureaj2 aOdrava temperaturu od 17 C bOdrava temperaturu od 18 C cOdrava temperaturu od 19 C dOdrava temperaturu od 20 C eOdrava temperaturu od 21 C fOdrava temperaturu od 22 C gOdrava temperaturu od 23 C hOdrava temperaturu od 24 C iOdrava temperaturu od 25 C jOdrava temperaturu od 26 C kOdrava temperaturu od 27 C itanjestatusaobavljasenatajnaindamikrokontrolerpoalje vrijednosttemperatureiznakovestanja,aC#funkcijaitateznakovei spremaihutekstualnudatoteku(com13.txt).Formatznakovautoj datotecijesljedei:prveetiriznamenkeprikazujuiznostemperature,a druge etiri status pojedinog ureaja svjetlo, grijanje, ureaj1, ureaj2. Npr. 26.980100 temperatura je 26,98 C, grijanje je ukljueno, a ostali ureaji su iskljueni. PHP aplikacija ita tu tekstualnu datoteku i na temelju nje prikazuje informacije na web stranici. Upravljanje sustavima u kui preko Interneta 4. C# aplikacija ZadatakaplikacijenapravljeneuprogramskomjezikuC#je komunikacijaprekoCOMportaipisanjeutekstualnudatoteku (com13.txt).Cijelakomunikacijaizmeuraunalaimikrokontrolera (Arduina) ostvaruje se na sljedei nain: 1.Pritiskomnanekutipkunawebstranici,odreeniznakse prekoargumentaprenosiC#aplikaciji,C#aplikacijaaljetaj znak preko USB sabirnice mikrokontroleru i eka odgovor. 2.Mikrokontrolernatemeljuprimljenogznakaizvrava odgovarajuizadatakinakontogaaljeinformacijuo temperaturi i stanju pojedinih ureaja. 3.C#aplikacijaproitasvetojemikrokontrolerposlaoi zapisuje u tekstualnu datoteku com13.txt. 4.PHP aplikacija ita podatke iz tekstualne datoteke i na temelju proitanih podataka postavlja stanja na web stranici. RazlozizbogkojihjekomunikacijaizvedenaprekoC#aplikacije,a nedirektnoizPHP-asumnogiproblemikojinedoputajupristupCOM portu iz PHP-a. Napoetkuaplikacijedefinirajusepostavkeserijskogportai primaju argumenti: string data = args[2]; SerialPort COMport = new SerialPort(); COMport.PortName = args[0]; COMport.BaudRate = Convert.ToInt32(args[1]); COMport.Parity = Parity.None; COMport.DataBits = 8; COMport.StopBits = StopBits.One; Vaan dio je definiranje putanje gdje se nalazi tekstualna datoteka: file = new StreamWriter("C:\\xampp\\htdocs\\Pametna_kuca\\com13.txt"); Nedostataktakvognainajepotrebazaponovnimprevoenjem programausluajupromjenelokacijetekstualnedatotekenadisku.Ako je potrebno, mogue je promijeniti program tako da i putanju do datoteke primakaoargument. Upravljanje sustavima u kui preko Interneta Za slanje podataka na USB sabirnicu, potreban je sljedei dio koda: StreamWriter streamWriter1; streamWriter1 = new StreamWriter(COMport.BaseStream); streamWriter1.WriteLine(data); itanje se obavlja na sljedei nain: StreamReader streamReader1; streamReader1 = new StreamReader(COMport.BaseStream); count = COMport.BytesToRead; streamReader1.Read(buffer, 0, count); Na kraju, pisanje u tekstualnu datoteku: StreamWriter file; file.WriteLine(buffer); file.Close(); UovojC#aplikacijipostojimalibugkojisejavljaprilikomprvog otvaranjaporta,alinijenunonjegovorjeavanjezaispravnu funkcionalnostprilikomprvogpokretanjanadzorneploe,C#aplikacija se zavrti u beskonanu petlju. To se lagano rjeava zavravanjem procesa uTaskManageru(SerialControl.exe).Nakontogasvenormalno funkcionira. Upravljanje sustavima u kui preko Interneta 5. Sklopovska realizacija sustava SustavnastraniserverasastojiseodArduinomikrokontrolerske ploicekojajespojenanaraunalo(server)prekoUSBsabirnice.Na Arduinoploicuspojenjetemperaturnopromjenjiviotpornik(termistor) zamjerenjetemperatureteetiriLEdiodekojepredstavljajupojedini ureaj(Slika5.1).Zaobavljanjenekekorisnefunkcije(ukljuivanje stvarnog ureaja vee snage), umjesto LE dioda moe se spojiti tranzistor koji ukljuuje relej na koji je spojen eljeni ureaj. Slika 5.1: Sklopovska realizacija sustava upravljanog preko Interneta Upravljanje sustavima u kui preko Interneta 5.1.Mjerenje temperature pomou termistora Najjeftinijinainmjerenjatemperatureusustavimas mikrokontroleromkojiimaugraenanalogno-digitalnipretvornikje pomouNTCtermistora.NTCtermistorisuotpornicikojimaotporpadas porastomtemperature(NTCnegativnitemperaturnikoeficijent).Imaju velikuosjetljivostimogusenapravitizavrlodobrutonostmjerenja temperature (0,2 C). Karakteristikatermistorajevrlonelinearna,alimoesevrlodobro aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )BTR T Ae = (5.1) B ~ 2000-5000 [K], konstanta ovisna o materijalu T [K] temperatura Mjerenatemperaturaodreujeseizotporanatemperaturi25 Ci izmjerenog otpora (5.2). 251 125BT TTR R e = (5.2) RT otpor na temperaturi T[K], [] T25 temperatura od 25 C izraena u [K] Iz izraza (5.2) moemo odrediti iznos temperature: 25 2511 1lnTTRB R T=+(5.3) Termistor je na izvor referentnog napona spojen prema shemi (Slika 5.2). Upravljanje sustavima u kui preko Interneta Slika 5.2: Shema spajanja termistora u krug napajanja Iz sheme slijedi: TT refS TRU UR R= +(5.4) Iz izraza (5.4), RT odgovara izrazu: T STref TURRU U=(5.5) Sadatemperaturupomoumikrokontroleramoemomjeritina sljedei nain: 1) Mikrokontroler mjeri napon UT i rauna RT prema izrazu (5.5) 2) zatim rauna iznos temperature prema izrazu (5.3). Upravljanje sustavima u kui preko Interneta 6. Arduino programska podrka Na poetku programskog koda definirano je nekoliko konstanti koje se odnose na sklopovlje pomou kojega se mjeri temperatura: #define B 3988.0 #define R25 10000.0 #define Rs 10000.0 #define T25 298.15 #define Uref 5.0 KonstantaBjekonstantaovisnaomaterijalutemperaturno promjenjivog otpornika (termistora). Vrijednost ove konstante se razlikuje za razliite tipove termistora. Izraava se u kelvinima [K]. KonstantaR25predstavljaiznosotporatermistoranatemperaturi 25 C, izraeno u omima []. Konstanta Rs predstavlja iznos serijskog predotpora spojenog u krug termistora, []. Konstanta T25 je temperatura od 25 C izraena u kelvinima. Konstanta Uref predstavlja iznos referentnog napona koji je spojen na serijsku kombinaciju otpornika Rs i termistora. Sljedei dio koda definira na koje pinove su spojeni pojedini ureaji: int svjetlo = 8; //svjetlo na pin 8 int grijanje = 7;//grijanje na pin 7 int device1 = 6; //device1 na pin 6 int device2 = 5; //device2 na pin 5 Varijables0dos3definirajustanjaukljuenostipojedinihureaja. Koriste se za slanje statusa pojedinih ureaja aplikaciji na raunalu. int s0=0, s1=0, s2=0, s3=0;//stanja ukjuenosti aljusenakrajuprogramskogkodanakonslanjavrijednosti temperature: Upravljanje sustavima u kui preko Interneta Serial.print(T); Serial.print(s0); Serial.print(s1); Serial.print(s2); Serial.print(s3); Ukljuivanjeiiskljuivanjeureajanatemeljuprimljenogznaka obavljasepomouswitchcasefunkcija.Trenutnatemperaturarauna se na temelju izraza (5.3): napon=analogRead(analogPin); Ut=(napon/1023)*5; Rt=Ut*Rs/(Uref-Ut);T=1/(log(Rt/R25)/B + 1/T25)-273.15;//Racuna temperaturu u C Regulacijatemperatureobavljasezavrijemedoknemapristiglih znakova sa serijskog porta: while (Serial.available() == 0)//ako podaci nisu dostupni radi nesto korisno - regulaciju temperature { if(s1==1)//ako je grijanje ukljueno { napon=analogRead(analogPin); Ut=(napon/1023)*5; Rt=Ut*Rs/(Uref-Ut); T=1/(log(Rt/R25)/B + 1/T25)-273.15;//Racuna temperaturu u C if(T < (float)zeljena_temp-0.1) digitalWrite(grijanje, HIGH); else if (T > (float)zeljena_temp+0.1) digitalWrite(grijanje, LOW); } } Kako ne bi dolo do preestog ukljuivanja i iskljuivanja grijanja u kratkom vremenu, napravljena je histereza od 0,1 C. Upravljanje sustavima u kui preko Interneta 7. Zakljuak Razvijenisustavomoguujeupravljanjedoetiriureajapreko Internetaputemwebstranicekoristeijednostavnunadzornuplou. Postupak povezivanja sustava s Internetom nije opisan te bi to trebao biti sljedei korak koji bi doveo do potpune funkcionalnosti sustava. Ovajsustavmogukoristitisvikojieleimatikontrolunadsvojom kuomgdjegodsenalazili.Ubudunostibisesustavmogaopovezatis drugimsustavima(npr.praenjestanjaukuana,protupoarnisustav, detekcijaprisutnosti)tetakoomoguitiveusigurnostipotpunu kontrolu. 8. Literatura [1]Arduino Duemilanove. URL: http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove (2011-04) [2]HTML Tutorial. URL: http://www.tizag.com/htmlT/ (2011-04) [3]PHP Tutorial. URL: http://www.tizag.com/phpT/ (2011-04) [4]PHP Manual isset. URL: http://hr.php.net/manual/en/function.isset.php (2011-05) [5]Writing to a Text File (Visual C#). URL: http://msdn.microsoft.com/en-us/library/aa287548%28v=VS.71%29.aspx (2011-05) [6]C# Main Args Examples. URL: http://www.dotnetperls.com/main (2011-05) Upravljanje sustavima u kui preko Interneta 9. Pojmovnik PojamKratko objanjenjeVie informacija potraite na USBUniverzalna serijska sabirnicahttp://en.wikipedia.org/wiki/USB COM portSerijsko sueljehttp://en.wikipedia.org/wiki/COM_port UARTDio hardvera koji omoguuje komunikaciju preko serijskog suelja, podrava RS-232 http://en.wikipedia.org/wiki/Uart FTDIkotska kompanija koja proizvodi integrirane sklopove posebno specijalizirana za USB tehnologiju http://en.wikipedia.org/wiki/FTDI TermistorOtpornik kojem se iznos otpora mijenja s temperaturom (THERMally sensitive resISTOR) http://en.wikipedia.org/wiki/Thermistor