Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2022:cstan:3 [2022/05/26 00:20]
david.botoghina [Hardware Design]
pm:prj2022:cstan:3 [2022/06/02 13:17] (current)
david.botoghina [Hardware Design]
Line 21: Line 21:
   * 2x LEDs   * 2x LEDs
   * 4x4 keypad   * 4x4 keypad
-  * 1x LCD I2C +  * 1x LCD I2C 
 +  * Relay 5V 
   * Some Wires   * Some Wires
   * A fan   * A fan
  
 __//​**Electrical Schematic:​**//​__ __//​**Electrical Schematic:​**//​__
-[[pm:​prj2022:​cstan:​3|]]+ 
 +{{:pm:​prj2022:​cstan:​captura_de_ecran_2022-06-01_201842.png?​200|}} 
 </​note>​ </​note>​
  
 ===== Software Design ===== ===== Software Design =====
 +#include <​Wire.h> ​
 +#include <​LiquidCrystal_I2C.h>​
 +#include <​Keypad.h>​
  
 +#define Password_Length 8 
 +
 +int signalPin = 12;
 +int relay_pin = 10;
 +
 +char Data[Password_Length]; ​
 +char Master[Password_Length] = "​123A456"; ​
 +byte data_count = 0, master_count = 0;
 +bool Pass_is_good;​
 +char customKey;
 +
 +const byte ROWS = 4;
 +const byte COLS = 4;
 +
 +char hexaKeys[ROWS][COLS] = {
 +  {'​1',​ '​2',​ '​3',​ '​A'​},​
 +  {'​4',​ '​5',​ '​6',​ '​B'​},​
 +  {'​7',​ '​8',​ '​9',​ '​C'​},​
 +  {'​*',​ '​0',​ '#',​ '​D'​}
 +};
 +
 +byte rowPins[ROWS] = {9, 8, 7, 6};
 +byte colPins[COLS] = {5, 4, 3, 2};
 +
 +Keypad customKeypad = Keypad(makeKeymap(hexaKeys),​ rowPins, colPins, ROWS, COLS);
 +
 +LiquidCrystal_I2C lcd(0x27, 16, 2);  ​
 +
 +void setup(){
 +  lcd.init(); ​
 +  lcd.backlight();​
 +  pinMode(signalPin,​ OUTPUT);
 +  pinMode(13, OUTPUT);
 +  pinMode(relay_pin,​ OUTPUT);
 +}
 +
 +void loop(){
 +
 +  lcd.setCursor(0,​0);​
 +  lcd.print("​Enter Password:"​);​
 +
 +  customKey = customKeypad.getKey();​
 +  if (customKey){
 +    Data[data_count] = customKey; ​
 +    lcd.setCursor(data_count,​1); ​
 +    lcd.print(Data[data_count]); ​
 +    data_count++; ​
 +    }
 +
 +  if(data_count == Password_Length-1){
 +    lcd.clear();​
 +
 +    if(!strcmp(Data,​ Master)){
 +      lcd.print("​Correct"​);​
 +      digitalWrite(signalPin,​ HIGH); ​
 +      digitalWrite(13,​ HIGH);
 +      delay(3000);​
 +      digitalWrite(signalPin,​ LOW);
 +      digitalWrite(13,​ HIGH);
 +      delay(3000);​
 +      digitalWrite(13,​ LOW);
 +      }
 +    else{
 +      lcd.print("​Incorrect"​);​
 +      digitalWrite(10,​ HIGH);
 +      delay(1000);​
 +      digitalWrite(10,​ LOW);
 +      }
 +      lcd.clear();​
 +    clearData();  ​
 +  }
 +}
 +
 +void clearData(){
 +  while(data_count !=0){
 +    Data[data_count--] = 0; 
 +  }
 +  return;
 +}
 +
 +How it works:
 +
 +The user needs to introduce a code, using the keyboard (the password). In the beginnig, on LCD is displayed the message "Enter Password",​ the password being composed by seven characters.
 +
 +If the introduced password is incorrect, then the message "​Incorrect"​ is displayed on LCD and the green LED from the relay will turn off for one second.
 +
 +If the introduced password is correct, then on the display is displayed the message "​Correct",​ and the fan will turn on.
 + 
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +{{:​pm:​prj2022:​cstan:​20220601_151524.jpg?​200|}}
 +
 +
 +{{:​pm:​prj2022:​cstan:​20220601_152150.jpg?​200|}}
 +
 +
 +{{:​pm:​prj2022:​cstan:​20220601_152655.jpg?​200|}}
 +
 +
 +{{:​pm:​prj2022:​cstan:​20220601_191234.jpg?​200|}}
  
  
 ===== Concluzii ===== ===== Concluzii =====
 +It was an interesting project, that required several days. It also can be easily upgraded, for example, by adding something like a lamp or a lock at the output of the relay.
  
 ===== Download ===== ===== Download =====
 +{{:​pm:​prj2022:​cstan:​pm_project.rar|}}
  
  
 ===== Jurnal ===== ===== Jurnal =====
 +19/05/2022 - Hardware Assembly
 +25/05/2022 - Software
  
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 +github.com
  
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2022/cstan/3.1653513612.txt.gz · Last modified: 2022/05/26 00:20 by david.botoghina
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