Tài liệu

Khóa số điện tử sử dụng Arduino: Thiết kế và ứng dụng mới

Huy Erick

Sự phát triển của công nghệ đã mở ra nhiều cánh cửa cho sự tiện ích và an toàn trong cuộc sống hàng ngày của chúng ta. Một ứng dụng tiêu biểu đó là khóa...

Sự phát triển của công nghệ đã mở ra nhiều cánh cửa cho sự tiện ích và an toàn trong cuộc sống hàng ngày của chúng ta. Một ứng dụng tiêu biểu đó là khóa số điện tử, một giải pháp an toàn và thông minh cho hệ thống khóa truyền thống. Trong bài viết này, chúng ta sẽ tìm hiểu về cách thiết kế và ứng dụng một khóa số điện tử sử dụng Arduino.

Thiết kế mạch khóa số điện tử

Khóa số điện tử là một thiết bị sử dụng các chữ số và ký tự để mở khóa. Trong thiết kế này, chúng ta sử dụng Arduino để xây dựng một mạch khóa số điện tử đơn giản. Mã khóa bao gồm sự kết hợp của các chữ số từ 1 đến 6 và các chữ cái A, B, C, D. Bàn phím hex được sử dụng làm thiết bị đầu vào, và có các chân khóa riêng biệt để khóa và mở khóa hệ thống.

Trong sơ đồ mạch trên, các chân từ R1 đến R4 được nối với các chân từ 6 đến 9 của Arduino, trong khi các chân C1 đến C4 được nối với các chân từ 10 đến 13 của Arduino. Chân số 3 của Arduino được cấu hình là ngõ ra để điều khiển khóa điện từ. Mạch được thiết kế để khóa khi tín hiệu đầu vào ở mức thấp và mở khóa khi tín hiệu đầu vào ở mức cao. Và tình trạng này được thể hiện qua Led - mạch khóa khi Led tắt và mở khi Led sáng.

Chương trình điều khiển mạch khóa

Dưới đây là chương trình điều khiển mạch khóa số điện tử sử dụng Arduino:

int p[6]; // Mảng lưu giá trị mật khẩu
int c[6]; // Mảng lưu trữ mã đầu vào
int n;
int a = 0;
int i = 0;
int lock = 3;
int r1 = 6;
int r2 = 7;
int r3 = 8;
int r4 = 9;
int c1 = 10;
int c2 = 11;
int c3 = 12;
int c4 = 13;
int colm1;
int colm2;
int colm3;
int colm4;

void setup()
{
  pinMode(r1, OUTPUT);
  pinMode(r2, OUTPUT);
  pinMode(r3, OUTPUT);
  pinMode(r4, OUTPUT);
  pinMode(c1, INPUT);
  pinMode(c2, INPUT);
  pinMode(c3, INPUT);
  pinMode(c4, INPUT);
  pinMode(lock, OUTPUT);
  Serial.begin(9600);
  digitalWrite(c1, HIGH);
  digitalWrite(c2, HIGH);
  digitalWrite(c3, HIGH);
  digitalWrite(c4, HIGH);
  digitalWrite(lock, LOW);
  p[0] = 1;
  p[1] = 2;
  p[2] = 3;
  p[3] = 4;
  p[4] = 5;
  p[5] = 6;
}

void loop()
{
  digitalWrite(r1, LOW);
  digitalWrite(r2, HIGH);
  digitalWrite(r3, HIGH);
  digitalWrite(r4, HIGH);
  colm1 = digitalRead(c1);
  colm2 = digitalRead(c2);
  colm3 = digitalRead(c3);
  colm4 = digitalRead(c4);

  if (colm1 == LOW)
  {
    n = 1;
    a = 1;
    Serial.println("1");
    delay(200);
  }
  else
  {
    if (colm2 == LOW)
    {
      n = 2;
      a = 1;
      Serial.println("2");
      delay(200);
    }
    else
    {
      if (colm3 == LOW)
      {
        Serial.println("3");
        n = 3;
        a = 1;
        delay(200);
      }
      else
      {
        if (colm4 == LOW)
        {
          Serial.println("LOCKED");
          digitalWrite(lock, LOW);
          i = 0;
          delay(200);
        }
      }
    }
  }

  digitalWrite(r1, HIGH);
  digitalWrite(r2, LOW);
  digitalWrite(r3, HIGH);
  digitalWrite(r4, HIGH);
  colm1 = digitalRead(c1);
  colm2 = digitalRead(c2);
  colm3 = digitalRead(c3);
  colm4 = digitalRead(c4);

  if (colm1 == LOW)
  {
    Serial.println("4");
    n = 4;
    a = 1;
    delay(200);
  }
  else
  {
    if (colm2 == LOW)
    {
      Serial.println("5");
      n = 5;
      a = 1;
      delay(200);
    }
    else
    {
      if (colm3 == LOW)
      {
        Serial.println("6");
        n = 6;
        a = 1;
        delay(200);
      }
      else
      {
        if (colm4 == LOW)
        {
          if (c[0] == p[0] && c[1] == p[1] && c[2] == p[2] && c[3] == p[3] && c[4] == p[4] && c[5] == p[5])
          {
            digitalWrite(lock, HIGH);
            Serial.println("UNLOCKED");
            c[5] = 9;
          }
          else
          {
            Serial.println("WRONG PASSWORD");
          }
          delay(200);
        }
      }
    }
  }

  if (a == 1)
  {
    c[i] = n;
    i = i + 1;
    a = 0;
  }
}

Ứng dụng và lưu ý

Mật khẩu của hệ thống được lưu trữ trong mảng "p". Khi nhấn nút mở khóa, nội dung trong cả hai mảng "p" và "c" được so sánh với nhau. Nếu chúng giống nhau, khóa sẽ được mở. Sau đó, dữ liệu trong mảng "c" sẽ được reset. Để mở khóa, bạn chỉ cần nhấn nút "B". Nếu bạn nhập sai, bạn có thể nhấn lại nút "A" để nhập lại. Nhấn nút "A" để tiếp tục nhập mật khẩu.

Hệ thống này cũng có thể được kết nối với PC thông qua USB và hiển thị các phím được nhấn trên màn hình Arduino.

Lưu ý:

  • Nguồn cấp cho mạch khóa có thể được cung cấp từ máy tính thông qua USB.
  • Số chữ trong mật khẩu có thể được tăng lên bằng cách sửa đổi chương trình.

Với sự phát triển của công nghệ, khóa số điện tử sử dụng Arduino mang lại nhiều tiện ích và an toàn. Hy vọng bài viết này đã giúp bạn hiểu thêm về cách thiết kế và ứng dụng của khóa số điện tử này.

1