This is an old revision of the document!


Smart Easy-Box

Autori: Cărăuleanu Valentin Gabriel
Grupa: 331CA

Introducere

Proiectul presupune realizarea unui sistem integrat de securitate, bazat pe două microcontrolere Arduino care comunică între ele prin protocolul I2C. Acesta utilizează diverși senzori și module pentru a oferi acces securizat și monitorizarea mediului, asigurând astfel integritatea conținutului din interior.

Descriere generală

1. Arduino Master

Rol: Controlul central al sistemului, interfața cu utilizatorul.

Componente conectate:

  • LCD 16×2 I2C – afișează statusul, ora, temperatura, umiditatea și nivelul de sunet.
  • Keypad 4×4 – permite introducerea codului de acces.
  • Servo motor – controlează mecanismul de blocare/deblocare al ușii.
  • LED – se aprinde când ușa este deblocată.
  • Buzzer – avertizează la acces neautorizat sau mișcări puternice.
  • Ultrasonic Sensor – detectează prezența unui utilizator în apropiere.
  • Conexiune I2C cu Slave – solicită date de la unitatea slave.

2. Arduino Slave

Rol: Colectarea datelor de mediu și detectarea mișcărilor neautorizate.

Componente conectate:

  • DHT11 – măsoară temperatura și umiditatea.
  • KY-037 – microfon analogic pentru detectarea nivelului de zgomot.
  • SW-530 – senzor de înclinare (pentru detectarea mișcărilor).
  • DS1302 RTC – modul de ceas în timp real pentru data și ora curente.

Masterul interoghează Slave-ul prin I2C pentru a primi un `SensorPacket` care conține:

  • Ora și data
  • Temperatura și umiditatea
  • Nivelul de sunet
  • Starea de înclinare (tilt)

Dacă tilt este “true”, sistemul presupune o tentativă de furt și activează alarma (buzzer).

Accesul se face prin cod PIN introdus pe keypad. Dacă codul este corect, se deblochează ușa și se aprinde LED-ul.

În lipsa utilizatorului, ecranul LCD se stinge automat.

Use-case-uri și fluxuri de lucru

1. Accesul utilizatorului la seif

Scop: Permite deblocarea dulapului doar de către utilizatori autorizați.

Flux:

  • Senzorul ultrasonic detectează prezența unei persoane.
  • LCD-ul afișează promptul pentru introducerea codului.
  • Utilizatorul introduce codul PIN pe tastatură.
  • Codul este verificat: dacă este corect: servomotorul deschide dulapul, LED-ul se aprinde, apare mesajul “Access Granted”; dacă este greșit: buzzer-ul emite un sunet scurt; după 3 încercări greșite, buzzer-ul rămâne pornit.
  • Se apasă `B` pentru a reloca dulapul.

2. Setarea sau schimbarea codului de securitate

Scop: Permite configurarea sau schimbarea codului de securitate de către utilizator.

Flux:

  • Seiful este deblocat.
  • Utilizatorul apasă `A`.
  • Se cere introducerea unui nou cod (4 cifre).
  • Codul este confirmat prin reintroducere.
  • Dacă cele două coduri se potrivesc, noul cod este salvat.
  • Dacă nu se potrivesc, apare mesajul “Code mismatch”.

3. Monitorizarea mediului și alertare

Scop: Se monitorizează parametrii de mediu și se generează alerte în caz de manipulare.

Arduino Slave măsoară periodic:

  • Temperatura și umiditatea (DHT11)
  • Nivelul de sunet (KY-037)
  • Timpul curent (DS1302)
  • Înclinarea (SW-520D)

Dacă este detectată înclinare:

  • La următoarea cerere I2C, flagul `tilt` este transmis

Arduino Master cere periodic datele de la slave, chiar și fără prezență umană. Dacă `tilt = true`:

  • Sistemul activează alarma (buzzer-ul pornește permanent)
  • Se consideră tentativă de furt

4. Afișarea informațiilor pe ecran

Scop: Afișează informațiile esențiale într-un format concis.

Format LCD:

  • Rând 1: Icon lacăt, temperatură, umiditate, sunet
  • Rând 2: Ora curentă și zona pentru cod: `H:hh [] M:mm`

Schema Bloc

Gantt Chart

Hardware Design

Bill of Materials:

Nr. Componentă Cantitate Preț (RON)
1 Arduino Uno 2 35
3 LCD 16×2 cu I2C 1 16
4 Tastatură Keypad 4×4 1 7
5 Servomotor SG90 1 12
6 Modul DHT11 (temp+umiditate) 1 12
7 Modul KY-037 (microfon) 1 5
8 Modul SW-520 (tilt sensor) 1 5
9 Modul RTC DS1302 1 15
10 Senzor ultrasonic HC-SR04 1 20
11 LED roșu 1 ~0
12 Rezistor 220Ω 1 ~0
13 Buzzer activ 1 2
14 Fire jumper M-M și F-F ~20 30
15 Breadboard 1 14

TOTAL: 2 x 35 + 16 + 7 + 12 + 12 + 5 + 5 + 15 + 20 + 0 + 0 + 2 + 30 + 14 = ~210

Conexiuni Master

Componentă Pin Arduino Descriere
LCD (I2C) A4 (SDA), A5 (SCL) Comunicație I2C pentru afișaj 16×2 LCD
Tastatură (Keypad) 2, 3, 4, 5, A0–A3 Tastatură 4×4 – pini digitali + analogici
Servomotor 6 Pin PWM pentru mecanismul de blocare/deblocare
Senzor ultrasonic 8 (Trig), 9 (Echo) Detectare proximitate cu HC-SR04
Buzzer 7 Alarma pentru acces greșit
LED (stare deschis) 10 Se aprinde când se deblochează ușa
Arduino Slave A4 (SDA), A5 (SCL) Comunicație I2C master către slave

Conexiuni Slave

Componentă Pin Arduino Descriere
Senzor DHT11 2 Măsoară temperatura și umiditatea
Senzor Sunet KY-037 A1 Citire analogică a nivelului de sunet
Senzor Înclinare SW-530 3 (INT) Detectează mișcări prin întrerupere
Modul Ceas DS1302 4 (CLK), 5 (DAT), 6 (RST) Ceas în timp real prin protocol 3-fire
Arduino Master A4 (SDA), A5 (SCL) Comunicație I2C în modul slave

Version 1

Software Design

Software-ul utilizat:

ZIP: software_master.zip software_slave.zip

GITHUB: https://github.com/gabriel-2802/Arduino-Smart-Locker

Listă Librării Arduino Utilizate

Library Name Descriere
———————- ———————————————————————–
`Wire.h` Comunicare I2C între Arduino master și slave
`DHT.h` Citirea senzorului de temperatură și umiditate DHT11
`RtcDS1302.h` Controlul modulului RTC (ceas în timp real) DS1302
`LiquidCrystal_I2C.h` Controlul ecranului LCD 1602 prin magistrala I2C
`Keypad.h` Gestionarea tastaturii matriciale 4×4
`Servo.h` Controlul servomotorului SG90
`Arduino.h` Bibliotecă implicită Arduino, necesară pentru funcționare generală

  • Mediu de dezvoltare: ARDUINO IDE
  • Acest proiect este inspirat și bazat parțial pe structura și conceptele din proiectul Arduino Electronic Safe realizat de Uri Shaked.

Clase/structuri utiliazate:

/**
   Arduino Electronic Safe
 
   Copyright (C) 2020, Uri Shaked.
   Released under the MIT License.
*/
class SafeState {
  public:
    SafeState();
    void lock();
    bool unlock(String code);
    bool locked();
    bool hasCode();
    void setCode(String newCode);
 
  private:
    void setLock(bool locked);
    bool _locked;
};
// custom structs, enums
enum LockedPhase {
  PHASE_IDLE,
  PHASE_WAIT_INPUT,
  PHASE_VERIFY,
  PHASE_GRANTED,
  PHASE_DENIED
};

enum UnlockedPhase {
  PHASE_UNLOCK_IDLE,
  PHASE_UNLOCK_OPTIONS,
  PHASE_NEW_CODE_ENTER,
  PHASE_NEW_CODE_CONFIRM,
  PHASE_CODE_SUCCESS,
  PHASE_CODE_FAIL,
  PHASE_RELOCK
};

struct SensorPacket {
  uint8_t hour;
  uint8_t minute;
  uint8_t day;
  uint8_t month;
  uint16_t year;

  float temperature;
  float humidity;
  uint8_t soundPercent;
  bool tilt;
} __attribute__((packed));

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.

Bibliografie/Resurse

Resurse Software https://wokwi.com/

Resurse Hardware

Component Datasheet Link
Arduino Uno Farnell PDF
LCD 1602 I2C Display HandsOnTec PDF
SG90 Servo Motor Imperial College PDF
DHT11 Temperature & Humidity Sensor AllDataSheet DHT11
KY-037 Sound Sensor AllDataSheet KY-037
SW-520D Tilt Sensor Funduino PDF
Rtc DS1302 RTC Module RS Components PDF

Export to PDF

pm/prj2025/ccristi/valentin.carauleanu.1748006613.txt.gz · Last modified: 2025/05/23 16:23 by valentin.carauleanu
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