This shows you the differences between two versions of the page.
pm:prj2025:atoader:alexandra.corcodel [2025/05/28 02:03] alexandra.marinica |
pm:prj2025:atoader:alexandra.corcodel [2025/05/28 13:12] (current) alexandra.marinica [Rezultate Obţinute] |
||
---|---|---|---|
Line 72: | Line 72: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | Mediu de dezvoltare: PlatformIO | + | **Mediu de dezvoltare:** |
- | Librării utilizate: | + | * PlatformIO |
- | Arduino.h – Bibliotecă de bază a mediului Arduino, oferă funcționalități fundamentale pentru controlul pinilor, temporizări și comunicații. | + | |
- | Wire.h – Permite comunicarea I2C între Arduino și alte dispozitive (ex: LCD). | + | **Librării utilizate:** |
+ | * Arduino.h – Bibliotecă de bază a mediului Arduino, oferă funcționalități fundamentale pentru controlul pinilor, temporizări și comunicații. | ||
- | LiquidCrystal_I2C.h – Bibliotecă specializată pentru afișajele LCD compatibile I2C, utilizată pentru mesaje textuale pe ecran. | + | * Wire.h – Permite comunicarea I2C între Arduino și alte dispozitive (ex: LCD). |
- | SoftwareSerial.h – Permite comunicarea serială pe pini digitali neconvenționali, utilizată pentru conectarea modulului RFID și Bluetooth. | + | * LiquidCrystal_I2C.h – Bibliotecă specializată pentru afișajele LCD compatibile I2C, utilizată pentru mesaje textuale pe ecran. |
- | Servo.h – Oferă funcționalități pentru controlul unui servomotor (deschiderea/închiderea ușii). | + | * SoftwareSerial.h – Permite comunicarea serială pe pini digitali neconvenționali, utilizată pentru conectarea modulului RFID și Bluetooth. |
- | Funcții de setup: | + | * Servo.h – Oferă funcționalități pentru controlul unui servomotor (deschiderea/închiderea ușii). |
+ | |||
+ | **Funcții de setup:** | ||
setup() – Inițializează comunicațiile seriale (USB, RFID, Bluetooth), setările pentru servomotor, pinii pentru LED-uri, senzorul ultrasonic, și LCD-ul I2C. Afișează un mesaj de status la pornire. | setup() – Inițializează comunicațiile seriale (USB, RFID, Bluetooth), setările pentru servomotor, pinii pentru LED-uri, senzorul ultrasonic, și LCD-ul I2C. Afișează un mesaj de status la pornire. | ||
- | Servomotor: | + | **Servomotor:** |
lockServo.write() – Controlează poziția încuietorii (0° = închis, 90° = deschis). | lockServo.write() – Controlează poziția încuietorii (0° = închis, 90° = deschis). | ||
- | LED RGB: | + | **LED RGB:** |
setLEDColor(String color) – Aprinde culori diferite în funcție de starea sistemului (red, yellow, green) și afișează un mesaj corespunzător pe LCD. | setLEDColor(String color) – Aprinde culori diferite în funcție de starea sistemului (red, yellow, green) și afișează un mesaj corespunzător pe LCD. | ||
- | Senzor ultrasonic HC-SR04: | + | **Senzor ultrasonic HC-SR04:** |
readDistanceCM() – Măsoară distanța până la un obstacol folosind semnalul ultrasonic. Returnează -1.0 dacă nu primește ecou. | readDistanceCM() – Măsoară distanța până la un obstacol folosind semnalul ultrasonic. Returnează -1.0 dacă nu primește ecou. | ||
- | Funcții RFID: | + | **Funcții RFID:** |
- | rdmSerial.listen() – Activează citirea de date de pe canalul software serial folosit de modulul RFID. | + | * rdmSerial.listen() – Activează citirea de date de pe canalul software serial folosit de modulul RFID. |
+ | |||
+ | * Parcurgere buffer UID – Detectează un card RFID valid (cu header 0x02 și footer 0x03) și extrage UID-ul. | ||
+ | |||
+ | * Acces temporar – Dacă UID-ul este detectat, se deblochează poarta 5 secunde, apoi se revine la starea inițială. | ||
+ | |||
+ | **Funcții Bluetooth:** | ||
+ | * btSerial.listen() – Activează ascultarea pe canalul software serial pentru Bluetooth. | ||
+ | |||
+ | * Comenzi textuale – Primește comanda DESCHIDE și acționează poarta ca la scanarea RFID. | ||
- | Parcurgere buffer UID – Detectează un card RFID valid (cu header 0x02 și footer 0x03) și extrage UID-ul. | + | **Funcții de control și stare:** |
+ | * busy – Flag de protecție împotriva apelurilor multiple simultane din surse diferite (ex: RFID și Bluetooth). | ||
- | Acces temporar – Dacă UID-ul este detectat, se deblochează poarta 5 secunde, apoi se revine la starea inițială. | + | * buffer UID – Verifică formatul și lungimea pachetului RFID pentru validare. |
- | Funcții Bluetooth: | + | |
- | btSerial.listen() – Activează ascultarea pe canalul software serial pentru Bluetooth. | + | |
- | Comenzi textuale – Primește comanda DESCHIDE și acționează poarta ca la scanarea RFID. | + | * lcd.print() – Afișează stări de sistem: cutie ocupată, deschisă, liberă. |
- | Funcții de control și stare: | + | **Logica principală loop():** |
- | busy – Flag de protecție împotriva apelurilor multiple simultane din surse diferite (ex: RFID și Bluetooth). | + | |
- | buffer UID – Verifică formatul și lungimea pachetului RFID pentru validare. | + | * Verifică distanța: Dacă un obiect este detectat la mai puțin de 20 cm → LED roșu și oprire temporară a funcțiilor. |
- | lcd.print() – Afișează stări de sistem: cutie ocupată, deschisă, liberă. | + | * Starea servomotorului: Dacă este deschis → LED verde; dacă e închis → LED galben. |
- | Logica principală loop(): | + | * Verifică cardul RFID: Dacă se detectează un UID valid → acțiune acces. |
- | Verifică distanța: Dacă un obiect este detectat la mai puțin de 20 cm → LED roșu și oprire temporară a funcțiilor. | + | |
- | Starea servomotorului: Dacă este deschis → LED verde; dacă e închis → LED galben. | + | * Verifică comenzi Bluetooth: Dacă vine comanda DESCHIDE → acțiune acces. |
- | Verifică cardul RFID: Dacă se detectează un UID valid → acțiune acces. | + | **Pattern-uri de design folosite (implicit):** |
- | Verifică comenzi Bluetooth: Dacă vine comanda DESCHIDE → acțiune acces. | + | * State Machine simplificată: Starea LED-urilor și a LCD-ului este dependentă de contextul citirii senzorilor (distanță, UID, comandă). |
- | Pattern-uri de design folosite (implicit): | + | |
- | State Machine simplificată: Starea LED-urilor și a LCD-ului este dependentă de contextul citirii senzorilor (distanță, UID, comandă). | + | |
- | Event-driven control: Acțiunile RFID și Bluetooth sunt declanșate doar la recepționarea unui eveniment (UID valid sau comandă BT). | + | * Event-driven control: Acțiunile RFID și Bluetooth sunt declanșate doar la recepționarea unui eveniment (UID valid sau comandă BT). |
- | Separation of concerns: Funcțiile readDistanceCM() și setLEDColor() sunt responsabile doar de o sarcină specifică, facilitând mentenanța. | + | * Separation of concerns: Funcțiile readDistanceCM() și setLEDColor() sunt responsabile doar de o sarcină specifică, facilitând mentenanța. |
+ | ===== Rezultate Obţinute ===== | ||
+ | [[https://github.com/Alexandra131/pm_proiect|GitHub cod proiect]] | ||
+ | [[https://www.youtube.com/shorts/9wE2xbyVbhs|Demo]] | ||