Skocz do zawartości

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

Udostępnij ten post


Link to post
Share on other sites

@Misioskiper, właśnie zaakceptowałem opis. Dziękuję za przedstawienie ciekawego projektu, zachęcam do prezentowania kolejnych DIY oraz aktywności na naszym forum 😉

Udostępnij ten post


Link to post
Share on other sites

TTP229 z magistralą I2C zastępuje klawiaturę z miliardem kabli 🙂

Swoją drogą ciekawe byłoby sporządzenie takiego modelu pod kątem zabaw w power analysis.

 

 

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Dzięki za informację o I2C. Może kiedyś ulepszę model. Jestem dopiero początkującym w świecie arduino i elektroniki. 

Udostępnij ten post


Link to post
Share on other sites

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ę »

×