This is an old revision of the document!


SmartPark: Sistem Autonom de Management și Taxare pentru Infrastructuri Urbane

Introducere

Proiectul propune o solutie moderna pentru administrarea parcarilor, bazata pe monitorizarea in timp real a locurilor disponibile si automatizarea procesului de taxare. Sistemul controleaza activ fluxul de masini, permitand accesul autovehiculelor doar atunci cand capacitatea maxima nu a fost atinsa, eliminand astfel aglomeratia si blocajele in interiorul parcarii.

Scopul principal este eficientizarea infrastructurii prin digitalizare. La parasirea locului de parcare, sistemul calculeaza automat costul in functie de timpul de stationare, iar fiecare tranzactie este salvata intr-o baza de date centralizata. Aceasta asigura o monitorizare transparenta a platilor si ofera administratorilor o imagine clara asupra veniturilor si a gradului de ocupare.

Ideea proiectului a luat nastere din nevoia de a reduce timpul pierdut in trafic si de a elimina procesele de plata manuale, adesea ineficiente. Obiectivul central este eficientizarea infrastructurii prin automatizare, asigurand o gestionare fluida a fluxului de autovehicule si a sistemului de taxare. Totodata, mentinerea unei evidente obiective a bilantului financiar prin baze de date centralizate devine cruciala pentru transparenta veniturilor si pentru dezvoltarea ulterioara a unor noi functionalitati inteligente.

De ce este util? Implementarea unui astfel de sistem elimina incertitudinea gasirii unui loc de parcare, reducand semnificativ timpul petrecut in trafic si emisiile poluante generate de cautarea prelungita. Pentru administratori, solutia ofera o monitorizare stricta si transparenta a incasarilor, eliminand frauda sau erorile umane prin raportarea automata in baza de date.

Descriere generala

Proiectul este construit in jurul microcontrolerului ATmega328P Xplained Mini, care functioneaza ca un centru de comanda ce primeste informatii de la senzori si trimite instructiuni catre elementele de executie si sistemul de monitorizare de pe laptop.

Interactiunea modulelor:

  • Senzorii IR: Sunt utilizati pentru a detecta prezenta fizica a masinilor pe locurile de parcare. Acestia trimit un semnal digital catre pinii microcontrolerului atunci cand fasciculul de lumina infrarosie este intrerupt de vehicul.
  • Senzorul Ultrasonic (HC-SR04): Masoara distanta pana la masina prin emiterea unor ultrasunete. Acesta comunica prin doi pini: unul care declanseaza sunetul (Trig) si unul care receptioneaza ecoul (Echo). Diferenta de timp dintre cele doua semnale permite calcularea exacta a distantei pentru a verifica daca autovehiculul asteapta la bariera.
  • Servomotorul (SG90): Este componenta care misca bratul barierei. Acesta primeste un semnal special (PWM) prin care i se indica unghiul exact la care sa se roteasca: 0 grade pentru a tine poarta inchisa si 90 de grade pentru a permite intrarea.
  • Ecranul LCD (1602): Ofera mesaje text soferului prin protocolul I2C. Acesta afiseaza numarul de locuri disponibile si ghideaza utilizatorul in timpul procesului de plata.
  • Buzzerul Pasiv (KY-006): Emite sunete de diferite frecvente pentru a oferi confirmari auditive (de exemplu, un bip scurt la validarea intrarii sau un sunet repetat in caz de eroare).
  • Integrarea cu Laptopul (Python & MySQL): Toate evenimentele din parcare sunt trimise catre laptop prin cablul USB (Serial/UART). Un script scris in Python asculta aceste date si le salveaza automat intr-o baza de date MySQL.

Schema Bloc

Hardware Design

Lista componente:

Schema electrica:

Diagrame de semnal:

Software Design

Mediu de dezvoltare

  • PlatformIO IDE: Utilizat pentru scrierea, compilarea si incarcarea codului C++ pe microcontrolerul ATmega328P.
  • AVR-GCC Toolchain: Lantul de compilare integrat in PlatformIO pentru transformarea codului sursa in fisier binar (format .hex) compatibil cu arhitectura AVR.
  • Python (VS Code): Limbaj si mediu utilizat pentru dezvoltarea aplicatiei de monitorizare si a scriptului de legatura intre portul serial si baza de date.
  • MySQL Workbench: Instrument vizual utilizat pentru administrarea bazei de date locale MySQL, unde sunt stocate si gestionate tranzactiile de parcare.
  • Streamlit Framework: Biblioteca Python utilizata pentru crearea rapida a dashboard-ului interactiv (interfata web) pentru vizualizarea datelor.
  • Git + GitHub: Instrumente esentiale utilizate pentru versionarea codului sursa si stocarea acestuia intr-un repozitoriu la distanta.

Biblioteci si surse 3rd-party

Librărie Rol Sursă
<avr/io.h>, <avr/interrupt.h> Acces direct la registrele hardware, manipulare intreruperi AVR-GCC Toolchain
<util/delay.h> Acces la functii de temporizare AVR-GCC Toolchain
<util/twi.h> Macrouri standard pentru gestionarea starilor protocolului I2C (TWI) pe AVR AVR-GCC Toolchain
<stdio.h>, <string.h>, <stdint.h> Tipuri de date standardizate, operatii de I/O si manipulare buffer-e / siruri de caractere AVR-GCC Toolchain
pyserial Gestionarea comunicatiei seriale (UART) intre microcontroler si scriptul Python Python Package Index (PyPI)
mysql-connector-python Stabilirea conexiunii si executarea interogarilor in baza de date MySQL Oracle (PyPI)
streamlit Framework pentru generarea interfetei grafice web in mod dinamic. Streamlit Inc. (PyPI)

Algoritmi şi structuri

1. Masurarea non-blocanta a distantei (Senzor Ultrasonic HC-SR04)

Sistemul evita utilizarea functiilor blocante printr-o abordare hardware asincrona. La fiecare 200 ms, în bucla principala, se genereaza un impuls Trigger de 10 μs. Receptia semnalului Echo este captata hardware printr-o intrerupere de tip Pin Change (PCINT2_vect). Pentru a calcula durata exacta a semnalului HIGH, algoritmul foloseste un mecanism hibrid de cronometrare: combina contorul global de milisecunde (g_uptime_ms) cu valoarea instantanee a registrului Timer0 (TCNT0), obtinand o rezolutie foarte fină (4 μs per pas). Conversia din timp in distanta (centimetri) se face printr-o operatie optimizata pentru a evita calculele cu virgula mobila (floating-point), folosind direct constanta acustica: dist = durata_us / 58. Aceasta abordare elibereaza complet CPU-ul in timpul deplasarii undei sonore.

2. Scalare liniara și generare semnal PWM hardware (Servomotor)

Controlul barierei se realizeaza asincron, manipuland direct perifericul Timer1 configurat in modul Fast PWM. In loc sa recurga la biblioteci standard, unghiul bratului este controlat printr-un algoritm de scalare liniara care transforma unghiul fizic (0° – 90°) in ciclu de lucru (duty cycle), modificand valoarea registrului de comparare OCR1A. Formula utilizata este OCR1A = 2000 + (angle * 2000 / 90). Aceasta ecuatie translateaza gradele in „ticuri” de ceas de baza: pentru pozitia inchisa (0°), registrul ia valoarea de baza 2000 (generand un impuls precis de 1 ms), iar pentru pozitia deschisa (90°) atinge pragul de 4000 (impuls de 2 ms). Actualizarea directa a acestui registru permite o actionare mecanica precisa, in timp ce generarea frecventei de 50 Hz este gestionata complet in fundal de catre unitatea hardware, eliminand orice overhead asupra microcontrolerului.

3. Detectarea fronturilor (Edge Detection) si calculul dinamic al tarifului

Senzorii infrarosu pentru locurile de parcare sunt cititi periodic, insa sistemul nu prelucreaza starea lor continua, ci reactioneaza strict la tranzitiile de stare (detectarea fronturilor crescatoare si descrescatoare) comparand starea curenta cu cea anterioara. La ocuparea locului (front descrescator): Sistemul memoreaza amprenta de timp curenta in vectorul 'occupancy_start_time'. La eliberarea locului (front crescator), sistemul calculeaza diferenta de timp pentru a afla durata stationarii in milisecunde. Algoritmul aplica apoi modelul de tarifare multiplicand secundele scurse cu constanta PRICE_PER_SECOND, generand valoarea finala de plata in mod dinamic si eficient din punct de vedere al memoriei.

pm/prj2026/bianca.popa1106/radu_gabriel.covacs.1778657041.txt.gz · Last modified: 2026/05/13 10:24 by radu_gabriel.covacs
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0