Cutie Securizată cu Deschidere Asistată

Introducere

Sistem inteligent de depozitare securizată pentru livrări, gândit special pentru a permite curierilor să lase pachete într-un spațiu închis și sigur, chiar și în absența destinatarului. Accesul este permis doar persoanelor autorizate.

Se bazeaza pe o alternativă modernă la clasica ușă încuiată cu cheie — o cutie autonomă, cu încuietoare electronică, care să poată fi deschisă temporar pentru livrarea unui colet, dar care să se asigure automat că acesta a fost introdus înainte de a se încuia la loc.

Pentru livrările eșuate sau nesigure atunci când destinatarul nu este acasă, sistem inteligent care permite deschiderea unei cutii securizate doar de către curieri autorizați, este solutia.

Descriere generală

Este o soluție practică pentru livrările de colete în absența destinatarului, folosind tehnologii studiate în cadrul laboratoarelor pentru a crea un sistem de control al accesului automatizat. Acesta integrează autentificare prin RFID (SPI) sau Bluetooth (UART), temporizare și control al unei încuietori electronice prin servomotor (PWM), precum și detectarea coletelor cu ajutorul unui senzor ultrasonic. Feedback-ul vizual este oferit printr-un LED RGB controlat prin semnale PWM. Interacțiunea în timp real este susținută prin GPIO și întreruperi, iar extensibilitatea sistemului poate include comunicație I2C cu senzori adiționali.

Hardware Design

Componente:

  • Placuta Arduino Uno
  • Led RGB
  • Breadboard
  • RFID card reader
  • Ultrasonic Sensor HC-SR4
  • Fire
  • Modul Bluetooth HC-05
  • Servo motor
  • Modul LCD I2C

Pini folositi:

Bluetooth:

  • VCC - 5V
  • GND - GND
  • TXD - RX ← 0
  • RXD - TX - > 1

RFID card reader:

  • VCC - 5V
  • GND - GND
  • TX - D3

Servo motor:

  • VCC - 5V
  • GND - GND
  • SIGNAL - D7

Ultrasonic Sensor HC-SR4:

  • VCC - 5V
  • GND - GND
  • ECHO - D6
  • TRIG - D5

Led RGB:

  • GND - GND
  • R - D11
  • G - D12
  • B - D13

Modul LCD I2C:

  • VCC - 5V
  • GND - GND
  • SDA - A4
  • SCL - A5

Cablaj electric:

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

pm/prj2025/atoader/alexandra.corcodel.txt · Last modified: 2025/05/28 13:12 by alexandra.marinica
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