This shows you the differences between two versions of the page.
pm:prj2024:iotelea:andra.maslaev [2024/05/19 23:09] andra.maslaev [Introducere] |
pm:prj2024:iotelea:andra.maslaev [2024/05/26 14:58] (current) andra.maslaev [Hardware Design] |
||
---|---|---|---|
Line 3: | Line 3: | ||
**Grupa: ** 333CD | **Grupa: ** 333CD | ||
- | {{:pm:prj2024:iotelea: logoparksense.jpeg?400}} | + | {{:pm:prj2024:iotelea: logoparksense.jpeg?700}} |
===== Introducere ===== | ===== Introducere ===== | ||
Line 9: | Line 9: | ||
**Ce este ParkSense?** | **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 din proximitate. | + | 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?** | **Cum funcționează ParkSense?** | ||
- | ParkSense utilizează o rețea de senzori amplasați în locurile de 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. | + | 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ă ===== | ===== Descriere generală ===== | ||
Line 22: | Line 22: | ||
**Control Servo**: Comandă servo motorul să rotească la unghiuri specifice pentru a deschide sau închide bariera. \\ | **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. \\ | **Update Display**: Actualizează informațiile afișate pe LCD în funcție de starea sistemului. \\ | ||
+ | **Aprindere Leduri**: Actualizeaza procentul de locuri libere folosind leduri. \\ | ||
- | {{:pm:prj2024:iotelea:schema.drawio.png}} | + | {{:pm:prj2024:iotelea:parksenses.drawio.png?700|}} |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 31: | Line 32: | ||
- doi senzori infraroșu \\ | - doi senzori infraroșu \\ | ||
- un LCD 1602 I2C \\ | - un LCD 1602 I2C \\ | ||
- | - un servo motor SG90 , procedăm astfel: \\ | + | - 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. \\ | + | **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. \\ | + | **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. \\ | + | **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ă. | 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 reprezentată folosind Thinkercad: \\ | ||
- | {{:pm:prj2024:iotelea:hardwareparksense.jpeg?700|}} \\ | + | {{:pm:prj2024:iotelea:thinkercad_parksense.jpeg?700|}} \\ |
+ | |||
+ | Schema electrica: \\ | ||
+ | {{:pm:prj2024:iotelea:schemaelparksense.jpeg?600|}} | ||
Primul stadiu Hardware: \\ | Primul stadiu Hardware: \\ | ||
{{:pm:prj2024:iotelea:parksensecomponente.jpeg?700|}} | {{:pm:prj2024:iotelea:parksensecomponente.jpeg?700|}} | ||
+ | |||
+ | Stadiu final Hardware: \\ | ||
+ | {{:pm:prj2024:iotelea:parksensess.jpeg?700|}} | ||
+ | |||
===== Software Design ===== | ===== 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. \\ | ||
- | ===== Rezultate Obţinute ===== | + | {{:pm:prj2024:iotelea:servo_class.jpeg?300|}} |
+ | 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 ===== | ||
- | ===== Download ===== | ||
+ | ===== Concluzii ===== | ||
- | ===== Jurnal ===== | + | 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 ===== | ===== Bibliografie/Resurse ===== | ||
+ | https://www.tinkercad.com/things/7McURSBMyUr-parksense/editel \\ | ||
+ | https://www.sigmanortec.ro/ \\ | ||
+ | https://www.arduino.cc/en/software | ||