You are on page 1of 16

Nika Niki

0036440090

SEMINARSKI RAD - SPVP

Tekst je namijenjen svima koje


zanima ova i sline teme
Potrebna predznanja (osnove):

6. lipanj 2011

C, C#, PHP, HTML

Upravljanje sustavima u kui preko Interneta

Saetak
U ovom seminarskom radu opisan je nain povezivanja
mikrokontrolerske ploice (Arduino) s raunalom tako da meusobno
komuniciraju preko web stranice koristei programske jezike PHP i C#.
Napravljena je jednostavna web stranica koja predstavlja nadzornu plou
pametne kue preko koje je mogue ukljuivanje i iskljuivanje nekoliko
ureaja spojenih na Arduino, prikaz trenutne temperature i zadavanje
eljene temperature. Opisan je nain mjerenja temperature pomou
termistora i analogno-digitalnog pretvornika ugraenog u mikrokontroler.
Sustav omoguuje udaljeno upravljanje (preko Interneta) bilo kojim
ureajem u kui, stanu, zgradi, uz uvjet da ta kua, stan, zgrada ima
neprekinuti pristup Internetu.

Sadraj
1.
2.

UVOD ............................................................................................................ 3
PROGRAMSKA PODRKA .................................................................................. 4
2.1.

3.

XAMPP .................................................................................................... 4

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

Ovaj seminarski rad je izraen u okviru predmeta Sustavi za pracenje i voenje procesa na
Zavodu za elektronike sustave i obradbu informacija, Fakulteta elektrotehnike i raunarstva,
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
Sustav za upravljanje sustavima u kui preko Interneta omoguuje
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
odlaska bilo na posao ili odmor, ne moraju brinuti jesu li ostavili neki
ureaj ukljuen, zaboravili zakljuati kuu i sl. jer to mogu lako provjeriti
preko Interneta i po potrebi izvriti odgovarajuu akciju. Takoer mogu
prije povratka kui ukljuiti grijanje ili hlaenje kue.
Cijeli sustav prikazuje Slika 1.1. Raunalo Client predstavlja bilo
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
mikrokontrolerska ploica (Arduino) na koju se mogu spojiti svi ureaji
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 se Notepad++)
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 tekstprocesoru potrebno je spremiti u mapu \xampp\htdocs. Za otvaranje tih
stranica u web pregledniku, potrebno je kao adresu upisati
localhost/mapa_unutar_htdocs/naziv_dokumenta.php
ili
localhost/mapa_unutar_htdocs/naziv_dokumenta.html.

Slika 2.1: XAMPP aplikacija

Upravljanje sustavima u kui preko Interneta

3. PHP aplikacija
PHP aplikacija (nadzornaPloca2.php) napravljena je kao nadzorna
ploa kojoj se pristupa preko Internet preglednika. Omoguuje sljedee
funkcionalnosti:
ukljuivanje i iskljuivanje etiri ureaja (mogue proirenje
na vie ureaja)
mjerenje temperature (prikaz temperature se osvjeava
pritiskom na bilo koju tipku nadzorne ploe)
provjeru statusa (provjeru stanja ukljuenosti pojedinih
ureaja i trenutne temperature)
regulaciju temperature slanjem eljene temperature,
mikrokontroler odrava tu temperaturu (ukljuivanjem i
iskljuivanjem grijanja)
kontrolu pristupa povezivanjem s drugim projektom

Slika 3.1: PHP aplikacija otvorena u Internet pregledniku

Nadzornu plou pametne kue prikazuje Slika 3.1. Boje prikazuju


stanja ukljuenosti;
crveno iskljueno, zeleno ukljueno.

Upravljanje sustavima u kui preko Interneta

3.1. Komunikacija s mikrokontrolerom (Arduinom)


Komunikacija se izvodi preko USB sabirnice koja se na raunalu
vidi kao obian serijski COM port. To je mogue zahvaljujui FTDI ipu
(FT232RL) koji se nalazi na Arduino ploici. Njegova je funkcija da
omogui komunikaciju mikrokontrolera (koji nema ugraeno USB suelje
nego samo UART) i raunala preko USB sabirnice.
Funkcija za komunikaciju napravljena je u programskom jeziku C#.
Prima tri argumenta:
COMport port na koji je spojena mikrokontrolerska ploica
(Arduino)
BaudRate brzina prijenosa podataka izraena u bitovima po
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

ZNAK
0
1
2
3
4
5
6
7
a
b
c
d
e
f
g
h
i
j
k

FUNKCIJA KOJU MIKROKONTROLER OBAVLJA


Iskljui svjetlo
Ukljui svjetlo
Iskljui grijanje
Ukljui grijanje
Iskljui ureaj1
Ukljui ureaj1
Iskljui ureaj2
Ukljui ureaj2
Odrava temperaturu od
Odrava temperaturu od
Odrava temperaturu od
Odrava temperaturu od
Odrava temperaturu od
Odrava temperaturu od
Odrava temperaturu od
Odrava temperaturu od
Odrava temperaturu od
Odrava temperaturu od
Odrava temperaturu od

17
18
19
20
21
22
23
24
25
26
27

C
C
C
C
C
C
C
C
C
C
C

itanje statusa obavlja se na taj nain da mikrokontroler poalje


vrijednost temperature i znakove stanja, a C# funkcija ita te znakove i
sprema ih u tekstualnu datoteku (com13.txt). Format znakova u toj
datoteci je sljedei: prve etiri znamenke prikazuju iznos temperature, 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
Zadatak aplikacije napravljene u programskom jeziku C# je
komunikacija preko COM porta i pisanje u tekstualnu datoteku
(com13.txt). Cijela komunikacija izmeu raunala i mikrokontrolera
(Arduina) ostvaruje se na sljedei nain:
1. Pritiskom na neku tipku na web stranici, odreeni znak se
preko argumenta prenosi C# aplikaciji, C# aplikacija alje taj
znak preko USB sabirnice mikrokontroleru i eka odgovor.
2. Mikrokontroler na temelju primljenog znaka izvrava
odgovarajui zadatak i nakon toga alje informaciju o
temperaturi i stanju pojedinih ureaja.
3. C# aplikacija proita sve to je mikrokontroler poslao i
zapisuje u tekstualnu datoteku com13.txt.
4. PHP aplikacija ita podatke iz tekstualne datoteke i na temelju
proitanih podataka postavlja stanja na web stranici.
Razlozi zbog kojih je komunikacija izvedena preko C# aplikacije, a
ne direktno iz PHP-a su mnogi problemi koji ne doputaju pristup COM
portu iz PHP-a.
Na poetku aplikacije definiraju se postavke serijskog porta i
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");

Nedostatak takvog naina je potreba za ponovnim prevoenjem


programa u sluaju promjene lokacije tekstualne datoteke na disku. Ako
je potrebno, mogue je promijeniti program tako da i putanju do datoteke
prima
kao
argument.

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();

U ovoj C# aplikaciji postoji mali bug koji se javlja prilikom prvog


otvaranja porta, ali nije nuno njegovo rjeavanje za ispravnu
funkcionalnost prilikom prvog pokretanja nadzorne ploe, C# aplikacija
se zavrti u beskonanu petlju. To se lagano rjeava zavravanjem procesa
u Task Manageru (SerialControl.exe). Nakon toga sve normalno
funkcionira.

Upravljanje sustavima u kui preko Interneta

5. Sklopovska realizacija sustava


Sustav na strani servera sastoji se od Arduino mikrokontrolerske
ploice koja je spojena na raunalo (server) preko USB sabirnice. Na
Arduino ploicu spojen je temperaturno promjenjivi otpornik (termistor)
za mjerenje temperature te etiri LE diode koje predstavljaju pojedini
ureaj (Slika 5.1). Za obavljanje neke korisne funkcije (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


Najjeftiniji
nain
mjerenja
temperature
u
sustavima
s
mikrokontrolerom koji ima ugraen analogno-digitalni pretvornik je
pomou NTC termistora. NTC termistori su otpornici kojima otpor pada s
porastom temperature (NTC negativni temperaturni koeficijent). Imaju
veliku osjetljivost i mogu se napraviti za vrlo dobru tonost mjerenja
temperature (0,2 C).
Karakteristika termistora je vrlo nelinearna, ali moe se vrlo dobro
aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1).

R (T ) = Ae

B

T

(5.1)

B ~ 2000-5000 [K], konstanta ovisna o materijalu


T [K] temperatura
Mjerena temperatura odreuje se iz otpora na temperaturi 25 C i
izmjerenog otpora (5.2).

RT = R25 e

1 1
B

T T25

(5.2)

RT otpor na temperaturi T[K], []


T25 temperatura od 25 C izraena u [K]
Iz izraza (5.2) moemo odrediti iznos temperature:
T=

1
1 RT
1
ln
+
B R25 T25

(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:
U T = U ref

RT
RS + RT

(5.4)

Iz izraza (5.4), RT odgovara izrazu:

RT =

U T RS
U ref U T

(5.5)

Sada temperaturu pomou mikrokontrolera moemo mjeriti na


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

B 3988.0
R25 10000.0
Rs 10000.0
T25 298.15
Uref 5.0

Konstanta B je konstanta ovisna o materijalu temperaturno


promjenjivog otpornika (termistora). Vrijednost ove konstante se razlikuje
za razliite tipove termistora. Izraava se u kelvinima [K].
Konstanta R25 predstavlja iznos otpora termistora na temperaturi
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
int
int
int

svjetlo = 8;
grijanje = 7;
device1 = 6;
device2 = 5;

//svjetlo na pin 8
//grijanje na pin 7
//device1 na pin 6
//device2 na pin 5

Varijable s0 do s3 definiraju stanja ukljuenosti pojedinih ureaja.


Koriste se za slanje statusa pojedinih ureaja aplikaciji na raunalu.
int s0=0, s1=0, s2=0, s3=0;

//stanja ukjuenosti

alju se na kraju programskog koda nakon slanja vrijednosti


temperature:

Upravljanje sustavima u kui preko Interneta

Serial.print(T);
Serial.print(s0);
Serial.print(s1);
Serial.print(s2);
Serial.print(s3);

Ukljuivanje i iskljuivanje ureaja na temelju primljenog znaka


obavlja se pomou switch case funkcija. Trenutna temperatura rauna
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

Regulacija temperature obavlja se za vrijeme dok nema pristiglih


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
Razvijeni sustav omoguuje upravljanje do etiri ureaja preko
Interneta putem web stranice koristei jednostavnu nadzornu plou.
Postupak povezivanja sustava s Internetom nije opisan te bi to trebao biti
sljedei korak koji bi doveo do potpune funkcionalnosti sustava.
Ovaj sustav mogu koristiti svi koji ele imati kontrolu nad svojom
kuom gdje god se nalazili. U budunosti bi se sustav mogao povezati s
drugim sustavima (npr. praenje stanja ukuana, protupoarni sustav,
detekcija prisutnosti ) te tako omoguiti veu sigurnost i potpunu
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/enus/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
Pojam

Kratko objanjenje

Vie informacija potraite na

USB

Univerzalna serijska sabirnica

http://en.wikipedia.org/wiki/USB

COM port

Serijsko suelje

http://en.wikipedia.org/wiki/COM_port

UART

Dio hardvera koji omoguuje


komunikaciju preko serijskog
suelja, podrava RS-232

http://en.wikipedia.org/wiki/Uart

FTDI

kotska kompanija koja proizvodi


integrirane sklopove posebno
specijalizirana za USB tehnologiju

http://en.wikipedia.org/wiki/FTDI

Termistor

Otpornik kojem se iznos otpora


mijenja s temperaturom
(THERMally sensitive resISTOR)

http://en.wikipedia.org/wiki/Thermistor

You might also like