This shows you the differences between two versions of the page.
pm:prj2024:iotelea:andra.maslaev [2024/05/26 14:29] 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 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ă. | ||
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. |
- | ===== Rezultate Obţinute ===== | ||
Line 74: | 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 | ||