Upload
vocong
View
216
Download
0
Embed Size (px)
Citation preview
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
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.
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
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
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.
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).
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.
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.
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.
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
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).
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).
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:
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.
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)
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