Controle de Acesso com ESP8266 e Teclado Matricial

Um sistema de controle de acessoSistema de controle de acesso com ESP8266 e NFCSistema de controle de acesso com ESP8266 e NFCAprenda a implementar um sistema IoT seguro e eficiente usando NFC e ESP8266 com tutoriais, exemplos práticos e dicas de integração com APIs e Telegram. baseado em ESP8266Sistema de automação residencial com ESP8266 e controle de luzesSistema de automação residencial com ESP8266 e controle de luzesEste tutorial aborda a implementação de automação residencial com ESP8266, destacando segurança, eficiência energética, integração MQTT e interface web. e teclado matricial é uma solução robusta para segurança residencial, comercial ou industrial. Combinando a conectividade Wi-Fi do ESP8266 com a interface prática de um teclado, é possível criar um sistema que autentica usuários via senha, registra acessos em tempo real, e integra-se às plataformas IoTSistema de controle de luzes de Natal com ESP8266Sistema de controle de luzes de Natal com ESP8266Descubra como automatizar e controlar luzes de Natal usando ESP8266, com Wi-Fi, programação avançada, e economia energética. Transforme sua decoração com IoT.. Este artigo explora desde os fundamentos de funcionamento do teclado matricial até técnicas avançadas de segurança cibernética, garantindo uma implementação completa e adaptável a diversos cenários.

Índice🔗

1. Componentes e Materiais Necessários

2. Funcionamento e Configuração do Teclado Matricial

3. Conexão e Setup do ESP8266Sistema de automação residencial com ESP8266 e controle de luzesSistema de automação residencial com ESP8266 e controle de luzesEste tutorial aborda a implementação de automação residencial com ESP8266, destacando segurança, eficiência energética, integração MQTT e interface web.

4. Lógica de Autenticação e Validação de Senha

5. ProgramaçãoSistema de controle de cortinas automatizadas com ESP8266Sistema de controle de cortinas automatizadas com ESP8266Descubra como automatizar cortinas com ESP8266. Aprenda componentes, montagem, programação e integração IoT para conforto e eficiência energética. do Sistema

6. Otimizações de Segurança e Armazenamento Seguro

7. Caso Prático: Montagem e Teste

8. Expansões e Integrações Avançadas

Componentes e Materiais Necessários🔗

graph LR A[Teclado Matricial] --> B(ESP8266) B --> C[Relé/Solenoide] B --> D[Display LCD] B --> E[Servidor Web]

Funcionamento e Configuração do Teclado Matricial🔗

O teclado matricial opera através de uma matriz de linhas e colunas. Cada tecla pressionada conecta uma linha a uma coluna, permitindo a identificação do caractere via varredura sequencial.

Mapeamento do Teclado 4x4:

Coluna 1Coluna 2Coluna 3Coluna 4
Linha 1123A
Linha 2456B
Linha 3789C
Linha 40#D

Código de Leitura (Biblioteca Keypad):

#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {D1, D2, D3, D4};
byte colPins[COLS] = {D5, D6, D7, D8};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void loop() {
  char key = keypad.getKey();
  if (key) Serial.print("Tecla: " + String(key));
}

Conexão e Setup do ESP8266🔗

Diagrama de Conexões:

flowchart TB subgraph ESP8266 D1[Linha 1] --> TECLADO D2[Linha 2] --> TECLADO D3[Linha 3] --> TECLADO D4[Linha 4] --> TECLADO D5[Coluna 1] --> TECLADO D6[Coluna 2] --> TECLADO D7[Coluna 3] --> TECLADO D8[Coluna 4] --> TECLADO D0 --> RELE end

Configuração Wi-Fi:

#include <ESP8266WiFi.h>
const char* ssid = "SUA_REDE";
const char* password = "SENHA_REDE";
void setup() {
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Conectado ao Wi-Fi! IP: " + WiFi.localIP());
}

Lógica de Autenticação e Validação de Senha🔗

Fluxo de Autenticação:

1. Entrada da Senha: O usuário digita a senha via teclado (ex: "1234A#").

2. Confirmação: Tecla # envia a senha para validação.

3. Comparação:

  • Método Básico: Comparação direta com senha em texto claro (não recomendado para produção).
  • Método Seguro: Uso de hash (ex: SHA-256) para comparar valores criptografados.

Equação de Verificação:

$$ \text{Acesso} = \begin{cases} 1 & \text{se } \text{hash}(senha_{\text{input}}) = \text{hash}_{\text{armazenado}} \\ 0 & \text{caso contrário} \end{cases} $$

Exemplo de Hash com SHA-256:

#include <Crypto.h>
#include <SHA256.h>
void setup() {
  SHA256 sha;
  char* senha = "1234A";
  sha.update(senha, strlen(senha));
  uint8_t* hash = sha.digest();
  // Armazene 'hash' na EEPROM
}

Programação do Sistema🔗

Código Completo (Com Wi-Fi e Controle de Relé):

#include <ESP8266WiFi.h>
#include <Keypad.h>
const char* ssid = "SUA_REDE";
const char* passwordWiFi = "SENHA_REDE";
const byte RELE_PIN = D0;
// Configuração do Teclado
const byte ROWS = 4, COLS = 4;
char keys[ROWS][COLS] = {
  {'1','2','3','A'}, {'4','5','6','B'},
  {'7','8','9','C'}, {'*','0','#','D'}
};
byte rowPins[ROWS] = {D1, D2, D3, D4};
byte colPins[COLS] = {D5, D6, D7, D8};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
String senhaCorreta = "1234A";
String senhaDigitada;
void setup() {
  Serial.begin(115200);
  pinMode(RELE_PIN, OUTPUT);
  digitalWrite(RELE_PIN, LOW);
  WiFi.begin(ssid, passwordWiFi);
  while (WiFi.status() != WL_CONNECTED) delay(500);
  Serial.println("WiFi conectado! IP: " + WiFi.localIP());
}
void loop() {
  char key = keypad.getKey();
  if (key) {
    if (key == '#') {
      if (senhaDigitada == senhaCorreta) {
        digitalWrite(RELE_PIN, HIGH);
        delay(3000);
        digitalWrite(RELE_PIN, LOW);
        Serial.println("Acesso liberado!");
      } else {
        Serial.println("Acesso negado!");
      }
      senhaDigitada = "";
    } else if (key == '*') {
      senhaDigitada = "";
    } else {
      senhaDigitada += key;
    }
  }
}

Otimizações de Segurança e Armazenamento Seguro🔗

  • Timeout após Falhas: Bloqueie o sistema após 3 tentativas incorretas.
int tentativas = 0;
if (senhaDigitada != senhaCorreta) {
  tentativas++;
  if (tentativas >= 3) delay(60000); // Bloqueia por 1 minuto
}

Caso Prático: Montagem e Teste🔗

Passo a Passo:

1. Conecte o teclado aos pinos D1-D8 do ESP8266Sistema de automação residencial com ESP8266 e controle de luzesSistema de automação residencial com ESP8266 e controle de luzesEste tutorial aborda a implementação de automação residencial com ESP8266, destacando segurança, eficiência energética, integração MQTT e interface web..

2. Ligue o reléSistema de controle de bomba de água com ESP8266 para fontes decorativasSistema de controle de bomba de água com ESP8266 para fontes decorativasAprenda a automatizar bombas de água usando ESP8266, com isolamento seguro, controle PID e integração IoT via web, MQTT e API para automação residencial. ao pino D0 e à fonte de alimentação externa.

3. Carregue o código e teste a senha padrão "1234A".

4. Monitorize o Serial Monitor para logs de acesso.

Teste de Segurança:

Expansões e Integrações Avançadas🔗

1. Registro em Nuvem: Use Firebase ou AWS IoT para armazenar logs de acesso.

2. Notificações por Telegram: Envie mensagens via bot ao detectar acesso.

3. Autenticação Multifator: Combine senha com RFID ou biometria.

4. ESP32 como Upgrade: Utilize o ESP32 para maior poder de processamento e segurança embarcada.

graph LR A[Sistema de Acesso] --> B[Cloud Firebase] A --> C[Telegram Bot] A --> D[Sensor RFID]

Considerações Finais🔗

Este sistema é uma base para projetos de segurança escaláveis. Priorize práticas como atualização regular de senhas, monitoramento contínuo de logs e criptografia end-to-end em ambientes críticos. Para desafios complexos, considere migrar para o ESP32 ou incluir co-processadores dedicados a segurança.

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados