Table of Contents

Treasure Box

Introducere

Pornind de la ideea de secret sliding lock door, prezentă in filme si desene animate, am conceput un mecanism inteligent de deschidere a unei uși. Sistemul asigură accesul la conținutul cutiei pe baza recunoașterii unei succesiuni de sunete generate de bătăi în cutie. Fiind o entitate programabilă, este cu atât mai atractiv că secvența de bătăi poate să fie schimbată oricând iar precizia setată pentru a putea diferenția chiar și între două persoane diferite care reproduc codul secret.

Descriere generală

Proiectul va conține mai multe module conectate conform schemei bloc.

Persoana care încearcă să deschidă cutia va furniza ca input o secvență de sunete. Analizarea acesteia este realizata de buzzer-ul piezo. Acesta va semnala servomotoarelor dacă este necesară deschiderea sau nu. Motorul DC cu reducție va acționa prin intermediul unui angrenaj format din rotițe dințate un dispozitiv muzical mecanic cu tambur și lamele în timp ce cutia este deschisă. La închidere, utilizatorul poate să aleagă să schimbe secvența de sunete de deschidere care este păstrată in memorie-EEPROM. În final, cutia se închide.

Modulul Bluetooth permite acționarea sistemului de închidere, a dispozitivului muzical mecanic prin telefon.

Modulul de alimentare a necesitat o atenție specială deoarece se ivește problema rămânerii închise a cutiei în cazul în care întreg sistemul nu mai este alimentat și implicit nu funcționează.

Soluția identificată este folosirea unui modul care să permită și încărcarea unei baterii de back-up dar și arduino-ul.

Hardware Design

Lista componente electronice:

  1. Arduino Uno R3
  2. Modul Bluetooth HC05
  3. Modul încărcare baterie
  4. Servomotor SG90 * 2
  5. Motor DC
  6. Buzzer piezo
  7. Buton SPST
  8. Baterie
  9. Led-uri
  10. Micro Switch
  11. Rezistente
  12. Diode
  13. Tranzistor

Lista materiale auxiliare:

  1. Cutie lemn
  2. Adeziv lemn
  3. Burghie
  4. Șuruburi
  5. Dispozitiv mecanic muzical
  6. Angrenaj roți dințate

Schemă electrică completă, realizată in EAGLE:

Schemă fizică, fără modul Bluetooth și uSwitch, realizată in TINKERCAD:

Pentru claritate, schemele nu conțin și modulul de alimentare.

Software Design

Mediu de dezvoltare

Biblioteci implicate

Oferă posibilitatea de a nu reconecta modulul Bluetooth la fiecare reprogramare

Codul a fost modularizat într-un fișier header(.hpp) și un fișier sursă(.cpp).


Header-ul Conține constantele implicate. Pe lângă definirea componentelor în raport cu pinii cu care interacționeză cu plăcuța, aici se regăsesc constante ce calibrează modul de lucru ca de exemplu:

const int maximumKnocks = 20;

Reda numarul maxim de bătai care ar putea forma o secvență validă

const int averageRejectValue = 15;

Dacă o bătaie, luată ca valoare ADC de la buzzer, difera cu mai mult de atat, atunci e greșit

const int lockTurnWait = 4000;

După ce capacul a fost închis, după 4 secunde se reblochează

const int threshold = 3;

Nivel minim al unei bătăi valide

Fișierul sursă A fost modularizat in mai multe funcții astfel:

void getBluetoothMessage();

Interoghează interfața serială pentru a identifica potențiale comenzi

void listenToSecretKnock()

La detecția unei valori date de buzzer, se declanșează și ascultă până nu mai detectează niciun sunet. La final compară cu secvența stocată și comandă deschiderea dacă e cazul.

void motorSinging(uint8_t sliderValue)

Comandă motorul care acționează angrenajul muzical în funcție de durata dată de aplicație.

void triggerDoorUnlock() void triggerDoorLock()

Deschide/închide cutia prin comanda servomotoarelor

Rezultate Obţinute

Ansamblu Hardware înainte de montarea pe cutie:

Ansamblu Hardware montat pe cutie:

Dispozitiv mecanic muzical angrenat cu rotițe dințate si motor DC:

Proiect la final împreună cu aplicația mobilă:

Concluzii

În ciuda multor dificultăți întâmpinate, am reușit să realizez un proiect de care sunt pe deplin mulțumit.

Resurse

Codul pentru programarea uController-ului se găsește in următorul repository:

Export to PDF