This shows you the differences between two versions of the page.
pm:prj2025:atoader:alexandra.corcodel [2025/05/28 01:41] alexandra.marinica |
pm:prj2025:atoader:alexandra.corcodel [2025/05/28 13:12] (current) alexandra.marinica [Rezultate Obţinute] |
||
---|---|---|---|
Line 45: | Line 45: | ||
* VCC - 5V | * VCC - 5V | ||
* GND - GND | * GND - GND | ||
- | * - D7 | + | * SIGNAL - D7 |
Ultrasonic Sensor HC-SR4: | Ultrasonic Sensor HC-SR4: | ||
Line 65: | Line 65: | ||
* SCL - A5 | * SCL - A5 | ||
+ | **Cablaj electric:** | ||
+ | {{:pm:prj2025:atoader:whatsapp_image_2025-05-28_at_00.47.12.jpeg?600|}} | ||
+ | {{:pm:prj2025:atoader:whatsapp_image_2025-05-28_at_00.47.08.jpeg?600|}} | ||
+ | ===== Software Design ===== | ||
+ | **Mediu de dezvoltare:** | ||
+ | * PlatformIO | ||
+ | **Librării utilizate:** | ||
+ | * 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). | ||
+ | |||
+ | * LiquidCrystal_I2C.h – Bibliotecă specializată pentru afișajele LCD compatibile I2C, utilizată pentru mesaje textuale pe ecran. | ||
+ | |||
+ | * SoftwareSerial.h – Permite comunicarea serială pe pini digitali neconvenționali, utilizată pentru conectarea modulului RFID și Bluetooth. | ||
+ | |||
+ | * 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. | ||
+ | |||
+ | **Servomotor:** | ||
+ | lockServo.write() – Controlează poziția încuietorii (0° = închis, 90° = deschis). | ||
+ | |||
+ | **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. | ||
+ | |||
+ | **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. | ||
+ | |||
+ | **Funcții 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. | ||
+ | |||
+ | **Funcții de control și stare:** | ||
+ | * 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. | ||
+ | |||
+ | * lcd.print() – Afișează stări de sistem: cutie ocupată, deschisă, liberă. | ||
+ | |||
+ | **Logica principală loop():** | ||
+ | |||
+ | * 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ă cardul RFID: Dacă se detectează un UID valid → acțiune acces. | ||
+ | |||
+ | * Verifică comenzi Bluetooth: Dacă vine comanda DESCHIDE → acțiune acces. | ||
+ | |||
+ | **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). | ||
+ | |||
+ | * 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]] | ||