Nghiên cứu Khoa học

Cửa thông minh điều khiển bằng thẻ từ

  • 16/03/2024
  • Nghiên cứu Khoa học

Cửa thông minh điều khiển bằng thẻ từ

I. Giới thiệu

Hôm nay, mình sẽ chia sẻ về cách sử dụng module RFID để làm cửa thông minh tự động đóng mở bằng thẻ từ nhé  Vậy chức năng của module RFID là gì?

Module RFID RC522 sử dụng IC MFRC522 của Phillip dùng để đọc và ghi dữ liệu cho thẻ NFC tần số 13.56mhz, với mức giá rẻ, thiết kế nhỏ gọn, module này là sự lựa chọn hàng đầu cho các ứng dụng về ghi đọc thẻ RFID.

Sau đây là 1 vài hình ảnh về thẻ RFID

II. Chuẩn bị

Đã có 1 bài viết của anh Nguyen Manh Hung nói về module RFID rồi á, nhưng anh ấy sử dụng thư viện MFRC522. Mình sẽ chỉ cho các bạn 1 thư viện dễ sử dụng hơn, đó là thư viện RFID, các bạn có thể tải tại đây

III. Nối dây

Arduino UNO

Module RFID

Servo

11 

MOSI

 

12

MISO

 

13

SCK

 

10

SDA

 

9

RST

 

3.3V

3.3V

 

GND

GND

GND

5V

 

5V

IV. Code

  1. /*
  2. * MOSI: Pin 11 / ICSP-4
  3. * MISO: Pin 12 / ICSP-1
  4. * SCK: Pin 13 / ISCP-3
  5. * SS: Pin 10
  6. * RST: Pin 9
  7. */
  8.  
  9. #include<Servo.h>
  10. #include<SPI.h>
  11. #include<RFID.h>
  12.  
  13. #define SS_PIN 10
  14. #define RST_PIN 9
  15. Servo myservo;
  16. RFID rfid(SS_PIN, RST_PIN);
  17.  
  18. unsignedchar reading_card[5];// Mảng đọc mã card
  19. unsignedchar master[5]={134,138,22,126,100};// Mã Card phù hợp để mở cửa
  20. unsignedchar slave[5]={246,253,148,53,170};// Mã Card phù hợp để đóng cửa
  21.  
  22. unsignedchar i, j;
  23.  
  24. void setup()
  25. {
  26.  
  27. myservo.attach(8);
  28. Serial.begin(9600);
  29. SPI.begin();
  30. rfid.init();
  31. myservo.write(30);
  32. }
  33.  
  34. void loop()
  35. {
  36. if(rfid.isCard()){
  37. if(rfid.readCardSerial())// Nếu có thẻ
  38. {
  39.  
  40. for(i =0; i <5; i++){
  41.  
  42. reading_card[i]= rfid.serNum[i];//Lưu mã thẻ đọc được vào mảng reading_card
  43. }
  44. Serial.println();
  45. //verification
  46. for(i =0; i <5; i++){
  47. //So sáng từng phần tử của mảng reading_card với mảng master
  48. if(reading_card[i]!= master[i])//Nếu có 1 phần tử bất kỳ nào không phù hợp...thỳ thoát vòng lặp, lúc này ta nhận được giá trị của i
  49. {
  50. break;
  51. }
  52. }
  53. // Tương tự với thẻ Slave
  54. for(j =0; j <5; j++){
  55. if(reading_card[i]!= slave[i]){
  56. break;
  57. }
  58. }
  59. if(i ==5)// Nếu các phần tử của màng reading_card phù hợp hết với mảng master thì lúc này i chạy đến 5
  60. {
  61. myservo.write(180);// đóng cửa
  62. }
  63. if(j ==5){
  64. myservo.write(30);// mở cửa
  65. }
  66. }
  67. rfid.halt();
  68. }
  69. }

 

Các tin khác