20
Darko Šaponja 0036428755 Dokument je namijenjen studentima elektrotehnike Potrebno je predznanje ugradbenih računalnih sustava, komunikacijskih protokola i programskog jezika C Opisuje sustav čitanja bar koda i njegovog pohranjivanja u bazu pomoću web aplikacije SEMINARSKI RAD - SPVP 18. lipanj 2010

Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Darko Šaponja

0036428755

Dokument je namijenjen studentima

elektrotehnike

Potrebno je predznanje ugradbenih

računalnih sustava, komunikacijskih

protokola i programskog jezika C

Opisuje sustav čitanja bar koda i

njegovog pohranjivanja u bazu

pomoću web aplikacije

SEMINARSKI RAD - SPVP

18. lipanj 2010

Page 2: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

2

Sažetak

U radu je predstavljeno rješenje evidencije namirnica u ostavi pomoću

bar koda. Pojašnjeno je što je to bar kod, koje informacije sadrži, standard zapisa koji se koristi i način na koji se čita pomoću bar kod

čitača. TakoĎer je ostvarena veza izmeĎu bar kod čitača i Arduina.

Obrazložen je razlog odabira RS-232 protokola i definiranje postavki bar

kod čitača. Ostvarena je i komunikacija Arduina s Internet aplikacijom za ažuriranje baze podataka namirnica u ostavi putem http protokola. U radu

je priložen i programski kod za Arduino koji omogućuje navedenu

funkcionalnost sustava.

Sadržaj

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

2. EAN BAR KOD................................................................................................. 4

1.1. Načelo rada bar kod čitača ........................................................................ 6

3. SPECIFIKACIJE I ARHITEKTURA SUSTAVA .......................................................... 7

4. IZVEDBA SUSTAVA ......................................................................................... 8

1.2. Bar kod čitač QuickScan QD 2100 .............................................................. 8

1.3. Spajanje bar kod čitača na Arduino ...........................................................11

1.4. Komunikacija s Web aplikacijom................................................................13

1.5. Odabir ulaza ili izlaza namirnica iz ostave ...................................................13

5. PROGRAMSKA PODRŠKA ZA MIKROKONTROLER ................................................14

6. FOTOGRAFIJE SUSTAVA..................................................................................17

7. ZAKLJUČAK ...................................................................................................18

8. LITERATURA ..................................................................................................19

9. POJMOVNIK ..................................................................................................20

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: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

3

1. Uvod

Svakodnevno svjedočimo iznimno brzom napretku tehnologije i

razvoju novih sustava. Cilj tog napretka je čovjeku olakšati, produžiti i po

mogućnosti uljepšati život. Jedna od osnovnih i najbitnijih ljudskih potreba

je hrana. Osim što je nužna za život, hrana velikom broju ljudi pruža zadovoljstvo. No isto tako prehrana izravno utječe na ljudsko zdravlje.

Očito je da ukoliko želimo živjeti zdravo i uživati u blagodatima hrane

moramo voditi brigu o prehrambenim proizvodima u našem kućanstvu.

Svi znamo koliko naporno može biti svakodnevno razmišljati o tome što imamo u kućnoj ostavi hrane, a što nam nedostaje za pripremu obroka.

Ukoliko u to uključimo razmišljanje o sastojcima pojedinog proizvoda, u

svrhu zdravije prehrane, voditi brigu o hrani zaista postaje zamorno te

počinjemo zanemarivati odreĎene namirnice u prehrani. Frustracije koje

uzrokuje zaboravljeni jogurt na dnu hladnjaka nije potrebno ni spominjati. Da bi se čovjek riješio briga o količini namirnica u ostavi, njihovoj

kvaliteti, roku trajanja i sastojcima potrebno je osmisliti sustav brige o

hrani. Sustav koji će se umjesto nas brinuti o namirnicama, sastavljati

popis za kupovinu, automatski istu izvršavati, brinuti o roku trajanja proizvoda, sugerirati nam namirnice koje su zdrave za nas te pratiti unos

potrebnih tvari u organizam. Osnovni dio tog sustava je praćenje količine

namirnica u ostavi, kako bi se omogućile i preostale, naprednije, funkcije

sustava. U okviru ovog projekta realizirati će se praćenje količine namirnica u

ostavi pomoću bar koda. Ovaj projekt dio je većeg sustava, sustava brige

o hrani. U izradi sustava brige o hrani još sudjeluju kolege Pero Krivić s

projektom „Mjerni ureĎaj za evidenciju količine prehrambenih namirnica“ i

Oliver Marić s projektom „Aplikacija za ažuriranje podataka o hrani putem HTTP protokola“.

Konkretni zadatak ovog projekta je detektirati bar kod svakog

proizvoda koji se unosi ili iznosi iz ostave i putem http protokola ažurirati

bazu podataka kojoj se pristupa pomoću Internet aplikacije. Svrha projekta je olakšati ukućanima ažuriranje baze namirnica u

ostavi i generiranje popisa za kupovinu.

Page 4: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

4

2. EAN Bar kod

Bar kod je broj pretvoren u smisleni niz tamnih linija i svijetlih

meĎuprostora koji omogućavaju elektroničkoj opremi da očita informaciju

o proizvodu. Bar kod se kao simbol tiska ili direktno na ambalažu ili na

naljepnicu i tako identificirani proizvod odlazi u distribucijsku mrežu.

EAN sustav je jedinstveni meĎunarodni sustav šifriranja,

označavanja i identifikacije. Nastao je kao europski sustav (European Article Numbering), no prihvaćen od velikog broja država ubrzo postaje

svjetski sustav. EAN oznaka jedinstvena je u svijetu i njeno pravilno

korištenje onemogućuje dodjelu iste oznake različitim proizvodima.

Struktura EAN koda sastoji se od grupe brojeva koji sadrže podatak o zemlji porijekla robe, proizvoĎaču i samom proizvodu.

U standardnom EAN 13 kodu uz dvanaest znamenki, trinaesta znamenka je kontrolna znamenka. Izračunava se modulo 10 algoritmom iz

prvih dvanaest i provjerava ispravnu strukturu prethodnih znamenki.

Algoritam za izračun kontrolne znamenke je:

1. Zbrojiti znamenke na parnim mjestima: 2, 4, 6,…

2. Pomnožiti rezultat s tri

3. Zbrojiti znamenke na neparnim mjestima: 1, 3, 5,…

4. Zbrojiti rezultat iz koraka 2 i 3

Tražena znamenka je najmanji broj koji pribrojen rezultatu iz koraka 4

daje višekratnik broja 10.

Svaki EAN bar kod sastoji se od graničnih linija na lijevoj i desnoj

strani od samog bar koda, te obaveznih tihih zona (bijeli prostor sa svake strane).

Tablica 1: Prikaz znamenki u EAN 13 bar kodu

Slika 1: Primjer EAN 13 bar koda

EAN 13 struktura bar koda (12+1) Kontrolna znamenka

N1N2N3N4N5N6N7N8N9N10N11N12 N13

Page 5: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

5

EAN 8 bar kod dodjeljuje se onim proizvodima koji su premali da bi na njih fizički stao EAN 13 bar kod. Za njegovu dodjelu potrebno je uputiti

poseban zahtjev s idejnim rješenjem ambalaže budućeg proizvoda. EAN 8

bar kod ima iste standarde i strukturu kao 13 bar kod. Razlika je što ima samo 8 znamenaka i njegov je kapacitet u EAN sustavu ograničen.

Slika 2: Primjer EAN 8 bar koda

Svako poduzeće koje želi svoje proizvode označavati EAN kodom

treba ovisno o asortimanu koje želi kodirati, od nacionalne organizacije (u

Hrvatskoj je to EAN CROATIA) tražiti EAN kod odreĎenog kapaciteta (100,

1000, 1000 ili 100000 različitih vrsta proizvoda). Početni dio koda je fiksno dodijeljen od strane nacionalne organizacije i sadrži zemlju

podrijetla i šifru proizvoĎača.

Slika 3: EAN 13 bar kod

Ako je u Hrvatskoj proizvoĎaču dodijeljen bar kod kapaciteta do sto

vrsta proizvoda rješenje o dodjeli sadrži EAN 13 kod strukture

3851234567xxK. Dio koda 3851234567 dodjeljuje EAN CROATIA i on se ni

u kojem slučaju ne smije mijenjati, jer bi to narušilo EAN sustav. 385 u dodijeljenoj šifri je oznaka Hrvatske. 1234567 je šifra poduzeća kojem je

dodijeljen bar kod. Pozicije u kodu označene s xx stoje na raspolaganju

poduzeću da pomoću njih kodira svoje proizvode. Poduzeće može

slobodno kodirati svoje proizvode unutar zadanog kapaciteta uz uvjet da svaki proizvod mora imati različiti kod.

Page 6: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

6

Kod EAN 8 koda prve tri znamenke bar koda označavaju zemlju

proizvoĎača. Sljedeće 4 znamenke označavaju kod proizvoda koji EAN organizacija dodjeljuje izravno odgovarajućem proizvodu, bez

proizvoĎačevog prefiksa. Posljednja osma znamenka je kontrolna

znamenka.

1.1. Načelo rada bar kod čitača

Prilikom čitanja bar koda tamne linije apsorbiraju svjetlost iz čitača

dok svijetli meĎuprostori reflektiraju tu svjetlost. Fotoćelija u čitaču prima reflektiranu svjetlost i pretvara ju u električni signal. Na ovaj način čitač

stvara signal niske logičke razine za meĎuprostore i signal visoke logičke

razine za linije. Trajanje električnog signala odreĎuje širok element

nasuprot uskom. Ovaj signal dekoder u čitaču dekodira u znakove koje bar kod predstavlja. Dekodirani podaci šalju se računalu u uobičajenom

formatu podataka (ASCII).

Page 7: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

7

3. Specifikacije i arhitektura sustava

Cilj ovog projekta je izraditi sustav koji će omogućiti evidenciju

namirnica u ostavi pomoću bar koda.

Zadaća sustava je ispravno očitati bar kod proizvoda i pohraniti ga u bazu podataka kojoj se pristupa putem web aplikacije. Dakle potrebno je

ostvariti jednosmjernu komunikaciju od bar kod čitača do web aplikacije.

Jedan od tehničkih zahtijeva je izvesti zadani sustav bez korištenja osobnog računala kako bi se izbjeglo njegovo postavljanje u ostavu. U

tom slučaju, od dostupnih resursa, jedino se pomoću Arduina može

ostvariti zadaća sustava. Nakon odabira komponenti sustava potrebno je odrediti komunikacijski protokol meĎu njima.

U ovom projektu koristi se bar kod čitač QuickScan QD 2100 proizvoĎača Datalogic čije su specifikacije dane u sljedećem poglavlju.

Navedeni bar kod čitač podržava komunikaciju putem četiri sučelja: USB,

RS-232, IBM 46xx i tipkovnični (AT, PS/2,..). Iako je dostupni bar kod

čitač opremljen kabelom za USB protokol Arduino nije USB host, te je zbog toga izmeĎu bar kod čitača i Arduina odabrana komunikacija putem

RS-232. Podaci se prenose asinkrono (8 bita), brzinom od 9600 bps, bez

handshaking-a i provjere pariteta.

Sljedeća veza koju je potrebno uspostaviti je veza izmeĎu Arduina i baze podatka odnosno web aplikacije. To je ostvareno putem HTTP

protokola.

Cjelokupna arhitektura sustava s naznačenim sklopovljem i komunikacijom meĎu pojedinim podsustavima prikazana je slikom 4.

HTTP

RS-232

Arduino

Bar kod

čitač

Web

aplikacija

Slika 4: Arhitektura sustava

Page 8: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

8

4. Izvedba sustava

Prilikom izrade sustava korišteni su sljedeći sklopovi:

Bar kod čitač QuickScan QD 2100

Arduino Duemilanove

Arduino Ethernet Shield MAX 232

Navedeni sklopovi, osim bar kod čitača, korišteni su u okviru

prošlogodišnjeg projekta „Inteligentna kuća“ u sklopu predmeta Sustavi za praćenje i voĎenje procesa, te su njihove karakteristike navedene u

sklopu dokumentacija navedenog projekta. Iz tog razloga u ovom će se

radu pozornost posvetiti bar kod čitaču.

1.2. Bar kod čitač QuickScan QD 2100

Kao što je navedeno u prethodnom poglavlju za realizaciju projekta

koristi se bar kod čitač QuickScan QD 2100 proizvoĎača Datalogic.

TakoĎer je navedeno da bar kod čitač s Arduinom komunicira putem RS-

232. Kako bi se to omogućilo bar kod je potrebno ispravno spojiti na Arduino, te definirati parametre komunikacije. Bar kod čitač se spaja

putem 10 pinskog RJ-45 konektora.

Slika 5: Konektor bar kod čitača

Page 9: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

9

Napon napajanja bar kod čitača kreće se od 4 do 14 V. Nazivna

struja čitača iznosi 340 mA pri naponu napajanja od 5V. Kako Arduino na

svojim izlazima može dati maksimalno 40 mA, potrebno je zasebno

napajanje za bar kod čitač. Kako ne bi bilo potrebno kupovati napajanje za realizaciju ovog projekta čitač se napaja iz USB priključka osobnog

računala.

Osim ispravnog spajanja bar kod čitača na Arduino, za ispravnu

komunikaciju potrebno je definirati protokol kojim se komunicira, brzinu prijenosa podataka, broj bitova koji se prenose, provjeru pariteta i

protokol za uspostavu komunikacije. Navedene stavke u bar kod čitaču

definiraju se čitanjem bar koda koji definira proizvoĎač.

Protokol kojim se komunicira, u ovom slučaju RS-232, odreĎuje se čitanjem sljedećeg bar koda.

Slika 6: Odabir RS-232

Nakon odabranog protokola potrebno je definirati brzinu prijenosa, u

ovom slučaju 9600 bps. Prilikom odabira brzine prijenosa, a i svih

preostalih parametara komunikacije potrebno je prvo očitati bar koda koji definira koji se parametar mijenja, a zatim očitati bar kod koji definira taj

parametar. Nakon definiranja parametra potrebno je ponovno očitati kod

za ulaz/izlaz iz načina rada za definiranje parametra prijenosa.

Slika 7: Bar kod za promjenu brzine prijnosa

Slika 8: Bar kod za odabir brzine prijenosa od 9600 bps

Page 10: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

10

Nakon definirane brzine prijenosa potrebno je definirati broj bitova

koji se prenosi, u ovom slučaju osam bitova.

Slika 9: Bar kod za promjenu broja bitova

Slika 10: Bar kod za odabir osam bitova za prijnos

Zatim je potrebno definirati broj stop bitova, u ovom slučaju jedan.

Slika 11: Bar koda za promjenu broja stop bitova

Slika 12: Bar kod za odabir jednog stop bita

Odabir provjere pariteta, u ovom projektu ne koristi se provjera

pariteta

Slika 13: Bar kod za odabir provjere pariteta

Slika 14: Bar kod za odabir prijenosa bez provjere pariteta

Page 11: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

11

Još je potrebno definirati rukovanje (handshaking) prilikom

uspostave komunikacije. U ovom projektu handshaking se ne koristi.

Korišteni bar kod čitač nema način rada koji omogućava rad bez

handshaking-a, no postoji način rada pri kojem bar kod čitač postavlja RTS, ali ignorira CTS. Odabirom tog načina i jednostavnim ignoriranjem

RTS-a sa strane Arduina dobivamo komunikaciju bez handshaking-a.

Slika 15: Bar kod za definiranje handshaking-a

Slika 16: Bar kod za odabir komunikacije bez handshaking-a

1.3. Spajanje bar kod čitača na Arduino

Pri spajanju bar kod čitača na Arduino prije svega je potrebno

obratiti pozornost na naponske razine. Naponske razine koje se koriste prilikom RS-232 komunikacije kreću se u rasponu od -12V do +12V.

Digitalni pinovi na Arduinu rade s naponima od 0V do 5V. Iz navedenog se

vidi da je naponske razine potrebno prilagoditi.

Za prilagodbu naponskih razina koristi se MAX 232 pločica. Ona s jedne strane prima 12 voltne signale s DB9 serijskog priključka i spušta

ih na razinu od maksimalno 5V potrebnu za slanje prema Arduinu. U

suprotnom smjeru podiže naponsku razinu.

Vod sa pina 6 (TX), 10-pinskog RJ-45 konektora spojenog na bar

kod čitač, dovodi se na pin 3 muškog DB-9 konektora. Vodovi napajanja bar kod čitača, pin 7 (VCC) i pin 4 (GND), spajaju se na vodove napajanja

USB kabela. Muški DB-9 konektor spaja se na MAX 232 pločicu. Pin RX s

MAX 232 pločice spaja se na digitalni ulaz 0 (RX) Arduina. Napajanje za

MAX 232 dovodi se s Arduina, priključci 5V i GND. Pinovi 1 (RTS), 5 (RX) i 10 (CTS) bar kod čitača ne spajaju se na Arduino je se ne koriste u ovoj

aplikaciji.

Page 12: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

12

Slika 17: Spajanje bar kod čitača na Arduino

Page 13: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

13

1.4. Komunikacija s Web aplikacijom

Da bi se omogućila komunikacija Arduina s web aplikacijom za

ažuriranje baze podataka potrebno je dodati Arduino Ethernet Shield.

Slika 18: Arduino mikrokontroler s Ethernet Shield-om

Komunikacija Arduina s web aplikacijom ostvarena je http

protokolom. Bar kod čitač se na Ethernet Shield spaja na način opisan u

prethodnom poglavlju.

1.5. Odabir ulaza ili izlaza namirnica iz ostave

Za svaki proizvod potrebno je definirati unosi li se ili iznosi iz ostave,

kako bi se ispravno ažurirala baza podataka. U ovom projektu to je

riješeno pomoću preklopke i svjetleće diode. Uključena svjetleća dioda

označava da se proizvod iznosi iz ostave. Ukoliko je dioda isključena znači

da želimo proizvod unijeti u ostavu te će se sukladno tome nakon očitanja bar koda broj tog proizvoda u bazi povećati.

Zajednički izvod preklopke spaja se na digitalni ulaz 3

mikrokontrolera. Od preostala dva izvoda jedan se spaja na masu (GND),

a drugi na napajanje (5V).

Page 14: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

14

5. Programska podrška za mikrokontroler

Kao što je navedeno u uvodnom poglavlju ovaj sustav je dio sustava

za brigu o hrani. S obzirom da zasebno sustav za evidenciju namirnica

pomoću bar koda nema značajniju funkcionalnost u nastavku se prilaže

programska podrška za cjelokupni sustav brige o hrani. Više o tome kako u sustav integrirati vagu ili nešto o aplikaciji za ažuriranje baze podataka

pogledati u dokumentacijama Pere Krivića i Olivera Marića.

#include <avr/interrupt.h>

#include <avr/io.h>

#include <Ethernet.h>

#include <string.h>

#include <stdlib.h>

#define BARCODE_SIZE 13 // definianje širine bar kod riječi

#define INIT_TIMER_COUNT 6 // definicije za timer

#define RESET_TIMER2 TCNT2 = INIT_TIMER_COUNT

// ****** deklaracija varijabli za komunikaciju ********************

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

byte ip[] = { 161, 53, 64, 134 };

byte gw[] = {161, 53, 64, 1};

byte server[] = { 195, 78, 33, 2 }; // My webpage IP

byte subnet[] = { 255, 255, 255, 0 };

//****** deklaracija barkod varijabli ********************************

char barcode[BARCODE_SIZE];

char barcode_key[] = "bar-kod=";

char barcode_keyval[8+BARCODE_SIZE+1] = {0};//bar-kod=$barcode

//***** deklaracija varijabli za masu i za timer **********************

const int analogInPin = 0

int sensorValue = 0; // value read from the sensor

float u0=0, ulaz_pojacala;

float masa=0;

float pomak=1.8,u_most;

float k=0.14; // osjetljivost senzora ---> u_most=k*masa+pomak

int int_counter = 0;

//***** deklaracija varijabli za ulaz/izlaz ***************************

int ledpin = 5;

int testpin=3;

Page 15: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

15

//***** funkcija za računanje mase proizvoda i njeno slanje na web ****

ISR(TIMER2_OVF_vect) {

RESET_TIMER2;

int_counter += 1;

if (int_counter == 5000) {

sei();

int_counter = 0;

sensorValue = analogRead(analogInPin);

// pretvori ga u ekvivalentnu vrijednost 0 - 5 V:

u0=(float)sensorValue*5/1024; // Volts

ulaz_pojacala=u0*10; // milivolts

u_most=ulaz_pojacala-pomak;

if (u_most<0)

{

u_most=0;

}

masa=(u_most)/k; // osjetljivost = 0.14

// funkcija koja šalje podatak o masi

// pretpostavljamo da je bar kod tog proizvida nepromijenjiv

Ethernet.begin(mac, ip, gw, subnet);

Client client(server, 80);

delay(1000);

client.connect();

//slanje http zahtjeva

client.print("GEThttp://www.beata.hr/azuriranje.php?barkod=1234123412345&masa=");

client.print(masa);

Serial.println(masa);

client.println(" HTTP/1.1");

client.println("Host: www.beata.hr");

client.println();

client.flush();

client.stop();

}

};

void setup()

{

Serial.begin(9600); // setup serijske veze

pinMode(testpin, INPUT);

pinMode(ledpin, OUTPUT);

// ******* setup timera *****

//Timer2 Settings: Timer Prescaler /64,

TCCR2A |= (1<<CS22); // turn on CS22 bit

TCCR2A &= ~((1<<CS21) | (1<<CS20)); // turn off CS21 and CS20 bits

// Use normal mode

TCCR2A &= ~((1<<WGM21) | (1<<WGM20)); // turn off WGM21 and WGM20 bits

// Use internal clock - external clock not used in Arduino

ASSR |= (0<<AS2);

TIMSK2 |= (1<<TOIE2) | (0<<OCIE2A); //Timer2 Overflow Interrupt Enable

RESET_TIMER2;

sei();

}

Page 16: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

16

Fotografije sustava

Literaturu i reference se navodi u posebnom poglavlju na način prikazan u ovom primjeru.

Primjer citiranja knjige koja ima do tri autora Error! Reference source not found.. Primjer citiranja knjige koja ima četiri i više autora

Error! Reference source not found.. Primjer citiranja knjige koja nema

podatak o autoru Error! Reference source not found.. Primjer citiranja poglavlja u knjizi 0. Primjer citiranja rada u časopisu Error! Reference

source not found.. Primjer citiranja rada u zborniku Error! Reference

source not found.. Primjer citiranja rada na Internetu s podacima o

autoru i naslovu rada Error! Reference source not found.. Primjer

citiranja teksta na Internetu bez informacije o autoru i naslovu Error! Reference source not found.. Primjer citiranja mrežnih stranica Error!

Reference source not found..

Unutar glavnog teksta referenca na literaturu ugraĎuje se automatski korištenjem naredbe INSERT->REFERENCE->CROSS-

REFERENCE s postavljenim parametrima „Numbered Item“ i „Paragraph

number“ te odabirom navedene literature čiju referencu želimo umetnuti, kako je prikazano u gornjem odlomku.

Reference se navode abecednim redoslijedom po prezimenu prvog navedenog autora.

void loop()

{

int i = 0;

while(true)

{

if(digitalRead(testpin)==LOW){

digitalWrite(ledpin, LOW);

}

else{

digitalWrite(ledpin, HIGH);

}

if(i == BARCODE_SIZE) break;

if(Serial.available() > 0) barcode[i++]=Serial.read();

}

send_to_webserver();

Serial.flush();

}

//***** funkcija za slanje bar koda na web *****

int send_to_webserver(){

Ethernet.begin(mac, ip, gw, subnet);

Client client(server, 80);

client.connect();

delay(1000); //This one keeps it from hanging

//formatiranje podatka za slanje

strcpy(barcode_keyval, barcode_key);

strncpy(barcode_keyval + strlen(barcode_key), barcode, BARCODE_SIZE);

//slanje http zahtjeva

client.print("GET http://www.beata.hr/azuriranje.php?");

client.print(barcode_keyval);

if(digitalRead(testpin)==LOW) { //ako 0 proizvod ulazi, LED ugasena

client.print("&ulaz=1");

}

if(digitalRead(testpin)==HIGH){ client.print("&izlaz=1"); //ako 1 proizvod ilazi, LED upaljena

}

client.println(" HTTP/1.1");

client.println("Host: www.beata.hr");

client.println();

client.flush();

client.stop();

return 0;

}

Page 17: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

17

6. Fotografije sustava

Slika 19: Sustav za evidenciju namirnica u ostavi

Slika 20:Sustav za evidenciju namirnica u ostavi za vrijeme mjerenja

Page 18: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

18

7. Zaključak

U radu je ostvareno ažuriranje baze podataka o količini namirnica u

ostavi pomoću bar koda. Projekt se u konačnici sastoji od dvije cjeline.

Čitanja bar koda s proizvoda i komunikacije bar kod čitača s Arduinom te

ažuriranja baze podataka pomoću Internet aplikacije. Time je omogućen uvid u količinu namirnica u ostavi, s bilo kojeg mjesta koji ima pristup

Internetu. Samim time znatno je olakšan odlazak u kupovinu ili narudžba

namirnica putem Interneta.

Nedostatak sustava je ne mogućnost automatskog dodavanja nove namirnice u sustav. Razlog tome je činjenica što se iz bar koda može

pročitati o kojem se proizvodu radi, jedino ako nam proizvoĎač tog

proizvoda ili prodavaonica u kojoj smo kupili proizvod da uvid u svoju

bazu podataka. Drugi način je izraditi svoju bazu proizvoda, za što

naravno treba vremena. Treći način je izdavanje digitalnog računa iz kojeg bi sustav onda mogao preuzeti podatke o proizvodu koji se unosi u

skladište.

Daljnji razvoj sustava moguć je upravo u tom smjeru, odnosno u

osmišljavanju načina pomoću kojeg bi bilo moguće bilo koju namirnicu unijeti u sustav bez potrebe ručnog upisa naziva namirnice.

Page 19: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

19

8. Literatura

[1] „Arduino Duemilanove“, URL:

http://arduino.cc/en/Main/ArduinoBoardDuemilanove (2010-5-15)

[2] „Arduino Ethernet Shield“, URL: http://arduino.cc/en/Main/ArduinoEthernetShield (2010-5-15)

[3] „Arduino Software“, URL: http://arduino.cc/en/Main/Software (2010-5-15)

[4] Poslovni forum, EAN bar kod. URL: http://www.poslovniforum.hr/tp/barcode.asp (2010-5-15)

[5] Kristina, Bashota; Vedran Koruga. BAR KOD. Seminarski rad – Podatkovni

višemedijski prijenos i računalne mreže. Siječanj 2008.

[6] Bar kod. URL: http://www.makebarcode.com/info/info.html

[7] DATALOGIC, QuickScan QD2100 General Purpose Corded Handheld Linear Imager Bar Code Reader, Product Reference Guide. URL:

https://easeofaccess.scanning.datalogic.com/public/marketlit/Send.aspx?file=R44-2933A

Page 20: Darko Šaponja SEMINARSKI RAD 0036428755studenti.zesoi.fer.hr/pametne-kuce/Studenti/2010/dsaponja/SPVP... · Ovaj seminarski rad je izraĎen u okviru predmeta „Sustavi za praćenje

Evidencija namirnica pomoću bar koda

20

9. Pojmovnik

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

handshaking U modemskoj komunikaciji

označava postupak

uspostave i provjere

komunikacijskih parametara

prije početka slanja

podataka. Odrenuje se

prema CTS,RTS, DTR, DSR i

DCD signalima

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

RJ-45 konektor Standardni utikač za UTP kabel

http://hr.wikipedia.org/wiki/RJ-45

UTP Neoklopljena upletena parica http://en.wikipedia.org/wiki/Twisted_pair

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

HTTP protokol za komunikaciju izmeĎu poslužitelja (servera) i klijenta

http://hr.wikipedia.org/wiki/HTTP

bps Bita u sekundi http://en.wikipedia.org/wiki/Bits_per_second