This is an old revision of the document!


Smart Safe Box

Autor: Emilian Horduna

Grupa: 332CD

Introducere

Am realizat un seif electronic care se deschide prin introducerea unui cod PIN. În plus, am integrat un sistem de închidere automată, care blochează ușa seifului la 5 secunde după ce a fost închisă, pentru un plus de siguranță.

Scopul acestui proiect este să creez un design eficient și practic pentru a-mi păstra obiectele importante în siguranță. M-am gândit la un sistem care să fie ușor de folosit, dar și suficient de sigur pentru a preveni accesul neautorizat.

Inițial, pornisem de la ideea de a construi doar un mecanism inteligent de blocare a unei uși, dar pe parcurs m-am decis să dezvolt ceva mai complet și mai util – așa a apărut ideea acestui seif electronic.

Descriere generală

Proiectul constă în realizarea unui seif electronic inteligent controlat de o placă Arduino UNO R3. Seiful oferă o metodă de autentificare pentru deschidere: introducerea unui cod PIN printr-o tastatură matricială (keypad).

După ce ușa seifului este închisă, sistemul va aștepta automat 5 secunde, iar apoi va activa un servomotor care acționează un zăvor mecanic, blocând ușa. Acest mecanism previne uitarea ușii deschise și oferă un plus de securitate.

Pe parcursul utilizării, utilizatorul este asistat de un ecran LCD 1602, care afișează informații relevante precum: introducerea codului, starea de acces, erori sau confirmări. Codul PIN tastat va fi afișat parțial sau complet, în funcție de logica de securitate aleasă.

Pentru a indica starea seifului, sistemul utilizează două LED-uri:

- LED verde – indică faptul că seiful este deblocat;

- LED roșu – indică faptul că seiful este blocat.

În plus, un buzzer piezoelectric emite sunete diferite pentru a semnala:

- introducerea unui cod corect;

- introducerea unui cod greșit;

- blocarea automată a ușii.

Actor → Keypad 4×4 → Arduino UNO R3: Utilizatorul introduce un cod PIN folosind tastatura matricială 4×4. Tastatura este conectată la 8 pini digitali ai plăcii Arduino și transmite caracterele tastate către microcontroler pentru validare.

Arduino UNO R3 → LCD 1602: Pe ecranul LCD sunt afișate mesaje precum „Introduceți codul”, „Acces permis” sau „Cod greșit”. LCD-ul este conectat prin interfața I2C la pinii A4 (SDA) și A5 (SCL).

Arduino UNO R3 → Buzzer pasiv: Buzzerul pasiv este utilizat pentru a oferi feedback sonor (sunet scurt pentru cod corect, ton de eroare pentru cod greșit etc.). Este comandat prin semnal generat cu funcția tone() și conectat pe un pin digital (D10).

Arduino UNO R3 → LED roșu + LED verde: Cele două LED-uri indică starea sistemului: LED-ul roșu este aprins când seiful este blocat, iar LED-ul verde când este deblocat. Ambele LED-uri sunt conectate pe pini digitali și sunt comandați prin semnal simplu GPIO.

Arduino UNO R3 → Servomotor → Zăvor ușă: Servomotorul SG90 este folosit pentru acționarea mecanică a zăvorului ușii seifului. În urma unui cod corect, Arduino trimite un semnal PWM pe pinul D11 către servomotor, care deblochează mecanismul. După 5 secunde, un timer software (implementat prin millis()) declanșează automat reînchiderea ușii prin rotirea servo-ului în poziția de blocare.

Hardware Design

Bill Of Materials:

Nr. crt. Componentă Cantitate Link / Datasheet
1 Arduino UNO R3 ATmega328P 1 [Link](https://ardushop.ro/ro/plci-de-dezvoltare/2282-placa-de-dezvoltare-uno-r3-compatibil-arduino-6427854027122.html)
2 Cablu USB Arduino 1 [Link](https://ardushop.ro/ro/electronica/1167-cablu-usb-a-b-1m-arduino-mega-uno-imprimanta-6427854016515.html)
3 LCD 1602 verde/albastru 1 [Link](https://ardushop.ro/ro/electronica/2305-1306-lcd-1602-verde-albastru.html#/1-culoare-albastru)
4 Modul I2C pentru LCD 1 [Link](https://ardushop.ro/ro/comunicatie/2333-modul-i2c-pentru-lcd-1602-2004-6427854007353.html)
5 Breadboard 830 puncte 1 [Link](https://ardushop.ro/ro/electronica/2297-breadboard-830-puncte-mb-102-6427854012265.html)
6 Tastatură matricială 4×4 1 [Link](https://ardushop.ro/ro/butoane--switch-uri/976-tastatura-matriciala-4x4-6427854013149.html)
7 Kit RFID 13.56 MHz (cititor + card) 1 [Link](https://ardushop.ro/ro/electronica/2309-kit-rfid-1356-mhz-6427854024947.html)
8 Servomotor SG90 1 [Link](https://www.optimusdigital.ro/ro/motoare-servomotoare/26-micro-servomotor-sg90.html)
9 LED-uri 3mm (roșu, verde) 2 [Link](https://ardushop.ro/ro/componente-discrete/64-3-led-3mm.html#/3-culoare-alb)
10 Buzzer piezoelectric activ 3–24V 1 [Link](https://ardushop.ro/ro/componente-electronice/1661-buzzer-piezoelectric-activ-3-24v-hnd-2312-6427854025050.html)
11 Fire de conectare (male-male, male-female) 20 [Link](https://ardushop.ro/ro/9-fire-si-conectori)
12 Rezistențe diverse (220Ω, 1kΩ, 10kΩ) 10 [Link](https://ardushop.ro/ro/cautare?controller=search&s=rezistor)
13 Modul step-down 1 [Link](https://ardushop.ro/ro/display-uri-si-led-uri/1345-modul-indicator-de-tensiune-pentru-acumulatori-6427854019486.html)
14 Suport baterii 18650 1 [Link](https://ardushop.ro/ro/carcase-i-suporturi/47-suport-carcasa-baterii-18650-2buc-6427854018632.html)

Nr. crt. Componentă Tip de semnal / protocol Pini Arduino folosiți
1 Arduino UNO R3 ATmega328P GPIO, PWM, I2C
2 LCD 1602 + Modul I2C I2C A4 (SDA), A5 (SCL)
3 Tastatură matricială 4×4 GPIO (Digital Input) D2, D3, D4, D5, A0, A1, A2, A3
4 Buzzer piezoelectric pasiv PWM audio / Timere D10
5 Servomotor SG90 PWM (semnal control servo) D11
6 LED roșu GPIO (Digital Output) D13
7 LED verde GPIO (Digital Output) D12

Software Design

Mediul de dezvoltare utilizat pentru implementarea firmware-ului a fost Arduino IDE, cu suport pentru platforma AVR-GCC, țintind microcontrolerul ATmega328P de pe placa Arduino UNO R3. În cadrul proiectului, s-a optat pentru o implementare low-level a protocoalelor, pentru o înțelegere mai profundă a funcționării hardware-ului.

Platformă Detalii
IDE Arduino IDE
Microcontroler ATmega328P (pe placa Arduino UNO R3)
Compilator AVR-GCC (implicit prin Arduino Toolchain)
Programare În limbaj C/C++ cu acces direct la registre
Biblioteci Fără librării externe (implementare manuală a I2C, PWM, GPIO, Timere)

Elemente software implementate până în acest moment:

• Control tastatură matricială 4×4 (scanare + debouncing software)

• Verificare PIN + contor de greșeli

• Blocare automată a seifului după 10 secunde de la deschidere (millis() – non-blocking)

• Servomotor acționat manual pentru deschiderea/zăvorârea ușii

• LED-uri pentru semnalizare vizuală (GPIO)

• Buzzer cu secvențe sonore diferite pentru stări (corect, greșit, autodistrugere)

• Afișare mesaje pe LCD I2C controlat prin TWI

Element de noutate:

• Cod scris fără librării externe – totul este controlat direct prin registrul microcontrolerului.

• Interfața I2C cu LCD este complet low-level, fără utilizarea Wire.h.

• PWM-ul pentru servo este controlat prin generare manuală de semnal, fără Servo.h.

Corelare cu laboratoare:

• Lab 0 – GPIO: tastatură, LED-uri

• Lab 3 – PWM & Timere: servo și buzzer

• Lab 6 – I2C: comunicare cu LCD (fără librării)

Structura proiectului:

- Tastatura permite introducerea PIN-ului

- LCD-ul afișează statusul și mesajele

- Dacă PIN-ul este corect, servomotorul deblochează ușa, se aprinde LED-ul verde și se aude un semnal sonor pozitiv

- După 10 secunde, sistemul se blochează automat, revine LED-ul roșu

- 3 greșeli la rând declanșează o secvență animată de autodistrugere (LCD + buzzer + LED blinking)

- Interacțiunea între module se face exclusiv prin GPIO, PWM, I2C – toate gestionate software fără delay-uri blocante

Validare:

• Sistemul a fost testat funcțional complet – introducerea codului, feedback vizual și sonor, blocare automată, secvență de eroare.

• Toate funcționalitățile rulează sincron, fără interferențe sau erori.

Calibrare:

• Servomotorul a fost calibrat manual pentru unghiurile de blocare (1500µs = blocat, 600µs = deblocat), verificat fizic pe prototip.

• Debouncing-ul tastaturii a fost testat empiric și ajustat prin delay de 50ms.

• Durata semnalelor PWM și I2C a fost reglată pentru a asigura funcționarea corectă pe toate componentele.

Optimizări:

• Toate întârzierile blocante au fost înlocuite cu temporizări bazate pe millis()

• LCD-ul nu este actualizat permanent – doar când e nevoie, pentru a evita flicker

• Servomotorul este controlat doar în momentul schimbării stării, nu continuu

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

pm/prj2025/iotelea/emilian.horduna.1748279746.txt.gz · Last modified: 2025/05/26 20:15 by emilian.horduna
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