Seiffe
Introducere
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:
Utilizatorul se apropie de seif.
Acesta observă pe LCD mesajul „Blocat”.
Individul apropie cardul RFID de cititor.
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.
Utilizatorul deschide ușa seifului, introduce/extrage obiecte în seif și o închide la loc.
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.
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ă
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