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 14:39]
andra.maslaev [Hardware Design]
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 43: Line 43:
 Schema reprezentată folosind Thinkercad: \\ Schema reprezentată folosind Thinkercad: \\
 {{:​pm:​prj2024:​iotelea:​thinkercad_parksense.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, am creat clasa `Servo` ​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ă. ​\\ 
-- 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. \\ 
-- 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. ​\\ 
-- 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. ​\\
-- 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|}}
  
-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.+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.
  
  
pm/prj2024/iotelea/andra.maslaev.1716723568.txt.gz · Last modified: 2024/05/26 14:39 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