Skocz do zawartości

Sejf z wykorzystaniem Arduino


Misioskiper

Pomocna odpowiedź

Witam wszystkich chciałbym Wam dzisiaj pokazać sejf mojego autorstwa. Może on być głównie wykorzystywany jako ciekawostka lub zabawka.

20190128_134357.thumb.jpg.2a318c747c2def67bbdccc99e1c75bf0.jpg

Projekt powstał w celu nauczenia się podstaw arduino. Ostatnio nauczyłem się sterowania silniczkami oraz przechwytywania liczb z klawiatury. Po połączeniu tych umiejętności z podstawami programowania powstał ten projekt sejfu.

Przy tworzeniu tego projektu wykorzystałem następujące materiały:

 

20190128_134701.thumb.jpg.a691ca193c7da38ee9122227e27b53df.jpg

Wykonanie:

Projekt został wykonany z elementów jakie posiadałem w domu. Do Arduino podłączone są przewody, które łączą się z serwem (zasilanie, masa oraz sygnał sterujący). Przewody z wyświetlacza są podłączone bezpośrednio do Arduino poza V0. Ponadto, V0 zostało zintegrowane z potencjometrem i służy do regulacji kontrastu wyświetlacza. Układ jest zasilany baterią 9V za pomocą odpowiedniego adaptera

Działanie projektu:

Program przechwytuje z klawiatury kod wpisywany przez użytkownika. Jeśli kod jest prawidłowy to uruchamia się serwo i otwiera skrytkę. Jeśli kod jest nie prawidłowy program informuje użytkownika o niepoprawnym haśle. Na klawiaturze znajdują się klawisze A, B, C, D, # i *. Mój program ich nie wykorzystuje, ale jeśli ktoś chce wykonać taki projekt to może je wykorzystać. Po kliknięciu wyżej wymienionych klawiszy program informuje o naciśnięciu złego klawisza.

Kod:

#include <Servo.h>
#include <LiquidCrystal.h> // biblioteka do LCD
#include <Keypad.h> //biblioteka do klawiatury



Servo servo;
int pos = 40;
char* password ="7890"; //hasło
int pozisyon = 0; 
int przycisk = 0;
const byte rows = 4; 
const byte cols = 4;

char keyMap [rows] [cols] = { 

  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

byte rowPins [rows] = {1, 2, 3, 4}; 
byte colPins [cols] = {5, 6, 7, 8};

Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, rows, cols);

LiquidCrystal lcd (A0, A1, A2, A3, A4, A5);

void setup(){
servo.attach(9);
  lcd.begin(16, 2);
  setLocked (true);
  przycisk = 0;
}

void loop(){
setLocked (true);
  char whichKey = myKeypad.getKey();
  lcd.setCursor(0, 0);
  lcd.print("     Witam");
  lcd.setCursor(0, 1);
  lcd.print("  Wpisz haslo");

  if(whichKey == '*' || whichKey == '#' || whichKey == 'A' ||       
  whichKey == 'B' || whichKey == 'C' || whichKey == 'D'){
    przycisk=0;
    pozisyon=0;
    setLocked (true);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("ZLY PRZYCISK");
    delay(1000);
    lcd.clear();
    
  }
  if(whichKey == '0' || whichKey == '1' || whichKey == '2' || whichKey == '3' ||       //define keys
  whichKey == '4' || whichKey == '5' || whichKey == '6' || whichKey == '7' || whichKey == '8' || whichKey == '9'){
    przycisk++;
    }
    if(przycisk == 5){
      przycisk = 0;
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.write("    ZA DUZO");
      lcd.setCursor(0,1);
      lcd.write("     ZNAKOW");
      delay(1000);
      lcd.clear();
    }
    if(przycisk == 1){
      lcd.clear();
      lcd.setCursor(0,1);
      lcd.write("      *");
    }
    if(przycisk == 2){
      lcd.clear();
      lcd.setCursor(0,1);
      lcd.write("      **");
    }
    if(przycisk == 3){
      lcd.clear();
      lcd.setCursor(0,1);
      lcd.write("      ***");
    }
    if(przycisk == 4){
      lcd.clear();
      lcd.setCursor(0,1);
      lcd.write("      ****");
    }
    if(przycisk == 4 && pozisyon < 3){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.write("     ZLE");
      lcd.setCursor(0,1);
      lcd.write("    HASLO");
      delay(1000);
      przycisk = 0;
      lcd.clear();
    }
  if(whichKey == password [pozisyon]){

    pozisyon ++;
  }
  if(pozisyon == 4){
    przycisk = 0;
    pozisyon = 0;
    setLocked (false);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("*** Verified ***");
    delay(3000);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Skrytka zamknie");
    lcd.setCursor(0, 1);
    lcd.print("   sie za 5s");
    delay(7000);
   lcd.clear();
  }
 

  delay(100);
}

void setLocked(int locked){
 if(locked){
    servo.write(40);
   }
    else{
      przycisk = 0;
      servo.write(130);
    }
  }

Przyszłość projektu:

Projekt można modyfikować (np. zmiana hasła przez użytkownika). Można też zmienić rodzaj zabezpieczenia z kodu czterocyfrowego na hasło z literami lub odcisk palca użytkownika. W najbliższej przyszłości zamierzam to połączyć z Raspberry Pi (rozpoznawanie twarzy) i Google AIY Voice Kit  (komendy głosowe).

Film:

Zdjęcia:

20190128_134357.thumb.jpg.5c71cdd432cac20bcaf106ec821bdf94.jpg20190128_134431.thumb.jpg.4907f8ddf18a92b9ac1d55a3f8045840.jpg20190128_134442.thumb.jpg.701890f6337ceb69e7af1efe3bd1ed1c.jpg20190128_134541.thumb.jpg.13f5d42c98560b5aaddeffb7d19e0e1f.jpg20190128_134547.thumb.jpg.48a2f546f42d924656228b0c1a08fc87.jpg20190128_134551.thumb.jpg.1558d2f233524d50bc3c7b2b698330c3.jpg20190128_134554.thumb.jpg.7462f05fbbac5220af5d931d31f7eb96.jpg20190128_134557.thumb.jpg.d644a952f8e4f0acafd9a7006e994c86.jpg20190128_134559.thumb.jpg.356d65afe1850a700a6c02387572e896.jpg

20190128_134653.jpg20190128_134701.jpg

  • Lubię! 2
Link do komentarza
Share on other sites

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.