______________________________________________________________________________________________________________________________________________________… [305874]

UNIVERSITATEA “AUREL VLAICU” DIN ARAD

FACULTATEA DE INGINERIE

DOMENIUL / PROGRAMUL DE STUDIU: AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ

FORMA DE ÎNVĂȚĂMÂNT: CU FRECVENȚĂ

LUCRARE DE LICENȚĂ

ÎNDRUMĂTORȘTIINȚIFIC

Conf.dr.ing. Valentina E. Bălaș

ABSOLVENT: [anonimizat]

2014

UNIVERSITATEA “AUREL VLAICU” DIN ARAD

FACULTATEA DE INGINERIE

DOMENIUL / PROGRAMUL DE STUDIU: AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ

FORMA DE ÎNVĂȚĂMÂNT: CU FRECVENȚĂ

SISTEM DE

CONTROL ACCES & SERVER GSM

ÎNDRUMĂTOR ȘTIINȚIFIC

Conf.dr.ing. Valentina E. Bălaș

ABSOLVENT: [anonimizat]

2014

UNIVERSITATEA “AUREL VLAICU” DIN ARAD APROBAT

FACULTATEA DE … DECAN

DOMENIUL / PROGRAMUL DE STUDIU

Nr. __________ din ___________

VIZAT

Îndrumător științific

DATE PERSONALE ALE CANDIDAT: [anonimizat]:__________________________________________________________

Numele anterior:_____________________________________________________

Prenumele: _________________________________________________________

Sexul: (M/F)

Data și locul nașterii:

Ziua / luna / anul __________ / __________ / __________

Locul (localitate, județ) _________________________________

Prenumele părinților:

Tata: _____________________________________

Mama:____________________________________

Domiciliul permanent: (str., nr.,localitate, județ, [anonimizat], e-mail):

___________________________________________________________________

Sunt absolvent(ă) promoția: ______ / ______

Forma de învățământ pe care am absolvit-o este: ([anonimizat], ID), cu taxă/fără taxă

Locul de muncă (dacă e cazul):__________________________________________

Solicit înscrierea la examenul de …………………………. (licență, diplomă, disertație):

Sesiunea ________________________________ anul _______________________

Lucrarea de ……………………………(licență, diplomă, disertație) pe care o susțin are următorul titlu:

______________________________________________________________________________________________________________________________________________________________________________________________________________________________

Îndrumător științific:

___________________________________________________________________

12. Menționez că susțin examenul de …………………………………. finalizare a studiilor (pentru prima oară, a [anonimizat]) _______________________________ [anonimizat]. 143 din Legea 1/2011. [anonimizat], [anonimizat], conform art. 146 din Legea 1/2011.

SEMNĂTURA

_________________________________

REFERAT

PRIVIND LUCRAREA DE LICENȚĂ

A

ABSOLVENT: [anonimizat] / AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ

PROMOȚIA 2014

Titlul lucrării: Sistem de control acces & server GSM

Structura lucrării:

Lucrarea este structurată pe cinci capitole urmate de Concluzii și Bibliografie:

Cap. 1 Introducere in automatică

Cap. 2 Informatică – servere

Cap. 3 RFID

Cap. 4 Structura hardware

Cap. 5 Structura software

Aprecieri asupra conținutului lucrării de diplomă (disertație), [anonimizat], complexitate, actualitate, deficiențe

Subiectul abordat este de mare actualitate și urmărește realizarea unui sistem de acces care să permita intrarea intr-o zona utilizand tehnologia RFID.

Absolventul a realizat cu succes un studiu complet despre partea de hard, cea de soft și RFID și a implementat cu succes un astfel de sistem folosind o placa ARDUINO.

Lucrarea este bine organizata din punct de vedere logic, prezinta succesiv toate etapele proiectarii si realizarii, cuprinzând aplicații originale realizate de către absolvent.

Aprecieri asupra lucrării (se va menționa: numărul titlurilor bibliografice consultate, frecvența notelor de subsol, calitatea și actualitatea surselor consultate; modul în care absolventul a prelucrat informațiile din sursele bibliografice, contribuții originale)

Lucrarea cuprinde 11 titluri bibiliografice. Informațiile din lista bibliografică sunt de data recentă, de calitate și bine evidențiate pe parcursul lucrării. Acestea cuprind noțiuni despre sisteme utilizate în automatica, senzori, servere, RFID, etc.

Concluzii (valoarea lucrării elaborate de absolvent, relevanța studiului întreprins, competențele absolventului, consecvența și seriozitatea de care a dat dovadă absolventul pe parcursul documentării și elaborării lucrării)

Absolventul Adrian Lucian Gorgan dă dovadă de o foarte bună cunoaștere a domeniului și a depus un efort considerabil atat fizic cat și material în realizarea lucrării. Ritmul de elaborare a lucrarii a fost foarte bun, absolventul dovedind multă seriozitate și profesionalism. Aplicația realizată este funcțională.

Redactarea lucrării respectă normele de redactare.

Nu există suspiciuni de realizare prin fraudă a prezentei lucrări. Lucrarea are un grad de originalitate extrem de ridicat, bazându-se în totalitate pe contribuția proprie a absolventului

Consider că lucrarea îndeplinește condițiile pentru susținere în sesiunea de Examen de licență din Sesiunea Iulie 2014.

Recomand comisiei de disertație să accepte susținerea lucrării în sesiunea iulie 2014

și acordarea notei 10(zece), având în vedere gradul ridicat de complexitate și originalitate.

Arad,

Iulie 2014 Îndrumător științific

Prof.Dr.Ing. Valentina Emilia Bălaș

Introducere in automatică.

Tehnologii utilizate pentru realizarea unei automatizări.

Pentru realizarea unei automatizari se pot utiliza mai multe solutii:

– utilizarea unei tehnologii cablate, care presupune folosirea releelor electrice, pneumatice sau hidraulice

– utilizarea circuitelor integrate universale sau specializate pentru realizarea unor sisteme dedicate.

– utilizarea automatelor programabile AP

– utilizarea calculatoarelor de proces.

Domeniul de utilizare a fiecareia dintre solutii depinde de complexitatea automatizarii si de numarul de echipamente identice. In figura 1 este prezentat locul fiecarei solutii in realizarea unei automatizari.

Analizând figura rezultă următoarele:

tehnologia cablată este utilizată pentru probleme în care complexitatea automatizării este mică

automatele programabile se utilizează în cazul în care complexitatea automatizării este medie și trebuie adăugat, acolo unde se cere flexibilitate.

pentru un grad de complexitate ridicat se utilizează calculatoarele de proces CP

utilizarea AP și CP se recomandă dacă numărul de echipamente identice care urmează să fie realizate nu depășește 50.

pentru un număr mai mare de 50 de echipamente identice se recomandă dezvoltarea unei cercetării proprii care să permită elaborarea unor module specializate pentru tipul de automatizare și utilizarea lor că echipamente înglobate.

Există o suprapunere parțială a domeniilor de utilizare a soluțiilor de automatizare. De exemplu realizarea unor automate programabile performate permite folosirea lor în domeniul în care se folosesc cu aceleași rezultate calculatoarele de proces.

Noțiuni de condiționare a semnalelor provenite din proces

Realizarea conducerii unui proces cu ajutorul unui calculator se poate face prin colectarea de informații de stare din proces. Apoi pe calculator se intocmeste un program de conducere si se transmit spre elementele de execuție a comenzi.

Informațiile de la proces sunt furnizate de traductoare. Traductoarele sunt elemente care transformă mărimea fizică provenită din proces într-un semnal electric, tensiune sau curent, pe care modulele calculatoarelor de proces le pot prelua și transforma în valori numerice. Aceste valori pot fi folosite pentru realizarea programelor de conducere. De exemplu senzorii termoelectrici de temperaturaconvertesc temperatura într-un semnal analogic pe care un modul de intrări analogice îl poate prelua. Deși toate traductoarele, indiferent de mărimea care o măsoară, trebuie să furnizeze mărimea fizica in semnal electric, sunt cazuri în care acestea nu dau direct un semnal de tensiune sau curent și transformarea trebuie realizata prin intermediul unui hardware separat, inclus în traductor sau într-o structura separata pe care o vom denumi în continuare Sistem de condiționare a semnalelor (SCS) provenite din proces.

SCS este realizat ca o structura separată, care este situată între calculatorul de proces și proces. Principalele funcții ale unui SCS sunt:

Adaptarea mecanică la normele industriale de cablare;

Adaptarea electrică a semnalelor (amplificarea-atenuarea, prelucrări matematice simple, conversii de la mărimi ne-electrice la tensiune/curent etc.);

Izolarea galvanică si protecția împotriva supratensiunilor și supracurentior;

Filtrarea semnalelor;

Funcții auxiliare de alimentare a traductoarelor și elementelor de execuție.

Transformarea rezistență-tensiune

Rt depinde liniar de 𝜶.
U sursa de tensiune auxiliară.
Calculatorul nu poate prelua decât tensiune, deci trebuie folosită o sursă auxiliară de tensiune și un divizor care să dea o tensiune de ieșire Ue dependentă de 𝜶. Dependență este neliniară dar nu deranjează prea tare pentru că acum sistemele de calcul au vitează mare. Puntea – soluția care se adopta pentru măsurările de efort, greutate etc. Majoritatea firmele nu oferă rezistențe variabile cu efortul ci punți de rezistente (Fig. 3). Cele mai multe firme oferă traductoare cu AO legate ca în figura 2.

Ue este direct proportional cu mărimea care se doreste a fi măsurata.

Transformarea tensiune-curent

De foarte multe ori este nevoie să se aducă mărimea de la proces de la distanțe relativ mari. Aceasta duce la influențarea preciziei de măsurare. Din acest motiv se folosește o transformare tensiune-curent (Fig. 4), astfel încât să se transporte curent și nu tensiune. Dacă legătură este complet izolată atunci pierderea de curent între punctele de colectare și calculatoarele de proces este minimă, curentul Is nu depinde decât de Ui.

Înainte de a comanda un traductor de la o fabrică trebuie cunoscută distanță dintre traductor și calculatorul de proces deoarece fabrica poate oferii ambele structuri descrise mai sus.

Conversia tensiune-frecvență

Convertoarele tensiune-frecvență (Fig. 6) se utilizează pentru conversia semnalelor analogice in semnale numerice. Un avantaj important este că informația de frecvența se poate transmite la distanță, ca un semnal imun la perturbatii, care poate trece prin izolatoare galvanice (inductive sau optice) fără a fi afectat de erori de frecvență.

Când tensiunea de ieșire a integratorului depășește pragul comparatorului acesta declanșează monostabilul, care va închide contactul k un timp t1. Închiderea contactului k are ca efect introducerea în circuit a unui generator de curent Ir, care provoacă o creștere a tensiunii de ieșire. La deschiderea întreruptorului k tensiunea de ieșire B va reprezenta integrala cu semn schimbat a tensiunii de intrare rezultând o scădere. După un timp TU tensiunea de ieșire va depăși pragul comparatorului și fenomenul se repetă. De obicei capacitatea C este fixă, iar valorile rezistenței de intrare R și a condensatorului de la circuitul basculant monostabil se recomandă să fie alese astfel încât t1 să reprezinte 25% din TU.

Filtrarea semnalelor

O funcție de circuit este raportul dintre transformata Laplace a unui răspuns și transformată Laplace a unei excitații.

Filtrarea – analogică – rapidă cu AO, R, C. Dezavantaj – deriva componentelor – îmbătrînire uzură.

Filtrarea – Numerică – folosită cu convertori, este lentă inițial, datorită vitezei de lucru a calculatoarelor, se pierde legătura cu procesul. Mai nou există calculatoare foarte rapide, convertoare flash. Are avantajul că rămâne valabilă, dacă este bine făcută, până la distrugerea sistemului ce realizează filtrarea.

Proprietățile funcțiilor de circuit: O funcție de circuit este raportul a două polinoame în s

O funcție de circuit este o funcție reală în s, adică ia valori reale pentru valori reale ale lui s;

O funcție de circuit are proprietatea de reflexie

Polii unei funcții de circuit sunt în semiplanul stâng

Polii unei funcții de circuit H(-s) sunt în semiplanul drept

Modulul și faza unei funcții de circuit

Un semnal discret (digital) se obține din memorarea valorilor unui semnal continuu în anumite momente de timp. Intervalul dintre două eșantioane se numește perioadă de eșantionare T. Valorile memorate se numesc eșantioane, iar procesul de memorare se numește discretizare.

Realizarea hardware a unui filtru:

Izolare galvanică

Izolarea galvanica a unui semnal numeric cu leduri si tranzistori.

Des folosita la frecvente relativ mici. Pentru frecventa mare se folosesc structuri cu modulare/demodulare.

Izolare galvanica prin modulare/demodulare

Amplificatorul instrumental

Convertoare analog numerice

Se clasifica dupa – viteza si precizie

convertor cu conversie intermediară

convertor cu dublă integrare

convertor cu registru de aproximații succesive – este cel mai folosit din cauza vitezei

convertor flash. – este practic instaneu, viteză de procesare a semnalului electromagnetic e infinită și este viteză de lucru a convertoarelor flash.

Convertoare numeric-analogice

Sunt de 2 tipuri:

cu R ponderate

cu rezistențe de tip R, 2R.

Însumarea unor tensiuni în funcție de modul în care este înscris în registrul de date.

Dezavantaj – trebuie construite rezistențe ponderate.Dacă nu sunt exacte au influență asupra ieșirii.

Un CAN nu are întârzieri decât cele datorate propagării semnalelor electrice, adică foarte mici. Din momentul încărcării registrului de date contactele se deschid sau se închid.
Cu rezistente de tip R, 2R (Fig. 10).

Avantaj – se realizează doar 2 tipuri de rezistențe. Acțiunea unui sumator stă la baza obținerii tensiunii analogice. Toate impedanțele echivalente sunt 2R

Traductoare incrementale de rotație

Determinarea sensului de rotație

Cele 2 semnale cand se rotesc in sensul sagetii.

Cele 2 semnale cand se rotesc in celalalt sens.

Daca rotația are loc în sensul I, atunci conjuncția între derivata semnalului B și semnalul A realizează setarea bistabilului de sens și numărătorul va număra în sens direct. Dacă rotația are loc în sensul II, atunci conjuncția între derivata semnalului A și semnalul B realizează resetarea bistabilului de sens și numără-torul va număra în sens invers.

Informatică

Server

În tehnologia informației, un server este un program de aplicație care furnizează servicii altor aplicații (numite aplicații client), aflate pe același calculator sau pe calculatoare diferite. De obicei, aplicația server așteaptă conexiuni din partea aplicațiilor client. Se mai numește server și calculatorul pe care rulează una sau mai multe asemenea aplicații. Deseori soluția pentru mari aplicații cu mulți utilizatori se bazează tocmai pe arhitectura client-server, care constă din cel puțin 2 aplicații (și deseori cel puțin 2 computere).

Serverele au apărut în paralel cu rețelele de calculatoare. Rețelele permit calculatoarelor să comunice unul cu celalalt, iar cu cât rețeaua este mai mare apare nevoia ca un calculator să ia rolul de server care să deservească alte calculatoare (acestea interacționând eventual direct cu utilizatorii umani), care își asumă la rândul lor rolul de client.

Și după apariția serverelor rețelele s-au dezvoltat și au crescut mai departe; în schimb minicomputerele – care erau mai eficiente decât cele personale dar mai puțin eficiente decât mainframe-urile – au dispărut sau au fost "absorbite" de unele din aceste servere (au preluat rolul de server).

Apariția rețelelor cu calculatoare personale, a Internetului și răspândirea utilizatorilor acestor servicii au dat un impuls puternic dezvoltării serverelor.

Descriere

Serverele ocupă un loc important în tehnologia informaticii, la fel ca și minicomputerele în trecut, care însă au fost înlocuite. Un server este o aplicație pe computer, uneori chiar un computer întreg, care operează continuu în rețeaua sa și așteaptă solicitări din partea altor calculatoare din rețea. Serverele pot fi folosite simultan și pentru alte scopuri, dar când nevoile o cer, ele pot fi rezervate exclusiv pentru funcția de server. De exemplu, un calculator se poate folosi într-un birou simultan pentru două scopuri, ca stație de lucru și ca server pentru celelalte calculatoare din birou. Cuvântul server provine din cuvântul englez to serve – a servi: calculatorul server poate în principiu deservi întreaga rețea de calculatoare clienți, pentru a asigura accesul la toată paleta de forme de conectare și servicii. Deseori unul și același computer poate juca ambele roluri, și de server, și de client, în același timp. Numele de server este un alt termen pentru Host computer – computer gazdă, spre deosebire de alte elemente "inteligente" din rețea cum ar fi routerele și switch-urile.

În zilele noastre serverele se aseamănă fizic cu celelalte calculatoare uzuale, deși configurația hardware este deseori optimizată pentru funcționarea lor ca servere. Multe componente de hardware sunt identice cu cele ce le găsim într-un calculator personal. Totuși serverele rulează sisteme de operare și programe specializate care sunt foarte diferite față de cele folosite pe calculatoare personale și stațiile de lucru.

Serverele nu trebuiesc confundate cu calculatoarele de tip mainframe, care centralizează informații și procesează activitățile firmelor mari. Un mainframe poate în principiu să funcționeze simultan și ca server, sau chiar ca mai multe servere virtuale, pe lângă toate celelalte activități. Multe companii mari folosesc ambele tipuri de calculatoare, anume și mainframe, și servere. Acestea din urmă sunt de obicei mici, multe și descentralizate.

Tipuri de servere

Se întâlnesc foarte multe tipuri de servere. Cele mai multe aplicații client/server sunt aplicații care se înscriu în jurul unei baze de date. Cele mai importante tipuri de server sunt, serverele :

de baze de date

fișiere

de calcul

de interogare

O caracteristică majoră a majorității serverelor este că ele rulează pe sisteme de operare multitasking. În caz contrar partea de multitasking trebuie să fie asigurată de aplicația server pentru a permite conectarea mai multor utilizatori simultani.

Câteva din avantajele folosirii aplicațiilor client server:

Este un concept care permite stațiilor să fie atât server cât și clienți (în același timp) și să combine aceste avantaje.Este foarte flexibil și deschis în special când se folosește cu baze de date ce folosesc stocarea unor proceduri de lucru,

Este foarte sigur permițând să se folosească nivele de acces diferite între stația client și locul de unde acesta citește sau cere date. Nu se face un acces direct al datelor ci serverul este cel care are drepturi de citire scriere asupra bazei de date critice, urmând ca rezultatele aplicării cererii trimise de client și aplicate bazei de date să fie trimise către client.

Modificarea părții de server nu necesită întotdeauna modificarea părții de client (mai ales atunci când se folosesc comenzi lansate din consola).

Se folosește puterea de calcul sau interogare a serverului care se presupune că este o mașină puternică (de regulă cu un SO multiprocesor), pentru client nefiind necesare decât niște terminale sau PC-uri modeste care primesc deja un răspuns de cantitate mică.

Permite lucrul “on-line” pe aceeași structura de date a mai multor clienți simultan.

Permite scăderea importanței ca și risc a defectării oricărui client, pentru ca aplicația server poate funcționa mai departe fără acesta (sau fără unul din ei).

La proiectarea unei aplicații client/server trebuie să se țină seama că cele două părți să aibă unul sau mai multe din procesele următoare:

Clientul:

asigură o interfață cu utilizatorul

interpretarea comenzilor

intrare de date

validare de date

corectare erori

Serverul:

răspunde cererilor clientului

poate deservi mai mulți clienți simultan

asigura funcționalități diverse pt. diferite operații

permite “record-locking”

gestionează resursele

În figura 14 se poate vedea cum serverul poate asigura răspunsuri către mai mulți clienți(aplicații client) care au solicitat anumite task-uri.

A Server Handles Multiple Clients

CONCEPTUL CLIENT/SERVER

Client/Server înseamnă multe lucruri pentru mulți oameni. De obicei percepția generală este că aplicația are o porțiune client, ce rulează pe un calculator local, în speță un PC, și o parte de server care rulează pe o stație UNIX sau un mainframe. De obicei aplicațiile client server sunt orientate pe baze de date însă sunt și aplicații care oferă anumite servicii cum sunt:

server WEB

servere email

servere RAS

servere DNS, KCC, și majoritatea serviciilor de pe server.

Servere FTP, NIS etc

COMPONENTELE CLIENT/SERVER

Clientul în modelul client/server este stația de lucru. Acceași stație de lucru dacă este folosită în comun de mai mulți utilizatori în același timp devine server.

Rolul clientului

În modelul client/server, clientul joacă rolul de consumator al serviciilor provenite de la un server. Modelul face o separare clară între funcțiunile bazate pe ideea de servere care furnizează servicii ca urmare a cererilor din partea clienților.

Facilități cum sunt DDE, OLE sau CORBA permit o foarte ușoară comunicare între un server și un client prin tradiționala “cut and paste”.

O stație client folosește un SO (sistem de operare) local pentru a acoperi atât serviciile de baza cât și interfața cu sistemul de operare de rețea.

Serverele de aplicatii

Oferă suportul pentru clienți de a accesa informații. În modelul client/server aceste servicii pot fi oferite pentru o întreagă organizație sau doar pentru o parte a acesteia invocată prin IPC (Interprocess Control). De exemplu, un sistem de salarii poate păstra datele despre angajați pe un server, salariile pe un alt server, iar calculele să se execute pe un al treilea server. Aceste servere pot rula sisteme de operare diferite și pot fi situate la distanță mare unul de altul. Aplicația client invocă aceste servicii fără a considera aceste tehnologii sau de a ști de diferențele fizice geografice între aceste servere.

Configurații “client-server"

Host Computer

La început nu au fost nici un fel de aplicații client-server. Un terminal simplu (dumb) era legat direct de un computer gazdă folosint o linie serială RS232. Terminalul avea doar o tastatură și un ecran. Ecranul avea capabilitatea de a afișa caractere, cursorul se putea adresa, însă setul de caractere se află în ROM. Toate aplicațiile rulau pe un singur host.

Tipul “Two-tier” Client Server

Prima generație de aplicații client server a fost implementată în două părți logice. Acestea aveau și două părți logice de asemenea. Aplicația era formată din două module diferite care rulau pe calculatoare diferite.

Cantitatea de informații vehiculată între client și server determină tipul server-ului “thin” sau “fat”. Modelul “thin” ( subțire) înseamnă că aplicația client nu are o mărime mare și nu ocupă foarte mult din resursele gazdei sale, interacțiunea cu utilizatorul se face printr-un GUI. Aplicațiile client” thin” sunt foarte indicate pe calculatoare mai vechi (486, 386) care nu au o putere mare de calcul sau de altă natură(comparativ cu cerințele de astăzi).

Nivelul mediu (middleware) ilustrata in Fig. 17

Aplicația client la aceste tipuri de aplicații are la baza folosirea unor interfețe via API. Cele mai întâlnite “middleware” sunt foarte generale și se pot folosi pentru aproape orice tip de aplicație. Exemple de “middleware”:

TCP/IP

DCE

NetBIOS

Named pipes

LAN Manager

Dezvoltări specifice de “middleware” sunt un nivel deasupra celor de ordin general. Exemple sunt: ODBC pentru servere baze de date, SNMP pentru servere de email, SSL pentru WEB.

Tipul “Three-Tier” Client/Server

Este implementarea care se poate separa în mai mult de două părți logice. Schematic această este reprezentată grafic în modelul următor:

RFID

Descriere

RFID – Radio Frequency IDentification, este un procedeu de identificare automată a produselor, animalelor și oamenilor, bazat pe radiocomunicații. În principiu, se folosește o etichetă (tag) sau o cartelă (card) a cărei componență esențială este un transponder care conține informații de identificare și care, când este accesată prin unde radio, comunică unei stații de baza numită cititor RFID (RFID reader) informațiile respective.

Un sistem RFID include două componente esențiale: transponderul și cititorul – Fig. 18, aflate la distanță unul de altul, astfel că legătură se face numai prin unde radio, prin intermediul antenelor. Evident, informațiile sunt codate digital în transponder iar legătura radio este de fapt o transmisie de date.

În prezent, se folosesc pe scară largă mai multe procedee de identificare automată, în esență variante ale procedeelor optic, magnetic și cu contact electric:

codurile de bare (pe etichete), cu citire optică la distanțe xlmm … xlcm, foarte ieftine, cu capacitate de stocare mică (maxim zeci de biți);

cartelele inteligente, cu memorie cu contacte electrice sau cu pelicula magnetică (citire/scriere în câmp magnetic creat de bobine situate la x0,1mm distanță față de pelicula) care pot stoca (16000 … 64000) biți, cu preț mediu și durata de folosire limitată.

Sistemele RFID pot stoca volume mari de date (16 … 64kbiti) și pot fi citite de la distanță de la câțiva cm la zeci de metri. O comparație se poate face după tabelul de mai jos.

Avantajele esențiale ale RFID sunt: volumul foarte mare de date stocabile, distanța mare de citire și viteza mare de citire. Combinate cu scăderea continuă a costurilor.

Tipuri de sisteme RFID

În prezent, diversitate sistemelor RFID este foarte mare, întocmirea unor clasificări exhaustive devenind dificilă. Totuși, există câteva criterii de clasificare unanim acceptate, printre care: modalitatea de alimentare cu energie, modalitatea de transmisie, frecvența de lucru, tipul de cuplaj cu cititorul, volumul de date stocate și altele.

Cu referire la prezentarea schematică din Fig. 18, funcționarea oricărui sistem RFID este astfel.

Pe produs (obiect, persoană, …) există o etichetă sau cartelă conținând un transponder iar într-o locație considerată potrivită există cititorul care emite unde electromagnetice.

Când obiectul ajunge în rază de acțiune a cititorului, transponderul sesizează prezența câmpului emis și răspunde în consecință.

Cititorul identifica răspunsul și colectează/interpretează datele de la transponder.

În continuare, se pot desfășura variate operații, ca de exemplu:

comunicația încetează (situația cea mai simplă);

informația de pe transponder este ștearsă;

are loc un dialog, pentru modificarea / actualizarea datelor din transponder.

Sisteme active și pasive.

Indiferent de modalitate, datele stocate în transponder, sunt citite de către cititor prin intermediul câmpului electromagnetic, ceea ce se poate face numai dacă transponderul – care este până la urmă un circuit electronc mai mult sau mai puțin complex, dispune de o oarecare cantitate de energie. Această energie poate să provină:

de la o baterie proprie – transpondere active

de la câmpul generat de cititor – transpondere pasive.

Deoarece costul unei baterii depășește cu mult costul unui transponder, varianta activă este foarte rar folosită, numai când se impune citirea de la distanțe prea mari (zeci de metri) pentru că energia necesară să fie livrată prin câmp.

În consecință, în toată discuția care urmează, se va face referire numai la sistemele pasive.

Modalitatea de transmisie

Comunicarea dintre transponder și cititor poate fi: duplex, semi-duplex sau secvetiala.

Procedura de comunicarea duplex (full duplex – FDX) și semi-duplex (half duplex – HDX) presupune că transponderul comunica cu cititorul atunci când se află în câmpul de acțiune al cititorului activ. Cu alte cuvinte, de îndată ce este cititorul este activat adică emite unde radio, transponderul comunica cu cititorul. În practică, transmisia de la transponder la cititor se realizează:

prin modularea sarcinii,

prin modularea sarcinii pe subpurtătoare sau

prin emisia de subarmonice sau armonice ale frecvenței cititorului.

Procedura de comunicare secvențială (sequential – SEQ) presupune că cititorul este activat pe intervale de timp scurte, succesive , iar în pauzele de emisie este activ transponderul. Această presupune ca transponderul să acumuleze suficientă energie pentru menținerea emisiei în lipsa câmpului de la cititor. De regulă, pentru menținerea activă a transponderului în pauzele de emisie ale cititorului sunt necesare baterii.

Indiferent de modalitatea de comunicare, toate sistemele RFID, cu excepția celor de 1bit, necesită acumularea unei cantități oarecare de energie din aceea emisă de cititor.

În cazul sistemelor de 1bit, singură informație transmisă cititorului este prezența sau absența transponerului în zona de acțiune a cititorului. Că urmare, aceste sisteme sunt utilizate numai pentru protecție la furturi de produse, activitate în care sunt foarte eficiente.

Informația stocată și procesată în transponder

După cantitatea și modul de procesare a datelor la transponder, se deosebesc:

Sisteme de capacitate mică (EAS systems – Electronic Article Surveillance systems), care pot stoca volume foarte mici de date – în general câțiva Bytes (de exemplu un număr/cod serial, că și un cod de bare); programarea, modificarea datelor nu este posibilă. Marile avantaje sunt: costul foarte redus, dimensiunile reduse și consumul mic de energie.Între acestea, un loc aparte prin largă utilizare, în ocupă sistemele de 1 bit, simple, foarte ieftine, faorte potrivite pentru asigurarea protecției la furturi, la contorizarea produselor etc.Astfel de transpondere au aceleași utilizări ca și etichetele cu coduri de bare, asigurând în plus protecția la furt, un avantaj foarte important.

Sisteme cu capacitate medie, care pot stoca kBytes în memorii reinscriptibile, de tip:

EEPRM (Electrically Erasable ROM), nu necesită baterie, suportă 105 – 106 reprogramări, consumă multă energie

SRAM (Static RAM), care suportă practic oricâte reprogramări, oricât de frecvent dar necesită baterie – un mare dezavantaj sau

FRAM (Ferro/Ferrimagnetic RAM), care nu necesită baterie, consumă mai puțindecât EEPROM și pot fi reprogramate de 107 – 109 ori.

Sisteme cu capacitate mare, echipate cu microprocesor (microcontroler), memorie cu capacitate mare, variate posibilități de lucru, dintre care deosebit de importante sunt celede a comunica criptat – astfel se asigura un nivel oricât de mare se dorește al siguranței și secretizării comunicației. Din varii motive, aceste sisteme lucrează numai în HF (13,56MHz).

Frecvența de operare a sistemelor RFID

Frecvența și cuplul transponderului cu cititorul sunt principalii parametri care determină raza de acțiune a unui sistem RFID.

În prezent, sistemele RFID folosesc frecvențe de la sub 135kHz (JF, unde lungi), la peste 5,8GHz (EIF, microunde, unde centimetrice).

Cerință dominantă în stabilirea frecventelor de operare ale sistemelor RFID este: funcționarea RFID nu trebuie să perturbe sub nici o formă funcționarea altor sisteme de radiocomunicații.

Această înseamnă de fapt, că sunt accesibile numai frecvențele (benzile) care încă nu fost alocate diverselor utilizări industriale, științifice, de (radio)comunicații etc. În prezent, există o repartiție extrem de complicată a frecventelor pentru o imensă varietate de utilizări. Aceste repartiții se fac pe utilizări, pe regiuni (continente, țări) de către organisme regionale internaționale sub directă supraveghere a UIT (Uniunea Internațională a Telecomunicațiilor). În Europa de această problema se ocupă ETSI (European Technical Standardisation Institute) prin comisiile de specialitate. Apoi, în fiecare țară există organisme specializate pentru alocări de frecvențe. În România de această problemă se ocupă Ministerul Comunicațiilor prin Autoritatea Națională pentru Comunicații în Tehnologia Informației (ANCTI, fosta direcție de Reglementări de Frecvente). Din varii motive, printre care, nu în ultimul rând dotarea destul de precară a unităților de urmărire a încadrării în standarde, în România, în prezent, se aplică practic neschimbate, reglementările Uniunii Europene (partea continentală, incluzând Germania și Franța).

Structura Hardware

Arduino

Arduino este o platformă hardware open source formată dintr-o placă electronică cu un microcontroller. Ceea ce sună mult mai intimidant decât este în realitate: platforma Arduino a fost dezvoltată cu scopul explicit de a usura dezvoltarea proiectelor care necesită componente electronice. Vom explica pas cu pas modalitatea de exploatare a acestei platforme;
Tipuri de module

Tipuri de module

Un proiect bazat pe platforma Arduino consistă din mai multe module conectate între ele. Modulele pot fi categorisite în funcție de diverse criterii; aici le vom structura după funcție. Vom vedea mai jos cum anume se conectează diversele module la platforma de dezvoltare; în această secțiune dorim doar să vă prezentăm tipurile mari de module, ca să vă faceți o idee despre posibilități.

Platforma de dezvoltare — aceasta este placa electronică ce conține microcontroller-ul („creierul”) programabil. Dat fiind că platforma Arduino este open source, sunt disponibile atât platforme Arduino originale, fabricate în Italia, cât și clone compatibile, mai ieftine, fabricate în general în China. Vom vedea mai departe că există mai multe modele de astfel de platforme, modele care diferă atât în ceea ce privește capabilitățile cât și în ceea ce privește dimensiunile fizice. Totuși limbajul de programare, mediul de dezvoltare și interconectarea diverselor module sunt practic identice, indiferent de modelul specific al platformei.

Module de intrare — numite și senzori, acestea sunt module care se conectează la platforma Arduino pentru a trimite date către aceasta (de exemplu butoane, senzori de temperatură, senzori de distanță, potențiometre ș.a.m.d.)

Module de ieșire — acestea sunt module care se conectează la platforma Arduino pentru a permite acesteia să transmită informații către lumea exterioară. Acestea pot fi relee, afișaje, difuzoare ș.a.m.d.

Module de date — modulele de date permit platformei Arduino să comunice direct cu alte dispozitive digitale (inclusiv cu alte module Arduino). Modulele de date pot fi module Ethernet, care permit comunicația prin Internet sau printr-o rețea locală, module radio, care pot comunica cu computere sau alte platforme Arduino, module USB, module GSM și așa mai departe.

Accesorii — acestea nu sunt în general considerate module Arduino, însă sunt o parte uzuală a proiectelor de acest gen. Există tot felul de accesorii, de la soluții de alimentare cu curent electric până la cele mai diverse accesorii.

Conectarea modulelor

În general, un proiect bazat pe platforma Arduino consistă dintr-o platformă Arduino sau compatibilă și mai multe module conectate la aceasta. Dacă vă uitați cu atenție la plăcuța din Fig. 19 veți observa că puteți identifica câteva elemente destul de distincte: un conector USB (cutiuța argintie), o mufă de alimentare (piesa neagră cilindrică de lângă conectorul USB) și o sumedenie de conectori (piesele negre proeminente, cu găurele, dispuse în două rânduri, pe marginea de sus și de jos a plăcii). Toate aceste elemente sunt disponibile, sub o formă sau alta, pe orice placă Arduino sau compatibilă.

Conectorul USB este necesar pentru programarea inițială a microcontrollerului. Prin intermediul acestuia, platforma se conectează la un computer pe care se scrie, se compilează și se încarcă programul dorit. Vom vedea detalii mai jos.

Mufa de alimentare nu vă interesează pentru moment — platforma Arduino se alimentează prin portul USB, atâta vreme cât consumul de curent este rezonabil.

Pinii disponibili

Conectorii propriu-ziși sunt partea cu adevărat interesantă a întregii povești. Conectorii de pe platformele de dezvoltare Arduino sunt conectori mamă; deși puțin impropriu în aceste circumstanțe, vom numi fiecare conector individual, pin. Ei bine, pinii de pe placa de dezvoltare au următoarele funcții, conform etichetelor tipărite pe placă:

GND — ground, masa, polul negativ al circuitului, tensiune 0 volți

5V — 5V, pin care prezintă o tensiune de 5 volți față de GND, indiferent de tensiunea de alimentare.
N.B.: în funcție de modelul platformei de dezvoltare, tensiunea de lucru poate fi 5V sau 3,3V; pentru plăcile care funcționează la 3,3V, toate mențiunile explicite despre tensiunea de 5V din acest articol se vor citi 3,3V.

VCC — tensiunea de intrare. Platforma Arduino se alimentează fie prin conectorul USB, fie prin mufa de alimentare; acest pin prezintă tensiunea de alimentare neschimbată, indiferent că este 3,3V, 5V, 9V, 12V sau orice altceva.

Digital 0, Digital 1, …, Digital N — pini de intrare/ieșire digitală. Se decide din program dacă pinul X va fi folosit pentru intrare sau pentru ieșire. Pinii digitali au doar două stări: 1 sau 0 (logic), HIGH sau LOW (notația în cod), 5V sau 0V (tensiunea propriu-zisă). Numărul concret de pini disponibili depinde de modelul specific al platformei de dezvoltare; în general, numărul lor este de 14 sau 54.

Analog 0, Analog 1, …, Analog N — pini exclusiv de intrare analogică. Aceștia pot citi valori discrete între 0 și 1023, corespunzătoare în mod proporțional tensiunii de intrare (între 0 și 5V). Din nou, numărul de pini diferă de la placă la placă; în general numărul lor este de 6 sau 16.

În afară de acești pini, mai există câțiva pini cu funcții speciale; în plus, unii dintre pinii de deasupra au funcții auxiliare suplimentare.

Pe aproape toate platformele Arduino și compatibile pinul digital 13 corespunde și unui LED lipit direct pe placă; acesta este un martor util pentru experimentele dumneavoastră în timpul dezvoltării.

Pinii marcați PWM pe placă — aceștia pot fi folosiți pentru a trimite semnal digital modulat, util de exemplu pentru a simula intensitatea luminoasă variabilă a unui LED

Aproape orice modul extern are nevoie de cel puțin trei fire de conectare: două pentru alimentare (GND și 5V) și cel puțin unul pentru semnal (înspre sau dinspre modul, în funcție de natura acestuia).

ATENȚIE! Unele module funcționează la 3,3V, motiv pentru care unele platforme Arduino lucrează la 3,3V în mod nativ. Dacă alimentați un modul de 3,3V la de pinul de 5V al unei platforme Arduino aveți toate șansele să ardeți ireversibil modulul respectiv!

Un exemplu ușor de înțeles este un buton simplu, pe care îl puteți conecta la platforma Arduino în felul următor:

Evident, scopul acestui modul este să notifice aplicația în privința stării butonului (apăsat sau neapăsat), în așa fel încât să se ia o acțiune sau alta. La fel de evident, un singur buton nu ar fi suficient pentru a finaliza o aplicație utilă — este nevoie să conectarea mai multor module în mod simultan. Însă deja se folosesc pentru buton pinii GND și 5V de pe placa Arduino este nevoie multiplicarea pinilor 5V și GND. Există mai multe soluții pentru această problemă.

Varianta simplă este achizitionarea unui shield senzor. Acesta se înfige direct în placa Arduino și multiplică pinii de alimentare, ceea ce rezolvă problema dintr-un foc.

O altă variantă, mai dificilă dar necesară în cazul proiectelor mai complexe, este utilizarea unuibreadboard: se înfige capătul unui fir de conectare tată-tată în pinul GND de pe Arduino și celălalt capăt oriunde pe una dintre liniile orizontale albastre de pe breadboard; se înfige un capăt al altui fir în pinul 5V de pe Arduino și celălalt capăt oriunde pe una dintre liniile roșii de pe breadboard. Acum avem GND pe toți pinii de pe linia albastră și 5V pe toți pinii de pe linia roșie care se aleg în pasul anterior.

Ceilalți pini de pe breadboard sunt interconectați pe verticală, de obicei în două bancuri (șanțul orizontal întrerupe conexiunile, împărțind coloanele în două).

Programarea microcontroller-ului

Pentru a programa microcontroller-ul trebuie conectată placa Arduino la un computer pe care este instalat mediul de dezvoltare și driverele necesare. Mediul de dezvoltare este disponibil în mod gratuit pe site-ul producătorului pentru diverse sisteme de operare la adresa http://arduino.cc/en/Main/Software.

Informații pentru utilizatorii care folosesc Microsoft Windows:

Se descarcă aplicația de la adresa de mai sus și se dezarhiveaza într-un director convenabil; în restul documentului vom presupune că s-a dezarhivat în directorul C:\arduino-1.0.

Se conectează placa Arduino la computer printr-un cablu USB; cel puțin un LED ar trebui să se aprindă pe placă.

Dacă se solicită indicarea locației driverului, se indică directorul C:\arduino-1.0\drivers

Se pornește mediul de dezvoltare executând C:\arduino-1.0\arduino.exe

Se indică modelul plăcii în meniul Tools > Board

Se indica portul pe care s-a conectat placa Arduino în meniul Tools> Serial Port (în general este o singură opțiune)

Se alege din meniu exemplul Blink: File > Examples > 1. Basics > Blink

Se incarca programul pe placă: File > Upload

Comunicarea RFID

În diverse aplicații se solicită identificarea automată a persoanelor sau produselor pe baza unor coduri atașate. Cele mai utilizate ssteme de codificare și recunoaștere automată sunt cele pe bază de coduri de bare și respectiv cele de tip RFID. În primul caz codurile sunt marcaje pe suport de hârtie usor de identificat pe cale optică. Marcajele se pot tipări pe o linie sau pe două directii. Codurile sunt formate dintr-un număr limitat de cifre și o dată aplicate nu pot fi modificate. Pentru a fi identificat codul trebuie să fie adus în zona de vizibilitate a cititorului optic.

Mult mai versatile sunt etichetele (tag-urile sau transponderele) de tip RFID care pot fi identificate și uneori chiar modificate prin unde radio. Din punct de vedere principial un tag RFID este un microcircuit dotat cu o antenă radio încorporat într-un suport de plastic, hârtie, etc. Cititorul RFID emite o undă radio care alimentează tag-ul RFID și în același timp solicită codul înscris în tag. În preajma unui cititor, tagul emite o undă radio care conține codul tag-ului respectiv. De obicei codul conține o secvență de lungime predefinită de biți (40 , 64, 96 biti de date). In cazul tag-urilor mai evoluate sunt permise operații de ștergere și rescriere repetate, iar capacitatea de stocare a datelor este semnificativ mai mare.

Astfel de circuite de identificare se pot utiliza pentru evidența automată a miscării produselor sau pentru identificarea persoanelor autorizate să acceseze un anumit perimetru. Există implementări de sisteme de autentificare a persoanelor bazate pe tag-uri RFID ce permit stocarea datelor relevante ale persoanei (date demografice sau informații medicale).

In principiu pentru a construi un cititor RFID sunt necesare următoarele elemente:

o antenă construită sub forma unei bobine (Fig. 21)

un emițător-receptor radio specializat pe standardul RFIF

un circuit “inteligent” pentru interpretarea mesajelor și transmiterea acestora pe cale serială la un calculator; de obicei se folosește un microcontrolor

Tag-urile RFID sau Transpoderele conțin un circuit integrat și o bobină pe post de antenă. Ele pot fi active sau pasive. Cele active conțin propria sursă de energie folosită în păstrarea informației în memorie și comunicare. Cele pasive se bazează pe energia electrică a frecvenței purtătoare a semnalului radio generat de cititor. Acestea conțin o memorie de tip EEPROM pentru a păstra informația în timpul în care transponderul (tag-ul) nu se află în aria unei antene.

În funcție de complexitate tag-urile au drepturi de citire, scriere, protecție cu parolă, criptare, protecție la suprapunerea mai multor tag-uri pe aceeași antena, rescriere multiplă, etc.

Modul GSM

Shield-ul Arduino GSM permite unei plăci Arduino să se conecteze la rețeaua de Internet, să trimită sau să primească mesaje SMS și să realizeze apeluri de voce. Shield-ul este compatibil cu placa Arduino UNO însă pentru plăcile Arduino Mega, Mega ADK și Leonardo sunt necesare câteva modificări minore. Momentan, placă Due nu este compatibilă cu shield-ul.

În final, se conectează alimentatorul de 9V în mufă plăcii Arduino. Atenție ! Nu se recomandă alimentarea shield-ului direct din USB, fără alimentator. Modemul de pe placă shield-ului consumă mult mai mult decât poate să genereze portul USB. Acest lucru poate duce la o funcționare incorectă sau, în cel mai rău caz, la o defecțiune.

Shield-ul GSM este capabil de a trimite și SMS-uri. Sketch-ul de mai jos realizează o conexiune cu rețeaua GSM și transmite un mesaj către un număr care se specifică în program.

#include <GSM.h>

#define PINNUMBER ""

// initialize the library instance

GSM gsmAccess; // include a 'true' parameter for debug enabled

GSM_SMS sms;

// char array of the telephone number to send SMS

// change the number 1-212-555-1212 to a number

// you have access to

char remoteNumber[20]= "9999999999";

// char array of the message

char txtMsg[200]="Salut ! Acesta este un test.";

void setup()

{

// initialize serial communications

Serial.begin(9600);

}

RTC (Real time clock)

Dacă se dorește ca placa Arduino să interacționeze cu noțiunea de timp, atunci este necesar un RTC sau Real Time Clock. RTC-ul este un circuit integrat creat special pentru a menține timpul, adică funcționează exact ca un ceas. În acest mod, placă Arduino nu este obligată să mențină singură timpul, deoarece nu este destinată pentru acest lucru.

În majoritatea situațiilor nu este necesar ca un microcontroller să cunoască timpul. În acest caz este necesar un RTC DS1307, ceas foarte popular care funcționează la o tensiune de 5V împreună cu placă Arduino.

Se va conecta RTC-ul împreună cu placă Arduino, după următorul tabel:

Structura Software

Ideea generală a acestui sistem este de a fi amplasat lângă o ușa, conectat la intranet. În momentul în care cineva dorește deblocarea ușii apropie cardul de acces RFID de acest dispozitiv care va decide dacă acea persoană este sau nu autorizată să intre în acea locație. În cazul în care nu are autorizație pentru acea locație ușa nu se va debloca și personalul de pază va fi avertizat printr-un SMS de intenția neautorizată de a accesa acea zona și id-ul persoanei în cauza.

În componentă software intră următoarele funcționalități:

Înregistrarea de accese în sistem prin TCP/IP

Interogare înregistrări accese

Interogare înregistrări evenimente

Creare de înregistrări în caz de eveniment (scanare RFID detectată)

Decizionare în caz de eveniment (scanare RFID detectată)

Blocarea tuturor acceselor prin TCP/IP

Deblocarea tuturor acceselor în cazul unui incendiu

Toată comunicarea între aceste module se face prin TCP/IP astfel eliminând adaptoare, amplificatoare și alte echipamente costisitoare.

Pentru a trimite o comandă dispozitivului se stabilește o legătură TCP/IP în baza IP-ului și portului de comunicare ales.

La introducerea unui nou utilizator cu codul de acces 123456789 se va trimite comandă în formatul &lt;123456789&gt;. La primirea acestei comenzi dispozitivul va introduce pe cardul microSD la sfârșitul fișierului db.txt codul fără caracterele de control “&lt;” și “&gt;”.

Pentru a verifica ce utilizatori autorizați sunt într-un terminal este suficientă trimiterea caracterului $, și acesta va trimite înapoi o lista cu toate codurile cardurilor RFID.

Pentru returnarea înregistrărilor cu intrări se va trimite caracterul # și în aceiași manieră vom primii toate informațiile din fișierul log.txt localizat pe cardul microSD.

La detectarea unei scanări a cardului RFID (remote frequency identification) se va transmite codul către placă Arduino în format serial, acest cod va fi comparat cu cele existente în fișierul db.txt din cardul microSD. Dacă se găsește acest cod se activează deschiderea ușii, în caz contrar se trimit server-ului GSM informațiile necesare pentru construirea unui SMS ce va fi trimis personalului de pază.

#include <SPI.h>

#include <Ethernet.h>

#include <SD.h>

#include <Wire.h>

#include "RTClib.h"

#define SOP '<'

#define EOP '>'

#define Read '$'

DateTime now;

File rFile;

File wFile;

File logFile;

//char buf[11];

//char rec[12];

String content = "";

String StrTime = "";

RTC_DS1307 rtc;

const int SD_CS = 4;

const int ETH_CS = 10;

bool started = false;

bool ended = false;

bool ToRead = false;

char inData[100];

byte index;

char serData[100];

byte serindex;

// Enter a MAC address, IP address and Portnumber for your Server below.

// The IP address will be dependent on your local network:

byte mac[] = {

0x90, 0xA2, 0xDA, 0x0E, 0xD7, 0x89 };

IPAddress serverIP(10,69,3,149);

int serverPort=14949;

// Initialize the Ethernet server library

// with the IP address and port you want to use

EthernetServer server(serverPort);

void setup()

{

delay( 50 );

Wire.begin();

//rtc.begin();

Serial.begin(9600);

while (!Serial) {

;

}

if (!SD.begin(SD_CS)) {

Serial.println("Card failed, or not present");

return;

}

delay(200);

Serial.println("card initialized.");

// disable w5100 while setting up SD

pinMode(ETH_CS,OUTPUT);

//

//digitalWrite(10,HIGH);

//pinMode(4,OUTPUT);

pinMode(6,OUTPUT);// gnd pt error led

pinMode(7,OUTPUT); // vdd pt error led

digitalWrite(7,LOW);

pinMode(5,OUTPUT); // vdd pt ok led

digitalWrite(5,LOW); // set ok led off

digitalWrite(6,LOW); // set error led off

Ethernet.begin(mac,serverIP);

delay(200);

server.begin();

Serial.println("Server started");//log

BlinkRed(5);

BlinkGreen(5);

Serial.println("Ready");

}

void loop()

{

//////rtc///

//now = rtc.now();

///////////

CheckRFID();

// listen for incoming clients

EthernetClient client = server.available();

if (client) {

Serial.println("connected");

//delay(50); // de sters

String clientMsg ="";

while (client.connected()) {

//–––––––––––––––––––––––––––––––––––-

if(client.available())

{

char inChar = client.read();

//Serial.println("bit de primit");

if(inChar == SOP)

{

Serial.print("<"); //bit start

index = 0;

inData[index] = '\0';

started = true;

ended = false;

}

else if(inChar == EOP)

{

Serial.println(">"); // bit sfarsitcr

ended = true;

break;

}

else if(inChar == Read)

{

Serial.println("comanda de citit");

ToRead = true;

break;

}

else

{

Serial.print(inChar); //bit continut

if(index < 99)

{

inData[index] = inChar;

index++;

inData[index] = '\0';

}

}

if(started && ended)

{

Serial.print("incepe scrisu");

client.println(inData);

Serial.print("inainte de sd.open");

wFile = SD.open("db.txt", FILE_WRITE);

Serial.print("dupa sd.open");

if (wFile) {

Serial.print("in if'");

Serial.print("Writing to db.txt…");

wFile.println(inData);

delay(50);

Serial.println(inData);

wFile.close();

Serial.println("done.");

ToRead = true;

//digitalWrite(SD_CS, HIGH);

//digitalWrite(ETH_CS, LOW);

client.println(inData);

}

else {

// if the file didn't open, print an error:

Serial.println("error opening file");

digitalWrite(7,HIGH);

}

// Reset for the next packet

started = false;

ended = false;

index = 0;

inData[index] = '\0';

}

if (ToRead == true) {

File rFile = SD.open("db.txt");

if (rFile) {

while (rFile.available()) {

client.write(rFile.read());

}

rFile.close();

client.write("\n\nSfarsit fisier");

BlinkGreen(3);

break;

}

else {

Serial.println("error opening db.txt");

}

ToRead = false;

}

}

}

}

}

void CheckRFID()

{

content = "";

char character;

serindex = 0;

serData[serindex] = '\0';

while(Serial.available() > 0) {

character = Serial.read();

serData[serindex] = character;

serindex++;

serData[serindex] = '\0';

}

//Serial.println(serData);

if (content != "") {

Serial.println(serData);

writeLog("continutCodRFID","autorizat");

}

}

void writeLog(String info, String state)

{

Serial.print("incepe scrisu'");

// The end of packet marker arrived. Process the packet

logFile = SD.open("log.txt", FILE_WRITE);

// if the file opened okay, write to it:

if (logFile) {

Serial.println("Writing to log.txt…");

///////timp/////////

// logFile.print(now.year(),DEC);

// logFile.print('/');

// logFile.print(now.month(),DEC);

// logFile.print('/');

// logFile.print(now.day(),DEC);

// logFile.print(' ');

// logFile.print(now.hour(),DEC);

// logFile.print(':');

// logFile.print(now.minute(),DEC);

// logFile.print(':');

// logFile.print(now.second(),DEC);

Serial.print(now.year(), DEC);

Serial.print('/');

Serial.print(now.month(), DEC);

Serial.print('/');

Serial.print(now.day(), DEC);

Serial.print(' ');

Serial.print(now.hour(), DEC);

Serial.print(':');

Serial.print(now.minute(), DEC);

Serial.print(':');

Serial.print(now.second(), DEC);

Serial.println();

logFile.println(": " + info + "–" + state + "\n");

Serial.println("\n" + info + "–" + state);

logFile.close();

Serial.println("done.");

}

else{

Serial.println("log file not opened!");

}

}

void BlinkGreen(int times)

{

digitalWrite(6,LOW);

for(int x=2;x<times;x++)

{

digitalWrite(5,HIGH);

delay(100);

digitalWrite(5,LOW);

delay(100);

}

}

void BlinkRed(int times)

{

digitalWrite(6,LOW);

for(int x=1;x<times;x++)

{

digitalWrite(7,HIGH);

delay(50);

digitalWrite(7,LOW);

delay(50);

}

}

Control acces

Marea majoritate a sistemelor de control acces de pe piață sunt personalizate în funcție de cerințele și nevoile clientului. Din lipsa unui echipament care să înglobeze cerințele necesare s-a recurs la construirea integrală al lui.

Cerințele impuse sunt următoarele:

 Comunicare TCP/IP (configurare de oriunde din rețea prin ethernet)

 Disponibilitate OFFLINE

 Logare activități, scanări (id persoană, timp, &lt;ne&gt;autorizat)

 Alertare prin SMS în caz că se încearcă accesul neautorizat (server GSM)

Pentru a raspunde tuturor necesitatilor am recurs la urmatoare elemente hardware:

Arduino Ethernet

Modul GSM

Modul Ethernet

Cititor RFID

Fig. 2In componenta acestui sistem se afla o placa de dezvoltare Arduino Ethernet. Specificatiile acestei placi sunt urmatoarele si sunt prezentate in figura de mai jos:

Microcontroller ATmega328

Tensiune de alimentare ( recomandata )   7-12V

Tensiune de alimentare ( limita ) 6-20V

Digital I/O Pins 14 (4 PWM output)

SPI 10 – 13

6 pini analogici

Curentul  pe I/O Pin 40 mA

DC Current la 3.3V Pin 50 mA

Flash Memory 32 KB (ATmega328) 0.5 KB folositi pentru bootloader

SRAM 2 KB (ATmega328)

EEPROM 1 KB (ATmega328)

Clock Speed 16 MHz

W5100 TCP/IP Embedded Ethernet Controller

Power Over Ethernet ready Magnetic Jack

Micro SD card

Similar Posts