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

Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

  • Upload
    vocong

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

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

Page 2: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

Sažetak

U ovom seminarskom radu opisan je način povezivanja mikrokontrolerske pločice (Arduino) s računalom tako da meñusobno komuniciraju preko web stranice koristeći programske jezike PHP i C#. Napravljena je jednostavna web stranica koja predstavlja nadzornu ploču pametne kuće preko koje je moguće uključivanje i isključivanje nekoliko ureñaja spojenih na Arduino, prikaz trenutne temperature i zadavanje željene temperature. Opisan je način mjerenja temperature pomoću termistora i analogno-digitalnog pretvornika ugrañenog u mikrokontroler.

Sustav omogućuje udaljeno upravljanje (preko Interneta) bilo kojim ureñajem u kući, stanu, zgradi, uz uvjet da ta kuća, stan, zgrada ima neprekinuti pristup Internetu.

Sadržaj

1. UVOD ............................................................................................................ 3

2. PROGRAMSKA PODRŠKA .................................................................................. 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 pomoću termistora...................................................11

6. ARDUINO PROGRAMSKA PODRŠKA ..................................................................13

7. ZAKLJUČAK ...................................................................................................15

8. LITERATURA..................................................................................................15

9. POJMOVNIK ..................................................................................................16

Ovaj seminarski rad je izrañen u okviru predmeta „Sustavi za pracenje i voñenje procesa“ na Zavodu za elektroničke sustave i obradbu informacija, Fakulteta elektrotehnike i računarstva, Sveučilišta u Zagrebu. Sadržaj ovog rada može se slobodno koristiti, umnožavati i distribuirati djelomično ili u cijelosti, uz uvjet da je uvijek naveden izvor dokumenta i autor, te da se time ne ostvaruje materijalna korist, a rezultirajuće djelo daje na korištenje pod istim ili sličnim ovakvim uvjetima.

Page 3: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

1. Uvod

Sustav za upravljanje sustavima u kući preko Interneta omogućuje udaljeno upravljanje ureñajima i sustavima u kući, s bilo kojeg mjesta na Zemlji uz uvjet da ima pristup Internetu. Smisao je da se ukućani, nakon odlaska bilo na posao ili odmor, ne moraju brinuti jesu li ostavili neki ureñaj uključen, zaboravili zaključati kuću i sl. jer to mogu lako provjeriti preko Interneta i po potrebi izvršiti odgovarajuću akciju. Takoñer mogu prije povratka kući uključiti grijanje ili hlañenje kuće.

Cijeli sustav prikazuje Slika 1.1. Računalo Client predstavlja bilo koje računalo spojeno na Internet. PHP Server je računalo koje se nalazi u kući u kojoj želimo kontrolirati pojedine ureñaje. Na to računalo spojena je mikrokontrolerska pločica (Arduino) na koju se mogu spojiti svi ureñaji koje želimo kontrolirati.

Slika 1.1: Prikaz cijelog sustava za upravljanje preko Interneta

Page 4: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

2. Programska podrška

Za izradu ovog projekta potrebni su sljedeći programi: • Bilo koji tekst-procesor (preporuča se Notepad++) • Microsoft Visual Studio (ili Microsoft Visual C#) • Arduino • XAMPP

2.1. XAMPP

XAMPP svako računalo 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 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

Page 5: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

3. PHP aplikacija

PHP aplikacija (nadzornaPloca2.php) napravljena je kao nadzorna ploča kojoj se pristupa preko Internet preglednika. Omogućuje sljedeće funkcionalnosti:

• uključivanje i isključivanje četiri ureñaja (moguće proširenje na više ureñaja)

• mjerenje temperature (prikaz temperature se osvježava pritiskom na bilo koju tipku nadzorne ploče)

• provjeru statusa (provjeru stanja uključenosti pojedinih ureñaja i trenutne temperature)

• regulaciju temperature – slanjem željene temperature, mikrokontroler održava tu temperaturu (uključivanjem i isključivanjem grijanja)

• kontrolu pristupa – povezivanjem s drugim projektom

Slika 3.1: PHP aplikacija otvorena u Internet pregledniku

Nadzornu ploču pametne kuće prikazuje Slika 3.1. Boje prikazuju

stanja uključenosti; crveno – isključeno, zeleno – uključeno.

Page 6: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

3.1. Komunikacija s mikrokontrolerom (Arduinom)

Komunikacija se izvodi preko USB sabirnice koja se na računalu

„vidi“ kao običan serijski COM port. To je moguće zahvaljujući FTDI čipu (FT232RL) koji se nalazi na Arduino pločici. Njegova je funkcija da omogući komunikaciju mikrokontrolera (koji nema ugrañeno USB sučelje nego samo UART) i računala preko USB sabirnice.

Funkcija za komunikaciju napravljena je u programskom jeziku C#. Prima tri argumenta:

• COMport – port na koji je spojena mikrokontrolerska pločica (Arduino)

• BaudRate – brzina prijenosa podataka izražena u bitovima po sekundi [bps]

• Znak koji se šalje Način 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 odreñenih znakova koji odreñuju što će mikrokontroler raditi (Tabela 3-1).

Page 7: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

Tabela 3-1: Protokol komunikacije

ZNAK FUNKCIJA KOJU MIKROKONTROLER OBAVLJA

0 Isključi svjetlo 1 Uključi svjetlo 2 Isključi grijanje 3 Uključi grijanje 4 Isključi ureñaj1 5 Uključi ureñaj1 6 Isključi ureñaj2 7 Uključi ureñaj2 a Održava temperaturu od 17 °C b Održava temperaturu od 18 °C c Održava temperaturu od 19 °C d Održava temperaturu od 20 °C e Održava temperaturu od 21 °C f Održava temperaturu od 22 °C g Održava temperaturu od 23 °C h Održava temperaturu od 24 °C i Održava temperaturu od 25 °C j Održava temperaturu od 26 °C k Održava temperaturu od 27 °C

Čitanje statusa obavlja se na taj način da mikrokontroler pošalje

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 sljedeći: prve četiri znamenke prikazuju iznos temperature, a druge četiri status pojedinog ureñaja – svjetlo, grijanje, ureñaj1, ureñaj2.

Npr. 26.980100 – temperatura je 26,98 °C, grijanje je uključeno, a ostali ureñaji su isključeni.

PHP aplikacija čita tu tekstualnu datoteku i na temelju nje prikazuje informacije na web stranici.

Page 8: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući 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 izmeñu računala i mikrokontrolera (Arduina) ostvaruje se na sljedeći način:

1. Pritiskom na neku tipku na web stranici, odreñeni 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 izvršava odgovarajući zadatak i nakon toga šalje informaciju o temperaturi i stanju pojedinih ureñaja.

3. C# aplikacija pročita sve što je mikrokontroler poslao i zapisuje u tekstualnu datoteku com13.txt.

4. PHP aplikacija čita podatke iz tekstualne datoteke i na temelju pročitanih 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 dopuštaju pristup COM portu iz PHP-a.

Na početku 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;

Važan dio je definiranje putanje gdje se nalazi tekstualna datoteka:

file = new StreamWriter ( "C:\\xampp\\htdocs\\Pametna_kuca\\com13.txt" );

Nedostatak takvog načina je potreba za ponovnim prevoñenjem programa u slučaju promjene lokacije tekstualne datoteke na disku. Ako je potrebno, moguće je promijeniti program tako da i putanju do datoteke prima kao argument.

Page 9: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

Za slanje podataka na USB sabirnicu, potreban je sljedeći dio koda: StreamWriter streamWriter1;

streamWriter1 = new StreamWriter (COMport.BaseStream);

streamWriter1.WriteLine(data);

Čitanje se obavlja na sljedeći način: 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 nužno njegovo rješavanje za ispravnu funkcionalnost – prilikom prvog pokretanja nadzorne ploče, C# aplikacija se zavrti u beskonačnu petlju. To se lagano rješava završavanjem procesa u Task Manageru (SerialControl.exe). Nakon toga sve normalno funkcionira.

Page 10: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

5. Sklopovska realizacija sustava

Sustav na strani servera sastoji se od Arduino mikrokontrolerske pločice koja je spojena na računalo (server) preko USB sabirnice. Na Arduino pločicu spojen je temperaturno promjenjivi otpornik (termistor) za mjerenje temperature te četiri LE diode koje predstavljaju pojedini ureñaj (Slika 5.1). Za obavljanje neke korisne funkcije (uključivanje stvarnog ureñaja veće snage), umjesto LE dioda može se spojiti tranzistor koji uključuje relej na koji je spojen željeni ureñaj.

Slika 5.1: Sklopovska realizacija sustava upravljanog preko Interneta

Page 11: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

5.1. Mjerenje temperature pomoću termistora

Najjeftiniji način mjerenja temperature u sustavima s mikrokontrolerom koji ima ugrañen analogno-digitalni pretvornik je pomoću 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 točnost mjerenja temperature (±0,2 °C).

Karakteristika termistora je vrlo nelinearna, ali može se vrlo dobro aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1).

( )B

TR T Ae = (5.1)

B ~ 2000-5000 [K], konstanta ovisna o materijalu T [K] temperatura Mjerena temperatura odreñuje se iz otpora na temperaturi 25 °C i

izmjerenog otpora (5.2).

25

1 1

25

BT T

TR R e

− = ⋅ (5.2)

RT – otpor na temperaturi T[K], [Ω] T25 – temperatura od 25 °C izražena u [K] Iz izraza (5.2) možemo odrediti iznos temperature:

25 25

11 1

ln T

TR

B R T

=+

(5.3)

Termistor je na izvor referentnog napona spojen prema shemi (Slika

5.2).

Page 12: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

Slika 5.2: Shema spajanja termistora u krug napajanja

Iz sheme slijedi:

TT ref

S T

RU U

R R= ⋅

+ (5.4)

Iz izraza (5.4), RT odgovara izrazu:

T ST

ref T

U RR

U U=

− (5.5)

Sada temperaturu pomoću mikrokontrolera možemo mjeriti na

sljedeći način: 1) Mikrokontroler mjeri napon UT i računa RT prema izrazu (5.5) 2) zatim računa iznos temperature prema izrazu (5.3).

Page 13: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

6. Arduino programska podrška

Na početku programskog koda definirano je nekoliko konstanti koje se odnose na sklopovlje pomoću kojega se mjeri temperatura:

#define B 3988.0

#define R25 10000.0

#define Rs 10000.0

#define T25 298.15

#define Uref 5.0

Konstanta B je konstanta ovisna o materijalu temperaturno promjenjivog otpornika (termistora). Vrijednost ove konstante se razlikuje za različite tipove termistora. Izražava se u kelvinima [K].

Konstanta R25 predstavlja iznos otpora termistora na temperaturi 25 °C, izraženo u omima [Ω].

Konstanta Rs predstavlja iznos serijskog predotpora spojenog u krug termistora, [Ω].

Konstanta T25 je temperatura od 25 °C izražena u kelvinima.

Konstanta Uref predstavlja iznos referentnog napona koji je spojen na serijsku kombinaciju otpornika Rs i termistora.

Sljedeći dio koda definira na koje pinove su spojeni pojedini ureñaji: 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

Varijable s0 do s3 definiraju stanja uključenosti pojedinih ureñaja. Koriste se za slanje statusa pojedinih ureñaja aplikaciji na računalu.

int s0=0, s1=0, s2=0, s3=0; //stanja ukju čenosti

Šalju se na kraju programskog koda nakon slanja vrijednosti temperature:

Page 14: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

Serial.print(T);

Serial.print(s0);

Serial.print(s1);

Serial.print(s2);

Serial.print(s3);

Uključivanje i isključivanje ureñaja na temelju primljenog znaka obavlja se pomoću switch – case funkcija. Trenutna temperatura računa 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 tempe raturu 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 uklju čeno

napon=analogRead(analogPin);

Ut=(napon/1023)*5;

Rt=Ut*Rs/(Uref-Ut);

T=1/(log(Rt/R25)/B + 1/T25)-273.15; //Racuna t emperaturu u °C

if(T < (float)zeljena_temp-0.1) digitalWrite(gr ijanje, HIGH);

else if (T > (float)zeljena_temp+0.1) digitalWr ite(grijanje, LOW);

Kako ne bi došlo do prečestog uključivanja i isključivanja grijanja u kratkom vremenu, napravljena je histereza od 0,1 °C.

Page 15: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

7. Zaključak

Razvijeni sustav omogućuje upravljanje do četiri ureñaja preko Interneta putem web stranice koristeći jednostavnu nadzornu ploču. Postupak povezivanja sustava s Internetom nije opisan te bi to trebao biti sljedeći korak koji bi doveo do potpune funkcionalnosti sustava.

Ovaj sustav mogu koristiti svi koji žele imati kontrolu nad svojom kućom gdje god se nalazili. U budućnosti bi se sustav mogao povezati s drugim sustavima (npr. praćenje stanja ukućana, protupožarni sustav, detekcija prisutnosti… ) te tako omogućiti veću 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/en-us/library/aa287548%28v=VS.71%29.aspx (2011-05)

[6] C# Main Args Examples. URL: http://www.dotnetperls.com/main (2011-05)

Page 16: Nikša Nikšić SEMINARSKI RAD - SPVP 0036440090studenti.zesoi.fer.hr/pametne-kuce/Studenti/2011/nniksic... · aproksimirati eksponencijalnom funkcijom (Steinhart-Hart) (5.1). ( )

Upravljanje sustavima u kući preko Interneta

9. Pojmovnik

Pojam Kratko objašnjenje Više informacija potražite na

USB Univerzalna serijska sabirnica http://en.wikipedia.org/wiki/USB

COM port Serijsko sučelje http://en.wikipedia.org/wiki/COM_port

UART Dio hardvera koji omogućuje komunikaciju preko serijskog sučelja, podržava 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