Seiffe

Introducere

Nume: Andrei-Bogdan Ciobanu
Grupă: 332CB

Te-ai săturat să ții banii sub saltea? Este momentul pentru o schimbare! Ține-i în Seiffe!

Seiffe este un produs absolut revoluționar: un seif pentru economiile tale de-o viață!

Acesta se deblochează prin intermediul unui card contactless RFID. Odată ce ai închis ușa seifului, aceasta se va bloca automat. Nu trebuie să îți faci griji privind uitarea seifului cu ușa deschisă, întrucât acesta te va alerta, atât printr-un semnal sonor, cât și vizual, prin intermediul display-ului LCD integrat. Mai mult decât atât: semnalul sonor poate fi oprit oricând, printr-o simplă apăsare de buton, pentru un plus de silențiozitate - și ca să ai pe ce să dai vina că ai uitat seiful deschis.

Cu Seiffe, bunurile tale sunt în siguranță!

Câteva informații mai formale:

  • Acest proiect se dorește a fi o cutie „seif” ce asigură depozitarea „în siguranță” a bunurilor.
  • Ideea a pornit de la punerea în aplicare a conceptului de siguranță, existența unui container/depozit și dorința de (curiozitatea în) a folosi un modul RFID.
  • Pentru mine, proiectul în sine este un exercițiu util. Pentru restul, proiectul reprezintă o alternativă pentru saltea/șosete. =)

Descriere generală

Schemă bloc

Flow general:

  1. Utilizatorul se apropie de seif.
  2. Acesta observă pe LCD mesajul „Blocat”.
  3. Individul apropie cardul RFID de cititor.
  4. Pe ecranul LCD se afișează mesajul „Deblocat”, iar buzzer-ul produce un sunet pentru a-l informa pe proprietar că ușa este deblocată. Semnalul sonor poate fi oprit prin apăsarea butonului roșu.
  5. Utilizatorul deschide ușa seifului, introduce/extrage obiecte în seif și o închide la loc.
  6. Odată ce ușa este închisă, aceasta se blochează la loc, pe LCD se afișează din nou mesajul „Blocat”, iar alarma este întreruptă.

Întrebuințări componente cu care interacționează utilizatorul:

  • Modul RFID: scriere și citire carduri (și tag-uri) RFID
  • Senzor ultrasonic de distanță: identificare status ușă (deschisă / închisă)
  • Servomotor: încuietoare ușă
  • Buzzer: alarmă ușă deblocată
  • LCD: afișare status seif
  • Buton: oprire alarmă ușă deblocată

Hardware Design

Listă de componente

  • Arduino UNO R3
  • Micro Servomotor SG90 90°
  • Buzzer pasiv
  • Buton
  • LCD 1602 cu Interfață I2C și Backlight Albastru
  • Senzor ultrasonic HC-SR04
  • Modul RFID RC522 (similar cu MFRC522) + RFID card & tag
  • Breadboard 830 puncte MB102
  • Fire tata-tata pentru Arduino
  • Fire mama-mama pentru Arduino
  • Cablu de alimentare Arduino

Diagramă Hardware

Diagramă Electrică

Hardware Preview

Software Design

Biblioteci utilizate

Detalii implementare

Setup

  • Se configurează și activează timerul pentru alarmă (Timer1 - COMPB) [configureAlarmTimer() + enableAlarmTimer()]
  • Se configurează întreruperea externă INT0 pentru funcția de oprire a alarmei la apăsarea de buton [configureSilencer()]
  • Se configurează LCD-ul
  • Se configurează pinii prin setarea de registre de I/O
  • Se inițializează biblioteca SPI, respectiv cea pentru MFRC522
  • Se configurează servomotorul
  • Se afișează mesajul pentru starea blocat a seifului

Loop

  • Pentru fiecare iterație, se calculează distanța prin intermediul datelor măsurate de senzorul ultrasonic de distanță.
  • Dacă seiful se află în starea blocat, iar distanța calculată este mai mică decât un threshold [LOCK_DISTANCE], atunci se încearcă citirea de card de acces. Dacă se citește un card, iar acesta nu face parte din lista de carduri autorizate, atunci pe LCD se va afișa un mesaj de refuz [printDeniedMessage()] timp de trei secunde. Altfel, dacă respectivul card face parte din lista de carduri autorizate, seiful va trece în starea deblocat [unlockSeiffe()] (și se afișează mesajul corespunzător pe LCD [printUnlockedMessage()]).
  • Dacă seiful se află în starea deblocat, se așteaptă ca ușa să ajungă să fie deschisă îndeajuns [OPEN_DISTANCE], inainte de a trece în starea de pregătire a încuierii [canLock == true]. Odată ce ușa este închisă, aceasta trebuie să rămână închisă pentru un număr de iterații de procesare a distanței [LOCK_THRESHOLD] pentru a putea fi într-adevăr considerată închisă - moment în care seiful trece înapoi în starea blocat.

Informații adiționale

  • Sunetul produs de buzzer își schimbă frecvența în funcție de configurația Timer1 - în întreruperea asociată COMPB.
  • Tratarea întreruperii INT0 constă în dezactivarea alarmei [isAlarmActive ← false].
  • Calculul distanței cu ajutorul HC-SR04 este realizat pe baza unei durate medii - pentru un număr de citiri determinat empiric [NUM_OF_DISTANCE_READS].

Rezultate Obţinute

Video

Photo shoot

Download

Cod sursă

Codul sursă se află în acest GitHub repository. Pentru testarea acestuia, este necesară instalarea bibliotecilor LiquidCrystal I2C și MFRC522 - Installing Libraries.

Arhivă - cod sursă + biblioteci incluse

Alternativ, se poate descărca de aici arhiva ce conține atât implementarea Seiffe, cât și bibliotecile third-party utilizate.

Jurnal

  • 27 aprilie: confirmare finală temă proiect
  • 3 mai: publicare documentație proiect
  • 19 mai: adăugare hardware preview
  • 23 mai: introducere feature: buton pentru oprirea alarmei
  • 28 mai: finalizare documentație

Bibliografie/Resurse

pm/prj2023/alexau/seiffe.txt · Last modified: 2023/05/28 12:58 by andrei.ciobanu2508
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