quinta-feira, 29 de novembro de 2018

Sistema de Segurança com Teclado e LCD

Tela de LCD 20x4 e Teclado 4x4

       Nesse projeto, ensinarei a criar um sistema de segurança com teclado e LCD, com Arduino Mega 2560, mas você pode usar o Arduino de sua preferência, que esteja de acordo com os requerimentos do projeto.

    Estarei utilizando o Módulo I2C  para o display LCD, para facilitar a montagem e o uso de portas no Arduino, mas antes vou mostrar a montagem do projeto sem o módulo, caso você ainda não tenha em sua bancada.




Componentes:

  • Arduino Mega 2560;
  • Display de LCD 20x4;
  • Teclado Matricial 4x4
  • Módulo I2C
  • Potenciômetro 1k
  • Mini protoboard
  • Fios Jumpers M-M, M-F;

Esquemático sem o Módulo I2C:

É necessaria a montagem conforme o esquema

Fonte: Própria autora

No Display, aparecerá uma mensagem pedindo a senha de acesso, digite a senha correta e o sistema permitirá o acesso, caso o usuário digite caracteres que não estejam de acordo com a senha correta, será informado ao mesmo, que a senha está inválida, e reiniciará o procedimento.

Faça a inclusão da biblioteca KeyPad, está disponível aqui: https://drive.google.com/open?id=1avt-BwGQTLjJHI8wfr1_FjFT0ZkCjaA8

Código sem o Módulo I2C:

/* 
 *  Arduino Sistema de Segurança com Teclado e LCD
 *  Sem o módulo I2C
 */

#include <LiquidCrystal.h> //Incluir biblioteca de LCD (biblioteca padrão)
#include <Keypad.h> //Incluir biblioteca de teclado - primeiro você deve instalar a biblioteca

#define redLED   10 //Defini os pinos de LED
#define greenLED 11

char* password ="1234"; //Crie uma senha
int pozisyon = 0; //keypad posição 

const byte rows = 4; //Número de linhas e colunas do teclado
const byte cols = 4;

char keyMap [rows] [cols] = 
{ // Define os símbolos nos botões do teclado

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

byte rowPins [rows] = {2, 3, 4, 5}; //Pinos do teclado
byte colPins [cols] = {6, 7, 8, 9};

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

LiquidCrystal lcd (A0, A1, A2, A3, A4, A5); // Pinos do LCD. (RS, E, D4, D5, D6, D7)

void setup()
{

  lcd.begin(16, 2);
  pinMode(redLED, OUTPUT);  //Defina o LED como uma saída
  pinMode(greenLED, OUTPUT);
  setLocked (true);         //estado da senha
  
}

void loop(){

  char whichKey = myKeypad.getKey(); //Define qual tecla é pressionada com getKey

  lcd.setCursor(0, 0);
  lcd.print(" Bem vindos");
  lcd.setCursor(0, 1);
  lcd.print(" Digite a senha:");

  if(whichKey == '*' || whichKey == '#' || whichKey == 'A' ||       //Defini chaves inválidas
     whichKey == 'B' || whichKey == 'C' || whichKey == 'D')
  {

    pozisyon=0;
    setLocked (true);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(" Chave inválida!");
    delay(1000);
    lcd.clear();
    
  }
  if(whichKey == password [pozisyon]){

    pozisyon ++;
  }
  
  if(pozisyon == 4){
    setLocked (false);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("*** Verificado***");
    delay(3000);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("  Robotica  ");
    lcd.setCursor(0, 1);
    lcd.print("para Leigos");
    delay(7000);
    lcd.clear();
    
  }
  delay(100);
}

void setLocked(int locked)
{
  if(locked)
  {
    digitalWrite(redLED, HIGH);
    digitalWrite(greenLED, LOW);
  }
  else
  {
      digitalWrite(redLED, LOW);
      digitalWrite(greenLED, HIGH);
  }
}


Agora que sabemos o circuito completo do projeto sem o uso do modulo, chegou a hora de usa-lo em nosso projeto.


         Com esse módulo, você consegue controlar um display LCD, seja ele 16x2 ou 20x4, utilizando apenas dois pinos do Arduino : o pino analógico 4 (SDA) e o pino analógico 5 (SCL), que formam a interface de comunicação I2C.


Estrutura do módulo I2C

         Na lateral esquerda do módulo temos 4 pinos, sendo que dois são para alimentação (Vcc e GND), e os outros dois são da interface I2C (SDA e SCL). O potenciômetro da placa serve para ajuste do contraste do display, e o jumper na lateral oposta permite que a luz de fundo (backlight) seja controlada pelo programa ou permaneça apagada.



Fonte: Arduino e Cia


Faça a inclusão da biblioteca LiquidCrystal_I2C

Para controlar esse módulo I2C, utilize a biblioteca LiquidCrystal_I2C, todo o material necessário para a execução desse projeto, está disponível aqui: https://drive.google.com/open?id=1avt-BwGQTLjJHI8wfr1_FjFT0ZkCjaA8

Esquemático com o modulo I2C

Para o Arduino Uno


Para o Arduino Mega

Fonte: Arduino e Cia


Código com o módulo I2C

/* 
 *  Arduino Sistema de Segurança com Teclado e LCD
 *  Com o módulo I2C
 */

#include <Wire.h>
#include <LiquidCrystal_I2C.h> //Incluir biblioteca de LCD (biblioteca padrão)
#include <Keypad.h> //Incluir biblioteca de teclado - primeiro você deve instalar a biblioteca

#define redLED   10 //Defini os pinos de LED
#define greenLED 11

char* password ="1234"; //Crie uma senha
int pozisyon = 0; //keypad posição 

const byte rows = 4; //Número de linhas e colunas do teclado
const byte cols = 4;

char keyMap [rows] [cols] = 
{ // Define os símbolos nos botões do teclado

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

byte rowPins [rows] = {2, 3, 4, 5}; //Pinos do teclado
byte colPins [cols] = {6, 7, 8, 9};

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

//LiquidCrystal lcd (A0, A1, A2, A3, A4, A5); // Pinos do LCD. (RS, E, D4, D5, D6, D7)
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);

void setup()
{
  
  lcd.begin (20,4);
  pinMode(redLED, OUTPUT);  //Defina o LED como uma saída
  pinMode(greenLED, OUTPUT);
  setLocked (true);         //estado da senha
  
}

void loop(){

  char whichKey = myKeypad.getKey(); //Define qual tecla é pressionada com getKey
  
  lcd.setBacklight(HIGH);
  lcd.setCursor(4, 0);
  lcd.print("BEM VINDOS!!!");
  lcd.setCursor(0, 2);
  lcd.print("DIGITE A SENHA:");

  if(whichKey == '*' || whichKey == '#' || whichKey == 'A' ||       //Defini chaves inválidas
     whichKey == 'B' || whichKey == 'C' || whichKey == 'D')
  {

    pozisyon=0;
    setLocked (true);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("SENHA INVALIDA!!!");
    delay(1000);
    lcd.clear();
    
  }
  if(whichKey == password [pozisyon]){

    pozisyon ++;
  }
  
  if(pozisyon == 4){
    setLocked (false);
    lcd.clear();
    lcd.setCursor(2, 0);
    lcd.print("***VERIFICADO***");
    delay(3000);
    lcd.clear();
    lcd.setCursor(6, 1);
    lcd.print("SALA DA");
    lcd.setCursor(4, 2);
    lcd.print("MECATRONICA");
    delay(7000);
    lcd.clear();
    
  }
  delay(100);
}

void setLocked(int locked)
{
  if(locked)
  {
    digitalWrite(redLED, HIGH);
    digitalWrite(greenLED, LOW);
  }
  else
  {
      digitalWrite(redLED, LOW);
      digitalWrite(greenLED, HIGH);
  }
}

Nenhum comentário:

Postar um comentário

Micro Servo Motor 9g

Aprendendo a controlar um servo motor        Nesse projeto, falarei um pouco sobre os servos, e mostrar seu funcionando. Os servos mo...