24
Grgo Čupić 0036428248 Tekst je namijenjen studentima elektrotehnike Potrebno predznanje C# jezika ZigBee komunikacija, serijska komunikacija, AT naredbe SEMINARSKI RAD - SPVP 14. lipanj 2010

Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Grgo Čupić

0036428248

Tekst je namijenjen studentima

elektrotehnike

Potrebno predznanje C# jezika

ZigBee komunikacija, serijska

komunikacija, AT naredbe

I slične „crtice“…

SEMINARSKI RAD - SPVP

14. lipanj 2010

Page 2: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

2

Sažetak

„Telemetrija i korisničko sučelje“ je rad napravljen u sklopu kolegija „Sustavi za praćenje i voĎenje procesa“. Sam rad pripada sustavu brige za

zdravlju ukućana te se čitatelju preporuča da za potpuno razumijevanje ovog rada pročita radove kolege Roka Krpetića: „Sustav za mjerenje

pokretljivosti“ te kolege Milana Listeša „Sustav za detekciju pada“ jer su integralni dijelovi ovog rada.

Objašnjen je način rada napisane C# aplikacije, realizacija poin-to-

point ZigBee veze te serijska komunikacija izmeĎu računala i vanjskih ureĎaja.

Sadržaj

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

2. REALIZIRANI SUSTAV ..................................................................................... 4

3. ZIGBEE VEZA IZMEĐU RAČUNALA I ARDUINA .................................................... 5

3.1. Arduino DueMillanove ............................................................................... 5

3.2. Digi Xbee Series 2 .................................................................................... 6

3.3. Arduino Xbee Shield ................................................................................. 6

3.4. Način spajanja ZigBee modula ................................................................... 7

3.5. Programiranje XBee modula ...................................................................... 7

3.5.1. Upute za konfiguraciju XBee modula korištenjem X-CTU programa .......... 8

4. KOMUNIKACIJA RAČUNALO – MOBITEL ............................................................12

4.1. Primjer slanja SMS poruke korištenjem AT naredbi ......................................12

5. PROGRAMSKA PODRŠKA .................................................................................14

5.1. Serijska veza ............................................... Error! Bookmark not defined.

5.2. Slanje SMS poruke ..................................................................................20

5.3. Pisanje log datoteka ................................................................................21

6. ZAKLJUČAK ...................................................................................................22

7. LITERATURA..................................................................................................23

8. POJMOVNIK ..................................................................................................24

Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje 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: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

3

1 Uvod

Nadziranje zdravlja pacijenta je osnovna usluga kojom se bave zdravstvene službe. Automatizirano nadziranje zdravlja pacijenta može

smanjiti broj nepotrebnih hospitalizacija pacijenata. Korist je višestruka: oslobaĎaju se resursi zdravstvene službe za one pacijente kojima je

potrebnije, olakšava se briga i nadzor nad pacijentima, podatci o trenutnom stanju pacijenta dostupni su u realnom vremenu ili za obradu

starijih podataka. Bežične i mobilne tehnologije probijaju se na područje nadziranja pacijenata u različitim sredinama: kućama, bolnicama i

domovima za slabije i nemoćne. Ovaj rad baviti će se nadziranjem

ukućana pametne kuće kojom se bavi predmet „Sustavi za voĎenje i praćenje procesa“.

Page 4: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

4

2 Realizirani sustav

Na slici 1 dana je opća shema realiziranog sustava. Korištene su dvije Arduino Duemilanove razvojne platforme, akcelerometar ADXL335, dva

XBee series 2 shielda, osobno računalo s najmanje dva slobodna USB porta te mobilni telefon koji ima mogućnost spajanja na računalo pomoću

USB porta. Akcelerometar mjeri akceleraciju koja se koristi za mjerenje aktivnosti

osobe i detekciju pada. Akcelerometar je kabelom spojen na mikroprocesor (Arduino platformu) koji vrši A/D pretvorbu i Zigbee

bežičnom vezom prosljeĎuje podatak o izmjerenoj akceleraciji računalu.

Na PC računalu je pokrenuta aplikacija koja prima podatke, izvodi algoritme za mjerenje fizičke aktivnosti i detekciju pada iz podatka o

akceleraciji, pohranjuje podatke o fizičkoj aktivnosti, alarmira drugu osobu korištenjem SMS-a u slučaju pada i ima korisničko sučelje za kontrolu

rada i grafički prikaz fizičke aktivnosti i pada.

Ovaj rad bavi se idućim funkcionalnostima: ZigBee veza izmeĎu Arduino platforme i računala

USB/Serijska veza XBee modula i računala USB/Serijska veza izmeĎu mobitela i računala

Glavna aplikacija sustava napisana u C# programskom jeziku

Slika 1: Shematski prikaz realiziranog sustava

Page 5: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

5

3 ZigBee veza između računala i Arduina

U ovom poglavlju opisana je ZigBee bežična veza izmeĎu Arduino platforme na kojoj se nalazi senzor te računala. Opisana je korištena

sklopovska podrška, način spajanja, te način konfiguracije samih ZigBee modula. Na slici 2 dana je fotografija realiziranog sustava na kojima se

vide dva XBee modula.

Slika 2: Fotografija dvije Arduino platforme s spojenim XBee shieldovima

3.1 Arduino DueMillanove

Izabrani mikrokontroler je Atmel ATmega328 koji dolazi u sklopu

Arduino platforme (slika 3). Arduino je platforma slobodnog koda bazirana na fleksibilnom hardveru i softveru koji je vrlo jednostavan za korištenje.

Aktualna Arduino pločica za izradu prototipa je DueMillanove. Pločica se može kupiti (27€) ili izraditi sama prema slobodnom CAD nacrtu.

Ploča ima 8 bitni Atmel ATmega328 koji radi na 16MHz, 14 U/I priključaka, napaja se sa USB priključka ili baterijom 7-12V. Za spajanje

XBee shielda iskoriste se dva pina Arduina za serijski komunikaciju (RX/TX).

Slika 3: Arduino DueMillanove razvojna pločica

Page 6: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

6

3.2 Digi Xbee Series 2

ZigBee mreža fizički je realizirana korištenjem ZigBee modula Xbee.

Korištena su 2 modula novije generacije - Series 2 (ZB Pro/ZNet) (slika 4). Jedan modul šalje podatke, drugi ih prima. Dvosmjerna komunikacija

za realizirani sustav nije potrebna.

Slika 4: Digi XBee series 2

Moduli rade na 2,4 GHz, omogućavaju najviše brzine prijenosa od 250 kbit/s (sirovi podaci). Najveća potrošnja definirana je kod primanja i

iznosi 38 mA. U stanju mirovanja (engl. sleep), potrošnja pada do ispod 1 uA. Izlazna snaga odašiljača je mala i iznosi najviše 2 mW (u tzv. boost

modu). Antena je keramička. Izvedena je na čipu. Domet bi trebao biti do 120 m na otvorenom, odnosno 40 m u zatvorenom prostoru. XBee modul

komunicira s vanjskim ureĎajima putem serijske veze.

3.3 Arduino Xbee Shield

Xbee modul se na Arduino montira koristeći pločicu za proširenja

Xbee Shield (slika 4).

Slika 5: XBee shield sa umetnutim Digi XBee series 2 modulom

Mikrokontroler s Arduino pločice i Xbee Shield komuniciraju serijskim sučeljem preko linija RX i TX. Stoga je, prilikom korištenja Xbee Shielda,

gledano sa strane PC računala, moguće jedino čitanje (tj., kad se šalju podaci od Arduinovog mikrokontrolera prema XBee Shieldu s namjerom da

budu bežično poslani, šalju se i na PC računalo). S druge strane, nije moguće čitanje prilikom primanja podataka (smjer podataka XBee

Arduino).

Page 7: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

7

Bitno je napomenuti da XBee Shield ne koristi nikakve dodatne pinove osim RX i TX, što omogućuje spajanje brojnih ulazno-izlaznih

jedinica.

Nedostatak XBee Shield pločice je što nema izvedenu tipku za reset

Xbee modula. Stoga pri reprogramiranju modula, kad to program X-CTU opisan u nastavku zahtjeva, žicom treba na nekoliko sekundi kratkospojiti

pin 5 Xbee modula i masu (GND), ili fizički izvaditi sam XBee .

3.4 Način spajanja ZigBee modula

U sustavu se koriste dva XBee modula od kojih jedan šalje podatke (o

akceleraciji) dok drugi ih prima. Prvotna ideja je bila spojiti XBee modul svaki na svoj mikrokontroler preko XBee shielda te da mikrokontroler s

primateljske strane samo preusmjerava dobivene podatke na računalo preko USB/serijske veze. Takvim načinom spajanja mikrokontroler s

primateljske strane bi samo zakomplicirao samu shemu sustava a i nebi radio neki konkretan posao osim preusmjeravanja podataka na računalo.

Drugi problem kod ovakve sheme sustava bio je nemogućnost komuniciranja mikrokontrolera s računalom preko USB/serijske veze jer

XBee modul zauzme tu vezu za komunikaciju s mikrokontrolerom. Kao logično rješenje ovog problema nameće se mogućnost direktnog

spajanja XBee modula na računalo. Za tu svrhu koriste se USB to serial pretvarači napravljeni oko FTDI FT232 čipa za Digiev ZigBee modul. Da se

ne bi kupovalo takav pretvarač izveo se idući trik. S jedne Arduino platforme izvaĎen je Atmelov mikrokontroler. Digiev XBee modul spojen je

na Arduino platformu preko XBee shielda te su kratkospojnici na shieldu

postavljeni u položaj USB. Ovakvim spajanjem XBee modula računalo pristupa XBee modulu preko USB porta na koji je spojena Arduino

platforma bez mikrokontrolera. Računalo taj USB port vidi kao serijski te se stoga s XBee modulom komunicira po protokolima definiranim

serijskom tj. RS232 komunikacijom. XBee modul koji šalje podatke (sa strane senzora) spaja se na

Arduino razvojnu pločicu s Atmelovim mikrokontrolerom preko XBee shielda. Kratkospojnici moraju biti namješteni u položaju XBEE.

3.5 Programiranje XBee modula

Da bi XBee moduli mogli komunicirati, potrebno ih je na ispravan način konfigurirati. Moduli se konfiguriraju preko USB/serijskoj sučelja

izdavanjem AT naredbi. Najjednostavniji način konfiguriranje je preko Digijevog programa X-CTU.

Navedeni program služi mijenjanju bitnih postavki konfiguracije, poput odreĎivanja uloga (koordinator, router, krajnji čvor), PANID-a, filtra

Page 8: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

8

kanala, najveće izlazne snage, podešavanje perioda mirovanja modula, sigurnosnih postavki mreže, brzine serijskog sučelja itd.

Konfiguracijom se odreĎuje i mod rada čvorova – automatizirani AT mod gdje se čvorove programira slanjem AT naredbi ili mnogo prilagodljiviji API

mod koji omogućuje programiranje čvorova preko API-ja u programskom jeziku C ili nekom sličnom.

Za potrebe ovog sustava izabran je AT mod. Taj mod radi savršeno za point-to-point veze kao što je bežično čitanje podataka sa senzora. U

ovakvom načinu rada postiže se efekt direktne serijske veze izmeĎu računala i Arduino platforme na kojoj se nalazi senzor. Ovakav način rada

je krajnje jednostavan jer se bežičnoj vezi sa strane Arduina odnosno računala pristupa kao klasičnoj serijskoj vezi.

3.5.1 Upute za konfiguraciju XBee modula korištenjem X-

CTU programa

Za konfiguranje XBee modula koristi se Arduino razvojna pločica bez

Atmel mikrokontrolera i kratkospojnicima postavljenim u USB položaj. Za pravilnu konfiguraciju XBee modula koji prima podatke potrebno je pratiti

ove upute: 1. Na Arduino razvojnu pločicu bez Atmel mikrokontrolera umetnuti

XBee shield s modulom koji će primati podatke 2. Kratkospojnike postaviti na USB

3. Povezati pločicu na USB priključak računala 4. Pokrenuti X-CTU program

5. Odabrati port na koji je spojena pločica, te odabrati opcije kao na slici 6 te kliknuti Test. Kao rezultat ove akcije treba se pojaviti

prozor koji potvrĎuje uspješnu vezu s XBee modulom. 6. Klik na modem configuration

7. Unijeti opcije kao na slikama 7 i 8 te kliknuti write 8. Pratiti upute X-CTUa te po potrebi resetirati XBee odspajanjem

XBee modul koji šalje podatke konfigurira se analogno ovim uputama

jedina je razlika što u koraku 7. treba koristiti slike 9 i 10. U Nakon uspješnog konfiguriranja XBee modula associate LED dioda

na modulu koji prima podatke mora svjetlucati s periodom od 1s. To znači da je taj modul spreman za uparivanje s drugim XBee modulom. Nakon

što drugi modul koji će slati podatke spojimo na Arduino pločicu s Atmel mikrokontrolerom te ga spojimo na napajanje associate LED dioda će

ubrzati period svjetlucanja dajući do znanja da su ta dva XBee modula sada povezana.

Bilo koji podatak koji preko serijske veze napišemo na jedan XBee proslijedit će bežično na drugi te analogno za suprotni slučaj. Bežična

ZigBee veza je uspostavljena!

Page 9: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

9

Slika 6: X-CTU program, 5. Korak konfiguracije

Slika 7: X-CTU program, 7. Korak konfiguracije za modul koji prima

Page 10: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

10

Slika 8: X-CTU program, 7. korak konfiguracije za modul koji prima

Slika 9: X-CTU porgram, 7. korak koniguracije za modul koji šalje

Page 11: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

11

Slika 10: X-CTU program, 7. korak konfiguracije za modul koji šalje

Page 12: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

12

4 Komunikacija računalo – mobitel

Za slanje SMS poruka obavijesti u sustavu se koristi mobilni aparat Nokia 6700 (slika 11). Sustav podržava bilo koji mobilni ureĎaj koji

spajanjem na računalo se može koristiti kao USB modem. Mobilni telefon prepoznat kao USB modem možemo upravljati kao bilo koji drugi modem

AT naredbama. Jednako tako moguće je slati SMS poruke preko AT naredba.

Slika 11: Nokia 6700

4.1 Primjer slanja SMS poruke korištenjem AT naredbi

Mobitel spojen preko USB-a Windows operativni sustav mora prepoznati kao USB modem. Ova stavka može se vrlo lako provjeriti u Device

Manageru (slika 12). Na modem se spaja korištenjem programa dostupnog u Windows operativnom sistemu HyperTerminal. Postavimo

konekciju kao na slici 13. te koristimo iduće naredbe za slanje SMS-a. AT+CMGF=1

OK

AT+CMGS="0959082661"

> Hello �<Ctrl>+<Z>

+CMGS: 44

OK

Naredba AT+CMGF=1 namješta format poruke u tekst mod,

AT+CMGS=“tel broj“ označava naredbu mobitelu da počinje pisanje SMS poruke koju će poslati na tel broj. Upisuje se poruka koja se šalje te kao

kraj poruke SUB kontrolni znak. Mobitel odgovara sa +CMGS: 44 što znači da je poruka poslana.

Page 13: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

13

Slika 12: USB modem prikazan u Device Manageru

Slika 13: Hyperterminal, slanje SMS poruke korištenjem AT naredbi

Page 14: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

14

5 Programska podrška

U sklopu rada razvijena je C# aplikacija koja implementira sve funkcionalnosti sustava. Izgled same aplikacije dan je slikom 14.

Slika 14: Razvijena C# aplikacija

Aplikacija je podijeljena na 3 logička dijela, lijevi dio koji služi za

upravljanje algoritmima za detekciju kretanja i pada, srednji dio koji pokazuje stanje promatrane osobe te desni dio koji služi za postavke

serijskih veza te za postavke varijabli algoritma.

Page 15: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

15

U nastavku slijedi opis svih komponenti aplikacija: Start gumb služi za inicijalizaciju serijske veze te pokretanje

algoritma za detekciju kretanja i pada opisanih u radovima kolega Listeša i Krpetića.

Stop gumb zaustavlja izvoĎenje algoritma te zatvara seriju Real-time graf gumb poziva funkciju za crtanje vrijednosti

akceleracije mjerene sa senzora u realnom vremenu razvijene od strane kolege Krpetića.

Povijesni graf gumb poziva funkciju za crtanje povijesnog grafa kretanja s rezolucijom odabranom u padajućem izborniku razvijenog

od strane kolege Krpetića. Real-time podatci group box pokazuje trenutne vrijednosti

akceleracije za sve tri osi, vrijednost dobivenu algoritmom za

detekciju kretanja te trenutno i povijesno stanje promatrane osobe. Postavke group box omogućuju unos imena promatrane osobe,

izbor dali će se slati SMS poruke obavijesti, te opcije za unos, brisanje i pregled telefonskih brojeva na koje će se slati SMS poruka

obavijesti. Postavke ZigBee i PC-Mobitel veze gruop box omogućavaju

korisniku izbor odgovarajućih COM portova na koje su spojeni XBee modul odnosno mobitel. U padajućim izbornicima Bits per second

bira se brzina prijenosa podataka preko serije. Spoji se/Odspoji se gumb služi za inicijalizaciju veze PC-Mobitel,

ukoliko korisnik se nije spojio na mobitel SMS poruka obavijesti o padu neće biti poslana bez obzira da li je slanje SMS poruka

omogućeno. Postavke varijabli algoritma group box služe za namještanje

varijabli algoritma za detekciju pada odnosno pokreta razvijenih od

strane kolege Listeša i Krpetića Promijeni gumb varijablama algoritma pridružuje vrijednosti

upisane u text boxovima. Reset TooCalm_bio služi za resetiranje bita koji služi za provjeru

da li je osoba premirna. Resetiranje je potrebno u slučaju lažnog alarma ili u svrhe testiranja.

Page 16: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

16

5.1 Serijska veza

Page 17: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

17

Da bi se moglo primati ili slati podatke preko serijske veze potrebno je programski inicijalizirati serijsku vezu. U programskom jeziku C# to se

radi idućim naredbama:

using System.IO; using System.IO.Ports;

public SerialPort sp;

Prve dvije naredbe služe govore aplikaciji da će u radu koristiti System.IO i System.IO.Ports libraryje. SerialPort sp kreira klasu serijski

port imena sp koja će se koristiti kod primanja podataka sa senzora.

Klikom na Start gumb pokreće se idući dio koda:

sp.PortName = COMPortsList.SelectedItem.ToString();

sp.BaudRate = int.Parse(BitsPerSecondList.SelectedItem.ToString());

sp.Parity = Parity.None; sp.StopBits = StopBits.One;

sp.Handshake = Handshake.None; sp.Open();

sp.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);

Definira se: port s kojeg će se uzimati podatci (izabran od strane korisnika u padajućem izborniku), brzina (baud rate) koju je takoĎer

definirano korisnik u padajućem izborniku, bez pariteta, bez stop bitova,

bez handshakea. Naredba sp.open(); otvara serijski port te ga se može dalje koristiti u aplikaciji. Iduća naredba definira event handler tj. funkciju

koja će se izvoditi svaki put kada na serijskom portu doĎe podatak koji će aplikacija obraĎivati.

private void port_DataReceived(object sender,

SerialDataReceivedEventArgs e) string ulaz = sp.ReadLine();

Regex r = new Regex(@"(\b[0-9]{1,3})\t(\b[0-9]{1,3})\t(\b[0-9]{1,3})\r");

Match match = r.Match(ulaz); if (match.Success)

{ string prvi = match.Groups[1].Value;

string drugi = match.Groups[2].Value;

string treci = match.Groups[3].Value;

Page 18: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

18

x = Convert.ToDouble(prvi);

y = Convert.ToDouble(drugi); z = Convert.ToDouble(treci);

Prikazana je funkcija port_DataReceived koja se pokreće svaki put

kad računalo primi podatak preko serije. U varijablu tipa string sprema se niz podataka primljen sa serije. Varijabla Regex služi za provjeru jeli

primljen podatak u dogovorenom formatu. Ako je podatak primljen u točnom formatu pretvara se u tip double te dodjeljuje varijablama x,y,z

koje koje se dalje koriste u algoritmu za detekciju pada i kretanja. Na mikrokontroleru se nalazi idući kod, iz njega se lijepo može

vidjeti dogovoreni format poruke.

/* ADXL3xx

analog 0: -

analog 1: - analog 2: ground

analog 3: z-axis analog 4: y-axis

analog 5: x-axis

*/

const int groundpin = 16; // analog input pin 4 -- ground const int xpin = 5; // x-axis of the accelerometer

const int ypin = 4; // y-axis

const int zpin = 3; // z-axis (only on 3-axis models)

void setup() {

Serial.begin(9600);

//uzemljenje senzora pinMode(groundpin, OUTPUT);

digitalWrite(groundpin, LOW); }

void loop()

{ Serial.print(analogRead(xpin));

Serial.print("\t");

Serial.print(analogRead(ypin));

Page 19: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

19

Serial.print("\t"); Serial.print(analogRead(zpin));

Serial.println(); delay(100);

}

Naredba serial.begin(19200) inicijalizira seriju brzine 19200 bit po sekundi dok naredba serial.print() šalje niz podataka na serijske pinove

mikrokontrolera, odnosno preko bežične ZigBee veze na računalo.

Page 20: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

20

5.2 Slanje SMS poruke

Jedna od osnovnih funkcionalnosti ovog sustava je obavještavanje

zainteresiranih strana ukoliko se dogodio pad ili predugo mirovanje promatrane osobe. Slanje SMS poruke šalje se preko mobitela spojenog

na USB/serijski port računala. Inicijalizacija serijskog porta u C# aplikaciji vrši se analogno postupku objašnjenom u poglavlju 5.1.

Kada algoritam kolege Krpetića da znak da se dogodio pad ili predugo mirovanje poziva se funkcija:

void saljiSMS(string poruka)

{ if (SerialPort.IsOpen == true && checkBox_sms.Checked)

{ for (i = 0; i < comboBox2.Items.Count; i++)

{ WriteSerialPort(AppendATSpecial("AT+CMGF=1"));

Thread.Sleep(20); WriteSerialPort(AppendATSpecial("AT+CMGS=" +

(char)34 + comboBox2.Items[i].ToString() + (char)34)); Thread.Sleep(100);

WriteSerialPort(AppendATSpecial(textBox5.Text +

poruka + (char)26)); Thread.Sleep(100);

Thread.Sleep(2000);

} }

} Funkcija kao argument prima niz znakova koji će se poslati kao

obavijest na odabrane telefonske brojeve. Niz znakova može biti " je dozivio/jela pad. Molimo da pomognete!!!" i " je premiran/na. Molimo da

provjerite!!!". Prvi niz se šalje u slučaju pada a drugi u slučaju duge neaktivnosti. U funkciji saljiSMS poziva se funkcija:

private string AppendATSpecial(string message) {

return string.Format("{0}{1}", message, "\r\n"); }

AT naredbe moraju završavati posebnim znakovima '\r' i '\n',

odnosno carriage return i line feed, a funkcija AppendATSpecial dodaje te

znakove na kraj ulaznog podatka tipa string.

Page 21: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

21

5.3 Pisanje log datoteka

Aplikacija stvara tri nove datoteke (ukoliko već ne postoje):

log_a.txt, log_akt.txt i log_aktivnost.txt. Log_a.txt sadržava informacije o akceleraciji za sve tri osi u svakom trenutku uzorkovanja. Log_akt.txt

sadržava informaciju o stanju promatrane osobe (neaktivna, aktivna, pad te predugo mirovanje). Informacije se u log_akt.txt upisuju samo ukoliko

je došlo do promjene tj. upisuje se vrijeme kad je nastupilo neko stanje te oznaka stanja.

Log_aktivnost.txt je log file koji upisuje samo trenutno stanje osobe,

kad doĎe do promjene aplikacija pobriše sve vrijednosti unutar datoteke te napiše novo stanje. Datoteku s trenutnim stanjem aktivnosti

pregledava aplikacija kolege Kabića te iz nje izvlači informaciju o stanju osobe te je postavlja na Internet stranicu pametne kuće.

Za otvaranje i pisanje u log datoteke koriste se iduće naredbe:

public StreamWriter log, greska, log_akt, log_aktivnost;

Pošto su sada otvorene klase za pisanje logova pojedinačno se u sve datoteke podatci upisuju idućim naredbama:

if (File.Exists("Log_a.txt")) log = File.AppendText("Log_a.txt");

else log = File.CreateText("Log_a.txt");

log.WriteLine("[" + "{0:MM/dd/yyy HH:mm:ss.fff}" + "]" + prvi + " " +

drugi + " " + treci + " " + avg_delta_rms.ToString(), DateTime.Now);

if (File.Exists("Log_akt.txt"))

log_akt = File.AppendText("Log_akt.txt"); else

log_akt = File.CreateText("Log_akt.txt"); log_akt.WriteLine("[" + "{0:MM/dd/yyy HH:mm:ss}" + "] Pad",

DateTime.Now); log_akt.Close();

log_aktivnost = File.CreateText("log_aktivnost.txt"); log_aktivnost.WriteLine("[" + "{0:MM/dd/yyy HH:mm:ss}" + "] P",

DateTime.Now);

Page 22: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

22

6 Zaključak

Realizirani sustav ispunjava sve zamišljene funkcionalnosti. Uspješno se detektiraju aktivnosti promatrane osobe te se provode

odreĎene akcije s obzirom na njih. Realizirani sustav može biti od velike pomoći starijim osobama te medicinskom i drugom osoblju koje promatra

zdravlje te osobe. Implementacijom algoritma za prepoznavanja pada osobe te promatranjem te osobe vrijeme reakcije za pomoć unesrećenoj

osobi znatno se smanjuje te samim time se smanjuje mogućnost najgorih scenarija.

Moguća buduća unaprjeĎenja sustava išla bi u smjeru što bolje

izvedbe realiziranog sustava. Valjalo bi razmisliti o boljoj mehaničkoj konstrukciji samog senzora zbog zaštite samog elektroničkog sklopovlja ali

pogotovo radi lakoće korištenja. Kućište senzora trebalo bi imati mogućnost nošenja oko remena ili ruke promatrane osobe. Kao drugo

unaprjeĎenje moguća je dodatna ugradnja senzora koji bi davali informacije o otkucajima srca, disanju, količini glukoze u krvi itd. Naravno

korištenje takvih senzora znatno bi poskupilo cijeli projekt te stoga nije razmatrano u sklopu ovog predmeta.

Page 23: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

23

7 Literatura

[1] Oletić Dinko, 2009. URL:

http://spvp.zesoi.fer.hr/pametna_kuca/dokumentacija/DinkoOletic_ZigBee.pdf

[2] Trogrlić Darko,2009. URL:

http://spvp.zesoi.fer.hr/pametna_kuca/dokumentacija/DarkoTrogrlic_Komunikacija

SMS.pdf

[3] Arduino – home page; 2010. URL: http://www.arduino.cc/

[4] XBee setup; 2010. URL: http://www.humboldt.edu/~cm19/XBee%20setup.pdf

[5] XBee product page; 2010. URL:

http://www.digi.com/support/productdetl.jsp?pid=3261&osvid=0&s=269&tp=5&tp2

=0

Page 24: Grgo Čupić SEMINARSKI RAD 0036428248studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/gcupic/...Grgo Čupić SEMINARSKI RAD 0036428248 Tekst je namijenjen studentima elektrotehnike

Telemetrija i korisničko sučelje

24

8 Pojmovnik

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

White paper Kratak dokument koji daje uvid u neko područje, tehniku, politiku, proizvod, metodu, standard i sl.

en.wikipedia.org/wiki/White_paper

SMS Short Message Service, telekomunikacijski servis koji omogućuje tekstualnu komunikaciju

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

AT naredbe Naredbe koje su se prvenstveno koristile za upravljanje modemom, danas sadrže prošireni skup za specifičnu primjenu

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

ZigBee Komunikacijski protokol korišten u bežičnim senzorskim mrežama. Temelji se na nadograĎenoj specifikaciji IEEE 802.15.4., a protokol održava skupina tvrtki – ZigBee Alliance

http://www.zigbee.org/

UART Engl. universal asynchronous receiver/transmitter. Sklop za serijsku

komunikaciju i kontrolu priključka.

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

pin Nožica, muški konektor