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 …
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 .
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.
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.
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.
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:
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:
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 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:
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ó.
| SEL1 | SEL0 | Cách thức |
|---|---|---|
| 0 | 0 | UART |
| 1 | 0 | SPI |
| 0 | 1 | I2C |
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.
Để 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 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.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137#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.
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.
|
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);
}
|
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.
|
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);
}
|
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:
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:
Kỹ thuật & Tự động hóa Linear motor Động cơ tuyến tính: Nguyên lý, Đặc điểm & Ứng dụng …
IoT Giới thiệu về Module NFC PN532 với Arduino
