ParkSense

Autor: Maslaev Andra
Grupa: 333CD

logoparksense.jpeg

Introducere

Ce este ParkSense?

ParkSense este un sistem inovator conceput pentru a facilita găsirea locurilor de parcare libere, abordând problema consumului de timp și stresului asociat cu căutarea unui spațiu de parcare în zonele aglomerate. Utilizând tehnologii avansate, cum ar fi senzorii de detectare a vehiculelor, ParkSense oferă șoferilor informații în timp real despre disponibilitatea locurilor de parcare, folosind si o bara de leduri pentru a reprezenta ce procent din capacitate a fost ocupat.

Cum funcționează ParkSense?

ParkSense utilizează o rețea de senzori amplasați la intrare in parcare. Acești senzori detectează dacă un loc de parcare este ocupat sau liber și transmit aceste informații către un monitor. Datele sunt apoi procesate și afișate pentru a fi disponibile pentru șoferi.

Descriere generală

Pașii principali ai proiectului vor consta în:

Citirea Senzorilor: Verifică continuu starea senzorilor infraroșu și detectează dacă o mașină este prezentă.
Control Servo: Comandă servo motorul să rotească la unghiuri specifice pentru a deschide sau închide bariera.
Update Display: Actualizează informațiile afișate pe LCD în funcție de starea sistemului.
Aprindere Leduri: Actualizeaza procentul de locuri libere folosind leduri.

Hardware Design

Pentru a construi o barieră automată ce se ridică la detectarea unei mașini folosind:
- un Arduino UNO
- doi senzori infraroșu
- un LCD 1602 I2C
- un servo motor SG90
- trei leduri , procedăm astfel:

1. Conectăm cei doi senzori infraroșu la intrările digitale ale Arduino pentru a detecta mașinile.
2. Atașăm LCD-ul la pinii I2C ai Arduino pentru a afișa statusul barierei.
3. Conectăm servo motorul la un pin pentru a controla mișcarea barierei.

Programul Arduino va răspunde la detectarea mașinilor prin rotația servo motorului pentru deschiderea sau închiderea barierei, iar LCD-ul va afișa starea actuală.

Schema reprezentată folosind Thinkercad:

Schema electrica:

Primul stadiu Hardware:

Stadiu final Hardware:

Software Design

Din punct de vedere software, fluxul este următorul: în primul rând, datele de la senzorii de intrare/sortare sunt citite pentru a decide dacă bariera trebuie ridicată sau coborâtă. Dacă o mașină părăsește parcarea, numărul de locuri de parcare disponibile este incrementat; în cazul în care o mașină intră în parcarea respectivă, acest număr este decrementat. Apoi, ecranul LCD este actualizat pentru a afișa numărul de locuri libere disponibile. În cazul în care parcarea este plină, servo-motorul nu va fi activat pentru a ridica bariera, iar un mesaj corespunzător va fi afișat pentru a indica că nu mai sunt locuri disponibile. În final, ledurile care indică vizual și procentual gradul de ocupare al parcării sunt actualizate pentru a oferi informații rapide și clare despre starea actuală a acesteia.

Pentru a usura modul de lucru, am creat clasa Servo a controla un servomotor: - Inițializare ușoară: Constructorul clasei și funcția init() fac ca începerea să fie simplă.
- Control precis: Cu funcția setDutyCycle(uint8_t grade), poziția servomotorului poate fi ajustată cu precizie prin modificarea ciclului activ al semnalului PWM.
- Economie de resurse: Folosind tipuri de date optimizate (uint8_t, uint16_t) și membri volatile, clasa gestionează resursele eficient și asigură accesul corect la variabilele în contextele întrerupte.
- Fiabilitate: Metodele timerStart(), PWMStart() și PWMStop() se ocupă de operațiile necesare pentru a asigura funcționarea corectă și fiabilă a servomotorului.

Constructorul clasei inițializează membrul periodic cu valoarea implicită 2000. Prin funcția init(), întreruperile pentru Timer/Counter1 sunt dezactivate pentru a evita interferențele cu funcționarea servomotorului. Apoi, prin funcția timerStart(), sunt configurate setările necesare pentru a genera semnalul PWM pentru controlul servomotorului, inclusiv modul de funcționare PWM, modul de compare match și prescalerul. Funcția setDutyCycle(uint8_t grade) actualizează poziția servomotorului în funcție de unghiul dat ca argument, iar funcțiile PWMStart() și PWMStop() activează și, respectiv, opresc semnalul PWM și gestionarea întreruperilor asociate cu Timer/Counter1. Astfel, am creat o interfață eficientă și robustă pentru controlul servomotorului utilizând semnalul PWM pe platforma Arduino.

Concluzii

Pentru a dezvolta parcarea inteligentă folosind placa Arduino, am aplicat cunoștințele acumulate din laboratoare despre senzori de proximitate, LCD, servo-motor si leduri. A fost crucială combinarea hardware-ului cu software-ul pentru realizarea produsului finit. Am scris un cod care procesează datele de la senzori și controlează dispozitivele de ieșire, precum LED-urile și motorul servo pentru barieră, asigurând astfel funcționarea corespunzătoare a sistemului și oferind o interfație ușor de utilizat.

Partea de hardware a fost construită meticulos, utilizând breadboard pentru prototipuri și realizând conexiuni stabile prin lipituri precise. Acest lucru a contribuit la o implementare hardware ordonată și de încredere, vitală pentru performanța sistemului de parcare inteligentă. Am verificat și ipoteza proiectului, scopul fiind crearea unei soluții eficiente de gestionare a parcărilor.

Testarea funcționalității și prototipurile au fost esențiale pentru a confirma performanța sistemului. S-a validat că sistemul detectează corect vehiculele și actualizează în timp real numărul de locuri disponibile, demonstrând astfel beneficiile practice ale proiectului pentru optimizarea parcărilor în zonele urbane.

Bibliografie/Resurse

pm/prj2024/iotelea/andra.maslaev.txt · Last modified: 2024/05/26 14:58 by andra.maslaev
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