IoT

Giới thiệu về Module NFC PN532 với Arduino

     Trong bài này, tôi sẽ hướng dẫn cho bạn cách sử dụng module PN532 NFC RFID với Arduino. Bài viết này dành cho những người mới bắt đầu, vì vậy tôi sẽ cố gắng giải thích mọi thứ một cách rõ ràng nhất có thể. Tôi muốn làm cho bài viết này dễ hiểu, để cho bạn cũng có thể dễ dàng làm được một cách nhanh nhất .

PN532 NFC RFID 

        Links mua sản phẩm :

                PN532 NFC RFID module

                Arduino nano Mini  

NFC là gì?

NFC là viết tắt của “Near Field Communication”, có nghĩa là giao tiếp không dây tầm ngắn. Đây là một tiêu chuẩn giao tiếp sử dụng chip IC không tiếp xúc để giao tiếp đơn giản chỉ bằng cách giữ lại gần nhau. Nó có phạm vi giao tiếp ngắn và là công nghệ được sử dụng trong các smartphone có chức năng ví và các IC vận tải như Suica và PASMO.

Ngày nay, có thể nói rằng nó là một trong những công nghệ thiết yếu để cải thiện sự tiện lợi trong cuộc sống của chúng ta. Trong những năm gần đây, thẻ tín dụng tích hợp NFC cũng đã xuất hiện, và các ứng dụng của NFC đang mở rộng, chẳng hạn như thanh toán đơn giản chỉ bằng cách giữ thẻ trên máy thanh toán.

Cách NFC hoạt động:

NFC (Near Field Communication) là công nghệ giao tiếp không dây cho phép truyền dữ liệu giữa hai thiết bị ở gần nhau, thường trong khoảng vài cm. Đây là một hình thức công nghệ RFID (Radio Frequency Identification) hoạt động ở tần số 13.56 MHz.

Công nghệ NFC sử dụng sự kết hợp giữa từ trường cảm ứng và nhận dạng tần số vô tuyến để cho phép giao tiếp giữa các thiết bị. Khi hai thiết bị đến gần nhau, chúng tạo ra một từ trường cho phép chúng giao tiếp và trao đổi thông tin.

NFC được sử dụng trong nhiều ứng dụng, chẳng hạn như thanh toán di động, vé điện tử và kiểm soát truy cập. Ví dụ, bạn có thể sử dụng smartphone có NFC để thanh toán tại cửa hàng hoặc để vào một tòa nhà bằng cách chạm nó vào một đầu đọc NFC.

NFC cũng có thể được sử dụng để truyền dữ liệu giữa hai thiết bị. Chẳng hạn, bạn có thể chia sẻ ảnh hoặc video giữa hai smartphone có NFC bằng cách chạm chúng lại gần nhau.

Để sử dụng NFC, cả hai thiết bị đều phải có chip NFC và ăng-ten. Chip NFC gửi và nhận dữ liệu, trong khi ăng-ten cho phép giao tiếp bằng cách tạo ra từ trường. Khi hai thiết bị đến gần nhau, chúng thiết lập kết nối và trao đổi dữ liệu.

Tóm lại, công nghệ NFC là một cách nhanh chóng, an toàn và tiện lợi để truyền dữ liệu và thực hiện thanh toán, và nó có nhiều ứng dụng trong các ngành khác nhau.

Sự khác biệt giữa NFC và RFID

RFID (Radio Frequency Identification) và NFC (Near Field Communication) đều là công nghệ giao tiếp không dây được sử dụng để truyền dữ liệu giữa hai thiết bị. Mặc dù chúng có một số điểm tương đồng, nhưng cũng có những sự khác biệt đáng kể giữa hai công nghệ này.

RFID là công nghệ sử dụng sóng vô tuyến để nhận diện và theo dõi các đối tượng. Thẻ RFID là thiết bị thụ động chứa một ăng-ten và một chip nhỏ lưu trữ dữ liệu. Những thẻ này được quét bởi các đầu đọc RFID, phát ra sóng vô tuyến và nhận tín hiệu trở lại từ thẻ. Công nghệ RFID được sử dụng rộng rãi trong logistics, quản lý hàng tồn kho và quản lý chuỗi cung ứng.

NFC là một phần của công nghệ RFID và hoạt động ở khoảng cách ngắn hơn. Nó được thiết kế để sử dụng trong các thiết bị di động như smartphone và được sử dụng để thực hiện thanh toán không tiếp xúc, vé điện tử và kiểm soát truy cập. Khác với thẻ RFID, thẻ NFC có thể được đọc và ghi, cho phép các tương tác linh hoạt hơn giữa các thiết bị.

Sự khác biệt chính giữa RFID và NFC nằm ở phạm vi giao tiếp và loại dữ liệu mà chúng có thể truyền. RFID hoạt động ở khoảng cách xa hơn so với NFC và chủ yếu được sử dụng cho mục đích theo dõi và nhận diện. Ngược lại, NFC hoạt động ở khoảng cách ngắn hơn và được sử dụng để giao tiếp giữa các thiết bị ở gần nhau. NFC cũng có khả năng truyền tải dữ liệu phức tạp hơn như thông tin liên lạc, URL và thậm chí là một lượng nhỏ dữ liệu.

Tóm lại, RFID và NFC đều là công nghệ giao tiếp không dây được sử dụng để truyền dữ liệu giữa các thiết bị. RFID hoạt động ở khoảng cách xa hơn và chủ yếu được sử dụng cho việc theo dõi và nhận diện, trong khi NFC hoạt động ở khoảng cách ngắn hơn và được sử dụng cho thanh toán không tiếp xúc, vé điện tử và kiểm soát truy cập.

Ứng dụng của NFC

Công nghệ NFC đã trở nên ngày càng phổ biến trong những năm gần đây nhờ tính linh hoạt và dễ sử dụng của nó. Dưới đây là một số ứng dụng chính của NFC:

  • Thanh toán di động: Công nghệ NFC cho phép các hệ thống thanh toán di động, như Apple Pay và Google Wallet, cho phép người dùng thực hiện thanh toán an toàn chỉ bằng cách chạm điện thoại vào máy thanh toán.
  • Kiểm soát truy cập: NFC thường được sử dụng cho kiểm soát truy cập trong các tòa nhà, cho phép nhân viên chạm thẻ ID hoặc điện thoại vào đầu đọc để vào.
  • Vé điện tử vận chuyển: Công nghệ NFC cũng có thể được sử dụng cho vé điện tử không tiếp xúc, cho phép người dùng chỉ cần chạm điện thoại hoặc thẻ để thanh toán.
  • Bán lẻ thông minh: Các nhà bán lẻ đang bắt đầu sử dụng NFC để nâng cao trải nghiệm mua sắm, chẳng hạn như sử dụng màn hình có tích hợp NFC để cung cấp thêm thông tin sản phẩm hoặc thực hiện mua sắm trực tiếp từ màn hình.
  • Chăm sóc sức khỏe: NFC có thể được sử dụng cho các ứng dụng y tế, chẳng hạn như lưu trữ và truyền tải dữ liệu bệnh nhân hoặc theo dõi và quản lý thiết bị y tế.
  • Quảng cáo: Công nghệ NFC cũng được sử dụng trong quảng cáo, cho phép người dùng chạm điện thoại vào bảng quảng cáo hoặc áp phích có tích hợp NFC để nhận ưu đãi khuyến mãi hoặc truy cập thêm thông tin.
  • Gaming: Công nghệ NFC đã được sử dụng trong gaming để nâng cao trải nghiệm người dùng, chẳng hạn như sử dụng mô hình hoặc thẻ tích hợp NFC để mở khóa nội dung hoặc tính năng bổ sung.
  • Mạng xã hội: NFC cũng có thể được sử dụng cho mạng xã hội, chẳng hạn như chia sẻ thông tin liên lạc giữa các thiết bị hoặc chia sẻ nội dung như ảnh hoặc video.
  •  

Thông số kỹ thuật PN532 NFC

Mô-đun PN532 NFC là một mô-đun RFID đa năng có thể hỗ trợ nhiều giao thức giao tiếp và chế độ hoạt động khác nhau. Dưới đây là một số thông số kỹ thuật của mô-đun PN532:

  • Giao thức Giao tiếp: PN532 hỗ trợ các giao thức giao tiếp khác nhau như I2C, SPI, HSU (High-Speed UART) và NFC (Giao tiếp không tiếp xúc tầm ngắn).
  • Chế độ Hoạt động: Mô-đun hỗ trợ ba chế độ hoạt động: chế độ đọc/ghi, chế độ P2P (Peer-to-Peer), và chế độ giả thẻ.
  • Hỗ trợ Thẻ RFID: PN532 có thể đọc và ghi các loại thẻ RFID khác nhau như MIFARE, FeliCa, và ISO/IEC 14443 loại A và B.
  • Tốc độ Dữ liệu: Mô-đun có thể hỗ trợ tốc độ dữ liệu lên đến 424 kbps.
  • Nguồn Cung cấp: PN532 có bộ điều chỉnh điện áp tích hợp hỗ trợ nguồn 3.3V và 5V.
  • Ăng-ten: Mô-đun có ăng-ten PCB tích hợp hỗ trợ khoảng cách hoạt động tối đa lên đến 10 cm.
  • Kích thước: Mô-đun PN532 có kích thước 45mm x 38mm x 5mm.
  • Nhiệt độ Hoạt động: Mô-đun có thể hoạt động trong khoảng nhiệt độ từ -25°C đến +85°C.
  • Cổng Đầu vào/Đầu ra: Mô-đun PN532 có 7 chân đầu vào/đầu ra có thể được sử dụng cho mục đích giao tiếp và điều khiển.
  • Tính năng Bảo mật: Mô-đun có các tính năng bảo mật tích hợp như mã định danh duy nhất cho mỗi thiết bị và hỗ trợ mã hóa/giải mã cho việc truyền dữ liệu an toàn.

     Tóm lại, PN532 là một mô-đun RFID đa năng và mạnh mẽ có thể hỗ trợ nhiều giao thức giao tiếp và chế độ hoạt động, làm cho nó phù hợp cho nhiều ứng dụng trong các lĩnh vực kiểm soát truy cập, quản lý hàng tồn kho và hệ thống theo dõi.

Module PN532 NFC RFID V3 và các chân kết nối

Module PN532 NFC RFID V3 là một mô-đun RFID phổ biến được sử dụng cho nhiều ứng dụng như kiểm soát truy cập, quản lý hàng tồn kho và hệ thống theo dõi. Dưới đây là một số điểm mô tả chân kết nối của module PN532 RFID V3:

  • VCC: Chân này được sử dụng để cung cấp nguồn cho module và nên được kết nối với nguồn điện 3.3V hoặc 5V.
  • GND: Chân này là chân nối đất, thường dùng kết nối với chân âm của nguồn.
  • SDA: Chân này được sử dụng để truyền dữ liệu trong chế độ giao tiếp I2C.
  • SCL: Chân này được sử dụng cho tín hiệu đồng hồ trong chế độ giao tiếp I2C.
  • MOSI: Chân này được sử dụng để truyền dữ liệu trong chế độ giao tiếp SPI.
  • MISO: Chân này được sử dụng để nhận dữ liệu trong chế độ giao tiếp SPI.
  • SCK: Chân này được sử dụng cho tín hiệu đồng hồ trong chế độ giao tiếp SPI.
  • NSS: Chân này được sử dụng để chọn thiết bị phụ trong chế độ giao tiếp SPI.
  • TXD: Chân này được sử dụng để truyền dữ liệu trong chế độ giao tiếp HSU (High-Speed UART).
  • RXD: Chân này được sử dụng để nhận dữ liệu trong chế độ giao tiếp HSU (High-Speed UART).
  • IRQ: Chân này là chân ngắt có thể được sử dụng để báo hiệu các sự kiện như phát hiện thẻ RFID.
  • SEL0 và SEL1: Những chân này được sử dụng để chọn chế độ hoạt động của module.
  • RESET: Chân này được sử dụng để đặt lại module.

Bo mạch đi kèm với bộ chuyển đổi mức tín hiệu tích hợp và sử dụng TTL 5V chuẩn cho I2C và UART, cũng như TTL 3.3V cho SPI. Tuy nhiên, cần lưu ý rằng I2C và HSU (High-Speed UART) chia sẻ cùng một chân.

Chế độ mặc định của module được cài đặt là HSU, nhưng bạn có thể thay đổi chế độ giao tiếp bằng cách sử dụng các công tắc chuyển đổi được cung cấp. 

Để chọn chế độ giao tiếp khi thực hiện kết nối của module này, trước tiên cần đặt các chân SEL0 và SEL1 của module PN532 cho từng chế độ bằng cách sử dụng công tắc nhúng được nhúng trên bo mạch của nó.

PN532-CH 

SEL1 SEL0 Cách thức
0 0 UART
1 0 SPI
0 1 I2C

 

Các phương pháp kết nối NFC PN532 V3 với Arduino Nano

A. Chế độ UART NFC PN532 

1. Sơ đồ mạch UART của module NFC RFID PN532 :

NFC RFID PN532 UART Circuit Diagram Sơ đồ kết nối mô-đun NFC RFID PN532  với Arduino qua UART

Để bắt đầu sử dụng module NFC RFID PN532 , bạn cần kết nối chân VCC và GND của module với các chân 5V và GND của bo mạch Arduino. Ngoài ra, bạn nên kết nối chân TX và RX của module với các chân D2 và D3 của bo mạch Arduino.

Bên cạnh đó, cần kết nối hai đèn LED với các chân 5 và 6 của Arduino. Các kết nối tối thiểu này là đủ để bắt đầu sử dụng module. Nếu bạn cần cấp nguồn cho bo mạch Arduino từ bên ngoài, bạn có thể sử dụng nguồn 5V điều chỉnh dựa trên bộ điều chỉnh điện áp LM7805. Hoặc bạn cũng có thể sử dụng sạc điện thoại để cấp nguồn cho Arduino.

Tôi đang sử dụng bo mạch phát triển Arduino Nano và đã kết nối các đèn LED cùng module NFC PN532 theo sơ đồ mạch. Nếu bạn muốn sử dụng chế độ HSU (High-Speed UART), bạn không cần thay đổi vị trí của các công tắc vì mặc định nó đã được đặt ở chế độ UART.

Dù bạn chọn bắt đầu với HSU, I2C, hay SPI, bước đầu tiên là tải xuống tất cả các thư viện cần thiết.

2. Tải thư viện cho module NFC PN532 

Để truy cập vào thư mục, hãy tải xuống tệp WinRAR và giải nén nội dung của nó. Sau khi đã giải nén các tệp, bạn điều hướng đến thư mục và nhấp đúp chuột để mở nó.

Thư viện Arduino cho module NFC PN532  

Thư viện Arduino cho module NFC RFID PN532 

Khi mở thư mục, bạn sẽ tìm thấy tất cả các thư viện cần thiết bên trong. Để thêm các thư viện này vào Arduino IDE, hãy sao chép các thư mục và dán chúng vào thư mục thư viện của Arduino.


3. Code lập trình UART cho module NFC PN532:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <SoftwareSerial.h>
#include <PN532_SWHSU.h>
#include <PN532.h>
SoftwareSerial SWSerial( 3, 2 ); // RX, TX
//RX pin with D3 and TX pin with D2
int ledpin1=5;
int ledpin2=6;
PN532_SWHSU pn532swhsu( SWSerial );
PN532 nfc( pn532swhsu );
String tagId = “None”, dispTag = “None”;
byte nuidPICC[4];
 
 
   String tagId1 = “57.11.182.176”;
   String tagId2= “250.95.153.26”;
void setup(void)
{
  Serial.begin(115200);
  pinMode(ledpin1,OUTPUT);
  pinMode(ledpin2,OUTPUT);
  Serial.println(“Hello Maker!”);
  //  Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2);
  nfc.begin();
  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata)
  {
    Serial.print(“Didn’t Find PN53x Module”);
    while (1); // Halt
  }
  // Got valid data, print it out!
  Serial.print(“Found chip PN5”);
  Serial.println((versiondata >> 24) & 0xFF, HEX);
  Serial.print(“Firmware ver. “);
  Serial.print((versiondata >> 16) & 0xFF, DEC);
  Serial.print(‘.’);
  Serial.println((versiondata >> 8) & 0xFF, DEC);
  // Configure board to read RFID tags
  nfc.SAMConfig();
  //Serial.println(“Waiting for an ISO14443A Card …”);
    digitalWrite(ledpin1, LOW);
        digitalWrite(ledpin2, LOW);
}
 
 
void loop()
{
  readNFC();
  if(tagId==tagId1)
  {
    if( digitalRead(ledpin1) == 0)
    {
      digitalWrite(ledpin1, HIGH);
      tagId = “”;
      delay(1000);
      
    }
 
  }
 
      if(tagId==tagId1)
  {
             if( digitalRead(ledpin1) == 1)
    {
      digitalWrite(ledpin1, LOW);
      tagId = “”;
      delay(1000);
    }
  }
            if(tagId==tagId2)
  {
    if( digitalRead(ledpin2) == 0)
    {
      digitalWrite(ledpin2, HIGH);
      tagId = “”;
      delay(1000);
      
    }
 
  }
 
      if(tagId==tagId2)
  {
             if( digitalRead(ledpin2) == 1)
    {
      digitalWrite(ledpin2, LOW);
      tagId = “”;
      delay(1000);
    }
 
  }
 
}
 
 
void readNFC()
{
  boolean success;
  uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };  // Buffer to store the returned UID
  uint8_t uidLength;                       // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
  success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0], &uidLength);
  if (success)
  {
    Serial.print(“UID Length: “);
    Serial.print(uidLength, DEC);
    Serial.println(” bytes”);
    Serial.print(“UID Value: “);
    for (uint8_t i = 0; i < uidLength; i++)
    {
      nuidPICC[i] = uid[i];
      Serial.print(” “); Serial.print(uid[i], DEC);
    }
    Serial.println();
    tagId = tagToString(nuidPICC);
    dispTag = tagId;
    Serial.print(F(“tagId is : “));
    Serial.println(tagId);
    Serial.println(“”);
    delay(1000);  // 1 second halt
  }
  else
  {
    // PN532 probably timed out waiting for a card
    Serial.println(“Timed out! Waiting for a card…”);
  }
}
String tagToString(byte id[4])
{
  String tagId = “”;
  for (byte i = 0; i < 4; i++)
  {
    if (i < 3) tagId += String(id[i]) + “.”;
    else tagId += String(id[i]);
  }
  return tagId;
}

Đoạn mã trên được viết cho chế độ HSU và sử dụng các chân 3 và 2. Đèn LED được kết nối với các chân 5 và 6 của Arduino. Bạn cũng có thể sử dụng mã này để tìm ID của các thẻ RFID. Để làm như vậy, hãy mở Serial Monitor và bắt đầu quét các thẻ RFID của bạn.

Tương tự, tôi đã có thể lấy được UID của thẻ bằng cách sử dụng phương pháp tương tự.

String tagId1 = "57.11.1642.137";
String tagId2 = "250.95.134.56";

Bằng cách sử dụng các ID này trong lập trình, bạn có thể điều khiển một số thứ nhất định. Trong trường hợp của tôi, tôi đang sử dụng chúng để điều khiển hai đèn LED. Tôi đã tải lên chương trình này, vì vậy hãy xem chế độ HSU của mô-đun PN532 NFC RFID hoạt động như thế nào.

 

B. Chế độ NFC PN532 I2C

1. Sơ đồ mạch I2Ccủa module NFC PN532 :

NFC PN532 I2C Như đã đề cập trước đó, các chế độ HSU và I2C sử dụng chung các chân pin. Trong chế độ này, bạn sẽ thấy rằng các chân SDA và SCL của module PN532 được kết nối với các chân A4 và A5 của Arduino, tương ứng, các kết nối khác vẫn giữ nguyên.

   Trong thiết lập này, các chân SDA và SCL của module PN532 được kết nối với các chân A4 và A5 của Arduino, tương ứng. Vì lần này sẽ sử dụng chế độ I2C, nên chúng ta sẽ chọn kênh 1.
 

2. Code lập trình I2Ccho module NFC PN532:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// for I2C Communication
#include <Wire.h>
#include <PN532_I2C.h>
#include <PN532.h>
#include <NfcAdapter.h>
PN532_I2C pn532_i2c(Wire);
int ledpin1=5;
int ledpin2=6;
NfcAdapter nfc = NfcAdapter(pn532_i2c);
  String tagId1 = “FA 5F 99 1A”;
   String tagId2= “39 0B B6 B0”;
String tagId = “None”;
byte nuidPICC[4];
 
void setup(void) {
  Serial.begin(115200);
    pinMode(ledpin1,OUTPUT);
  pinMode(ledpin2,OUTPUT);
  Serial.println(“System initialized”);
 
  nfc.begin();
   digitalWrite(ledpin1, LOW);
        digitalWrite(ledpin2, LOW);
}
 
void loop() {
  readNFC();
  if(tagId==tagId1)
  {
    if( digitalRead(ledpin1) == 0)
    {
      digitalWrite(ledpin1, HIGH);
      tagId = “”;
      delay(1000);
      
    }
 
  }
 
      if(tagId==tagId1)
  {
             if( digitalRead(ledpin1) == 1)
    {
      digitalWrite(ledpin1, LOW);
      tagId = “”;
      delay(1000);
    }
 
  }
      
      if(tagId==tagId2)
  {
    if( digitalRead(ledpin2) == 0)
    {
      digitalWrite(ledpin2, HIGH);
      tagId = “”;
      delay(1000);
      
    }
 
  }
 
      if(tagId==tagId2)
  {
             if( digitalRead(ledpin2) == 1)
    {
      digitalWrite(ledpin2, LOW);
      tagId = “”;
      delay(1000);
    }
 
  }
 
}
 
void readNFC() {
  if (nfc.tagPresent())
  {
    NfcTag tag = nfc.read();
    tag.print();
    tagId = tag.getUidString();
    Serial.println(“Tag id”);
    Serial.println(tagId);
  }
  delay(1000);
}

 

C. Chế độ NFC PN532 SPI

1. Sơ đồ mạch SPI của module NFC PN532 :

NFC PN532 SPI 

Nếu bạn mong muốn sử dụng chế độ SPI của module NFC PN532, bạn phải kết nối như sau:

PN532

Arduino

SCK

13

MISO

12

MOSI

11

SS

10

RST0

9

Tất cả các kết nối khác sẽ vẫn giữ nguyên. Theo sơ đồ mạch, tôi đã liên kết các chân SPI của module PN532 RFID với Arduino. Để kích hoạt chế độ SPI  trên module NFC PN532, trước tiên bạn phải tắt kênh 1, sau đó bật công tắc sang kênh 2.

3. Code lập trình SPI cho module NFC PN532:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// for SPI Communication
#include <SPI.h>
#include <PN532_SPI.h>
#include <PN532.h>
#include <NfcAdapter.h>
PN532_SPI interface(SPI, 10); // create a PN532 SPI interface with the SPI CS terminal located at digital pin 10
NfcAdapter nfc = NfcAdapter(interface); // create an NFC adapter object
String tagId = “None”;
String tagId1 = “FA 5F 99 1A”;
String tagId2= “39 0B B6 B0”;
int ledpin1=5;
int ledpin2=6;
void setup(void)
{
Serial.begin(115200);
Serial.println(“System initialized”);
pinMode(ledpin1,OUTPUT);
pinMode(ledpin2,OUTPUT);
nfc.begin();
}
 
void loop()
{
readNFC();
if(tagId==tagId1)
{
if( digitalRead(ledpin1) == 0)
{
digitalWrite(ledpin1, HIGH);
tagId = “”;
delay(1000);
}
 
}
 
if(tagId==tagId1)
{
if( digitalRead(ledpin1) == 1)
{
digitalWrite(ledpin1, LOW);
tagId = “”;
delay(1000);
}
 
}
if(tagId==tagId2)
{
if( digitalRead(ledpin2) == 0)
{
digitalWrite(ledpin2, HIGH);
tagId = “”;
delay(1000);
}
 
}
 
if(tagId==tagId2)
{
if( digitalRead(ledpin2) == 1)
{
digitalWrite(ledpin2, LOW);
tagId = “”;
delay(1000);
}
 
}
 
}
 
void readNFC()
{
if (nfc.tagPresent())
{
NfcTag tag = nfc.read();
tag.print();
tagId = tag.getUidString();
}
delay(1000);
}

 

Ưu điểm của module NFC PN532:

Module NFC PN532 là một lựa chọn phổ biến cho các nhà phát triển và người dùng nhờ vào nhiều ưu điểm. Dưới đây là một số ưu điểm chính được tóm tắt:

  • Đa năng: Module NFC PN532 tương thích với nhiều giao thức NFC và RFID, giúp nó đa dụng cho nhiều ứng dụng khác nhau.
  • Dễ tích hợp: Module đi kèm với giao diện và API dễ sử dụng, giúp đơn giản hóa việc tích hợp vào các dự án.
  • Giao tiếp an toàn: Module NFC PN532 sử dụng các thuật toán mã hóa tiên tiến để đảm bảo giao tiếp an toàn giữa đầu đọc và thẻ.
  • Hiệu suất cao: Module cung cấp khả năng truyền dữ liệu và đọc với tốc độ cao, là một giải pháp hiệu quả cho các ứng dụng đòi hỏi xử lý dữ liệu lớn.
  • Tiêu thụ điện năng thấp: Module PN532 được thiết kế để tiêu thụ ít điện năng, lý tưởng cho các thiết bị chạy bằng pin.
  • Kích thước nhỏ gọn: Module có kích thước nhỏ, dễ dàng tích hợp vào các thiết bị nhỏ.
  • Chi phí hợp lý: Module PN532 là một giải pháp có chi phí phải chăng cho các ứng dụng NFC và RFID, giúp tiếp cận được nhiều người dùng.
  • Phạm vi đọc xa: Module có phạm vi đọc xa, lý tưởng cho các ứng dụng như kiểm soát truy cập và hệ thống vé.
  • Thân thiện với người dùng: Module dễ sử dụng và có thể lập trình dễ dàng để đọc và ghi dữ liệu từ các thẻ NFC và RFID.

Nhược điểm của module NFC PN532:

Mặc dù module NFC PN532 có nhiều ưu điểm, cũng có một số nhược điểm cần xem xét:

  • Phạm vi giới hạn: Mặc dù module PN532 có phạm vi đọc xa, nhưng có thể không đủ cho một số ứng dụng yêu cầu khoảng cách lớn hơn giữa đầu đọc và thẻ.
  • Tương thích giới hạn: Dù module PN532 tương thích với nhiều giao thức NFC và RFID, nhưng có thể có một số giao thức không được hỗ trợ, giới hạn khả năng tương thích với một số thiết bị nhất định.
  • Bộ nhớ giới hạn: Module có dung lượng bộ nhớ giới hạn, điều này có thể là một hạn chế cho các ứng dụng cần lưu trữ lượng lớn dữ liệu.
  • Hỗ trợ hạn chế: Mặc dù module PN532 được sử dụng rộng rãi, nhưng có thể có sự hỗ trợ và tài nguyên hạn chế ở một số khu vực hoặc cho một số ứng dụng nhất định.
  • Cấu hình phức tạp: Cấu hình module PN532 có thể phức tạp đối với những người dùng chưa có kinh nghiệm, điều này có thể yêu cầu thêm thời gian và nguồn lực để thiết lập đúng cách.
  • Chức năng giới hạn: Mặc dù module có nhiều tính năng hữu ích, nhưng có thể không có tất cả các chức năng cần thiết cho một số ứng dụng chuyên biệt.
  • Dễ bị nhiễu: Module PN532 có thể dễ bị nhiễu từ các thiết bị khác, điều này có thể ảnh hưởng đến hiệu suất và độ tin cậy của nó.

linear motor

Linear motor

Kỹ thuật & Tự động hóa Linear motor   Động cơ tuyến tính: Nguyên lý, Đặc điểm & Ứng dụng  …