Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:iotelea:andra.maslaev [2024/05/26 13:36]
andra.maslaev
pm:prj2024:iotelea:andra.maslaev [2024/05/26 14:58] (current)
andra.maslaev [Hardware Design]
Line 25: Line 25:
  
  
-{{:​pm:​prj2024:​iotelea:​schema.drawio.png}}+{{:​pm:​prj2024:​iotelea:​parksenses.drawio.png?700|}}
 ===== Hardware Design ===== ===== Hardware Design =====
  
Line 35: Line 35:
 - trei leduri , procedăm astfel: \\ - 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: \\
Line 55: Line 58:
 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. 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, clasa `Servo` este creată pentru ​a controla un servomotor ​folosind platforma Arduino.  +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. \\ 
-- Inițializare ușoară: Constructorul clasei și funcția init() fac ca începerea să fie simplă. +- 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. ​\\ 
-- Control precis: Cu funcția setDutyCycle(uint8_t grade), poziția servomotorului poate fi ajustată cu precizie prin modificarea ciclului activ al semnalului PWM. +- Fiabilitate:​ Metodele ​//timerStart(),​ PWMStart()// și //PWMStop()// se ocupă de operațiile necesare pentru a asigura funcționarea corectă și fiabilă a servomotorului. ​\\
-- 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.+
  
 {{:​pm:​prj2024:​iotelea:​servo_class.jpeg?​300|}} {{:​pm:​prj2024:​iotelea:​servo_class.jpeg?​300|}}
  
-Am implementat funcționalitatea clasei Servo în codul meu, care este definită în fișierul antet my_servo.h. ​Constructorul clasei inițializează membrul ​period ​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.+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.
  
  
-===== Rezultate Obţinute ===== 
  
  
Line 75: Line 75:
  
  
 +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.tinkercad.com/​things/​7McURSBMyUr-parksense/​editel \\
 +https://​www.sigmanortec.ro/​ \\
 https://​www.arduino.cc/​en/​software https://​www.arduino.cc/​en/​software
  
  
pm/prj2024/iotelea/andra.maslaev.1716719810.txt.gz · Last modified: 2024/05/26 13:36 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