Professional Documents
Culture Documents
370/EL/2016
Student
Mentor
KLJUNE RIJEI: Arduino UNO, LCD zaslon, mikrokontroler, relejni modul, servo motor,
tipkalo, tipkovnica
Abstract
The idea is elaboration and realization electronic door lock with Arduino UNO development
platform and simultaneously communication with computer along posibility to save data. Low
price, possibility for upgrading and satisfactorily specifications are main reason of realization with
Arduino UNO development platform. Because of wide availability, number of practical appliance
Arduino development platform are increasing. Realization of practical work is accompanied with
model which is reduced shew electronic door lock.
Model consist of central unit (Arduino UNO), LCD display (liquid crystal display, 16 chars x
2 rows), keyboard (4x4 push buttons), servo motor, buzzer, push button, reley module and
mechanical construction on which are mounted electronic and electromechanic door lock set. On
the first run user can choose between 2 options. Option number 1 is the option that allows you to
enter a PIN and unlocks the electronic lock. Option number 2 is the option that can be used to
change the PIN that unlocks the electronic lock. Unlocking the door is accompanied by an audible
signal and the inclusion of the relay module (signaling green LED), it will display a sub-menu that
offers options lock by pressing "*" or return to the main menu under the condition that the door is
closed. Calling menu is done by pressing the #. When option change PIN is selected, user first
needs to enter old PIN and if is correct it is possible to enter a new PIN. Arduino simultaneously
communicate via USB communication port with computer during which data will be stored and
displayed on the screen of personal computer.
KEY WORDS: Arduino UNO, LCD display, microcontroller, reley module, servo motor, push
button, keyboard
Popis koritenih kratica
1. Uvod ..................................................................................................................................6
2. Elektronika brava ............................................................................................................8
2.1. RFID tehnologija ........................................................................................................... 9
2.2. NFC tehnologija .......................................................................................................... 10
3. Realizacija Arduino elektronike brave ..........................................................................11
3.1. Arduino UNO .............................................................................................................. 11
3.2. Arduino IDE programsko suelje ................................................................................ 12
3.3. Servo motor ................................................................................................................. 13
3.4. Relejni modul .............................................................................................................. 14
3.5. LCD zaslon .................................................................................................................. 16
3.6. Tipkovnica ................................................................................................................... 17
3.7. Tipkalo ........................................................................................................................ 18
3.8. Kristalna zvunica ....................................................................................................... 19
3.9. Microsoft Visual Studio 2015 ..................................................................................... 20
4. Maketa Arduino elektronike brave................................................................................24
5. Montana shema elektronike ..........................................................................................26
6. Princip rada Arduino elektronike brave ........................................................................27
7. Blok dijagram Arduino elektronike brave.....................................................................31
8. Elektronika shema spajanja na Atmega328P mikrokontroler .......................................32
9. Zakljuak.........................................................................................................................34
10. Literatura .........................................................................................................................36
11. Prilozi ..............................................................................................................................37
5
1. Uvod
Arduino UNO je razvojni sustav koji se sastoji od programskog i sklopovskog dijela.
Programski dio Arduino UNO razvojnog sustava sastoji se od programa koji se koriste za
prevoenje programskog jezika C u asemblerski (strojni) kod. Sklopovski dio Arduino UNO
razvojnog sustava sastoji se od razvojne ploice koja sadri mikrokontroler ATMEL koji razumije
samo asemblerski (strojni) kod. Kada se prevedeni programski kod prenese u memoriju
mikrokontrolera, izvrava se tako dugo dok ima napajanje. Prilikom nestanka napajanja ili
resetiranja, programski kod poinje iznova. Vrijeme potrebno za obradu pojedinih podataka unutar
mikrokontrolera krae je od milisekunde, to omoguava relativno brzu obradu podataka.
Postoje mnoge mogunosti nadogradnje ovog sklopa kao npr. povezivanje internetom putem
ethernet ili wi-fi shielda. Ulazni elementi ovog sklopa su tipkovnica (4x4) kojom se unose potrebni
podaci za ulaza/izlazak ili promjenu PIN-a te tipkalo koje slui kao granini prekida (poloaj
vrata otvoreno/zatvoreno). Izlazne elemente ine servo motor ija uloga je
zakljuavanje/otkljuavanje vrata, zvunik kao signalizacija otvoreno/zatvoreno ili PIN
promijenjen, lcd zaslon koji nas vodi tekstualno kroz mogunosti elektronike brave i relej s
tranzistorskim upravljanjem koji osigurava sigurno otkljuavanje ili zakljuavanje brave ako u
kojem sluaju servo motor ne proradi. Programiranje pojedinih dijelova i povezivanje u cjelinu
vri se pomou Arduino IDE programskog suelja. Arduino IDE programsko suelje koristi
programski jezik C.
Najprije je potrebno nabaviti sve potrebne elemente koji e koristiti u realizaciji samog projekta.
Nakon ega se pojedinano spaja element po element uz istovremeno pisanje koda u Arduino IDE
programskom suelju te njegovo testiranje na eksperimentalnoj ploici. Prilikom zavretka
spajanja svih potrebnih dijelova te njihovog testiranja, potrebno je izraditi zavrnu verziju
programskog koda gdje svi dijelovi rade sinkronizirano u jednoj cjelini. Po zavretku spajanja
elemenata i pisanja zavrne verzije programskog koda koji se implementira u Arduino UNO
razvojnu platformu, potrebno je napraviti konanu elektrinu shemu spajanja elemenata. Nakon
to je kod implementiran i potpuno funkcionalan, potrebno je izraditi maketu na temelju istih
elemenata koji su se koristili prilikom testiranja na samoj eksperimentalnoj ploici. Prilikom
sastavljanja makete mogue je uoiti eventualne nedostatke koje je potrebno izmijeniti u
programskom kodu, nakon ega je potrebno napisati program u C# programskom jeziku koji vri
komunikaciju s Arduino UNO te ih prikazuje na zaslon. Budui da raunalo ima vie razliitih
portova bilo je potrebno izraditi mogunost komunikacije s bilo kojim portom. Podaci koji se
ispisuju na zaslonu, odnosno podaci koje Arduino UNO alje istovremeno se spremaju u tekstualnu
6
datoteku na raunalu ovisno o adresi upisanoj u C# programskom kodu. C# programski kod kao i
vizualni izgled pisani su u Microsoft Visual Studio Community 2015 programskom suelju.
Izraena maketa je umanjeni prikaz onoga to bi u praksi inilo elektrinu bravu. Mogunosti
nadogradnje prikazanog rjeenja elektronike brave su velike, kao npr. povezivanje internetom te
mogunost dojave samih dogaaja putem SMS-a ili s druge strane kreiranjem neke mobilne
aplikacije kao suelje za upravljanje i kontrolu nad samim sustavom. Takoer je mogua
nadogradnja alarmnim i vatrodojavnim sustavom.
Prilikom obrazovanja steena su mnoga znanja koja su uistinu pripomogla izradi ovo zavrnog
rada, isto tako prilikom izrade zavrnog rada steena su nova znanja koja e sa sigurnou koristiti
u daljnjem kolovanju ili s druge strane pronalasku posla. Problematika koja se javljala pomogla
je usavravanju snalaljivosti i nadogradnji znanja.
7
2. Elektronika brava
Elektronika brava je sustav zatite objekata, sefova, privatnih kua, stanova itd. Danas to nije
samo onaj klasian nain pomou mehanikih ureaja ve se princip rada zasniva na temelju
programskog koda koji je integriran u mikrokontroler. Podaci kao to je PIN ili ostali oblici
identifikacije koriste tvorniki zadanu vrijednost te prilikom prvog koritenja elektronike brave
korisnik unosi vlastitu vrijednost. Vrijednost koju korisnik unese se pohranjuje u EEPROM
memoriju da bi podaci prilikom nestanka napajanja ili resetiranja elektronike brave ostali
ouvani. Otkljuavanje se izvri nakon to je identifikacija potvrena tako da izvrni element
pokrene mehaniki sklop za otkljuavanje. Zakljuavanje se izvri ukoliko su vrata zatvorena.
Zbog mogunosti izvrenja pogrene identifikacije ugraene su dodatne sigurnosne mjere kao to
je trajno zakljuivanje. Poznati naini identifikacije dananjice su RFID i NFC tehnologija[3],
numeriki znakovi[4], sigurnosni tokeni[5], biometrika[6] itd.
8
2.1. RFID tehnologija
9
2.2. NFC tehnologija
NFC tehnologija je postojana iskljuivo zbog sigurnosnih plaanja putem mobilnih ureaja
ili PayPass kartica (prisloni i plati kartica), a takoer ima veliku primjenu kod sigurnosnih
sustava poput identifikacije kod elektronike brave [3].
10
3. Realizacija Arduino elektronike brave
Realizacija ovog zavrnog rada bio je skup zadataka koji su se spojili u cjelinu. Potrebna je
realizacija sklopovske sheme, zatim programskog koda i po zavretku povezivanje s raunalom
preko USB komunikacijskog porta te ispis svih podataka na zaslon osobnog raunala uz
istovremenu pohranu. Arduino elektronika brava mora imati mogunosti unosa PIN-a i prikaza
poruka te promjene PIN-a.
Mikrokontroler ATmega328P
Radni napon 5V
Ulazni napon (preporueno) 7-12V
Ulazni napon (granica) 6-20V
Digitalni I/U pinovi 14 (od kojih su 6 PWM izlazi)
PWM digitalni I/U pinovi 6
Analogni ulazni pinovi 6
DC struja po I/U pinu 20 mA
DC struja za 3.3V pin 50 mA
32 KB (ATmega328P)
Flash memorija
od koje 0.5 KB koristi bootloader
SRAM 2 KB (ATmega328P)
EEPROM 1 KB (ATmega328P)
Brzina rada 16 MHz
Tablela 1. Specifikacije Arduino UNO razvojne platforme [7]
11
Slika 5. Arduino UNO razvojna platforma [8]
12
Prilikom pisanja programskog koda potrebno je najprije ukljuiti knjinice koje se koriste za
pojedini element. Unutar knjinice se nalaze prethodno definiran nain rada pojedinog elementa
te se koriste radi lakeg pisanja koda. Svaka knjinica sadrava kljune rijei koje se koriste
prilikom definiranja kao npr. Servo myservo;. Servo je kljuna rije iz knjinice
<Servo.h> koja poziva funkciju za definiciju, a myservo je naziv servo motora koji je
definiran.
Servo motor TG9e radi na 5V DC, ima moment od 0.15Nm, malih je dimenzija
(23x12.2x29mm) te je koriten kao glavni element za otkljuavanje/zakljuavanje sustava
elektronike brave. Koritenje pripremljene knjinice #include <Servo.h> u Arduino IDE
programskom suelju omoguava laku primjenu. Definiranje servo motora vri se naredbom
Servo myservo;. Nakon to se servo motor definira potrebno mu je dodijeliti njegov
upravljaki pin. Pin mora sadravati PWM regulaciju zbog slanja vie uzastopnih impulsa prilikom
promjene poloaja, a definiran je u Servo.attach(12);. Broj 12 oznaava pin na koji je
spojena upravljaka ica servo motora. Promjena poloaja obavlja se koritenjem for petlje:
, zbog toga jer servo motoru treba odreeno vrijeme da izvri pojedini zakret. Prema
specifikacijama ovog servo motora to vrijeme iznosi 2 milisekunde, ali zbog sigurnog zakreta
postavljeno je na 3 milisekunde. Da bi se izbjegli udni zvukovi i vibracije motora, odnosno dobilo
konstantno napajanje, u paralelu izmeu VCC i GND dodan je kondenzator od 470 F (prilog 2).
13
Slika 7. Servo motor TG9e [9]
14
Slika 8. Relejni modul
15
3.5. LCD zaslon
Radi lakeg snalaenja te ispisivanja trenutnih stanja sustava elektronike brave koristi se LCD
zaslon 16x2 (Slika 10), to znai 16 znakova u svakom redu sa maksimalno 2 reda. Radni napon
mu je 5V DC te sadri 2 registra: Command i Data. Command registar pohranjuje iskljuivo
naredbe koje su mu date kao npr. brisanje trenutnog sadraja na zaslonu, postavljanje kursora,
kontrola zaslona itd. Dok s druge strane imamo Data registar koji pohranjuje podatke koji se
moraju prikazati na LCD zaslonu. Podatak je u ASCII kodu to znai da se podaci alju u 8 bitnoj
kombinaciji te je potrebno 8 digitalnih pinova. Budui da imamo ogranien broj pinova radi lakeg
koritenja, LCD zaslon je povezan na I2C pretvara (Slika 11). I2C pretvara se koristi zbog
jednostavnosti primjene unutar programskog koda i broja pinova potrebnih za komunikaciju. U
programskom kodu koji upravlja mikrokontrolerom potrebno je ukljuiti knjinicu za rad sa I2C
pretvaraem, to je realizirano koritenjem naredbe #include <LiquidCrystal_I2C.h>,
a definicija trenutnog LCD zaslona naredbom LiquidCrystal_I2C lcd(0x27, 16,
2);. Ostale naredbe definirane su unutar funkcija.
I2C pretvara sadri 4 ulazna pina od kojih su dva napajanje (VCC i GND), a preostala dva
podatkovna (SDA i SCL) te 16 izlaznih pinova od kojih se 8 koriste za komunikaciju s LCD
zaslonom. Ovisno o brzini rada procesora SCL mijenja svoja logika stanja (0,1). SDA prelazi iz
logike 0 u logiku 1 kada SCL poprimi vrijednost logike 1, a prijenos podatkovnog bita s
Arduinom zapoinje kada su SDA i SCL u stanju logike 1. Za svaki prelazak SDA iz logike 0 u
logiku 1, a da je pritom SCL u stanju logike 1 alje se po 1 podatkovni bit.
16
Slika 11. IIC konverter [11]
3.6. Tipkovnica
Unos PIN-a ili pak navoenje kroz izbornike elektronike brave vri se putem tipkovnice 4x4
(Slika 12). Tipkovnica sadri 16 tipkala te se trenutna stanja pojedine tipke prenose putem 8-ine
komunikacije kod koje prva 4 bita slue za redove, a preostala 4 bita za stupce. Pozivanje knjinice
za rad sa tipkovnicom vri se naredbom #include <Keypad.h>, a samo definiranje:
17
Slika 12. Tipkovnica 4x4 [12]
3.7. Tipkalo
Tipkalo slui kao granini prekida u ovom zavrnom radu. Koritenjem tipkala realizirana je
detekcija poloaja vrata (otvoreno/zatvoreno) (Slika 13). Definiranje pina izvreno je naredbama
int sensor = 2;, pinMode(sensor, INPUT_PULLUP);. itanje stanja vri se
naredbom digitalRead(sensor);. Poto je ulaz definiran putem PULLUP-a (pin je preko
otpornika spojen na +5V DC) onda vrijedi obrnuta logika. Kada na ulaz doe logika jedinica,
mikrokontroler je ita kao logiku nulu.
18
Svaki od 14 digitalnih pinova na Arduino UNO razvojni platformi moe se spajati na
PULLUP otpornik, a iznos otpornika je od 20 - 50 kOhm-a. Po zadanim postavkama taj otpornik
nije spojen, a definicija spoja vri se unutar programskog koda sintaksom pinMode(sensor,
INPUT_PULLUP);.
Svaka izvrena radnja signalizirana je zvunim signalom radi lakeg prepoznavanja promjene
stanja. Kristalna zvunica Keyes radi na 5V DC frekvencije zvuka 2-5 kHz. Definiranje se vri
naredbom int buzzer = 3;, a naredba za postavljanje izlaznog pina pinMode(buzzer,
OUTPUT);. Duljina zvunog signala definirana je unutar funkcije koritenjem for petlje
19
Slika 14. Kristalna zvunica Keyes [13]
Kreiranje aplikacije koja omoguava ispis podataka na zaslon te istovremenu pohranu u tekst
(.txt) datoteku izvreno je u Microsoft Visual Studio 2015 [14] (Slika 15). Najprije je kreiran
dizajn, postavljene su tipke i odreeni tekst blokovi (Slika 16) koji se kasnije programiraju
programskim jezikom C# te spajaju u cjelinu.
20
Najbitnije je dobro inicijalizirati port koji dohvaa podatke koje Arduino alje, a inicijalizacija
se vri na ovaj nain:
try{
myport.Open(); // otvaranje porta
data_tab.Text = ""; // varijabla za tekst koji e se
pojaviti (""- zadano)
}
catch (Exception ex){ // u sluaju greke ispisuje se
error (npr. ako ne moe dohvatiti podatke)
MessageBox.Show(ex.Message, "Error");
}
}
21
Definiran je serijski port pod nazivom myport kojem je dodijeljena brzina prijenosa podataka
serijske komunikacije. Za odabir porta kreirana je labela gdje korisnik unosi naziv porta. Uneseni
naziv porta osigurava komunikaciju s Arduino UNO razvojnom platformom. USB komunikacijski
port ne koristi pariti bit pa je taj bit definiran kao nepostojei. Veliina dolaznog podatka je 8 bitna,
dok se jedan od bitova koristi za raskid komunikacije. Ukoliko prilikom inicijalizacije porta doe
do pogreke pojavljuje se prozor s uzrokom iste.
Na poetku kreiranja vizualnog izgleda aplikacije postojao je samo prozor s zadanim izgledom.
Razvijanje dizajna odvijalo se dodavanjem teksta, tekstualnih prozora i tipki. Funkcija tekstualnih
prozora definirana je unutar programskog koda ovisno o tome dali slui za upis porta ili ispis
teksta. Definiran je dogaaj na temelju kojeg se vri ispisivanje podataka iz tekstualnog prozora u
tekstualnu datoteku uz uvjet da se postojani tekst u datoteci ne brie. Datum i vrijeme su definirani
radi lakeg praenja dogaaja koji su se dogodili u prolosti. Tipka Pokreni ili Enter definira
poetak inicijalizacije porta koja je ranije objanjena. Tipka Zaustavi prekida serijsku
komunikaciju.
22
Slika 17. Pohranjeni podaci u tekst datoteci
Ispis podataka u tekst datoteku definiran je unutar programskog koda. Naknadna promjena
adrese ispisa podataka nije mogua. Radi lakeg praenja prolosti koritenja sustava Arduino
elektronike brave tekst datoteka sadrava datum, vrijeme i opis dogaaja. Ispravnost datuma i
vremena ovisi o postavkama istih na osobnom raunalu. Opis dogaaja sadri informacije o stanju
elektronike brave koje Arduino UNO alje na osobno raunalo putem USB komunikacijskog
porta.
23
4. Maketa Arduino elektronike brave
Realizirana je maketa Arduino elektronike brave. Dijelovi mehanike konstrukcije makete
prikazani su na slici 18. Maketa je kreirana od prije spomenutih elemenata te konstrukcije.
Materijal konstrukcije je drvo pod nazivom furnirana iverica. Najprije je bilo potrebno napraviti
nacrt po kojem e se maketa raditi. Nakon realizacije nacrta, iz drveta su izrezani dijelovi koji su
se kasnije sastavili (Slika 19).
24
Slika 19. Slika gotove makete Arduino elektronike brave
25
5. Montana shema elektronike
Montana shema izraena je u programskom suelju Fritzing [15]. Fritzing sadri sve potrebne
elemente iz podruja elektronike te elemente vezane uz Arduino razvojnu platformu.
26
6. Princip rada Arduino elektronike brave
Prilikom prvog pokretanja vri se inicijalizacija, postavljanje poetnih stanja vrijednosti
odreene varijable. LCD zaslon ispisuje poruku, a nakon toga prikazuje glavni izbornik.
Glavni izbornik se sastoji od dva podizbornika. Prvi korak omoguuje korisniku ulazak, dok
drugi korak korisniku nudi promjenu PIN-a. Prilikom odabira pod 1 korisniku se prikazuje
poruka na LCD zaslonu kao na sljedeoj slici.
Korisnik unosi etveroznamenkasti PIN. Ukoliko PIN nije toan slijedi poruka na LCD zaslonu
te upuuje korisnika na ponovni unos PIN-a.
Slika 24. Poruka o pogrenom PIN-u Slika 25. Poruka za unos PIN-a
Ukoliko je PIN toan, prikazuje se slijedei slijed poruka na LCD zaslonu. Prilikom
prikazivanja poruka izvrni elementi (servo motor i relejni modul) promjene svoj poloaj, a ta je
promjena potvrena zvunim i svjetlosnim signalom.
27
Slika 26. Poruka o otkljuavanju vrata Slika 27. Poruka Vrata su otkljuana!
Nakon to se vrata otkljuaju i otvore, korisniku se nude dvije opcije. Prva opcija slui za
zakljuavanje vrata, a druga opcija je za ulazak u glavni izbornik.
Slika 29. Poruka o zakljuavanju vrata Slika 30. Poruka Vrata su zakljuana!
Prilikom pritiska na znak # uz ispunjen uvjet, vrata se zakljuavaju kao u sluaju ranije, bez
ispisa poruka na zaslon LCD-a. Izvrni elementi promjene poloaj te se prikazuje sljedea poruka
na zaslonu LCD-a.
28
Slika 32. Poruka o stanju vrata
Poruka na slici 32 ukazuje da vrata nisu zatvorena. Ukoliko se vrata zatvore, tipkalo alje
potvrdni signal mikrokontroleru te se nastavlja proces zakljuavanja elektronike brave.
Drugi korak glavnog izbornika omoguuje korisniku promjenu PIN-a. Prilikom promjene PIN-
a korisnik mora znati i unijeti trenutni (stari) PIN.
Ukoliko korisnik unese pogrean stari PIN, pojavljuje se poruka na LCD zaslonu te se trai
ponovni upis starog PIN-a.
Slika 34. Poruka o pogrenom PIN-u Slik 35. Poruka za unos starog PIN-a
Ukoliko korisnik unese toan stari PIN, nudi mu se unos novog PIN-a. Kada je unos novog
PIN-a gotov pojavljuje se poruka i zvuni signal.
Nakon uspjene promjene PIN-a, korisniku se omoguuje otkljuavanje putem novog PIN-a.
Stari PIN vie ne vrijedi te nije mogue otkljuavanje ako se unese.
29
Arduino istovremeno vri komunikaciju s raunalom putem USB komunikacijskog porta.
Potrebno je unijeti u labelu Komunikacijski port: ime porta s kojim se izvrava komunikacija
(npr. COM4). Nakon to se unese naziv porta, pritiskom na tipku Pokreni ili Enter pokree se
komunikacija izmeu Arduina i raunala. Poruka koja se ispisuje za svaku promjenu sadri datum,
vrijeme i opis dogaaja. Prekid komunikacije vri se pritiskom na tipku Zaustavi ili izlazom iz
aplikacije (slika 37).
Podaci koji se prikazuju na zaslonu aplikacije imaju istovremenu pohranu u tekst datoteku.
Adresa datoteke je prethodno definirana unutar programskog koda te nije mogua izmjena adrese
pohrane podataka. Tekst datoteka sadrava iste podatke koji se ispisuju na zaslon aplikacije uz
povijest ispisanih dogaaja.
30
7. Blok dijagram Arduino elektronike brave
Kod prvog pokretanja vri se inicijalizacija poetnih stanja te uslijedi prikaz izbornika koji
korisniku nudi dvije opcije. Odabir prve opcije, opcije za otkljuavanje brave od korisnika trai
unos PIN-a. Ako je PIN toan izvrni elementi otkljuaju bravu to omoguava ulaz. Nakon ulaska
pojavljuje se podizbornik koji takoer nudi dvije opcije. Opcija * slui za zakljuavanje brave,
a opcija # slui za ulazak u glavni izbornik. U oba sluaja je uvjet da su vrata zatvorena, a ako
nisu nee doi do sljedeeg koraka tako dugo dok se ne zatvore. Druga opcija glavnog izbornika
je opcija promjene PIN-a, a njenim odabirom se od korisnika najprije trai unos starog PIN-a te
ako je toan onda unos novog PIN-a. Ukoliko je izvrena i potvrena promjena PIN-a omoguuje
se unos PIN-a i otkljuavanje brave.
31
8. Elektronika shema spajanja na Atmega328P mikrokontroler
Ukoliko bi bilo potrebno realizirati maketu kao gotov proizvod, shema povezivanja
mikrokontrolera ATmega328P s elektronikim elementima izgledala bi kao na slici 40.
Komunikacija izmeu mikrokontrolera i I2C pretvaraa koji je ranije objanjen vri se slanjem 8
bitnog signala kojeg I2C pretvara obrauje i alje na zaslon LCD-a. Kontrolirani rad servo
motora vri se PWM regulacijom, tj. Arduino alje uzastopnu promjenu digitalnog signala (0/1)
32
na upravljaki pin servo motora. Brzina slanja impulsa odreena je pauzama unutar for petlje koja
ja ranije objanjena. Sigurnosno otkljuavanje/zakljuavanje vri se slanjem digitalnog signala na
upravljaki pin relejnog modula. Tipkovnica komunicira s Arduinom slanjem digitalnog podatka
duljine 8 bita, 4 bita za redove i 4 bita za stupce. Ovisno o kombinaciji logikih 0 i 1 Arduino
raspoznaje koja tipka je pritisnuta. Tipkalo komunicira s Arduinom preko digitalnih impulsa koji
ovise o stanju preklopke. Ugradnjom pullup otpornika realizirana je obrnuta logika. Ukoliko bi
se realiziralo bez pullup-a (klasini spoj elementa) mikrokontroler nebi reagirao na stanje
logike nule. Radom zvunice upravlja se na istom principu kao radom servo motora.
33
9. Zakljuak
Sustav elektronike brave je sve prisutniji iz razloga osiguranja imovine. Elektronika brava
korisniku nudi razne mogunosti koje su ranije bile opisane, a jedna od mogunosti je naknadna
nadogradnja.
Arduino UNO razvojna platforma je cijenom prihvatljiva i prua mnoge mogunosti. U sluaju
da nam specifikacije Arduina UNO nisu odgovarajue, postoje i novije verzije razvojne platforme
Arduina koje rade sa veim brojem pinova. Programiranje rada mikrokontrolera se vri u
besplatnom programskom suelju Arduino IDE koje nam omoguuje implementaciju raznih
knjinica. Knjinice se mogu pronai bilo gdje na internetu, a takoer postoje i razni forumi gdje
ljudi dijele svoje knjinice i radove uz koje je mogue puno nauiti. Kljune rijei knjinice su
jednostavne, a programski kod je baziran na programskom jeziku C. Vrijedno je napomenuti da
Arduino razvojna platforma i sklopovi koji se realiziraju za istu u Hrvatskoj imaju sve veu
primjenu.
Nakon nabave svih potrebnih elektronikih elemenata za realizaciju Arduino elektronike
brave te realiziranja elektronike sheme bilo je potrebno spajanje istih na testnoj ploici. Kada je
sve bilo spojeno i provjereno slijedila je realizacija programskog koda. Na temelju koritenih
elektronikih elemenata u programski kod su se ukljuile knjinice. Uslijedilo je definiranje
varijabli i njihovih poetnih stanja te elemenata pomou kljunih rijei pojedine knjinice.
Koritenjem definiranih varijabli i inicijalnih rijei pojedine knjinice pisane su funkcije za svaki
element, a ukoliko je bilo mogue istovremeno se izvrilo testiranje na testnoj ploici. Kada su svi
programski kodovi pojedinih funkcija bili napisani uslijedilo je testiranje i korekcija programskog
koda, da bi sustav radio to efikasnije. Programsko suelje Arduino IDE sadri opciju Serial
Monitor koja se koristila za testiranje serijske komunikacije putem USB komunikacijskog porta
s osobnim raunalom. Nakon to je uspjeno uspostavljena komunikacija slijedilo je stvaranje
aplikacije u Microsoft Visual Studio 2015 kao to je opisano u radu.
Princip rada sustava elektronike brave prikazan je maketom. Naravno, maketa sadrava
osnovne funkcije elektronike brave, koje je kasnije radi potrebe mogue nadograditi. Jedno od
bitnih nadogradnji je povezivanje internetom, kreiranjem neke aplikacije preko koje je mogue
praenje koritenja samog sustava. Prilikom prvog pokretanja sustava vri se inicijalizacija te
nakon toga dolazi glavni izbornik koji je prikazan na zaslonu LCD-a. Preko tipkovnice biraju se
opcije koje nam elektronika brava nudi. Prilikom odabira navedene opcije, unosom traenog,
mijenja se poloaj izvrnih elemenata te je svaka promjena obiljeena zvunim ili svjetlosnim
34
signalom. Prilikom rada Arduino vri komunikaciju s USB portom raunala te se podaci ispisuju
i spremaju u tekst datoteku.
Realizacijom sustava Arduino elektronike brave prikazano je da brava sadri samo osnovne
funkcije. Nadogradnja potrebnim funkcijama kao to je trajno spremanje PIN-a ili povezivanje s
drugim sustavima je mogua. Jedno od ideja mogla bi biti npr. kreiranje mobilne aplikacije koja
vri komunikaciju s Arduino UNO i biljei trenutna stanja elektronike brave uz mogunost
istovremenog itanja istih na mobilnom ureaju.
35
10. Literatura
[1] http://www.dhresource.com/0x0s/f2-albu-g2-M00-16-33-
rBVaG1UnXPSAahPYAAmZA1r_J3s656.jpg/assa-abloy-digi-weatherproof-digital-
electronic.jpg (dostupno 12.2.2016.)
[2] http://cms.sag.dvs.net/upload/DS_Varianten_Gastzimmer.jpg (dostupno 12.2.2016.)
[3] https://rapidnfc.com/blog/72/the_difference_between_nfc_and_rfid_explained
(dostupno 12.2.2016.)
[4] https://en.wikipedia.org/wiki/Personal_identification_number (dostupno 25.2.2016.)
[5] https://en.wikipedia.org/wiki/Security_token (dostupno 25.2.2016.)
[6] http://www.technovelgy.com/ct/Technology-Article.asp?ArtNum=12 (dostupno 24.2.2016.)
[7] https://www.arduino.cc/en/Main/ArduinoBoardUno (dostupno 12.2.2016.)
[8] https://www.arduino.cc/en/uploads/Main/ArduinoUno_R3_Front_450px.jpg
(dostupno 13.2.2016.)
[9] http://www.hobbyking.com/hobbyking/store/catalog/9549.jpg (dostupno 11.2.2016.)
[10] https://e-
radionica.com/media/catalog/product/cache/5/image/9df78eab33525d08d6e5fb8d27136e95/d/s/d
sc_4752.jpg (dostupno 14.2.2016.)
[11] http://modtronix.com/images/detailed/1/mod-lcdi2c-bb1.jpg (dostupno 14.2.2016.)
[12] http://www.allaboutsensors.com/image/cache/data/4x4%20matrix-500x500.JPG
(dostupno 15.2.2016.)
[13] https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx
(dostupno 24.2.2016.)
[14] https://img.fasttechcdn.com/121/1219302/1219302-1.jpg (dostupno 15.2.2016.)
[15] http://fritzing.org/home/ (dostupno 13.2.2016)
[16]http://www.electroschematics.com/wp-content/uploads/2014/11/arduino-uno-r3-
schematic.png (dostupno 13.2.2016.)
36
11. Prilozi
PRILOG 1 : ELEKTRONIKA SHEMA ARDUINO UNO (REV 3) [16]
37
PRILOG 2 : ELEKTRONIKA SHEMA ARDUINO ELEKTRONIKE BRAVE
38
PRILOG 3 : PROGRAMSKI KOD ARDUINO
// Zavrni rad //
// Goran Horvat //
// # Arduino Electronic Door Lock # //
// definiranje tipkovnice
const byte rows = 4;
const byte cols = 4;
char keys[rows][cols] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
39
char password[5] = "1234";
char tempP[5];
int tempPI = 0;
int tempPI2 = 0;
// kreiranje tipkovnice
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows,
cols);
Serial.begin(9600);
delay(200);
lcd.begin();
lcd.backlight();
myservo.attach(12);
myservo.write(0);
pinMode(buzzer, OUTPUT);
pinMode(sensor, INPUT_PULLUP);
pinMode(relay, OUTPUT);
digitalWrite(relay, LOW);
checkSensor();
displayCodeEntryScreen();
}
int l;
40
char key = keypad.getKey();
checkSensor();
delay(100);
if (int(key) != 0) {
lcd.setCursor(10, 1);
lcd.print(" ");
lcd.setCursor(10, 1);
tempP[tempPI] = key;
tempPI++;
if (tempPI > 3) {
tempPI = 0;
if (checkP()) {
unlockDoor();
delay(2000);
menu1();
}
else {
invalidCode();
}
}
}
if (key) {
switch (key) {
case '*':
41
checkSensor();
while (flag == 0) {
clearScreen();
lcd.setCursor(4, 0);
lcd.print("Najprije");
lcd.setCursor(0, 1);
lcd.print("zatvorite vrata!");
delay(1000);
clearScreen();
checkSensor();
delay(100);
}
tempPI = 0;
lockDoor();
flag = 1;
break;
case '#':
while (flag == 0) {
clearScreen();
lcd.setCursor(4, 0);
lcd.print("Najprije");
lcd.setCursor(0, 1);
lcd.print("zatvorite vrata!");
delay(1000);
clearScreen();
checkSensor();
delay(100);
}
lockDoor1();
delay(500);
lcd.setCursor(10, 1);
lcd.print(" ");
lcd.setCursor(10, 1);
menurun = false;
break;
}
}
42
}
tempP[tempPI] = key;
tempPI++;
if (tempPI > 3) {
tempPI = 0;
if (checkP()) {
done = true;
SetNewPassword();
}
else {
tempPI = 0;
invalidCode();
ChangePassword();
}
43
}
}
}
clearScreen();
delay(500);
lcd.setCursor(0, 0);
lcd.print("PIN promijenjen!");
ring_bell();
delay(75);
ring_bell();
delay(750);
loginPage();
}
tempP[tempPI2] = key;
44
tempPI2++;
if (tempPI2 > 3) {
tempPI2 = 0;
for (int i = 0; i < 4; i++)
{
password[i] = tempP[i];
}
done = true;
}
}
}
Serial.print("Generiran je novi PIN: ");
Serial.println(password);
}
45
}
}
// funkcija otkljucavanja
void unlockDoor() {
clearScreen();
lcd.setCursor(3, 0);
lcd.print("Vrata se");
lcd.setCursor(0, 1);
lcd.print("otkljucavaju.");
delay(500);
lcd.setCursor(13, 1);
lcd.print(".");
delay(500);
lcd.setCursor(14, 1);
lcd.print(".");
myservo.write(90);
delay(500);
ring_bell();
digitalWrite(relay, HIGH);
clearScreen();
lcd.setCursor(4, 0);
lcd.print("Vrata su");
lcd.setCursor(2, 1);
lcd.print("otkljucana!");
Serial.println("Vrata su otkljucana i otvorena.");
cup++;
delay(1000);
Serial.print("Ovo je ");
46
Serial.print(cup);
Serial.println(". ulazak");
delay(1000);
}
// funkcija zakljucavanja
void lockDoor() {
clearScreen();
lcd.setCursor(3, 0);
lcd.print("Vrata se");
lcd.setCursor(1, 1);
lcd.print("zakljucavaju.");
delay(500);
lcd.setCursor(14, 1);
lcd.print(".");
delay(100);
lcd.setCursor(15, 1);
lcd.print(".");
delay(100);
clearScreen();
digitalWrite(relay, LOW);
delay(100);
myservo.write(0);
delay(100);
ring_bell();
lcd.setCursor(4, 0);
lcd.print("Vrata su");
lcd.setCursor(2, 1);
lcd.print("zakljucana!");
Serial.println("Vrata su zatvorena i zakljucana");
cdown++;
delay(1000);
flag = 0;
Serial.print("Ovo je ");
Serial.print(cdown);
Serial.println(". izlazak");
loginPage();
}
47
// 2. funkcija zakljucavanja u slucaju da vrata nisu zatvorena
void lockDoor1() {
delay(100);
clearScreen();
digitalWrite(relay, LOW);
delay(100);
myservo.write(0);
delay(100);
ring_bell();
delay(100);
flag = 0;
}
48
}
if (key == '2') {
clearScreen();
ChangePassword();
menurun = true;
tempPI = 0;
}
}
49
PRILOG 4 : PROGRAMSKI KOD C#
using System;
using System.Windows.Forms;
using System.IO.Ports;
namespace Goran_Horvat_Zavrsni_rad_ErrorList
{
public partial class Form1 : Form
{
private SerialPort myport;
private DateTime datetime;
private string in_data;
public Form1()
{
InitializeComponent();
}
private void start_button_Click(object sender, EventArgs e)
{
InitializePort();
}
try
{
myport.Open();
data_tab.Text = "";
}
in_data = myport.ReadLine();
this.Invoke(new EventHandler(displaydata_event));
50
private void displaydata_event(object sender, EventArgs e)
{
datetime = DateTime.Now;
string time = datetime.ToString("dd/MM/yyyy\tHH:mm:ss");
data_tab.AppendText(time + "\t\t\t" + in_data + "\n\n");
try
{
string pathfile = @"C:\Users\Gogo\Desktop\DATA\";
string filename = "Lista_dogadaja.txt";
System.IO.File.AppendAllText(pathfile + filename, time
+ "\t\t\t" + in_data + "\n\n");
}
catch (Exception ex2)
{
MessageBox.Show(ex2.Message, "Error");
}
}
}
}
}
}
51
Sveuilite
Sjever
IZJAVA O AUTORSTVU
I
SUGLASNOST ZA JAVNU OBJAVU
Zavrni/diplomski rad iskljuivo je autorsko djelo studenta koji je isti izradio te student odgovara za
istinitost, izvornost i ispravnost teksta rada. U radu se ne smiju koristiti dijelovi tuih radova (knjiga,
lanaka, doktorskih disertacija, magistarskih radova, izvora s interneta, i drugih izvora) bez navoenja
izvora i autora navedenih radova. Svi dijelovi tuih radova moraju biti pravilno navedeni i citirani.
Dijelovi tuih radova koji nisu pravilno citirani, smatraju se plagijatom, odnosno nezakonitim
prisvajanjem tueg znanstvenog ili strunoga rada. Sukladno navedenom studenti su duni potpisati
izjavu o autorstvu rada.
Goran Horvat
________________________
Ja, Goran Horvat neopozivo izjavljujem da sam suglasan s javnom objavom zavrnog rada
pod naslovom Arduino elektronika brava iji sam autor.
Goran Horvat
________________________