PROGRAMUL DE STUDII UNIVERSITARE DE LICENȚĂ [625331]
UNIVERSITATEA DIN PITEȘTI
FACULTATEA DE ELECTRONICĂ, COMUNICAȚII ȘI CALCULATOARE
DEPARTAMENTUL ELECTRONICĂ, CALCULATOARE ȘI INGINERIE
ELECTRICĂ
PROGRAMUL DE STUDII UNIVERSITARE DE LICENȚĂ
PROIECT DE DIPLOMĂ
Proiectarea și realizarea unei
parcări inteligente
Absolvent: [anonimizat] 2018
– 2 –
CUPRINS
1. Introducere …………………………………………………………………….. 5
2. Stadiul actual în domeniul parcărilor ……………………… ……….. 6
2.1 Noțiuni introductive în domeniul parcărilor auto
…………… ……………………………………………………. 6
2.2 Diverse tehnici propuse pentru un sistem inteligent de
parcare auto ……………………………………………………………………. 7
2.3 Analiza economică a sistemelor de parcare inteligentă .. 13
3. Prezentarea tehnologiilor utilizate ………………………… 14
3.1. Arduino MEGA2560 ……………………………………………… 14
3.2. RFID …………………………………………………………………….. 20
3.3. Fotorezistorul ……………………………………………………….. 23
4. Proiectarea unei parcări inteligente ……………………… … 24
4.1 Proiectarea Hardware ………………………………… … 24
4.2 Proiectarea Software ………………………………… …. 34
4.3 Descrierea programului încărcat pe A TMega 2560 …… 36
4.4 Descrierea programului de monitorizare a parcări i ….. 58
5. Rezultate experimentale ………………………………………………… 66
6. Concluzie ………………………………………………………………………. 71
Bibilografie ……………………………………………………………………….. 72
– 3 –
Lista figurilor
Fig. 3.1 Placă de dezvoltare Arduino MEGA 2560 ……………………………………… 14
Fig. 3.2 Placă de dezvoltare Arduino MEGA 2560 – vedere față ………………………. 17
Fig. 3.3 Placă de dezvoltare Arduino MEGA 2560 – vedere spate …………………….. 18
Fig. 3.4 Eticheta RFID …………………………………………………………………………………………… 20
Fig. 3. 5 Schema electrică a fotorezistorului …………………………………………….. 23
Fig. 3. 6 Fotorezistor ……………………………………………………………………… 23
Fig. 3. 7 Simboluri fotorezistor …………………………………………………………… 24
Fig. 4.1: Schema bloc a legăturilor componentelor …………………………………… .. 26
Fig. 4.2: Exemplu afișare mesaje 16×2 LCD ……………………………………………. 26
Fig. 4.3: Descrierea pinilor ……………………………………………………………….. 27
Fig. 4.4: Circuitul RC522 ………………………………………………………………… 27
Fig. 4. 5: Descrierea pinilor ……………………………………………………………….. 28
Fig. 4. 6: Senzor prezență mașină ………………………………………………………… 28
Fig. 4.7: Indicator de stare prezență mașină …………………………………………… . 29
Fig. 4.8: Bariera laser …… ……………………………………………………………….. 29
Fig. 4.9: Semnal de tip PWM …………………………………………………………….. 30
Fig. 4.10: Exemplu comandă servomotor ……………………………………………….. 30
Fig. 4.11: Placa conectori ………………………………………………………………… 31
Fig. 4.12: Pinii digitali/analogici folositi ai procesorului ………………………………. 32
Fig. 4.13: Arduino IDE 1.8.5 …………………………………………………………….. 34
Fig. 4.14: Processing IDE 3.0.1 ………………………………………………………….. 35
Fig. 4.15: Interconectarea machetei la PC …………………………………………… … 35
Fig. 5.1 Imagine de ansamblu a machetei parcării ……………………………………. 66
Fig. 5.2: Interfața grafică ……………………………………………………………… … 67
Fig. 5.3: Interfața grafică – connection OFF ………………………………………… … 67
Fig. 5.4: Interfața grafică – locul 1 ocupat, restul libere ……………………………… 68
– 4 –
Fig. 5. 5: Interfața graf ică – locul 2 ocupat, restul libere ……………………………… 68
Fig. 5. 6: Interfața grafică – locul 3 ocupat, restul libere ……………………………… 69
Fig. 5.7: Interfața grafică – bariera intrare ridicată ……………………………… ….. 69
Fig. 5. 8: Interfața grafică – bariera i eșire ridicată ……………………………………. 70
– 5 –
1. Introducere
Parcarea mașinii este una dintre sarcinile dificile cu care ne confruntăm în viața de zi
cu zi. Problema principală este asigurarea unui sistem de parcare suficient și cât mai simplificat .
În zilele noastre este foarte greu de găsit disponibilitatea locurilor de parcare. Diferitele locuri
(publice), cum ar fi mall -ul, sala cinematografică, găsesc dificilă căutarea unei zone de parcare
disponibilă . Acest lucru necesită situațiile unui sistem de parcare inteligent, care se bazează pe
IoT, care sunt echipate cu senzori IR și microcontroler ( Arduino ). În acest ă lucrare este pus ă în
aplicare un mic prototip de sistem de parcare inteligentă care se bazează pe IoT.
S-a propus un sistem în care utilizatorul va găsi automat spațiul de parcare. Tot o dată,
de la distanță, se poate monitoriza și administra sistemul de parcare . În plus, putem spune că
este un nou mod de a comunica între oameni și lucrurile cu ajutorul noilor tehnologii bazate pe
IoT.
În această lucrare se va implementa sistemul de parcare inteligentă bazat pe IoT și
comandat cu ajutorul plăcii de dezvoltare Arduino împreună cu Shield -ul Ethernet, atașat
plăcii, pentru a reduce aglomerarea traficului care ar e loc în , și în jurul diferitelor zone urbane
cauzate de vehicule în timpul parcării. Diferitele locuri publice, cum ar fi mall -uri, s ăli
cinematografic e și hoteluri în timpul festival elor, creează din ce în ce mai multă complexitate
în zona de parcare.
Se implementează un sistem bine dezvoltat care să fie cât mai puțin dependent de
om. IoT este o rețea de obiecte și senzori care sunt conectați unul la celălalt pentru a permite
partajarea și colectarea informațiilor și a datelor între dispozitive. Rețeau a IoT face ca
facilitățile de parcare să fie mai ușor de încărcat pe server cu costuri minime. În sistemul
nostru, vom proiecta și implementa un prototip de sistem de parcare inteligentă care permite
șoferilor să găsească periodic locurile de parcare vacan te, fără a avea grija de a lăsa mașina
într-un loc care poate fii expus accidentelor . Senzorul infraroșu este o combinație de
transmițător și receptor.
Se va implementa un sistem care funcționează cu ajutorul etichetelor RFID care va
ajuta mașinile indi viduale la intrare. Acești senzori sunt conectați prin Shield -ul Ethernet care
este conectat la server pentru a trimite datele. Când sistemul începe să funcționeze senzorul
InfraRed detectează prezența vehiculelor în mod continuu. Dacă se depistează un veh icul în
acel moment, senzorii IR detectează că ieșirea este roșie cu ajutorul unui LED și atunci când
nu există un vehicul în acel moment, ieșirea este afișată ca fiind verde. Datele senzorilor IR
sunt trimise către Arduino (microcontroler), apoi aceste da te sunt publicate de către
microcontroler la serverul unde este disponibil.
Pentru a propune și implementa un sistem inteligent de parcare bazat pe IoT
utilizând senzori IR care ajută în mod automat la găsirea unui spațiu liber de parcare pe baza
parametrilor de performanță care fac costul sistemului și timpul eficient. Spațiile de parcare
disponibile vor fi detectate și pot fi actualizate pe server .
IoT – Internet of things
IR – Infrared
– 6 –
2. Stadiul actual în domeniul parcărilor
2.1 Noțiuni introductive în domeniul parcărilor auto
Creșterea industrială a lumii este reflectată de creșterea numărului de automobile de
pe străzi din întreaga lume [WFF01] , ceea ce a cauzat multe probleme legate de parcare.
Planificarea urbană încetinită a generat o problemă mai mare [WB006] . Căutarea spațiului de
parcare este un proces consumator de timp care nu afectează numai eficiența activităților
economice, ci și interacțiunile sociale și costurile [LCL004] . Companiile de rețea nu pot furniza
informații actualizate despre facilitățile de parcare de pe internet, deoarece facilitățile de parcare
nu cooperează cu companiile. Anumite mașini mari nu se pot încadra în locurile de parcare
disponibile în mod normal. Prin urmare, este nevoie de un sistem; care poate lua în considerare
toate informațiile relevante, pentru a găsi locul de parcare vacant.
Serviciul de parcare inteligent, care face parte din sistemul inteli gent de transport
(ITS), dă naștere unor facilități de parcare diferite, pe baza noilor funcții pe care le oferă. Acest
serviciu nu numai că gestionează operațiunile interne ale facilității de parcare, dar este, de
asemenea, proiectat să lucreze cu diferit e aspecte legate de facilitatea de parcare.
Serviciile pe care sistemul inteligent de parcare ar trebui să le furnizeze în viitor sunt:
Sistemul de informații privind disponibilitatea parcărilor și sistemul de rezervare a
parcării ar trebui să furnizeze servicii avansate de navigație;
Sistemul mobil de comerț electric și sistemul de poartă continuă ar trebui să colecteze
taxele de taxare electrică;
Un sistem de navigație automatizat ar trebui să ajute la conducerea în condiții de
siguranță;
Un sistem de navigare în sistem trebuie să asigure cea mai bună gestionare a traficului
posibil;
Furnizarea de securitate efectivă pentru siguranța automobilelor;
Furnizarea de funcții puternice pentru a facilita administratorii și managerii în
gestionarea facilității de parcare. [ZHW010]
Cea mai recentă evoluție în serviciul de parcare inteligentă este sistemul de negociere
a spațiului de parcare, care este mult diferit de sistemul de informații privind parcarea. Sistemul
de negociere a spațiului de parcare utilizează legătura și integrarea facilităților de parcare care
duc la negocierea și coordonatele între sistemul de informații din vehicul și facilitatea de
parcare. Acest sistem inițiază procesul de negociere a taxelor de parcare, rezervarea în avans a
parcării, căutarea celei mai bune trasee posibile de la poziția curentă la parcarea și apoi la
destinație. Activitatea de coordonare este o sarcină importantă pentru corporația de negociere.
Negocierea este o afacere în care atât vânzătorii cât și cumpărător ii decid condițiile de afaceri,
pentru a obține cea mai bună afacere posibilă pentru ambele părți.
Sistemul de informații de parcare împreună cu sistemul de negociere a l spațiului de
parcare au pus bazele serviciului de parcare inteligent și pot contraca ra toate problemele legate
de trafic care lucrează împreună cu ele.
– 7 –
2.2 Diverse tehnici propuse pentru un sistem inteligent de parcare
auto
Unele dintre cele mai relevante tehnici pentru realizarea unui sistem inteligent de
parcare inteligentă sunt rezumate în această secțiune:
Sisteme experte
Sistemele experte sau tehnologii bazate pe agenți pot rezolva problemele asociate cu
mediul de trafic distribuit și complex. Acestea sunt, de asemenea, considerate a fi principala
armă pentru a pune b azele mecanismului de automatizare pentru sistemul de negociere și
ghidare de parcare [CLL008] . Agentul are trăsături benefice precum autonomia, reactivitatea,
adaptabilitatea, proactivitatea și capacitatea socială care pot fi utilizate pentru rezolvarea
problemelor cu comportamente foarte dinamice și interactive. [LHY009 ]
Sistemul multi -agent este o tehnică de modelare. Este utilizat pentru reprezentarea
sistemului cu elemente care arată inteligența, autonomia și gradul de interacțiune fie între ele,
fie cu mediul [RBBB02] . Agenții de telefonie mobilă se pot deplasa în cadrul nodurilor unei
rețele și se fac dinamic în timpul runtime -ului. Acestea sunt trimise la sistemele de destinație
pentru efectuarea unor sarcini diferite cu codul și algoritmul actual izat. Agenții de telefonie
mobilă au, de asemenea, drept rezultat reducerea transmisiei de date prin intermediul rețelelor.
Îmbunătățește flexibilitatea, reglabilitatea și durabilitatea sistemului. [CHP001 ]
Unele sisteme nu oferă cea mai bună parcare pos ibilă deoarece nu iau în considerare
taxa de parcare. În absența negocierilor privind taxa de parcare, consumatorii pierd ocazia de a
găsi un loc de parcare ieftin și mai bun [CLL008] . Astfel, marja negociabilă privind prețul de
parcare trebuie luată în co nsiderare pentru a lua o decizie, prin intermediul sistemului agent
inteligent, care trebuie să selecteze cea mai bună posibilă posibilitate de parcare pentru
conducător, așa cum este descris în [LCL004] . Agenții pot planifica, muta, efectua, verifica și
coordona pentru a -și îndeplini sarcinile. Pentru furnizarea unei platforme de negociere pentru
utilizator; un sistem inteligent de negociere și orientare a parcărilor, care integrează agentul
mobil cu multi -sistem este propus în [LHL009] . Agentul mobil poat e fi utilizat pentru o
negociere activă, stabilă și rapidă între mașini și spații de parcare. Mișcarea agentului ajută la
reducerea timpului de negociere și scade cantitatea de date care trebuie transmise prin rețeaua
wireless . Ele prezintă, de asemenea, u n algoritm pentru negociere, care este similar cu
negocierile oamenilor.
Un sistem multi -agent denumit sistem inteligent de negociere și ghidare de parcare
(ABIPNGS) bazat pe un agent combină tehnologia agentului mobil cu sistemele multi -agent și
utilize ază atât agenți staționari cât și agenți mobili. [CLL008]
O tehnică de navigație multi -fază care se bazează pe hartă de trafic pe două straturi
este utilizată pentru negocierea și direcționarea căilor de parcare [LMW009] . Implementarea
sistemului are loc pe o arhitectură FIPA extinsă prin agentul mobil, timpul de așteptare al
mesajelor, containerul agentului și mediul de execuție a agentului. Acesta utilizează
interoperabilitatea standardelor FIPA și ductilitatea agențilo r mobili. Prin strălucirea, reglajul
și co -acțiunea agenților, întregul mediu de servicii poate efectua automat căutarea parcului,
poate negocia taxa de parcare, poate rezerva parcarea, poate negocia parcurgerea parcării și se
îndreaptă către unitate. Sist emul informatic de orientare activă de parcare distribuit (APGIS)
– 8 –
este discutat în [LMW009] . Sprijină atât agentul staționar, cât și cel mobil, împreună cu
executarea automată a căutării parcului, negocierea taxei de parcare, rezervarea parcării și
direcți ile parcării fără a interveni conducătorii auto și parcurile
Controlul inteligent al mișcării distribuite al roboților mobili este discutat în
[KHO010] . De asemenea, prezintă un sistem de agenți multifuncțional numit sistem inteligent
pentru roboți autonomi, care se ocupă cu funcțiile de modelare, planificare și coordonare ale
unui robot mobil. Sistemul este alcătuit din agentul principal de control al k ernelului, un agent
de navigare în învățare pentru generarea unor traiectorii sigure și permiterea robotului să se
îndrepte spre un obiectiv de mediu restricționat. Pentru învățarea și menținerea unei mișcări
reușite a robotului, se folosește un algoritm n eutru adaptiv. Al treilea agent este preocupat de
poziționarea robotului și de actualizarea hărții pentru robot. Al patrulea agent se ocupă de
sarcini de comunicare, manipulare și coordonare.
Manevrarea fuzzy și agent ul de parcare, se ocupă de sarcini d e parcare și mișcare. O
manevrabilitate fuzzy și agent de parcare este preocupat de mi șcările și de activitățile de
parcare.
Pentru navigația unui robot mobil în aer liber, a fost adaptat un sistem multi -agent cu abordare
de control bazat pe evenimente [ZAZO05] . Din motive de fuziune a informațiilor și
cartografiere a mediului, se propune un sistem multiagent distribuit.
Sisteme bazate pe logica fuzzy
Dacă există un proces care rezultă din eroarea umană, atunci un sistem care susține
operatorul; în mod sigur și eficient este prezentat în [KIYA04] . Sistemul funcționează astfel:
Detectare
Planificarea mișcării și
Furnizarea de informații
Teoria fuzzy e ste folosită pentru a construi cunoștințele de suport și euristica
expertului la nivel înalt. Metoda discutată în [OYPA04] oferă unei mașini capacitatea de a
conduce independent pe diferite tipuri de drumuri. De asemenea, se prevede mișcări cum ar fi
parcarea inversă, paralel și turnurile cu trei puncte. Pentru a obține în mod automat un sistem
funcțional de control al mașinii, această abordare utilizează un sistem de auto -formare care
beneficiază de competențe umane.
Din motive de pregătire și testare, un simulator de conducere a mașinii este combinat
cu rețeaua neuronală Fuzzy GenSoYager. Pentru a reproduce neclaritatea construită a
informațiilor disponibile, este ales un sistem de control fuzzy. Apoi implementarea sistemului
bazat pe reguli fuzzy are l oc pe arhitectura rețelei neuronale. Acesta este motivul principal
pentru învățare, reamintire, generalizare și adaptare din datele de formare. Sistemul neuro -fuzzy
are capacitatea de a raționa ca ființele umane, precum și de cunoștințe de specialitate.
Pentru reducerea timpului de calcul, un controler logic fuzzy bazat pe FPGA (FLC)
este prezentat în [IGNHS6] . FLC poate fi utilizat pentru proiectarea unei paralele automate
spate care are un controler pe bază de FPGA . [SZN010] oferă o abordare fuzzy pentr u controlul
deplasării înapoi a camionului și a remorcii în medii dinamice. Această metodă este apoi extinsă
la condiția în care calea camionului are obstacole. În primul caz, presupunem obstacole
staționare. A doua condiție este obstacolele mobile care po t face camionul îndreptat spre
parcare. Sonde de vizionare ultrasonice și 3D pot fi utilizate pentru identificarea spațiului de
– 9 –
parcare adecvat pentru parcarea paralelă. Parcarea este finalizată datorită inteligenței logicii
fuzzy, după ce șoferul o confir mă. Senzorul ultrasonic identifică obiectele și obstacolele
longitudinal.
Un scenariu în două etape numit mișcări longitudinale și laterale este utilizat în
[MTR011] pentru a găsi parcarea corespunzătoare.
Sisteme bazate pe tehnologia wireless
Un număr de noduri de senzori cu costuri reduse alcătuiesc o rețea de senzori wireless
(WSN). Ei se pregătesc pentru a realiza o rețea ad -hoc prin modulul de comunicații fără fir
prezent pe noduri. Diferite tipuri de senzori, unități de calcul și dispozitive de stocare sunt
prezente pe fiecare nod. Pentru colectarea, prelucrarea și transmiterea informațiilor, părțile
funcționale permit instalarea senzorilor rapid și ușor. Ei au un viitor luminos, deoarece WSN –
urile sunt ușor instalate în mediul normal și oferă date pentru poziționare și supraveghere. Există
două dezavantaje asociate senzorilor video. Primul este că senzorii video sunt scumpi. În al
doilea rând, senzorii generează uneori date uriașe; a căror transmisie prin rețeaua wireless este
agitată.
Siste mul este alcătuit din senzori wireless cu costuri reduse care sunt montați într -o
instalație de parcare auto. Fiecare loc de parcare are un nod senzor pentru detectarea și
verificarea ocupării locului de parcare. Nodul senzor este utilizat pentru a detecta starea
câmpului de parcare, care este trimis în mod regulat către baza de date prin intermediul
senzorului wireless instalat și a gateway -ului său. Pentru a efectua diverse funcții de gestionare
cum ar fi: găsirea unei parcări neocupate, taxarea automată, gestionarea securității și a
raportului statistic; baza de date este accesată de sistemul de gestionare a straturilor superioare.
Nodurile sunt încărcate cu senzori de lumină, sunet și acustici pentru sistemul de management
al parcărilor auto WSN [TZC006] . Acest lucru va permite utilizatorilor să obțină informații
despre locurile vacante de parcare disponibile pe căile lor, prin metode de acces distribuite.
Pentru detectarea și recunoașterea automobilelor, acest sistem utilizează camere video,
microfoane și detectoare de mișcare.
Toate datele senzorilor sunt procesate în mediul de rețea, care este postat pe web.
Aceste informații pot fi apoi preluate de utilizator de pe internet. Dat fiind că datele generate
de camera video sunt uriașe, pentru transfer ul și prelucrarea datelor sunt necesare o cantitate
mare de resurse, cum ar fi lățimea de bandă de comunicație, ciclurile de procesare și energia.
Dar resursele menționate sunt limitate într -o rețea wireless.
Senzorii sunt instalați pe ambele părți ale drumului și pe patul de drum pentru a obține
informațiile necesare vehiculelor. Aceste sisteme nu sunt proiectate pentru gestionarea
parcărilor auto, deși sunt eficiente pentru verificarea traficului și a stării drumurilor. Hardware –
ul folosit în aceste si steme este, de asemenea, costisitor și complex. Pentru detectarea precisă
și fiabilă a vehiculelor în parcare, se propune utilizarea senzorilor magnetici și ultrasonici în.
Versiunea modificată a algoritmului min -max este folosită pentru detectarea autotur ismelor
prin magnetometre, în timp ce un algoritm pentru senzorii cu ultrasunete este de asemenea
utilizat.
Există și alte soluții care se concentrează asupra utilizării tehnologiilor senzorilor
(magnetometre și camere video etc.) pentru aplicațiile de p arcare. Cu toate acestea,
magnetometrele sunt sensibile la problemele de mediu; ceea ce are ca rezultat o detectare
inexactă uneori. De asemenea, trebuie să plasăm magnetometrele în apropierea mașinilor,
– 10 –
deoarece măsoară schimbarea în magnitudinea și direc ția câmpului magnetic al Pământului care
rezultă din prezența mașinii. Deși este posibil în apropierea intrării parcării; dar nu este posibil
la etajele superioare, deoarece nu există marcaj de intrare și vehiculele se deplasează și cu o
viteză mai mare. S oluțiile bazate pe camerele video sunt foarte scumpe și cantitatea imensă de
date generate este dificil de transmis pe mai multe hamei într -o rețea fără fir.
Aceste discrepanțe și mișcarea altor obiecte dintr -un spațiu de parcare, incluzând
ființele uma ne, reduc aplicabilitatea fie a magnetometrelor, fie a camerelor video numai pentru
gestionarea parcării. Sistemul de supraveghere a l traficului din [CEV005] utilizează
magnetometre pentru detectarea prezenței vehiculelor, împreună cu estimarea vitezei
vehiculelor în vecinătatea intersecțiilor stradale și a spațiilor de parcare. Aceste semnături
magnetice ajută sistemul să clasifice și să re -identifică vehiculele.
Senzorii magnetici din locurile de parcare transferă informațiile de parcare către AP –
urile de pe marginea drumului. Sistemul poate afla locurile de parcare neocupate în timp real
și apoi transmite acele informații către utilizator. Problemele asociate cu comunicațiile
wireless în mediul de parcare sunt evidențiate, iar recomandările de rutare d inamică și
robustă, retransmisiile întârziate sunt propuse pe baza rezultatelor experimentale pentru
depășirea problemelor.
Sisteme bazate pe GPS
Informațiile despre locația și disponibilitatea unui spațiu de parcare în apropierea
destinației sunt furnizate driverelor de către sistemul actual de navigație GPS al vehiculelor.
Sunt furnizate informații despre starea actuală a locului de parcare. De aceea nu pot garanta
un loc de parcare atunci când șoferul ajunge la unitate.
Cerreo [ALCC02] a efect uat un studiu de lungă durată privind parcarea pe stradă,
care s -a axat pe aspecte diferite legate de parcarea pe stradă, și anume politica, planificarea,
gestionarea și operațiunile. Au fost utilizate diferite metode și orașe diferite pentru a
demonstra a ceste probleme. De asemenea, au fost evidențiate diferite provocări legate de
parcarea pe stradă, cum ar fi schimburile de tip “peer-to-peer” și stocarea informațiilor.
Arnott și Rowse [RAJR99] au modelat parcarea în structura spațială, tehnologia de
generare a călătoriilor, tehnologia de parcare și de călătorie și starea staționară. Problema cu
această modelare este că nu ia în considerare aglomerarea traficului.
Chon și colab. [CAA002] au prezentat un sistem bazat pe locație numit NAPA
(Aplicația de parcare disponibilă cel mai apropiat). Acest sistem ajută la localizarea parcărilor
în campus sau în zone precum aeroporturile, dar nu oferă nicio informație despre
disponibilitatea locului liber.
Sisteme bazate pe viziune
Sistemul de control al parcării și sistemul de venituri din orașele mari se bazează pe
dispozitive precum monede sau parcări pe bază de token, care necesită o schimbare exactă și
puterea omului pentru monitorizarea parcărilor, făcându -le nefavorabile. Astfel, un design mai
eficient pentru parcarea automată și asistența pentru șofer este prezentat în [MSC003] . Ea este
legată de o autoritate centralizată de control al traficului, care colectează toate taxele, și
menține, de asemenea, punerea în aplicare a regulilor de parcare.
– 11 –
Acest sistem are un număr de subsisteme, și anume un subsistem ad -hoc, un subsistem
de gateway de parcare, un subsistem de detectare a vehiculelor și un subsistem de senzor de
procesor de imagine video. Există două clase de mașini care sunt considerate de a ceastă
arhitectură:
Vehiculele din clasa 1 sunt acele vehicule care nu au nici un sistem fără fir încorporat
Vehiculele din clasa 2 sunt acele vehicule care au un dispozitiv fără fir încorporat, cu
capacități de rețea ad -hoc.
Fiecare mașină are un număr unic de identificare a vehiculului (VID) asociat cu acesta. Pentru
a depăși discrepanțele comune ale poziției existente de vizare bazate pe viziune asupra
metodelor etichetate în locurile întunecate de parcare interioară, se pro pune o metodă de
recunoaștere a spațiului de parcare gratuit bazată pe proiecția cu lumină.
Pentru recunoașterea informațiilor 3D ale locului de parcare, se utilizează metoda de
proiecție cu benzi luminoase [HDPJ07] . Sistemul este capabil să recunoască punctele de
întrerupere, pivotul și punctele de referință opuse site -ului, odată ce are loc analiza informațiilor
3D. Pentru mișcarea automată a direcției în timpul operării de parcare; se utilizează un sistem
de asistare a conducătorului auto cunoscut sub denumirea de sistem inteligent de asistență la
parcare, care are următoarele șase părți [JCKY06] :
Identificarea poziției țintă;
Decide calea;
Găsirea căii;
Direcție activă;
Frânare activă;
Interfața mașină om (HMI).
Informația 3D a poziției finale a mașinii este recunoscută de denumirea poziției țintă.
Paralel parcarea este realizată prin utilizarea senzorilor de rază de acțiune cum ar fi senzorii
ultrasonici [FNK004] și radare de rază scurtă (RRS) [FRT004] , pentru a găsi spațiul liber.
Viziunea baza tă pe abordare este în cea mai mare parte folosită pentru parcarea perpendiculară.
Prețul ridicat al laserului tip scanare îl face mai puțin favorabil pentru producția în masă.
Costurile ultrasonice cu cost redus și RRS nu sunt eficiente pentru găsirea spa țiului liber
înclinat. Camera de marșarier a devenit o componentă esențială a sistemului de asistență la
parcare pentru ca șoferii să monitorizeze vizibil parcarea în curs [XCX000] . Sunt folosite
diferite metode pentru găsirea spațiului liber. Această abordare utilizează doar câteva cadre pe
secundă. De asemenea, nu este foarte complex de calculat. Această metodă are 3 etape
principale de procesare:
Prelucrarea imaginilor brute captate de aparatul foto are loc;
Umbrele prezente în imagine sunt atenuate sau îndepărtate complet, în timp ce
distorsiunea este de asemenea îngrijită;
Se stabilește corespondența între camerele staționare și locurile vizibile de parcare.
Apoi, are loc evaluarea statutului locului de parcare. Se propune [CJCZPH] o tehnică
inteligentă de căutare a mașinilor pentru spații de parcare mari. Camerele sunt instalate pe
drumuri. Recunoașterea informațiilor legate de viziune, cum ar fi culoarea mașinii, plăcuța de
înmatriculare are loc și sunt apoi stocate în baza de date. Deoarece sis temul de recunoaștere a
plăcuței de înmatriculare nu este fiabil, deci pentru sortarea rezultatelor preluate; un algoritm
– 12 –
inteligent de căutare a mașinii care se bazează pe probabilitatea de clasificare a culorii și
recunoașterea plăcuței de înmatriculare. Această metodă a fost aplicată și în cazul unei instalații
de parcare în aer liber.
În [BCM011 ] se propune un nou sistem bazat pe prelucrarea imaginilor pentru
furnizarea de informații privind parcarea și ghidarea. Acest sistem are capacitatea de a numă ra
numărul de mașini parcate și de a identifica loturile libere disponibile. Sistemul utilizează
imagini pentru detectarea vehiculelor. Un aparat de fotografiat pentru capturarea imaginii de
referință este prezent la intrare. După ce imaginea de referință este capturată, se captează și o
secvență de imagini care este apoi comparată cu imaginea de referință pentru potrivirea imaginii
cu ajutorul detecției muchiilor. Pe baza procentajului de potrivire, ghidajul și informațiile sunt
furnizate conducătorului au to.
Alte tehnici de proiectare a parcărilor auto
Un serviciu de rezervare de parcare pentru rezervarea unui loc de parcare vacant prin
internet este propus în [ISNOY1] . Acest sistem utilizează internetul pentru o căutare rapidă și
ușoară a locului liber. Prin utilizarea acestuia împreună cu o cartelă inteligentă, sistemul oferă,
de asemenea, servicii de recunoaștere și plăți către șofer.
În [WYHM99 ] se propune un sistem de asistență pe mai multe niveluri pentru
asistență în procesul de parcare. Sunt menționate, de asemenea, un sistem de asistență la parcare
împreună cu sistemul de administrare a parcării și sisteme de senzori folosite. Se prezintă o
arhitectură generală a unui sistem de asistență pentru șofer, care se bazează pe planificarea
traseului și pe modulele interfață om -mașină (HMI). Se descrie, de asemenea, atât proiectarea
sistemului HMI al sistemului, cât și metoda de planificare a traseul ui pe baza posibilităților de
parcare propusă pentru implementarea arhitecturii prezentate.
[GAQU10] implementează, o tehnică de organizare; care organizează aleator spațiul,
pentru compararea rezultatelor cu tehnicile inteligente.
Problemele legate de parcarea independentă și evitarea obstacolelor au fost abordate
de numărul tot mai mare al studiilor robotului mobil de mașină (CLMR). Confortul poate fi
oferit unui șofer novice de către un controler autonom de parcare. Cu toate acestea, un controler
proiectat inadecvat pune șoferul în pericol. [LCDY10] prezintă un nou controller
multifuncțional inteligent de parcare autonomă. Este capabil să parcheze în mod eficient CLMR
într-un loc potrivit utilizând datele senzorului integrat, care are capacitatea d e a obține datele
din jur ale robotului.
Un serviciu de parcare wireless este prezentat în [GWO009] . Acesta nu va oferi numai
servicii de parcare inteligente, ci va elimina, de asemenea, erorile. Pentru a oferi un serviciu de
parcare inteligent și automa t, sistemul prezentat va utiliza tehnologiile senzorilor împreună cu
rețeaua wireless. Analiza apariției parcării eronate într -o instalație de parcare tradițională este
dată prin modelul de probabilitate.
– 13 –
2.3 Analiza economică a sistemelor de parca re inteligentă
Analiza economică este studiul de bază pentru evaluarea și explorarea fezabilității
proiectului. Acesta joacă un rol important în decizia de a începe proiectul sau nu. Analiza
economică poate fi utilizată pentru a minimiza riscurile și pen tru a îmbunătăți eficiența
investițiilor. Rolul analizei economice este minimizarea riscurilor și îmbunătățirea eficienței
investițiilor. Deoarece serviciul inteligent de parcare face parte din STI, acesta poate diminua
impactul distribuției inegale a parc ării în diferite spații de parcare. Analiza economică vizează
[GAQU10] :
Reducerea impactului negativ al serviciilor de parcare.
Reducerea investițiilor.
Creșterea beneficiilor sociale, economice și de mediu ale facilității de parcare.
Una dintre tehnicile de analiză economică pe scară largă este analiza cost -beneficiu,
care se bazează pe beneficiile și costurile reduse pentru determinarea și evaluarea alocării
resurselor atât pentru proiectele din sectorul public, cât și pentru cele non -profit. Cu toate
acestea, pentru sistemul de ghidare de parcare; nu putem utiliza tradiționala Cost -Beneficiu
analiză, deoarece este dificil să definim și să măsuram costurile și beneficiile.
De asemenea, există anumite ipoteze necesare pentru analiza cost-beneficiu care nu
poate ieși pentru PGS. Prin urmare, pentru rezultate mai precise; legitimitatea estimărilor
trebuie să se bazeze pe un număr mare de date și informații de bază.
– 14 –
3. Prezentarea tehnologiilor utili zate
Pentru proiectarea unor astfel de sisteme sunt necesare anumite cerințe, cum ar fi
hardware și software care sunt menționate mai jos:
3.1 Arduino M EGA 2560
Microcontrolerul Arduino este considerat inima sistemului. Funcția principală a
acest ei plăci de dezvoltare este de a procesa datele recepționate de la senzorii IR și de a le
transporta către le gătura ulterioară pentru acționare , care poate fi monitorizată. De asemenea,
se pot transmite informațiile primite de la aplicație , înapoi către senzorii IR.
Arduino Mega 2560 este un microcontroler bazat pe ATmega2560. Dispune de 54 de
intrări / ieșiri digitale (din care 14 pot fi utilizate ca ieșiri PWM), 16 intrări analogice, 4 UART
(porturi seriale hardware), un oscilator de cristal de 16 MHz, o conexiune U SB, o mufă de
alimentare, și un buton de reset. Conține tot ce este necesar pentru a susține microcontrolerul;
pur și simplu se conect ează la un computer cu un cablu USB sau alimentat cu un adaptor AC –
DC sau cu o baterie pentru. Această placă este fizic ma i mare decât toate celelalte plăci și oferă
în mod semnificativ mai mulți pini digitali și analogi ci. MEGA utilizează un procesor diferit
care permite o dimensiune mai mare a programului și multe altele. [GET01]
Fig. 3.1 Placă de dezvoltare Arduino MEGA 2560 [GET01]
– 15 –
Arduino Mega funcționează la fel ca Arduino Uno, dar diferența este că folosește
microcontrolerul ATmega2560 și are un număr mai mare de pini digitali și pini analogi ci.
Specificații tehnice:
Microcontroller: ATmega2560
Tensiune de al imentare: 5V
Tensiune de intrare (recomandat): 7 -12V
Pini Digital I/O: 54 (din care 14 oferă ieșire PWM)
Pini de intrare analogici: 16
Curent DC pe I/O: 40 mA
Curent DC pentru Pinul 3.3V: 50 mA
Flash Memory: 256 KB
Frecventa: 16MHz
Alimentare
Arduino Mega poate fi alimentat prin conexiunea USB sau cu o sursă externă de
alimentare. Sursa de alimentare este selectată automat. [GET01]
Alimentarea externă (non -USB) poate proveni de la un adaptor AC -DC sau un
acumulator. Adaptorul poate fi conectat cu aju torul unui conector central de 2. 1 mm în mufa de
alimentare a plăcii. Conductoarele din baterie pot fi introduse în pinii Gnd și Vin ale
conectorului POWER. [GET01]
Placa poate funcționa pe o sursă externă de 6 până la 20 de volți. Dacă este furnizat
cu mai puțin de 7V , placa poate fi instabilă ; pinul 5V poate f urniza mai puțin de cinci volți .
Dacă se utilizează mai mult de 12V, regulatorul de tensiune se poate supraîncălzi și poate
deteriora placa. Intervalul recomandat este de la 7 la 12 volți. [GET01]
Mega2560 diferă de toate plăcile anterioare prin faptul că nu utilizează chip -ul FTDI
USB -to-serial. În schimb, acesta oferă ATmega16U2 (ATmega8U2 în pl ăcile reviziei 1 și
reviziei 2) programate ca un convertor USB -serial. [GET01]
Revizia a doua a panoului Mega2560 are un rezistor care trage linia HWB 8U2 la
masă, făcând mai ușor introducerea în modul DFU. [GET01]
– 16 –
Revizia a treia a tabloului are următoarele caracteristici noi:
1.0 pinout: au fost adăugați știfturile SDA și SCL care sunt aproape de pinul AREF și
alte două pini noi plasate în apropierea pinului RESET, IOREF care permite ecranelor
să se adapteze la tensiunea furnizată de placă. În viitor, scuturile vor fi compatibile atât
cu placa care utilizează AVR, care funcționează cu 5V , cât și cu Arduino Due care
funcționează cu 3.3V. Cel de -al doilea este un știft care nu este conectat, rezervat în
scopuri viitoare.
Atmega 16U2 înlocuie ște 8U2.
Mai jos sunt descriși pinii plăcuței Arduino :
VIN. Tensiunea de intrare la placa Arduino când utilizează o sursă externă de alimentare
(spre deosebire de 5 volți de la conexiunea USB sau de la altă sursă de alimentare
reglată). Puteți furn iza tensiune prin acest pin.
5V. Sursa de alimentare regulată folosită pentru alimentarea microcontroler ului și a
altor componente de p e placă. Acest lucru poate veni, fie de la VIN printr -un regulator ,
fie poate fi furnizat de USB sau de o altă sursă de alimentare cu 5 V reglementată.
3V3. O alimentare de 3. 3 volți ge nerată de regulator . Rezistența curentu lui maxim este
de 50 mA.
GND. Legătura către împământare . [GET01]
Memorie
ATmega2560 are memorie flash de 256 KB pentru stocarea codului (8 KB de SRAM)
și 8 KB de EEPROM (care pot fi citite și scrise cu biblioteca EEPROM).
Intrări și ieșiri
Fiecare dintre ce i 54 de pini digital i de pe Mega po t fi folo siți ca intr ări sau ieșir i,
utilizând funcțiile pinMode (), digitalWrite () și digitalRead (). Acestea funcționează la 5 volți.
Fiecare pin poate furniza sau primi maxim 40 mA și are o rezistență internă de tracțiune
(deconectată în mod implicit) de 20 -50 kOhm i. În plus, un ii pini au funcții specializate:
Serial: 0 (RX) și 1 (TX); Serial 1: 19 (RX) și 18 (TX); Serial 2: 17 (RX) și 16 (TX);
Serial 3: 15 (RX) și 14 (TX). Folosit pentru a recepțion a (RX) și a transmite (TX) date seriale
TTL. Pini 0 și 1 sunt, de asemenea, conectați la pinii corespunzători ai cipului ATmega16U2
USB -to-TTL Serial.
Întreruperi externe: 2 (întrerupere 0), 3 (întrerupere 1), 18 (întrerupere 5), 19
(întrerupere 4), 20 (întrerupere 3) și 21 (întrerupere 2). Acești pini pot fi configurați pentru a
declanșa o întrerupere la o valoare scăzută, o margine în creștere sau în scă dere sau o schimbare
a valorii.
PWM: 0 până la 13. Se asigură o i eșirea PWM pe 8 biți cu funcția analogWrite ().
– 17 –
SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). Acești pini acceptă comunicarea SPI
utilizând biblioteca SPI. Pinii SPI sunt difuzați și în antetul ICSP, care este compatibil fizic cu
Uno, Duemilanove și Diecimila.
LED: 13. Există un LED încorporat conectat la pinul digital 13. Când pinul este
HIGH, LED -ul este pornit, când pinul este LOW, este oprit.
WI: 20 (SDA) și 21 (SCL). Suportați comunicarea TWI folosind biblioteca Wire.
Rețineți că acești ace nu sunt în aceeași locație cu pinii T WI de pe Duemilanove sau Diecimila.
Mega2560 are 16 intrări analogice, fiecare furnizând 10 biți de rezoluție (adică 1024
valori diferite). În mod implicit, se măsoară de la sol la 5 volți, deși este posibil să se schimbe
capătul superior al intervalului lor utilizând funcția AREF pin și analogReference ().
Există câțiva alți pini pe bord:
AREF. Tensiunea de referință pentru intrările analogice. Folosit cu analogReference
().
Reset. Se aduce această linie LOW pentru a reseta microcontrolerul. [GET01 ]
Fig. 3.2 Placă de dezvoltare Arduino MEGA 2560 – vedere față [GET01]
Comunicarea
Arduino Mega2560 dispune de o serie de facilități pentru comunicarea cu un
calculator, un alt Arduino sau cu alte microcontrolere. ATmega2560 furnizează patru UART –
uri hardware pentru comunicarea serială TTL (5V). Un ATmega16U2 (ATmega 8U2 pe placile
de revizie 1 si revizuire 2) pe canalele de bord unul dintre acestea prin USB si ofera un port
virtual de com pe software -ul pe computer (Windows va avea nevoie de un fisier .inf, dar OSX
si Linux recunoașteți automat placa ca port COM. Arduino include un monitor serial care
– 18 –
permite trimiterea de date textuale simple pe și de la bord. LED -urile RX și TX de pe bord vor
lumina intermitent atunci când datele sunt transmise prin intermediul ATmega8U2 /
ATmega16U2 chip și conexiune USB la computer (dar nu pentru comunicarea serială pe pinii
0 și 1). [GET01]
Programarea
Arduino Mega poate fi programat cu software -ul Arduin o.
ATmega2560 pe Arduino Mega vine pre instalat cu un bootloader care permite
încărcarea unui nou cod fără a utiliza un program hardware extern. Acesta comunică utilizând
protocolul STK500 original .
De asemenea, se paote trece de bootloader și s ă se program eze microcontrolerul prin
antetul ICSP (In -Circuit Programming Serial. Codul sursă al firmware -ului ATmega16U2 (sau
8U2 în rev1 și rev2) este disponibil în spațiul de stocare Arduino. ATmega16U2 / 8U2 este
încărcat cu un bootloader DFU, care poate fi activat de:
Pe panourile Rev1: se conectează jumper -ul de lipire pe spatele plăcii (lângă harta
Italiei) și apoi se resetează 8U2.
Pe panourile Rev2 sau mai târziu: există un rezistor care trage linia HWB 8U2 / 16U2
la masă, făcând mai ușor introducerea în mod ul DFU. Apoi puteți utiliza software -ul FLIP al
lui Atmel (Windows) sau program ul DFU (Mac OS X și Linux) pentru a încărca un nou
firmware. Sau puteți utiliza antetul ISP cu un program extern (suprascrierea aplicației de
bootloader DFU). [GET01]
Fig. 3.3 Placă de dezvoltare Arduino MEGA 2560 – vedere spate [GET01]
Resetare automată (software)
– 19 –
Nu este necesară o apăsare fizică a butonului de resetare înainte de încărcare,
deoarece Arduino Mega2560 este proiectat într -un mod care să permită resetarea acestuia prin
software -ul care rulează pe un computer conectat. Una dintre liniile de control al fluxului
hardware (ATR) este conectată la linia de resetare a ATmega2560 printr -un condensator de
100 nanofara zi. Când această linie este afirmată (s căzută), linia de resetare scade suficient de
mult pentru a reseta cipul. Software -ul Arduino folosește această capacitate pentru a permite
să se încarce codul prin simpla apăsare a butonului de încărcare din mediul Arduino. Aceasta
înseamnă că bootloader -ul poate avea un interval de timp mai scurt, deoarece scăderea DTR
poate fi bine coordonată cu începutul încărcării.
Această configurație are alte implicații. Atunci când Mega2560 este conectat la un
computer care rulează Mac OS X sau Linux, acesta se resetează de fiecare dată când se face o
conexiune de la software (prin USB). Pentru următoarea jumătate de secundă, bootloader -ul
rulează pe Mega2560. Deși este programat să ignore datele defectuoase (adică orice altceva
decât încărcarea unui nou cod), va intercepta prim ii câțiva octeți de date trimise plăcii după
deschiderea unei conexiuni. Dacă o schiță care rulează pe placă primește o configurație unică
sau alte date la prima pornire . De reținut este faptul că software -ul cu care comunică așteaptă
o sec undă , după deschiderea conexiunii și înainte de a trimite aceste date.
Mega2560 conține un semnal care poate fi tăiat pentru a dezactiva resetarea
automată. Plăcuțele de pe ambele părți ale traseului pot fi lipite împreună pentru a le reactiva.
Este numi tă "RESET -EN". De asemenea, este posibil să se dezactiv eze resetarea automată
prin conectarea unui rezistor de 110 ohmi de la 5 V la linia de resetare. [GET01]
– 20 –
3.2 RFID
Identificarea prin radiofrecvență (RFID) utilizează câmpuri electromagnetice pentru
a identifica și a urmări automat etichetele atașate la obiecte. Etichetele conțin informații stocate
electronic. Etichetele pasive colectează energia de la undele radio interogatoare ale cititorului
RFID din apropiere. Etichetele active au o sursă locală de alimentare (cum ar fi o baterie) și pot
funcționa sute de metri față de cititorul RFID. Spre deosebire de un cod de bare, eticheta nu
trebuie să se afle în linia de vedere a cititorului, deci poate fi încorporată în obiectul urmărit.
RFID este o metodă pentru identificarea automată și captarea datelor. [WIK01]
Etichetele RFID sunt utilizate în multe industrii, de exemplu, o etichetă RFID atașată
la un automobil în timpul producției poate fi utilizată pentru a urmări progresul prin linia de
asamblare . Produsele farmaceutice cu etichete RFID pot fi urmărite prin depozite etc. [WIK01]
Eticheta RFID
Un sistem de identificare a frecvențelor radio utilizează etichete sau etichete atașate
la obiectele care trebuie identificate. Emițătoare -receptoare de rad io pe două căi numite
interogatori sau cititori trimit un semnal la etichetă și citesc răspunsul său.
Etichetele RFID pot fi pasive, active sau asistate de baterii pasive. O etichetă activă
are o baterie de la bord și transmite periodic semnalul său de i dentificare. O etichetă pasiv
asistat ă de baterie (BAP) are o baterie mică la bord și este activat în prezența unui cititor RFID.
O etichetă pasivă este mai ieftină și mai mică deoarece nu are baterie; în schimb, eticheta
folosește energia radio transmisă de cititor. Cu toate acestea, pentru a utiliza o etichetă pasivă,
aceasta trebuie să fie iluminată cu un nivel de putere de aproximativ o mie de ori mai mare
decât pentru transmisia semnalului. Aceasta face diferența între interferențe și expuner ea la
radiații. [WIK01]
Fig. 3.4 Eticheta RFID [BCI01]
Etichetele pot fi citite doar dacă au un număr de serie atribuit de fabrică care este
folosit pe post de cheie într-o bază de date sau , poate fi citit / scris unde datele specifice
obiectului pot fi scrise în etichetă de către utilizatorul de sistem. Etichetele programabile de
domeniu pot fi înregistrate o dată, și să aibe un număr un număr de citire multiplu ; etichetele
"goale" pot fi scrise cu un cod de produ s electronic de către utilizator. [WIK01]
– 21 –
Etichetele RFID conțin cel puțin trei părți: un circuit integrat care stochează și
procesează informații și care modulează și demodulează semnale de radiofrecvență (RF); un
mijloc de colectare a puterii DC din se mnalul cititorului incident; și o antenă pentru
recepționarea și transmiterea semnalului. Informațiile despre etichete sunt stocate într -o
memorie nevolatilă. Eticheta RFID include fie o logică fixă, fie programabilă, pentru
prelucrarea datelor de transmis ie și senzor. [WIK01]
Un cititor RFID transmite un semnal radio codat pentru a interoga eticheta. Eticheta
RFID primește mesajul și apoi răspunde cu identificarea și alte informații. Acesta poate fi doar
un număr de serie unic al etichetei sau poate fi o informație referitoare la produs, cum ar fi
numărul stocului, lotul sau serie , data producției sau alte informații specifice. Deoarece
etichetele au numere de serie individuale, designul sistemului RFID poate face diferența între
mai multe etichete care a r putea fi în raza cititorului RFID și le puteți citi simultan. [WIK01]
Cititor
Sistemele RFID pot fi clasificate după tipul de etichetă și cititor. Sistemul de cititoare
pasive a l tag-ului activ (PRAT) are un cititor pasiv care recepționează numai semnale radio de
la etichete active (funcționează cu baterii, numai pentru transmitere). Intervalul de recepție al
unui cititor de sistem PRAT poate fi ajustat de la 1.000 metri, ceea ce permite flexibi litate în
aplicații cum ar fi protecția și supravegherea.
Un sistem Active Reader Pasiv e Tag (ARPT) are un cititor activ, care transmite
semnale de interogare și primește de asemenea răspunsuri de autentificare din etichetele pasive.
Un sistem Active R eader Active Tag (ARAT) folosește etichete active stimulate cu
un semnal de interogare din cititorul activ. O variantă a acestui sistem ar putea de asemenea să
utilizeze o etichetă pasivă asistată de baterie (BAP) care acționează ca o etichetă pasivă, dar are
o baterie mică pentru alimentarea semnalului de raportare a întoarcerii etichetei. [WIK01]
Cititoarele fixe sunt configurate pentru a crea o zonă de interogare specifică, care
poate fi controlată cu strictețe. Acest lucru permite o zonă de citire foarte bine definită atunci
când etichetele intră și ies din zona de interogare. Cititoarele mobile pot fi manuale sau montate
pe cărucioare sau vehicule. [WIK01]
Comunicarea
Comunicarea între cititor și etiche tă se face în mai multe moduri diferite, în funcție
de banda de frecvență utilizată de etichetă. Etichetele care funcționează pe benzi LF și HF sunt,
în ceea ce privește lungimea de undă radio, foarte aproape de antena cititorului, deoarece
acest ea au doar un procent redus din lungime a de undă. În această regiune de câmp apropi at,
eticheta este strâns cuplată electric cu transmițătorul din cititor. Eticheta poate modula câmpul
produs de cititor prin modificarea încărcării electrice reprezentată de etichetă. Prin comutarea
între încărcăturile relative mai mici și mai mari, etiche ta produce o modificare pe care cititorul
o poate detecta. La UHF și frecvențe mai mari, eticheta are mai mult de o lungime de undă de
radio față de cititor, necesitând o abordare diferită. Eticheta poate redirecționa un semnal.
Etichetele active p ot conți ne emițători și receptori separate funcțional, iar eticheta nu trebuie să
răspundă la o frecvență legată de semnalul de interogare al cititorului. [WIK01]
– 22 –
Un cod electronic de produs (EPC) este un tip comun de date stocate într -o etichetă.
Când este sc risă în etichetă de către o imprimantă RFID, eticheta conține un șir de date pe 96
de biți. Primii opt biți sunt un antet care identifică versiunea protocolului. Următorii 28 de biți
identifică organizația care gestionează datele pentru această etichetă. U rmătorii 24 de biți sunt
o clasă de obiecte, care identifică tipul de produs; ultimii 36 de biți reprezintă un număr de serie
unic pentru o anumită etichetă. Aceste ultime două câmpuri sunt stabilite de organizația care a
emis eticheta. Mai degrabă ca o ad resă URL ; numărul total de cod electronic al produsului poate
fi folosit ca o cheie într -o bază de date globală pentru identificarea unică a unui anumit produs.
[WIK01]
Adesea, mai mult de o etichetă va răspunde la un cititor ; de exemplu, multe produse
individuale cu etichete pot fi expediate într -o cutie comună sau pe un palet comun. Detectarea
coliziunilor este importantă pentru a permite citirea datelor. Două tipuri diferite de protocoale
sunt folosite pentru a " reduce " o an umită etichetă, permițând citirea datelor sale în mijlocul mai
multor etichete similare. Într -un sistem Aloha cu sloturi, cititorul transmite o comandă de
inițializare și un parametru pe care etichetele îl folosesc în mod individual pentru a întârzia
răspu nsurile lor pseudo -aleatoriu. Atunci când se utilizează un protocol "copac binar adaptiv",
cititorul trimite un simbol de inițializare și apoi transmite un bit de date ID la un moment dat;
numai etichetele cu biți de potrivire răspund și în cele din urmă n umai o etichetă se potrivește
cu șirul de identificare complet. [WIK01]
Ambele metode au dezavantaje atunci când sunt utilizate cu mai multe etichete sau cu
mai mulți cititori care se suprapun. [WIK01]
– 23 –
3.3 Fotorezistorul
În lucrare am folosit un senzor de lumină de tip fotorezistor , deoarece este ușor de
integrat în proiectele Arduino . Tot o data este foarte sensibilă la modificările intensității
luminoase. Din acest motiv, am folosit acest tip de senzor pentru măsurarea intensității
luminoase . Va avea rol pentru detecția prezenței mașinii, staționată deasupra lui.
Definiție
Este un rezistor, realizat dintr -un material semiconductor omogen, a c ărui rezisten ță
se modific ă sub inciden ța unui flux luminos incident. Se bazeaz ă pe fenomenul de
fotoconductivitate prin care sub influen ța radia ției luminoase sunt elibera ți electroni liberi care
cresc conductivitatea electric ă a semiconductorului și implicit scad rezisten ța rezistorului(este
o aplica ție a efectului fotoelectric inte rn). [FLF01]
Structură
Fotorezistorul este format dintr -o pelicul ă din material semiconductor, depus ă prin
evaporare în vid pe un gr ătar metalic care este fixat pe o plac ă izolatoare.
Fig. 3.5 Schema electrică a fotorezistorului utilizat
[FLF01]
Fig. 3.6 Fotorezistor ul
În general , conductanța fotorezistenței este proportională cu fluxul luminos.
– 24 –
Simbolurile grafice ale fotorezistorului:
Fig. 3.7 Simboluri fotorezistor [FLF01]
Performanțele fotorezistorului
Performanțele fotorezistorului se apreciază astfel :
– rezisten ța la întuneric ;
– dependen ța de dimensiunile geometrice(w, d, l) si de concentra ția de impurit ăți a
semiconductorului ;
– pragul fotoelectric – reprezentând lungimea de und ă maxim ă pâna la care dispozitivul
mai func ționeaz ă;
– sensibilitatea spectral ă – reprezint ă raportul dintre conductan ța fotorezisten ței și fluxul
luminos incident ;
– inerția fotorezisten ței – reprezentând timpul dup ă care rezisten ța elementului se
stabilizeaz ă la noua valoare, atunci când fluxul luminos variaz ă prin salt .
Parametrii specifici unui fotorezistor
– valoarea rezisten ței electrice la întuneric ;
– tensiunea maxim ă admis ă la borne ;
– puterea maxim ă disipat ă;
– sensibilitatea la lumin ă – reprezintă raportul dintre variația curentului și variația
ilumin ării, la o tensiune constantă ; se măsoară în mA/lx ;
– sensibilitatea spectrală – depinde de natura materialului semiconductor utilizat și
reprezintă dependența sensibilității S de lungimea de undă a radiației incidente.
Utilizări
Fotorezisten țele se utilizeaz ă cel mai adesea ca detectoare de radia ții în gama de
frecven țe vizibil -infraro șu îndep ărtat. [FLF01]
Aplicații analogic e:
• Control timpului de expunere al camerei;
• Focalizare automată – cu dublă celulă;
• Xerox și copiatoare – reglează densitatea de toner
• Echipamente de test colorimetric;
• Densitometru
– 25 –
• Cantare electronice – cu dublă celulă;
• Controlul automat al porții – sursă de lumină modulată;
Aplicații digital e:
• Control automat al luminozități farurilor;
• Control al lumini pe timp de noapte;
• Detector de flacără;
• Controlul lumini pentru iluminatul public;
• Absență / Prezență (întrerupător de întâlnire);
• Senzor de poziție;
Avantaje
• Sensibilitate semnifica tivă;
• Ușor de utilizat si la costuri reduse;
• Utilizarea în circuite DC și AC (lucrează în mod independent de direcția de curentului) .
Dezavantaje
• Timp de răspuns mare, care crește în cazul în care lumina intensă este urmată rapid de
întuneric;
• Dependența semnificativă de temperatură, de rezistență;
• Fotorezistențe operaționale în funcție de vârstă;
• Poate fi utilizată numai pentru sute de Hertzi;
• Pentru o sensibilitate mare suprafața sensibilă la lumină ajunge până la câteva zeci de
milimetri pătrați .
– 26 –
4. Proiectarea unei parcări inteligente
4.1 Proiectarea Hardware
Principiul de funcționare al parcării se poate vedea î n imag inea de mai jos, care
ilustrează principalele com ponente și modul lor de a interacț iona cu procesorul.
Arduino Serial USB PC
LCDRFIDComponente
periferice
Fig. 4.1: Schema bloc a legăturilor componentelor
Așa cum se poate vedea, placa de dezvoltare Arduino stă la baza acestui proiect.
Procesorul incorporat, AtMega 2560, permite inte rfațarea ușoară a tuturo r perifericelor
proiectului, având un număr mare de intrări/ieș iri digitale. S -a ales acest tip de procesor datorită
numă rului dest ul de ridicat de periferice adiț ionale necesare pentru realizarea ace stui proiect:
senzori de prezență mașină, indicatoare de stare prezență mașină , bariere laser.
Fig. 4. 2: Exemplu afiș are mesaje 16×2 LCD
LCD -ul este folosit pentru afișarea de mesaje necesare informării utilizatorului parcării
în legătură cu starea parcării: câ te locuri mai sunt dispo nibile, dacă parcarea este plină ș i nu se
mai poate intra, ce utilizatori folosesc parcare a.
Comunicarea cu procesoru l se face prin intermediul a saș e fire, dintre care patru sunt de
date. Celelalte doua sunt Register Select si Enable. LCD -ul are doi regiștrii, de comandă ș i de
date.
– 27 –
Fig. 4.3: Descrierea pinilor
Pinul Register Selec t este folosit pentru a comuta între cei doi regiștrii, dacă este 0 se
comută pe registrul de comandă, iar dacă este 1 pe c el de date. Registrul de comandă salvează
instrucț iunile de comandă date LCD -ului. O coma ndă este o instrucțiune care predefinește o
anumită funcție, de exemplu de iniț ializare, g olire a ecranului, setarea poziț iei cursorului,
controlarea ecranului etc. Registrul de date salvează datele ce vor fi afiș ate pe L CD. Datele
reprezintă valorile ASCI I ale caracterelor ce vor fi afișate. Când trimitem date către LCD,
acestea sunt salvate și procesate î n acest registru de date.
Cartele RFID sunt fol osite pentru a identifica clienții la intrarea î n parcare. Pentru a s e
identifica clienț ii, a fost folos it circuitul RC522 care este o placă dedicată pentru acest lucru.
Comunicarea cu procesorul se face prin intermediul protocolului SPI.
Fig. 4. 4: Circuitul RC522
SPI (Serial Peripheral Interface) este un protocol de comunicare foarte comun, fo losit
pentru a comunica bidirecțional între două dispozitive. Acesta este alcă tuit din patru semnale:
MOS I, MISO, SCK si SS. O magistrală SPI poate fi alcătuită dintr -un singur Master și unu sau
mai mulț i Slave. Master -ul poate comunica cu oricare Slave din magistra lă, dar fiecare Slave
poate comunica doar cu Master -ul.
– 28 –
Fig. 4. 5: Descrierea pinilor
– SCK: S erial Clock este controlat de că tre Master. Un nou bit de date este furnizat la
fiecare ciclu de ceas;
– SS: Slave Select indică adresa Slave -ului de la care Master -ul doreș te comunicarea cu
el;
– MOSI: Master Out da tele sunt trimise de la Master ș i ajung la Slave;
– MISO: Master In d atele sunt trimise de la Slave ș i ajung la Master.
Pentru a î ncepe com unicarea, Master -ul configurează ceasu l, folosind o frecvență m ai
mică sau egală cu maximul frecvenței suportate de către Slave. Aceste frecvențe sunt de obicei
în intervalul 1-70 MHz. Apoi Master -ul setează LOW pinul S S al Slave -ului cu care comunică.
În timpul fiecă rui ciclu de ceas SPI, apare o transmisie full dupl ex. Master -ul trimite un bit pe
linia MOSI care este citit de către Slave pe aceeaș i linie, apoi Slave -ul trimite un bit pe linia
MISO care este citit de catre Master pe aceeaș i linie. Nu toa te transmisiile de date necesită toate
aceste operaț ii (ex emplu t ransmisia unidirectională) deș i acestea se petrec.
Din componentele periferic e fac parte senzorii de prezență mașină, indicatorii de stare
prezență mașină , bari erele laser de la intrare si ieșire si servomotoarele care acționează bariera
de intrare/ieș ire.
R – 100k+5V
Analog
Fig. 4. 6: Senzor prezență mașină
– 29 –
Senzorii de prezență mașină sunt alcătuiți dintr -o fotodiodă si o rezistență de 100 kΩ,
care lucrează ca un divizor de ten siune. Fotodioda este polarizată direct prin leg ătura la 5 VDC,
iar rez istența este conectată la fotodiodă si masă. Conexiunea dintre cele două este adusă la o
intrare analogică a procesorului pentru ca informația să fie procesată. Fotodioda își schimbă
valoarea rezistenței sale în funcț ie de cantitatea de lumină ce cade pe ea, astfel în momentul în
care o mașină se poziționează pe ea, aceasta va sesiza o cantitate de lumină mai mică facâ nd ca
tensiunea de pe intrarea analogică să scadă .
R – 60
R – 125Rosu
VerdeDOUTDOUT
Fig. 4. 7: Indicator de stare e prezenț ă maș ină
Indicatorii de stare prezență mașină sunt alcătuiți din două LED -uri: unul roșu și unul
verde. Aceștia sunt comandați către două ieș iri digita le separate ale procesorului. Când nu există
mașina amplasată pe locul unde aceștia sunt localizaț i, se a prinde LED -ul verde. Cand se află
mașină, se aprinde LED -ul roșu. Aceștia sunt în strâ nsă legatură cu senzorii de prezență mașină .
BC107R – 8,4kLaser+5V
DOUT
R – 100kAnalogFotodioda+5V
Fig. 4. 8: Bariera laser
Bariera laser pentru intrare si ieșire are rolul de a menține bariera ridicată până când
mașina trece complet de ea. Este compusă din două părți, emițătorul și receptorul. Emițătorul
cuprinde laser -ul și partea de comandă a sa, iar receptorul este asemănător cu senzorii de
prezență mașină, fiind alcătuit dintr -o fotodiodă ș i o reziste nță, legate în configuraț ia de divizor
de tensiune. C omanda laser -ului este realizată de că tre un tranzistor NPN BC107, care este
comandat de către o ieșire digitală a procesorului.
Controlul barier elor se face prin comanda a două servomotoare c are ridică și coboară
bariera. Acest control este realizat prin trimiterea unui semnal de tip PW M (Pulse -Width
Modulation) de către procesor că tre servomotorul dorit. Semnalul PW M este unul de tip
dreptunghi, în care se comută două tensiuni aproape instant aneu.
– 30 –
Fig. 4. 9: Semnal de tip PWM
Semnalul alternează între zero volți ș i tensiunea de alimentare, necesitâ nd doar tre i
parametrii care caracterizează semnalul:
– Tensiunea pulsului V;
– Durata pulsului t;
– Perioada pulsului T.
Tensiunea pulsului poate varia de la 3V p ână la 5V î n cele mai multe tipuri de
servomotoare, ceea ce face ușoară conectarea lor la procesoare având logica pe 3.3 sau 5V. Î n
cea mai mare parte, amplitu dinea acestui semnal nu contează, atâta timp cât el este suficient de
mare să fie sesizat de că tre servomotor.
Fig. 4. 10: Exemplu comandă servomotor
Durata pulsului este în general cel mai important și este cel ce este modificat cel mai
mult de că tre proce sor pentru a putea schimba poziția servomotorului. O durată a pulsului de
1,5 m s se consideră o po ziție „neutră”. Mărind durata pulsului va mișca servomotorul într -o
direcție, iar micșorândul îl va mișca în direcția opusă. Punctul neutru nu este neapă rat mijlocul
cursei sale. Acesta poate diferii de la model la model.
– 31 –
Perioada pulsul ui este î n general de aproximativ 20 ms, care corespunde o frecvență de
50 Hz. Unele modele de s ervomotoare pot suporta frecvențe mai mari, chiar și de câ teva sute
de Hz.
Pentru a putea interconecta procesorul cu res tul elementelor, s -a creat o plăcuță
electronică care dispu ne de o serie de conectori. Acești conectori fac legătura dintre procesor și
elementele de execuț ie sau intrare.
S
+
–
S
+
-Servo
iesire{
Servo
intrare{
D12 5V D11 5VBariere laser
Fotodiode
Bariera iesireLoc 1
Loc 2
Loc 3
Bariera intrare
Ecran LCD
5V GND RS E D4 D5 D6 D7
Alim RFID
– +
Fig. 4.1 1: Plac ă conectori
– 32 –
Schema electronică a procesorului se poate observa î n imaginea de mai jos. Acesta se
leagă direct la plăcuț a de intercone ctare prin pinii laterali, asemănă tor unui shield.
–– Laser iesire
–– Laser intrare
–– RS
–– E
–– D7
–– Servo iesire
–– Servo intrare
–– D5
–– D413
12
11
10
9
8
7
6
5
4
3
2
1
0A0 –- FOTO LOC 1
A1 –- FOTO LOC 2
A2 –- FOTO LOC 3
A3 –- FOTO BAR INTRARE
A4 –- FOTO BAR IESIRE
A5
A6
A7
52
50
48
46
44
42
40
38
36
34
32
30
28
26
24
2253
51
49
47
45
43
41
39
37
35
33
31
28
27
25
23–- SCK
–- MISO
–- LED R P1
–- LED R P2
–- LED R P3
–- BUT CERERE OUTSDA –-
MOSI –-
RST –-
LED V P1 –-
LED V P2 –-
LED V P3 –-
Fig. 4.1 2: Pinii digitali/analogici folositi ai procesorului
– 33 –
Schema bloc electrică a componentelor utilizate
D12 –-
D11 –-
D9 –-
D8 –-
D7 –-
Servo iesire –-
Servo intrare –-
D3 –-
D2 ––– A0
–- A1
–- A2
–- A3
–- A4
–- A5
–- A6
–- A7–- D52
–- D50
–- D46
–- D44
–- D42
–- D24D53 –-
D51 –-
D49 –-
D47 –-
D45 –-
D43 –-
100k+5V
A1R60
R125Rosu
VerdeD47D46BC1078,4kLaser+5V
D12
100kA4Fotodioda+5V
BC1078,4kLaser+5V
D11
R100kA3Fotodioda+5V
R60
R125Rosu
VerdeD45D44
R60
R125Rosu
VerdeD43D42
100k+5V
A2
100k+5V
A3RFID
LCD3.3V
D49
GND
D50
D51
D52
D53
5V GND D9GND D83.3V
RST
GND
IRQ
MISO
MOSI
SCK
SDA
D2D3 D13D75V GNDVSS
VDD
VE
RS
R/W
E
D0
D1
D2
D3
D4
D5
D6
D7
A
K10K5V GND
– 34 –
4.2. Proiectarea Software
Partea software a parcării inteligente este compusă din două mari progra me care sunt
legate unul de celălalt. Programul care este încă rcat pe procesorul AtMega 2560 ș i programul
vizual care v a rula pe un PC. Acesta din urmă permite vizualizarea grafică în timp real a parcă rii
inteligente.
Fig. 4.1 3: Arduino IDE 1.8.5
Programul software pentru procesorul AtMega 2560 a fost creat in limbajul C++, cu
ajutorul mediul ui de dezvoltare a aplicației Arduino IDE 1.8.5 . Acesta este compus din trei
părți. Partea întâ i cuprinde definirea variabilelor, a intrărilor analogice, a ieșirilor digitale ș i a
modulelor perifer ice. Partea a doua cuprinde iniț ializarea modulelor periferice, setarea ieșirilor
digitale precum și celor de intrare, dar și pregă tirea sistemului pentru prima pornire. Prima
pornire se referă la afișarea mesajului de întâ mpinare pe LCD, aprinderea LE D-urilor verzi de
stare prezență mașină și o rutină care permite reglarea b arierelor laser. Partea a treia cuprinde
partea de execuție în buclă a programului. Aici vor fi executate conditiile logice de
intrare/ieșire, trimiterea de comezi că tre elementele periferice precum și comunicarea serială cu
PC-ul.
– 35 –
Fig. 4.1 4: Processing IDE 3.0.1
Programul pentru partea grafică care va rula pe PC este creată în acelaș i limbaj C++, cu
ajutorul mediului de dezvoltare Processing 3.0.1. La fe l ca programul pentru procesor și acesta
este compus din trei părți. Prima parte reprezintă defin irea variabilelor folosite î n prog ram.
Partea a doua cuprinde inițializarea părț ii grafic e, iar partea a treia reprezintă codul principal al
programulu i. Acesta cuprinde ilustrarea părților grafice și decodarea informaț iei provenite
serial de la procesorul AtMe ga 2560.
Macheta
parcareUSB
Fig. 4.1 5: Interconectarea machetei la PC
Comunicarea între cele două programe se face serial, prin intermediul cablului USB.
Procesorul AtMega 2560 va trim ite in mometele cheie ale execuției sale informaț ii codate pe
linia serială. Decodarea se face în partea grafică pentru a se putea actualiza informația afișată
pe ecran.
– 36 –
4.3 Descrierea programului încărcat pe ATMega 2560
Așa cum am spus precedent, prim a parte a programului reprezintă definirea variabilelor,
a intrărilor, a ieșirilor ș i a modulelor periferice.
byte laser_intrare = 11;
byte laser_iesire = 12;
int prezenta_loc_1;
int prezenta_loc_2;
int prezenta_loc_3;
int foto_intrare;
int foto_iesire;
byte locuri_lib[3] = {0, 0, 0};
byte led_r_loc_1 = 46;
byte led_r_loc_2 = 44;
byte led_r_loc_3 = 42;
byte led_v_loc_1 = 47;
byte led_v_loc_2 = 45;
byte led_v_loc_3 = 43;
byte buton_iesire = 24;
bool cerere_loc = false;
int nr_locuri_libere = 3;
bool flag1 = false; //flag bariera intrare
bool flag2 = fa lse; //flag bariera iesire
bool flag_bariera1 = false;
bool flag_bariera2 = false;
byte command = 0;
byte command2 = 0;
Inițial sunt al ocate variabile pentru toate ieșirile/intră rile digit ale pentru a putea fi
folosite în program cu ușurință . Sunt de finite și variabilele folosite î n logica programului.
– 37 –
#include <SPI.h>
#define uchar unsigned char
#define uint unsigned int
#define MAX_LEN 16
const int chipSelectPin = 53;
const int NRSTPD = 49;
//MF522
#define PCD_IDLE 0x00 //NO action;
#define PCD_AUTHENT 0x0E
#define PCD_RECEIVE 0x08
#define PCD_TRANSMIT 0x04
#define PCD_TRANSCEIVE 0x0C
#define PCD_RESETPHASE 0x0F
#define PCD_CALCCRC 0x03 //CRC
//Mifar e_One
#define PICC_REQIDL 0x26
#define PICC_REQALL 0x52
#define PICC_ANTICOLL 0x93
#define PICC_SElECTTAG 0x93
#define PICC_AUTHENT1A 0x60
#define PICC_AUTHENT1B 0x61
#define PICC_READ 0x30
#define PICC_WRITE 0xA0
#define PICC_DECREMENT 0xC0
#define PICC_INCREMENT 0xC1
#define PICC_RESTORE 0xC2
#define PICC_TRANSFER 0xB0
#define PICC_HALT 0x50
//MF522
#define MI_OK 0
#define MI_NOTAGERR 1
#define MI_ERR 2
//–––––– MFRC522 –––––
//Page 0:Command and Status
#define Reserved00 0x00
#define CommandReg 0x01
#define CommIEnReg 0x02
#defin e DivlEnReg 0x03
#define CommIrqReg 0x04
#define DivIrqReg 0x05
– 38 –
#define ErrorReg 0x06
#define Status1Reg 0x07
#define Status2Reg 0x08
#define FIFODataReg 0x09
#define FIFOLevelReg 0x0A
#define WaterLevelReg 0x0B
#define ControlReg 0x0C
#define BitFramingReg 0x0D
#define CollReg 0x0E
#define Reserved01 0x0F
//Page 1:Co mmand
#define Reserved10 0x10
#define ModeReg 0x11
#define TxModeReg 0x12
#define RxModeReg 0x13
#define TxControlReg 0x14
#define TxAutoReg 0x15
#define TxSe lReg 0x16
#define RxSelReg 0x17
#define RxThresholdReg 0x18
#define DemodReg 0x19
#define Reserved11 0x1A
#define Reserved12 0x1B
#define MifareReg 0x1C
#define Reserved13 0x1D
#define Reserved14 0x1E
#define SerialSpeedReg 0x1F
//Page 2:CFG
#define Reserved20 0x20
#define CRCResultRegM 0x21
#define CRCResultRegL 0x22
#define Reserved21 0x23
#define ModWidthReg 0x24
#define Reserved22 0x25
#define RFCfgReg 0x26
#define GsNReg 0x27
#define CWGsPReg 0x28
#define ModGsPReg 0x29
#define TModeReg 0x2A
#define TPrescalerReg 0x2B
#define TReloadRegH 0x2C
#define TReloadRegL 0x2D
#define TCounterValueRegH 0x2E
#define TCounterValueRegL 0x2F
//Page 3:TestReg ister
#define Reserved30 0x30
#define TestSel1Reg 0x31
– 39 –
#define TestSel2Reg 0x32
#define TestPinEnReg 0x33
#define TestPinValueReg 0x34
#define TestBusReg 0x35
#define Auto TestReg 0x36
#define VersionReg 0x37
#define AnalogTestReg 0x38
#define TestDAC1Reg 0x39
#define TestDAC2Reg 0x3A
#define TestADCReg 0x3B
#define Reserved31 0x3C
#define Reserved32 0x3D
#define Reserved33 0x3E
#define Reserved34 0x3F
//––––––––––––––––
//4
uchar serNum[5];
uchar writeData[16] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 0
}; // 100
uchar moneyConsume = 18 ; //18
uchar moneyAdd = 10 ; //10
//A 6Byte
uchar sectorKeyA[16][16] = {
{
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
}
,
{
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
}
,
//{0x19, 0x84, 0x07, 0x15, 0x76, 0x14} ,
{
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
}
,
};
uchar sectorNewKeyA[16][16] = {
{
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
}
,
{
– 40 –
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xff, 0x07, 0x80, 0x69, 0x19, 0x84, 0x07, 0x15, 0x76,
0x14
}
,
//you can set another ket , such as " 0x19, 0x84, 0x07, 0x15, 0x76, 0x14 "
//{0x19, 0x84, 0x07, 0x15, 0x76, 0x14, 0xff,0x07,0x80,0x69,
0x19,0x84,0x07,0x15,0x76,0x14},
// but when loop, please set the sectorKeyA, the same key, so that RFID module ca n read the
card
{
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xff, 0x07, 0x80, 0x69, 0x19, 0x33, 0x07, 0x15, 0x34,
0x14
}
,
};
Următoarea parte reprezintă defin irea variabilelor folosite de către modulul RFID
precum și includerea librăriei SPI care fa cilitează comunicarea procesorului cu acesta.
#include <LiquidCrystal.h>
const int rs = 9, en = 8, d4 = 2, d5 = 3, d6 = 13, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Apoi se include librăria folosită pentru ecranul LCD precum și iniț ializarea pinilor
folosi ți de că tre procesor pentru a putea transmite date că tre acesta.
#include <Servo.h>
Servo intrare;
Servo iesire;
Definirea servomotoarelor se face prin adăugarea a două variabile ce vor devenii cele
două servomotoare folosite ș i prin includerea lor in l ibrăria Servo.
Partea a doua cuprinde iniț ializare a programului software. Acesta începe prin
inițializarea comunicaț iei seriale cu viteaza de comunicare de 9600 b/s.
Serial.begin(9600);
Inițializarea LCD -ului se face prin definirea n umărului de coloane și linii ale sale. În
cazul nostru avem 16 coloane și 2 linii. Se setează cursorul LCD -ului pe poziția (0,0)
reprezentând coloana 0 și linia 0 și se afișează un mesaj începând cu poziția respectivă .
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("System starting..");
– 41 –
Inițializarea plăcuț ei RFID se face prin setarea pi nului Chip Select ca fiind low și pinul
RST avâ nd valoarea high. Apoi se apelează procedura de iniț ializare a circuitului.
SPI.begin();
pinMode(chipSelectPin, OUTPUT) ; // Set digital pin 49 as OUTPUT to connect it to the
RFID /ENABLE pin
digitalWrite(chipSelectPin, LOW); // Activate the RFID reader
pinMode(NRSTPD, OUTPUT); // Set digital pin 49 , Not Reset and Power -down
digitalWrite(NRSTPD, HIGH);
MFRC522_Init();
Se setează pinii digitali pe care sunt conect ate LED -urile de stare verzi/roșii ș i barie rele
laser ca fiind de tipul ieșire digitală , iar pinul pe care est e conectat butonul de cerere ieș ire ca
fiind de tipul intrar e digitală .
pinMode(led_r_loc_1, OUTPUT);
pinMode(led_r_loc_2, OUTPUT);
pinMode(led_r_loc_3, OUTPUT);
pinMode(led_v_loc_1, OUTPUT);
pinMode(led_v_loc_2, OUTPUT);
pinMode(led_v_loc_3, OUTPUT);
pinMode(buton_iesire, INPUT_PULLUP);
pinMode(laser_intrare, OUTPUT);
pinMode(laser_iesire, OUTPUT);
Se atașează declaraț iile servom otoarelor la pinii care au funcția de ieșire analogică și se
setează o poziț ie de start pentru ele.
intrare.attach(5); //servo
iesire.attach(6);
intrare.write(0); //inchi dem barierele
iesire.write(90);
Apoi după o mică întârziere de 2s se afișează pe ecranul LCD faptul că sistemul a
terminat inițializarea. Mesajul se afișează pe poziția LCD -ului coloana 0 ș i linia 1.
delay(2000);
lcd.setCursor(0, 1);
lcd.print("Done!");
delay(1000);
– 42 –
Aprindem LED -urile verzi din dreptul locurilor de p arcare, deoarece se presupune că
toate locurile sunt libere la prima pornire. Acest lucru se face prin ver ificarea vectorului ce
memorează starea tuturor locurilor de parcare.
if (locuri_ lib[0] == 0) {
digitalWrite(led_r_loc_1, LOW);
digitalWrite(led_v_loc_1, HIGH);
}
if (locuri_lib[1] == 0) {
digitalWrite(led_r_loc_2, LOW);
digitalWrite(led_v_loc_2, HIGH);
}
if (locuri_lib[2] == 0) {
digitalWrite(led_r_loc_3, L OW);
digitalWrite(led_v_loc_3, HIGH);
}
S-a introdus o secvență pentru a se p utea regla barierele laser caz în care se
desincronizează. Aceasta se apelează numai în cazul în care butonul de cerere ieșire este apăsat
îndelungat.
while(digitalRead(buton_iesire) == LOW) { //secventa pentru reglare lasere
digitalWrite(laser_intrare, HIGH);
digitalWrite(laser_iesire, HIGH);
}
digitalWrite(laser_intrare, LOW); //stingem laserele
digitalWrite(laser_iesire, LOW) ;
Singurul lucru care mai rămâne de fă cut es te să pregătim LCD -ul pentru afișarea
informaț iilor curente.
lcd.setCursor(0, 0);
lcd.print("Locuri libere: ");
lcd.setCursor(0, 1);
lcd.print(" ");
Urmă toarea parte a codului este cea care se execută în buclă infinită , care cuprinde
princ ipala logică de ope rare a sistemului. Aici sunt acționate elementele de execuție și transferul
de date că tre programul software aflat pe PC.
uchar i, tmp;
uchar status;
uchar str[MAX_LEN];
uchar RC_s ize;
uchar blockAddr; //0 ~63
String mynum = "";
– 43 –
Se afișează pe ecran numărul locurilor rămase libere, începâ nd cu coloana 15 linia 0.
lcd.setCursor(15, 0);
lcd.print(nr_locuri_libere);
În următoarele linii de cod se testează dacă circuitului R FID i s -a prezentat vreo ca rtelă
de intrare. Se testează și dacă cartela respectivă este cunoscută de către procesor. În cazul de
față există trei variante, adică trei cartele. Fiecare avâ nd un cod de identific are propriu. Pentru
cartela numă rul unu codul este 96, pentru a doua cart elă codul este 150, iar pentru a treia cartelă
codul este 83. Prin tes tarea acestor coduri cu informația provenită de la RFID, se identifică dacă
clienții deja cunoscuți urmează să foloseasă parcarea inteligentă. Dacă oricare din cele trei
cartele a fost folosită, se salvează într -o variabilă de tip boolean faptul că a avut loc o cerere de
intrare.
status = MFRC522_Request(PICC_REQIDL, str);
if (status == MI_OK)
{
delay(1000);
}
status = MFRC522_Anticoll(str);
memcpy(serNum, str, 5);
if (status == MI_OK) {
if (serNum[0] == 96) {
command2 = '1';
lcd.setCursor(0, 1);
lcd.print("Client 1 ");
cerere_loc = true;
} else if (serNum[0] == 150) {
command2 = '2';
lcd.setCursor(0, 1);
lcd.print("Client 2 ");
cerere_loc = true;
} else if (serNum[0] == 83) {
command2 = '3';
lcd.setCursor(0, 1);
lcd.print("Client 3 ");
cerere_loc = true;
}
Serial.write(command2);
Serial.write(10);
delay(1000);
}
– 44 –
Dacă cererea de intrare a fost primită , prin t estarea variabilei respective, și dacă mai
sunt locuri libere se intră în următoarea subrutină. În momentul de față se decrementează
numă rul locurilor valabile, se trimite că tre PC codul respectiv pentru acț iunea curentă, se trimite
comandă că tre servomotorul d e la intrare pentru ca acesta să r idice bariera, se activează
variabi la care va porni bariera laser și se iese din subrutină. Dacă la următoarea iterație, numă rul
locurilor valabile este mai mic decâ t 0, i nseamnă că s-a depașit capacitatea maximă a parcării
și se afișează pe ecranul LCD me sajul respectiv.
if (cerere_loc == true) {
if (nr_locuri_libere > 0) {
nr_locuri_libere –;
// Serial.println("S -a ridicat bariera"); //ridicare bariera
command2 = '4';
intrare.write(90);
flag_bariera1 = true;
cerere_loc = false;
lcd.setCursor(0, 1);
lcd.print(" ");
} else {
lcd.setCursor(0, 1);
lcd.print("locuri ocupate! ");
cerere_loc = false;
}
}
Dacă bariera de intr are a fost ridicată, se intră în subrutină pentru bariera laser care
menține bariera ridicată până când maș ina trece de ea. Se aprinde laser -ul și se citește intrarea
analogică asociată fotorezi stenței barierei laser. Dacă mașina a intrat în bariera laser, se
activează o variabilă care memorează acest lucru. Se trimite serial acțiunea respectivă și se
menține bariera ridicată. Se așteaptă ca mașina să depășească bariera laser și fotodioda să fie
saturată la maxim. Atunci se î nchide bariera, se stinge laseru l și se trimite serial acțiunea
respectivă .
if (flag_bariera1 == true) {
digitalWrite(laser_intrare, HIGH); //aprindere laser
foto_intrare = analogRead(A3);
if (foto_intrare <= 950) flag1 = true; //daca a intrat masina in bariere
if (flag1 == true) {
command2 = '4';
intrare.write(90);
– 45 –
if (foto_intrare > 960) { //daca a iesire masina din bariere
command2 = '5';
intrare.write(0);
digitalWrite(laser_intrare, LOW); //stingem laser
flag1 = false; //reset flaguri
flag_bariera1 = false;
}
}
}
Se apelează funcția care verifică senzorii de prezență mașină pentru fiecare loc de
parcare î n parte.
citire_senzori_ prezenta();
Dacă s -a găsit vreun loc de parc are ocupat se aprinde LED -ul roșu aferent locului de
parcare. Dacă nu s -a găsit, se aprinde LED -ul verde ca fiind loc liber. Acest lucru se realizează
prin tes tarea unui vector care memorează starea locurilor d e parcare.
//aprindem leduri verzi/rosii
if (locuri_lib[0] == 1) { //locul 1
digitalWrite(led_r_loc_1, HIGH);
digitalWrite(led_v_loc_1, LOW);
} else {
digitalWrite(led_v_loc_1, HIGH);
digitalWrite(led_r_loc_1, LOW);
}
if (locuri_lib[1] == 1) { //locul 2
digitalWrite(led_r_loc_2, HIGH);
digitalWrite(led_v_loc_2, LOW);
} else {
digitalWrite(led_v_loc_2, HIGH);
digitalWrite(led_r_loc_2, LOW);
}
if (locuri_lib[2] == 1) { //locul 3
digitalWrite(led_r_loc_3, HIGH);
digitalWrite(led_v_loc_3, LOW);
} else {
digitalWrite(led_v_loc_3, HIGH);
digitalWrite(led_r_loc_3, LOW);
}
Se testează dacă avem ce rere de ieșire, prin testarea stării butonului amplasat l a ieșirea
parcării. Dacă avem cerere de ieșire, se execută operaț iile in verse celor de la intrare. Adică se
– 46 –
incrementează variabila ce memorează locurile libere din parcare și se testează dacă toate
mașinile au ieș it din parcare.
if (digitalRead(buton_ iesire) == LOW) { //cerere iesire cu buton
nr_locuri_libere++; //incrementare
if (nr_locuri_libere > 3) {
nr_locuri_libere = 3;
}
Afișăm pe ecran un mesaj către utilizator ș i ridicăm bariera pentru ca acesta să poata
ieși, trimițând în același timp acțiunea respectivă că tre serial.
lcd.setCursor(0, 1);
lcd.print("O zi buna! ");
command2 = '6';
iesire.write(0);
flag_bariera2 = true; //ridicare bariera
delay(1000);
}
Dacă bariera de ieșire a fost r idicată , se aprinde laser -ul de la ieșire și se citește intrarea
analogică asociată fotodiodei de la ieșire. Dacă aceasta a fost întreruptă, adică mașina a ajuns
în dreptul ei, se menț ine bariera ridi cată.
if (flag_bariera2 == true) {
digitalW rite(laser_iesire, HIGH); //aprindere laser
foto_iesire = analogRead(A4);
if (foto_iesire <= 950) flag2 = true; //daca e in bariere
if (flag2 == true) {
command2 = '6';
iesire.write(0);
Dacă mașina a ieș it complet din parcare, se coboară bariera și se trimite către serial
acțiunea respectivă .
if (foto_iesire > 960) { //daca a iesit din bariere
command2 = '7';
iesire.write(90);
digitalWrite(laser_iesire, LOW); //stingem laser
flag2 = false; //reset flaguri
flag_bariera2 = false;
– 47 –
lcd.setCursor(0, 1);
lcd.print(" ");
}
}
}
La finalul buc lei de execuție, circuitul RFID se pune în stare de pauz ă.
MFRC522_Halt();
Serial.write(command2);
Serial.write(10);
}
Funcția care verifică stare a locurilor de parcare este afișată mai jos. Aceasta citește pe
rând fiecare fotodiodă a fiecă rui lo c de parcare și execută o comparație cu o valoare prestabilită.
Dacă valoarea analogică scade sub acea valoare înseamnă că locul respectiv este ocupat și se
salvează starea lui î n vectorul predefinit. Codul serial pentru toate locurile de parcare este
format din trei litere:
– „a” daca locul 1 este ocupat;
– „b” daca locul 1 este liber;
– „c” daca locul 2 este ocupat;
– „d” daca locul 2 este liber;
– „e” daca locul 3 este ocupat;
– „f” daca locul 3 este liber.
void citire_senzori_prezenta() {
prezenta_loc_1 = analogRead(A0);
prezenta_loc_2 = analogRead(A1);
prezenta_loc_3 = analogRead(A2);
if (prezenta_loc_1 < 800) {
locuri_lib[0] = 1;
command = 'a';
} else {
locuri_lib[0] = 0;
command = 'b';
}
Serial.write(command);
if (prezenta_loc_2 < 800) {
locuri_lib[1] = 1;
command = 'c';
} else {
locuri_lib[1] = 0;
command = 'd';
– 48 –
}
Serial.write(command);
if (prezenta_loc_3 < 800) {
locuri_lib[2] = 1;
command = 'e';
} else {
locuri_lib[2] = 0;
command = 'f';
}
Serial.write(command);
Serial.write(10);
}
Funcțiile folosite pentru interacț ionarea cu circuitul RFID sunt afiș ate mai jos.
void Write_MFRC522(uchar addr, uchar val)
{
digitalWrite(chipSelectPin, LOW);
//:0XXXXXX0
SPI.transfer((addr << 1) & 0x7E);
SPI.transfer(val);
digitalWrite(chipSelectPin, HIGH);
}
uchar Read_MFRC522(uchar addr)
{
uchar val;
digitalWrite(chipSelectPin, LOW);
//:1XXXXXX0
SPI.transfer(((addr << 1) & 0x7E) | 0x80);
val = SPI.transfer(0x00);
digitalWrite(chipSelectPin, HIGH);
return val;
}
void SetBitMask(uchar reg, uchar mask)
{
uchar tmp;
tmp = Read_MFRC522(reg);
– 49 –
Write_MFRC522(reg, tmp | mask); // set bit mask
}
void ClearBitMask(uchar reg, uchar mask)
{
uchar tmp;
tmp = Rea d_MFRC522(reg);
Write_MFRC522(reg, tmp & (~mask)); // clear bit mask
}
void AntennaOn(void)
{
uchar temp;
temp = Read_MFRC522(TxControlReg);
if (!(temp & 0x03))
{
SetBitMask(TxControlReg, 0x03);
}
}
void AntennaOff(void)
{
ClearBitMask(TxControlReg, 0x03);
}
void MFRC522_Reset(void)
{
Write_MFRC522(CommandReg, PCD_RESETPHASE);
}
void MFRC522_Init(void)
{
digitalWrite(NRSTPD, HIGH);
MFRC522_Reset();
//Timer: TPrescaler*TreloadVal/6.78MHz = 24ms
Write_MFRC522(T ModeReg, 0x8D); //Tauto=1; f(Timer) = 6.78MHz/TPreScaler
Write_MFRC522(TPrescalerReg, 0x3E); //TModeReg[3..0] + TPrescalerReg
Write_MFRC522(TReloadRegL, 30);
Write_MFRC522(TReloadRegH, 0);
– 50 –
Write_MFRC522(TxAutoReg, 0x40); //100%ASK
Write_MFRC522(ModeReg, 0x3D); //CRC0x6363 ???
//ClearBitMask(Status2Reg, 0x08); //MFCrypto1On=0
//Write_MFRC522(RxSelReg, 0x86); //RxWait = RxSelReg[5..0]
//Write_MFRC522(RFCfgReg, 0x7F); //RxGain = 48dB
AntennaOn();
}
uchar MFRC522_Reques t(uchar reqMode, uchar *TagType)
{
uchar status;
uint backBits;
Write_MFRC522(BitFramingReg, 0x07); //TxLastBists = BitFramingReg[2..0] ???
TagType[0] = reqMode;
status = MFRC522_ToCard(PCD_TRANSCEIVE, TagType, 1, TagType, &backBits);
if ((s tatus != MI_OK) || (backBits != 0x10))
{
status = MI_ERR;
}
return status;
}
uchar MFRC522_ToCard(uchar command, uchar *sendData, uchar sendLen, uchar *backData,
uint *backLen)
{
uchar status = MI_ERR;
uchar irqEn = 0x00;
uchar waitIRq = 0x00;
uchar lastBits;
uchar n;
uint i;
switch (command)
{
case PCD_AUTHENT:
{
irqEn = 0x12;
waitIRq = 0x10;
– 51 –
break;
}
case PCD_TRANSCEIVE: //FIFO
{
irqEn = 0x77;
waitIRq = 0x30;
break;
}
default:
break;
}
Write_MFRC522(CommIEnReg, irqEn | 0x80);
ClearBitMask(CommIrqReg, 0x80);
SetBitMask(FIFOLevelReg, 0x80); //FlushBuffer=1, FIFO 初始化
Write_MFRC522(CommandReg, PCD_IDLE); //NO action; ???
//FIFO
for (i = 0; i < sendLen; i++)
{
Write_MFRC522(FIFODataReg, sendData[i]);
}
Write_MFRC522(CommandReg, command);
if (command == PCD_TRANSCEIVE)
{
SetBitMask(BitFramingReg , 0x80); //StartSend=1,transmission of data starts
}
i = 2000; //M125ms ???
do
{
//CommIrqReg[7..0]
//Set1 TxIRq RxIRq IdleIRq HiAlerIRq LoAlertIRq ErrIRq TimerIRq
n = Read_MFRC522(CommIrqReg);
i–;
}
while ((i != 0) && !(n & 0x01) && !(n & waitIRq));
ClearBitMask(BitFramingReg, 0x80); //StartSend=0
if (i != 0)
{
if (!(Read_MFRC522(ErrorReg) & 0x1B)) //BufferOvfl Collerr CRCErr ProtecolErr
– 52 –
{
status = MI_OK;
if (n & irqEn & 0x01)
{
statu s = MI_NOTAGERR; //??
}
if (command == PCD_TRANSCEIVE)
{
n = Read_MFRC522(FIFOLevelReg);
lastBits = Read_MFRC522(ControlReg) & 0x07;
if (lastBits)
{
*backLen = (n – 1) * 8 + lastBits;
}
else
{
*backLen = n * 8;
}
if (n == 0)
{
n = 1;
}
if (n > MAX_LEN)
{
n = MAX_LEN;
}
//FIFO
for (i = 0; i < n; i++)
{
backData[i] = Read_MFRC522(FIFODataReg);
}
}
}
else
{
status = MI_ERR;
}
}
return status;
}
– 53 –
uchar MFRC522_Anticoll(uchar *serNum)
{
uchar status;
uchar i;
uchar serNumCheck = 0;
uint unLen;
//ClearBitMask(Status2Reg, 0x08); //TempSensclear
//ClearBitMask(CollReg,0x80); //ValuesAfterColl
Write_MFRC522(BitFramingReg, 0x00); //TxLastBists = BitFramingReg[2..0]
serNum[0] = PICC_ANTICOLL;
serNum[1] = 0x20;
status = MFRC522_ToCard(PCD_ TRANSCEIVE, serNum, 2, serNum, &unLen);
if (status == MI_OK)
{
for (i = 0; i < 4; i++)
{
serNumCheck ^= serNum[i];
}
if (serNumCheck != serNum[i])
{
status = MI_ERR;
}
}
//SetBitMask(CollReg, 0x80); //ValuesAfterColl=1
return status;
}
void CalulateCRC(uchar *pIndata, uchar len, uchar *pOutData)
{
uchar i, n;
ClearBitMask(DivIrqReg, 0x04); //CRCIrq = 0
SetBitMask(FIFOLevelReg, 0x80); //FIFO
//Write_MFRC522(CommandReg, PCD_IDLE);
//FIF O
for (i = 0; i < len; i++)
{
Write_MFRC522(FIFODataReg, *(pIndata + i));
– 54 –
}
Write_MFRC522(CommandReg, PCD_CALCCRC);
//CRC
i = 0xFF;
do
{
n = Read_MFRC522(DivIrqReg);
i–;
}
while ((i != 0) && !(n & 0x04)); //CRCIrq = 1
//CRC
pOutData[0] = Read_MFRC522(CRCResultRegL);
pOutData[1] = Read_MFRC522(CRCResultRegM);
}
/*
MFRC522_SelectTag
serNum –
*/
uchar MFRC522_SelectTag(uchar *serNum)
{
uchar i;
uchar status;
uchar size;
uint recvBits;
uchar buffer[9 ];
//ClearBitMask(Status2Reg, 0x08); //MFCrypto1On=0
buffer[0] = PICC_SElECTTAG;
buffer[1] = 0x70;
for (i = 0; i < 5; i++)
{
buffer[i + 2] = *(serNum + i);
}
CalulateCRC(buffer, 7, &buffer[7]); //??
status = MFRC522_ToCard( PCD_TRANSCEIVE, buffer, 9, buffer, &recvBits);
if ((status == MI_OK) && (recvBits == 0x18))
{
size = buffer[0];
}
– 55 –
else
{
size = 0;
}
return size;
}
uchar MFRC522_Auth(uchar authMode, uchar BlockAddr, uchar *Sectorkey, uchar *serNu m)
{
uchar status;
uint recvBits;
uchar i;
uchar buff[12];
buff[0] = authMode;
buff[1] = BlockAddr;
for (i = 0; i < 6; i++)
{
buff[i + 2] = *(Sectorkey + i);
}
for (i = 0; i < 4; i++)
{
buff[i + 8] = *(serNum + i);
}
status = MFRC522_ToCard(PCD_AUTHENT, buff, 12, buff, &recvBits);
if ((status != MI_OK) || (!(Read_MFRC522(Status2Reg) & 0x08)))
{
status = MI_ERR;
}
return status;
}
uchar MFRC522_Read(uchar blockAddr, uchar *recvData)
{
uchar status;
uint unLen;
recvData[0] = PICC_READ;
recvData[1] = blockAddr;
CalulateCRC(recvData, 2, &recvData[2]);
status = MFRC522_ToCard(PCD_TRANSCEIVE, recvData, 4, recvData, &unLen);
– 56 –
if ((status != MI_OK) || (unLen != 0x90))
{
status = MI_ERR;
}
return status;
}
uchar MFRC522_Write(uchar blockAddr, uchar *writeData)
{
uchar status;
uint recvBits;
uchar i;
uchar buff[18];
buff[0] = PICC_WRITE;
buff[1] = blockAddr;
CalulateCRC(buff, 2, &buff[2]);
status = MFRC522_ToCard(PCD _TRANSCEIVE, buff, 4, buff, &recvBits);
if ((status != MI_OK) || (recvBits != 4) || ((buff[0] & 0x0F) != 0x0A))
{
status = MI_ERR;
}
if (status == MI_OK)
{
for (i = 0; i < 16; i++) //FIFO 16Byte
{
buff[i] = *(writeData + i);
}
CalulateCRC(buff, 16, &buff[16]);
status = MFRC522_ToCard(PCD_TRANSCEIVE, buff, 18, buff, &recvBits);
if ((status != MI_OK) || (recvBits != 4) || ((buff[0] & 0x0F) != 0x0A))
{
status = MI_ERR;
}
}
return status;
}
void MFRC522_Halt(void)
– 57 –
{
uchar status;
uint unLen;
uchar buff[4];
buff[0] = PICC_HALT;
buff[1] = 0;
CalulateCRC(buff, 2, &buff[2]);
status = MFRC522_ToCard(PCD_TRANSCEIVE, buff, 4, buff, &unLen);
}
– 58 –
4.4 Descrierea programului de monitorizare a parcării
Programul permite vizualizarea în timp real a stării parcă rii inteligente. Acest lucru este
realizat prin intermediul unei comunicaț ii seriale între procesorul AtMega 2560 și acesta. El
verifică la început dacă procesorul a fos t conectat la ca lculator prin că utarea portului dedicat
acestuia. Dacă acesta a fost găsit, el va citii în permanență portul serial și va decoda informația
găsită . Prin decodarea acestei informații se pot l ua decizii grafice care va atenț iona operatorul
PC-ul.
În primă parte sunt def inite variabilele folosite de către program și i se vor atribui valori
inițiale.
import processing.serial.*;
Serial myPort;
int connTimeout = 6000; // Timeout de date receptionate in [ms] dupa care sistemul rupe
conexiunea pe un anumit port
long refTime = 0; // Timpul salvat anterior (folosit drept referinta) pt timerul de 3 sec folosit
pt detectia portului serial
long cTime = 0; // Timpul curent (fata de startul aplicatiei)
long timeDif = 0; // Diferen ta de timp (curent – anterior) folosita pt detectia modului idle
boolean connActive = false; // Flag care e setat atunci cand sistemul rupe conexiunea pe seriala
cu portul dorit
String[] serialPorts;
String resPort = "COM6"; // String constant in care se retine portul dorit
String data; // Byte (sub forma char) care retine datele de pe seriala
boolean stare_loc1 = false;
boolean stare_loc2 = false;
boolean stare_loc3 = false;
boolean bar_intrare = false;
boolean bar_iesire = false;
boolean client1 = false;
boolean client2 = false;
boolean client3 = false;
În partea a doua se inițializează ecranul și se afișează pe consola programului lista
porturilor seriale descoperite.
void setup() {
size(600, 480); //dimensiu ne ecran
println(Serial.list());
– 59 –
}
Partea a treia repezintă execuția în buclă a programului, care verifică la fiecare iterație
dacă s -a primit informație pe linia serială, decodează informația și desenează părț ile grafice ale
ecranului.
Se stabile ște culoarea fundalului.
void draw() {
background(103,115,144); //culoare background
Se verifică dacă avem o conexiune realizată. Dacă nu, se apelează funcția de inițializare
a portului serial până câ nd aceasta este e fectuată .
// Verifica daca exista conexiune seriala
if (connActive == false) {
delay(500);
portInit();
} else
{
Se verifică dacă portul serial are informații disponibile, î n caz contrar ac esta va avea
valoarea 0. Această valoare reprezin tă lungimea datelor de pe seri ală.
// Verifica daca sunt date disponibile la interfata seriala
if (myPort.available() > 0) {
// Date disponibile -> trebuie resetat timerul de timeout, cat si flagul asociat
refTime = cTime;
cTime = millis();
connActive = true;
Salvăm datele găsite într -un vector temporar având mărimea de trei locații. Dacă datele
salvate
în vector sunt dife rite de 0, din acesta se elimină spațiile goale posibile apărute și se salvează
într-o variabilă prede finită .
// Salveaza datele din buffer
byte[] inBuffer = new byte[2];
if(myPort.available() >0) {
inBuffer = myPort.readBytes();
myPort.readBytes(inBuffer);
if(inBuffer != null) {
– 60 –
data = trim(new String(inBuffer));
}
}
Variabila „data” va conține informația găsită pe por tul serial. Aceasta va trebui să fie
comparată cu lista de coduri cunoscută de la proceso rul AtMega 2560. De exemplu dacă pe
linia serială vom găsi informaț ia „bdf”, v om știi că aceasta semnific ă ca locurile 1, 2 s i 3 vor fi
libere. Daca informația va fi „adf”, vom știi că locul 1 va fi ocupat, iar celelalte două vor fi
libere.
switch(data) {
case "bdf":
stare_loc1 = false;
stare_loc2 = false;
stare_loc3 = false;
break;
case "adf":
stare_loc1 = true;
stare_loc2 = false;
stare_loc3 = false;
break;
case "bcf":
stare_loc1 = false;
stare_loc2 = true;
stare_loc3 = false;
break;
case "bde":
stare_loc1 = false;
stare_loc2 = false;
stare_loc3 = true;
break;
case "acf":
stare_loc1 = true;
stare_loc2 = true;
stare_loc3 = false;
break;
case "bce":
stare_loc1 = false;
stare_loc2 = true;
stare_loc3 = true;
break;
– 61 –
case "ade":
stare_loc1 = true;
stare_loc2 = false;
stare_loc3 = true;
break;
case "ace":
stare_loc1 = true;
stare_loc2 = true;
stare_loc3 = true;
break;
case "1":
client1 = true;
break;
case "2":
client2 = true;
break;
case "3":
client3 = true;
break;
case "4":
bar_intrare = true;
break;
case "5":
bar_intrare = false;
client1 = false;
client2 = false;
client3 = false;
break;
case "4":
bar_intrare = true;
break;
case "5":
bar_intrare = false;
break;
case "6":
bar_iesire = true;
break;
– 62 –
case "7":
bar_iesire = false;
break;
default :
break;
}
// Goleste buffer -ul
myPort.clear();
Dacă nu au fost găsite date pe linia serială, se pornește un timer de î ntrerupere a
conexiunii de 6 s ecunde. Rolul acestui timer de î ntrerupere este cel de a avertiza utilizatorul
PC-ului asupra unei posibile defecțiuni a legăturii între parcare ș i PC.
} else {
// Nu sunt date disponibile -> verifica timpul scurs de la ultimul reset al timerului
//(i.e. de la ultima citire de date)
cTime = millis();
timeDif = cTime – refTime;
// Daca s -a depasit p erioada de timeout, atunci reactualizeaza variabila de timp
//anterioara si reseteaza flagul de conexiune
if (timeDif >= connTimeout) {
// In mod normal aici ar trebui inchis portul!
myPort.stop();
myPort = null;
connActive = false;
refTime = cTime;
}
}
}
În continuare es te apelată funcț ia ce desen ează marcajele grafice ale parcării, funcția ce
comută starea locurilor de parcare în funcție de datele decodate anterior și funcția ce comută
starea barierelor.
marcaje();
stare_locuri();
stare_bariere();
}
Funcția „marcaje” pur ș i simplu a fișează pe ecran un serial de dreptunghiuri amplasate
în coordona te specifice ecranului, astfel încât să delimiteze cele trei locuri de parcare.
– 63 –
void marcaje(){
fill(255,255,255);
noStroke();
rect(10,10,10,40);
rect(10,60,10,40);
rect(10,110,10,40);
rect(10,160,10,40);
rect(20,10,140,10);
rect(150,10,10,40);
rect(150,60,10,40);
rect(150,110,10,40);
rect(150,160,10,40);
rect(160,10,140,10);
rect(290,10,10,40);
rect(290,60,10,40);
rect(290,110,10,40);
rect(290,160,10,40);
rect(300,10,140,10);
rect(430,10,10,40);
rect(430,60,10,40);
rect(430,110,10,40);
rect(430,160,10,40);
textSize(20);
text("INTRARE", 481,312);
text("IESIRE", 300,408);
}
Funcț ia „stare_locuri” are rolul de a desena un che nar verde/roșu î n interiorul locurilor
de parcare, în funcție de starea acestora. Dacă în urma decodării datelor de pe linia serială s -a
realiza t că unul din locuri este ocupa t, chenarul va avea culoarea roșie. Î n caz contrar acesta va
avea culoarea verde.
void stare_locuri(){
if(stare_loc1 == true) fill(255,0,0); //rosu
else fill(2,216,104); //verde
rect(45, 31, 80, 161, 7);
if(star e_loc2 == true) fill(255,0,0); //rosu
– 64 –
else fill(2,216,104); //verde
rect(186, 31, 80, 161, 7);
if(stare_loc3 == true) fill(255,0,0); //rosu
else fill(2,216,104); //verde
rect(327, 31, 80, 161, 7);
}
Funcț ia „st are_bariere” are rolul de a afișa pe ecran bariera fizică de la intrare/ieșire în
funcție de starea lor reală .
void stare_bariere(){
if(bar_intrare == true) {
fill(255,0,0);
rect(400,295,60,40);
fill(255,255,255);
rect(460,320,10,10); //bariera intrare
} else {
fill(0,255,0);
rect(400,295,60,40);
fill(255,255,255);
rect(460,320,25,10); //bariera intrare
fill(255,0,0);
rect(485,320,25,10);
fill(255,255,255);
rect(510,320,25,10);
fill(255,0,0);
rect(535,320,25,10);
fill(255,255,255);
rect(560,320,25,10);
}
if(bar_iesire == true) {
fill(255,0,0);
rect(345,283,40,60);
fill(255,255,255);
rect(370,343,10,10); //bariera iesire
} else {
fill(0,255,0);
rect(345,283,40,60);
fill(255,255,255);
rect(370,343,10,25); //bariera iesire
fill(255,0,0);
rect(370,368,10,25);
fill(255,255,255);
rect(370,393,10,25);
– 65 –
fill(255,0,0);
rect(370,418,10,25);
fill(255,255,255);
rect(370,443,10,25);
}
}
Funcț ia „portInit” are rolul de a inițializa conexiunea serială între procesor și PC. Inițial
se salvează î ntr-o variabilă lista porturilor disponibile la m omentul actual ale PC -ului. Dacă
această listă are mai mul t de un port disponibil se intră în rutina de verificare. Această rutină
verifică dacă din lis ta porturilor disponibile există și portul nostru de comunica re definit inițial
în program. Dacă portul a fost găsit, se stabilește conexiunea. Dacă acesta nu a fost găsit, se
afișează pe ecran un m esaj care avertizează utilizatorul asupra acestui lucru.
void portInit() {
serialPorts = Serial.list();
if (serialPorts.length > 0) {
for (int i = 0; i < serialPorts.length; i++) {
// Cauta in toata lista de porturi COM6
if (serialPor ts[i].equals(resPort) == true) {
// Incearca sa setezi portul
try {
// Daca este gasit, initializeaza portul
myPort = new Serial(this, serialPorts[i], 9600);
// Seteaza bitul de conexiune
connActive = true;
break;
}
catch (RuntimeException e) {
// Setarea portului a esuat (conexiune intrerupta); in realitate incearca sa se conecteze la
"COM6" care e in lista de porturi
// valabile, ins a lista nu se updateaza la intreruperea conexiunii
connActive = false;
}
} else {
// Portul cautat nu a fost gasit
myPort = null;
connActive = false;
text("Connection OFF", 505, 60);
fill(0);
}
}
}
– 66 –
5. Rezultate experimentale
Fig. 5.1: Imagine de ansamblu a machetei parcării
Așa cum se poate observa în imaginea de mai sus, parcarea are disponibile trei locuri
de parcare, pentru trei clienți diferiți. Putea fi realizat un număr mai mare de locuri de parcare,
dar pentru a ilustra principiul de funcționare, s -a ales un număr mic de locuri. La intrare în
parcare, clientul, trebuie să prezinte cartela RFID furnizată acestuia pentru a putea intra în
interior. Odată intrat, acestuia i se afișează locurile libere disponibile prin aprinderea unor
LED-uri verzi aferente locurilor de parc are. Acest lucru este util în găsirea rapidă a unui loc de
parcare. Dacă locurile sunt ocupate, se vor aprinde LED -urile roșii aferente.
Pentru a putea ieși din parcare, se va apăsa butonul amplasat la ieșire. Acesta va
transmite o cerere de ieșire către procesor și va deschide bariera de ieșire.
Parcarea inteligentă dispune de un ecran LCD, unde utilizatorii ei pot vedea câte locuri
de parcare mai sunt disponibile. Dacă toate locurile sunt ocupate, pe acesta se va afișa mesajul
„locuri ocupate” pentru a informa utilizatorul în intenția că acesta să numai intre în interiorul
parcării.
Pentru o mai bună gestionare, parcarea inteligentă dispune de o interfață grafică de
unde utilizatorul ei poate observa în timp real starea ei. Aceasta poate furniza inform ații
asupra stării locurilor de parcare, stării barierelor de intrare/ieșire, care dintre utilizatori au
folosit parcarea.
– 67 –
Fig. 5.2: Interfața grafică
În cazul în care se rupe legătura dintre interfața grafică și parcarea inteligentă, pe
ecranul interfeței se va afișa mesajul „Connection OFF”.
Fig. 5.3: Interfața grafică – connection OFF
În momentul ocupării unuia din locurile libere, căsuța aferentă se va face roșie pentru
a evidenția că acesta s -a ocupat.
– 68 –
Fig. 5.4: Interfața grafică – locul 1 ocupat, restul libere
Fig. 5.5: Interfața grafică – locul 2 ocupat, restul libere
– 69 –
Fig. 5.6: Interfața grafică – locul 3 ocupat, restul libere
În momentul prezentării unei cartele, se va afișa pe ecran identitatea utilizatorului și
se va evide nția că bariera de intrare este ridicată.
Fig. 5.7: Interfaț a grafică – bariera intrare ridicat ă
În momentul unei cereri de ie șire, pe ecran se va afi șa mesajul respectiv și se va
eviden ția că bariera de la ie șire este ridicat ă.
– 70 –
Fig. 5.8: Interfa ța grafic ă – bariera ie șire ridicat ă
– 71 –
6. Concluzi i
O modalitate de a atenua efectele negative ale traficului în zonele urbane și
metropolitane este gestionarea eficientă a spaț iilor de parcare a vehiculelor. Tehnologia a fost
folosită pentru soluții care vor avea un impact rapid și la un preț cât mai scăzut.
Parcarea inteligentă, folosită în orașele smart -city, se referă la adoptarea tehnologiilor bazate
pe senzori pentru a îmb unătăți gestionarea parcărilor, fiind o modalitate de a ușura pe câ t se
poate de mult nevoia de a căuta un loc de parcare. Conceptul din spatele sistem ului este simplu:
senzorii sunt folosiți pentru a detecta locurile disponibile sau cele ocupate.
Prin introducerea unui sistem în care sunt prezente caracteristicile de parcare integrat
cu gestionarea traficului, funcționalitatea este înbunătățită în așa fel încât să ofere orașe lor cu
un mediu bazat pe cerere – recepție, unde declanșatoarele automate pot fi create pe baza
intrărilor senzorilor. Î n schimb, datele generate de sistem pot fi utilizate pentru viitoare
planificări , care să permită crearea de strategii ca fiind o parte a sistemelor , astfel încât să poată
să crească venituri, satisfacția clien ților cât și experiența per -total a acestora.
În această lucrare sunt discutate diverse sisteme care oferă servicii de parcare
inteligente. Aceste sisteme pot contracara problemele de parcare care apar din cauza lipsei unui
sistem de parcare fiabil, efic ient și modern. Utilizarea diferitelor tehnici moderne, cum ar fi
sistemele Expert, sisteme bazate pe senzori wireless , bazate pe fuzzy, bazate pe GPS, bazate pe
comunicații pe vehicule și bazate pe viziune , pot reduce problemele legate de parcare. Un astf el
de sistem poate ajuta aspectele economice, sociale și de siguranță ale societății. De asemenea,
ajută la conservarea mediului, a combustibilului și a timpului.
Sistemul propus de management al parcării ia în considerare toate atributele posibile
care se așteaptă de la acesta. Acest sistem utilizează senzori IR și tag-uri / cititoare RFID
pentru a gestiona parcarea fără haos și ghidate pentru 3 vehicule.
Analiz a economică ne poate ajuta să găsim proiectul fezabil , astfel încât să putem
avea un sistem de parcare mai bun, fără să suferim economia. Ar trebui făcute lucrări viitoare
pentru integrarea diferitelor tehnologii pentru a realiza un sistem care să fie cel mai eficient,
mai sigur, mai sigur și mai ieftin. Analiza economică ar trebui făcută atât cantitativ, cât și
calitativ. După efectuarea analizei economice, proiectul poate fi finalizat.
Acest sistem poate fi extins pentru a se adapta la creșterea numărul ui de vehicule
prin aplicarea conceptului la mai multe etaje, benzi și spații de parcare. Proiectul poate fi
personalizat pentru a autentifica vehiculele, pe bază numărului înregistrat, la intrarea în poartă
și poate fi improvizat cu un sistem de ghidare v ocală.
– 72 –
Bibliografie
[WFF08] – L. Wenghong, X.Fanghua, L. Fasheng, “Design of Inner Intelligent Car Parking
System”, International Conference on Information Management, Innovation Management and
Industrial Engineering 2008.
[WB006] – C. Wenzhi, L. Bai, "A Smart Roadside Parking Navigation System Based On Sensor
Networks For ITS”, IET International Conference on Wireless, Mobile and Multimedia
Networks, 2006, pp.1 -4, 6-9 Nov. 2006.
[LCL004] – C.C. Li, S.Y. Chou, S.W. Lin, "An agent -based platform f or drivers and car parks
negotiation", 2004 IEEE International Conference on Networking, Sensing and Control, pp.
1038 – 1043, 2004.
[ZHW010] – X. Zhang, D. Wan, "Economic Analysis Of Regional Parking Guidance System
Based On TIA", 2010 WASE International Conference on Information Engineering (ICIE),,
pp.401 -404, 14 -15 Aug. 2010.
[CLL008] – S.Y. Chou, S.W. Lin, C.C. Li, “Dynamic Parking Negotiat ion And Guidance Using
An Agent -Based Platform”, Expert Systems With Applications, vol. 35, no. 3, pp. 805 -817,
2008.
[LHY009 ] – W. Longfei, C. Hong, L. Yang, "Integrating Mobile Agent with Multi -Agent
System for Intelligent Parking Negotiation and Guida nce”, 4th IEEE Conference on Industrial
Electronics and Applications, pp.1704 -1707, 25 -27 May 2009.
[RBBB02] – R.J.F. Rossetti, R.H. Bordinia, A.L.C Bazanna, S. Bampi, R. Liu, D.V. Vliet,
”Using DBI Agents To Improve Modeling In A Computer Scenario”, Tra nsportation Research
Part C, 10C(5, 6), pp 373 –398, 2002 .
[CHP001 ] – B. Chen, H.C. Harry, J. Palen, “Integrating Mobile Agent Technology With Multi –
Agent Systems For Distributed Traffic Detection And management Systems”, Transportation
Research Part C.
[LHL009] – W. Longfei, C. Hong, L. Yang, "Integrating Mobile Agent with Multi -Agent
System for Intelligent Parking Negotiation and Guidance”, 4th IEEE Conference on Industrial
Electronics and Applications, pp.1704 -1707, 25 -27 May 2009.
[LMW009] – Y. Li, R. Ma, L. Wang, “Intelligent Parking Negotiation Based On Agent
Technology”, WASE International Conference on Information Engineering, pp.265 -268, 10 -11
July 2009.
[KHO010] – A. Khoukhi, “An Intelligent Multi -Agent System For Mobile Robots Navigation
And Parking”, IEEE International Workshop on Robotic and Sensors Environments (ROSE),
pp.1-6, 15 -16 Oct. 2010.
[ZAZO05] – H. Zhang, M. Zhou, “'Self -Organized Architecture For Out door Mobile Robot
Navigation'', Journal Of Zhejiang University Science A. Springer, vol. 6, no.6, pp. 583 -590,
June 2005.
– 73 –
[KIYA04] – K. Kinoshita, S. Yasunobu, “Intelligent Parking Support System For Four -Wheeled
Vehicles In Consideration Of Human's Opera tion Error”, 2004 IEEE International Conference
on Systems, Man and Cybernetics, pp. 3938 – 3943, 10 -13 Oct. 2004.
[OYPA04] – R.J. Oyentaryo, M. Pasquier, "Self -trained automated parking system", Control,
Automation, Robotics and Vision Conference, 8th ICA RCV, pp. 1005 – 1010, 6 -9 Dec. 2004.
[IGNHS6] – S. Insop, K. Gowan, J. Nery, H. Han, T. Sheng, H. Li, F. Karray, “Intelligent
Parking System Design Using FPGA”, International Conference on Field Programmable Logic
and Applications, pp.1 -6, 28 -30 Aug. 2006 .
[SZN010] – M. Sharafi, A. Zare, S. Nikpoor, "Intelligent Parking Method For Truck In
Presence Of Fixed And Moving Obstacles And Trailer In Presence Of Fixed Obstacles:
Advanced Fuzzy Logic Technologies In Industrial Applications”, 2010 International
Conference On Electronics And Information Engineering (ICEIE), pp.268 -272, 1 -3 Aug. 2010.
[MTR011] S. Mohammadi, M. Tavassoli, A. Rajabi, "Authoritative Intelligent Perfect Parallel
Parking Based On Fuzzy Logic Controller For Car -Type Mobile Robot”, 2011 E ighth
International Conference on Information Technology: New Generations (ITNG), pp.135 -138,
1113 April 2011.
[TZC006] V.W.S. Tang, Y. Zheng, J. Cao, “An Intelligent Car Park Management System Based
On Wireless Sensor Networks”, 2006 1st International S ymposium On Pervasive Computing
And Applications, pp.65 -70, 3 -5 Aug, 2006.
[CEV005] – S.Y. Cheung, S.C. Ergen, P. Varaiya, “Traffic Surveillance With Wireless
Magnetic Sensors”, Proceedings of the 12th World Congress On Intelligent Transport Systems,
San Francisco, CA, Nov 2005.
[ALCC02] – A. L. C. De Cerreo, "The Dynamics Of On -Street Parking In Large Central Cities”,
Transportation Research Record, New York University Robert F. Wagner Graduate School of
Public Service, 2002.
[RAJR99] – R. Arnott And J . Rowse, "Modeling Parking”, Journal Of Urban Economics, vol.
45, no.1, pp 97 -124, 1999.
[CAA002] – H. D. Chon, D. Agrawal, and A. E. Abbadi, "NAPA: Nearest Available Parking
Lot Application”, 18th International Conference on Data Engineering, pp.496497, 2002.
[MSC003] – C. C. Min, D. Srinivasan, R.L. Cheu”, Cooperative, Hybrid Agent Architecture
For Real -Time Traffic Signal Control”, IEEE Transactions on Systems, Man and Cybernetics,
Part A: Systems and Humans, , vol.33, no.5, pp. 597 – 607, Sept. 2003.
[HDPJ07] – G.J. Ho, S.K Dong, J.Y. Pal, K Jaihie, "Light Stripe Projection Based Parking Space
Detection For Intelligent Parking Assist System”, IEEE Intelligent Vehicles Symposium,
pp.962 -968, 13 -15 June 2007.
[JCKY06] – H. G. Jung, C. G. Choi, D. S. Kim, and P. J. Yoon, “System Configuration Of
Intelligent Parking Assistant System”, In Proc. 13th World Congr. Intell. Transp. Syst. Services,
London, U.K., Oct. 8 –12, pp 1 –8, 2006.
– 74 –
[FNK004] – R. Frank, “Sensing In The Ultimately Safe Vehicle”, Presented at the Society
Automotive Engineers, Detroit, MI, 2004, SAE Paper 2004 -21-0055.
[FRT004] – M. Furutani, “Obstacle Detection Systems For Vehicle Safety”, Presented at the
society of automotive engineering world congr ., Detroit, MI, Mar. 8 –11, 2004, SAE Paper
2004 -21-0057.
[XCX000] – J. Xu, G. Chen, and M. Xie, “Vision -Guided Automatic Parking For Smart Car”,
Proceedings of the IEEE Intelligent Vehicles Symposium, pp.725 -730, 2000.
[CJCZPH] T.H. Chun, Z. Jie, Y.X. Chen, L.H. Ze, Z. Pei, Z.Q. Hua, "Intelligent Car -Searching
System for Large Park”, International Conference on Machine Learning And Cybernetics, pp.
3134 -3138, 12 -15 July 2009.
[BCM011] – S. Banerjee, P. Choudekar, M.K. Muju, "Real Time Car Parking Sys tem Using
Image Processing”, 2011 3rd International Conference on Electronics Computer Technology
(ICECT), pp.99 -103, 8 -10 April 2011.
[ISNOY1] – K. Inaba, M. Shibui, T. Naganawa, M. Ogiwara, N. Yoshikai, "Intelligent Parking
Reservation Service on the In ternet”, Symposium on Applications and the Internet Workshops,
pp.159 -164, 2001.
[WYHM99 ] – M. Wada, K. Yoon, H. Hashimoto, S. Matsuda, "Development of Advanced
Parking Assistance System using Human Guidance”, IEEE/ASME International Conference on
Advanc ed Intelligent Mechatronics, pp. 997 -1002, 1999.
[GAQU10] – E.R.Q. Garcia, G.C.M Quintero, “Space Allocation using Intelligent Optimization
Technique”, 2010 IEEE ANDESCON, pp. 1 -6, 15 -17 Sept. 2010.
[LCDY10] – T.H.S Li, Y.Y. Chieh, W.J. Da, H.M. Ying, C .C. Yang, "Multifunctional
Intelligent Autonomous Parking Controllers for Carlike Mobile Robots”, IEEE Transactions on
Industrial Electronics, vol.57, no.5, pp. 1687 -1700, May 2010.
[GWO009] – Y.Gongjan, M.C. Weigle, S. Olariu, "A Novel Parking Service Using Wireless
Networks", IEEE/INFORMS International Conference on Service Operations, Logistics and
Informatics, 2009, pp.406 -411, 22 -24 July 2009.
[GET01 ] http://www.geeetech.com/wiki/index.php/Arduino_Mega_2560 – accesat în iunie
2018
[WIK01] https://en.wikipedia.org/wiki/Radio -frequency_identification – accesat în iunie 2018
[BCI01] https://www.buildcircuit.net/product/rfid -tag-13-56mhz – accesat în iunie 2018
[FLF01] http://cursuri.flexform.ro/courses/L2/document/Cluj –
Napoca/grupa1/Aranyi_Iulia/site/fotorezistenta.html – accesat în iunie 2018
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: PROGRAMUL DE STUDII UNIVERSITARE DE LICENȚĂ [625331] (ID: 625331)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
