TÀI LIỆU
Tài liệu tích hợp Reader RFID
Tài liệu toàn diện về thiết lập truyền thông nối tiếp, cấu hình anten, hoạt động mã hóa thẻ (EPC Gen2 / ISO 18000-6C) và quản lý nguồn. Bao gồm ví dụ triển khai đa anten và quét kiểm kê tốc độ cao.
Thiết lập truyền thông nối tiếp
Đầu đọc RFID NRN protocol giao tiếp qua cổng serial (RS-232 hoặc USB-to-Serial). Cấu hình kết nối cần được thiết lập chính xác để đảm bảo truyền dữ liệu ổn định.
Baud Rate
115200
Data Bits
8
Stop Bits
1
Parity
None
Để kết nối qua WebSerial API (trình duyệt), sử dụng Nextwaves Reader Connect tại app.nextwaves.com/reader. Ứng dụng này tự động phát hiện cổng COM và thiết lập tham số kết nối.
// Request serial port access
const port = await navigator.serial.requestPort();
await port.open({
baudRate: 115200,
dataBits: 8,
stopBits: 1,
parity: "none",
flowControl: "none",
bufferSize: 4096,
});
// Get reader/writer streams
const reader = port.readable.getReader();
const writer = port.writable.getWriter();import serial
port = serial.Serial(
port="/dev/ttyUSB0", # Linux/macOS
# port="COM3", # Windows
baudrate=115200,
bytesize=serial.EIGHTBITS,
stopbits=serial.STOPBITS_ONE,
parity=serial.PARITY_NONE,
timeout=2.0,
)
# Flush buffers before communication
port.reset_input_buffer()
port.reset_output_buffer()Cấu trúc khung giao thức Nextwaves NRN
Mỗi lệnh NRN protocol được đóng gói trong khung nhị phân bao gồm: Header (0x5A), PCW (Protocol Control Word), Category, MID (Message ID), Length, Data payload và CRC16-CCITT checksum.
| Trường | Kích thước | Mô tả |
|---|---|---|
| Header | 1 byte | Luôn là 0x5A — đánh dấu đầu khung |
| PCW | 2 bytes | Cờ giao thức (phiên bản, địa chỉ) |
| Category | 1 byte | Danh mục lệnh (0x00=Hệ thống, 0x01=Thiết bị, 0x02=RFID) |
| MID | 1 byte | ID tin nhắn trong danh mục |
| Length | 2 bytes | Độ dài payload tính bằng byte (big-endian) |
| Data | N bytes | Payload dành riêng cho lệnh |
| CRC16 | 2 bytes | Checksum CRC16-CCITT của các byte sau header |
Ví dụ lệnh
TX → 5A 00 01 01 00 00 00 DC E5
┌──┐ ┌────┐ ┌──┐ ┌──┐ ┌────┐ ┌────┐
│5A│ │0001│ │01│ │00│ │0000│ │DCE5│
└──┘ └────┘ └──┘ └──┘ └────┘ └────┘
HDR PCW CAT MID LEN CRC16TX → 5A 00 01 02 10 00 00 04 5A
HDR PCW CAT MID LEN CRC16
Response notifications (PID 0x1231) contain:
• Antenna ID (1 byte)
• RSSI value (1 byte, raw ADC 0-255)
• EPC data (12+ bytes)
• Frequency channel index (1 byte)TX → 5A 00 01 02 FF 00 00 88 5A
HDR PCW CAT MID LEN CRC16Danh sách lệnh chính
| Lệnh | Mã | Mô tả |
|---|---|---|
| QUERY_INFO | 0x0100 | Truy vấn số serial và phiên bản firmware đầu đọc |
| QUERY_RFID_ABILITY | 0x1000 | Truy vấn khả năng RFID (phạm vi công suất, số anten) |
| READ_EPC_TAG | 0x0210 | Bắt đầu quét thẻ EPC liên tục |
| WRITE_EPC_TAG | 0x0211 | Ghi dữ liệu vào ngân hàng EPC của thẻ |
| STOP_INVENTORY | 0x02FF | Dừng quét thẻ đang chạy |
| CONFIGURE_READER_POWER | 0x0201 | Cài đặt công suất phát (0-33 dBm mỗi anten) |
| CONFIGURE_ANTENNA_ENABLE | 0x0203 | Bật/tắt cổng anten (bitmask) |
| SET_WORKING_FREQUENCY | 0x0205 | Thiết lập tần số làm việc cụ thể |
| SET_FILTER_SETTINGS | 0x0209 | Cấu hình bộ lọc thẻ trùng lặp (theo thời gian) |
| BUZZER_SWITCH | 0x011E | Điều khiển chế độ còi |
Cấu hình anten
Đầu đọc RFID hỗ trợ lên đến 32 cổng anten. Mỗi cổng được bật hoặc tắt thông qua bitmask 4 byte. Anten được đánh số từ 1 đến 32, mỗi bit tương ứng với một cổng.
Bitmask anten
Bật anten 1-4
0x0F, 0x00, 0x00, 0x00
Binary: 00001111 → Ports 1,2,3,4 ON
Chỉ bật anten 1 & 3
0x05, 0x00, 0x00, 0x00
Binary: 00000101 → Ports 1,3 ON
TX → 5A 00 01 02 03 00 04 0F 00 00 00 E1 EF
┌───────────┐
Payload: │0F 00 00 00│ ← bitmask
└───────────┘
Bit 0 = ANT1, Bit 1 = ANT2, Bit 2 = ANT3, Bit 3 = ANT4
0x0F = 0b00001111 → all 4 ports enabledTriển khai đa anten
Khi triển khai nhiều anten, cần cân nhắc phân cực (tuyến tính vs tròn), khoảng cách giữa các anten và vùng phủ sóng chồng lấn. Đầu đọc sẽ quét tuần tự qua các anten được bật, mỗi thẻ được báo cáo kèm ID anten để xác định vị trí.
Cửa Dock
2-4 anten mỗi cổng, phân cực tròn, công suất 30 dBm
Băng chuyền
1-2 anten mỗi trạm, phân cực tuyến tính, 20-25 dBm
Kệ bán lẻ
Anten trường gần, công suất thấp 15-20 dBm, mật độ cao
Mã hóa thẻ (EPC Gen2 / ISO 18000-6C)
UHF RFID tuân theo chuẩn EPC Gen2 (ISO 18000-6C). Mỗi thẻ có 4 ngân hàng bộ nhớ: Reserved (mật khẩu), EPC (96+ bit mã định danh), TID (chip ID không thay đổi) và User (dữ liệu tùy chỉnh).
Cấu trúc bộ nhớ thẻ
| Ngân hàng | ID | Kích thước điển hình | Sử dụng |
|---|---|---|---|
| Reserved | 00 | 64 bits | Mật khẩu Kill (32b) + Mật khẩu Access (32b) |
| EPC | 01 | 96-128 bits | SGTIN-96, SSCC-96 hoặc mã hóa tùy chỉnh |
| TID | 10 | 96+ bits | ID nhà sản xuất chip (chỉ đọc, duy nhất) |
| User | 11 | 0-512 bits | Dữ liệu dành riêng cho ứng dụng (tùy chip) |
Ví dụ giải mã SGTIN-96
SGTIN-96 là mã hóa phổ biến nhất cho sản phẩm bán lẻ và chuỗi cung ứng. Chuyển đổi EPC hex 24 ký tự thành GTIN-14, số serial và GS1 Digital Link.
EPC Hex: 3034257BF7194E4000001A85
Decoded:
Header: 0x30 (SGTIN-96)
Filter: 1 (Point-of-Sale)
Partition: 5
Company Prefix: 0614141
Item Reference: 812345
Serial: 6789
GTIN-14: 80614141123458
Digital Link: https://id.gs1.org/01/80614141123458/21/6789// NRN protocol WRITE_EPC_TAG command
TX → 5A 00 01 02 11 00 0C [EPC_DATA_12_BYTES] [CRC16]
// The reader will:
// 1. Select the tag in its field
// 2. Write the provided EPC data to Bank 01
// 3. Return success/failure notification
// Access password required if tag is locked:
TX → 5A 00 01 02 11 00 10 [ACCESS_PWD_4B] [EPC_DATA_12B] [CRC16]Sử dụng công cụ EPC Encoder trực tuyến tại /tools/tds-rfid-converter để mã hóa và giải mã SGTIN-96, SSCC-96, GRAI-96 trực tiếp trên trình duyệt.
Quản lý nguồn
Công suất phát của đầu đọc điều chỉnh được từ 0 đến 33 dBm cho mỗi cổng anten. Công suất cao hơn tăng khoảng cách đọc nhưng cũng tăng nhiễu và tiêu thụ điện.
TX → 5A 00 01 02 01 00 04 1E 1E 1E 1E 67 FE
┌───────────┐
Payload: │1E 1E 1E 1E│
└───────────┘
0x1E = 30 decimal = 30 dBm per port
Power guidelines:
• 33 dBm — Maximum range (~10m), dock doors
• 30 dBm — Standard range (~6-8m), general use
• 25 dBm — Medium range (~3-5m), conveyor belts
• 20 dBm — Short range (~1-2m), point-of-sale
• 15 dBm — Near-field (~0.5m), shelf readersGiám sát RSSI
Giá trị RSSI (Received Signal Strength Indicator) từ thẻ được báo cáo dưới dạng byte ADC thô (0-255). Sử dụng công thức chuyển đổi để có giá trị dBm chính xác.
Công thức chuyển đổi
dBm = -100 + round((raw × 70) / 255)
Raw 128
-65 dBm
Tốt
Raw 180
-51 dBm
Mạnh
Raw 220
-40 dBm
Xuất sắc
Quét kiểm kê tốc độ cao
Để quét kiểm kê tốc độ cao, cần cấu hình tần số làm việc, bộ lọc thẻ trùng lặp và chế độ quét liên tục. Đầu đọc hỗ trợ quét lên đến 700 thẻ/giây với cấu hình tối ưu.
Cấu hình tần số
Tần số UHF RFID hoạt động trong dải 920-925 MHz (Đông Nam Á), với bước nhảy 0.5 MHz. Mỗi kênh được đánh số từ 0 (920 MHz) đến 10 (925 MHz).
TX → 5A 00 01 02 05 00 06 00 02 04 06 08 0A C4 1B
Channel mapping (formula: 920.0 + index × 0.5 MHz):
Ch 0 → 920.0 MHz
Ch 2 → 921.0 MHz
Ch 4 → 922.0 MHz
Ch 6 → 923.0 MHz
Ch 8 → 924.0 MHz
Ch 10 → 925.0 MHzQuy trình quét tối ưu
Cấu hình cổng anten và mức công suất
Thiết lập tần số (FHSS cho môi trường đông đúc)
Cấu hình bộ lọc trùng lặp (500ms-3000ms tùy trường hợp)
Gửi READ_EPC_TAG để bắt đầu quét liên tục
Xử lý thông báo thẻ (PID 0x1231) khi chúng đến
Gửi STOP_INVENTORY khi hoàn tất
// 1. Enable antennas 1-4
await sendFrame("CONFIGURE_ANTENNA_ENABLE", [0x0F, 0x00, 0x00, 0x00]);
// 2. Set power to 30 dBm on all ports
await sendFrame("CONFIGURE_READER_POWER", [0x1E, 0x1E, 0x1E, 0x1E]);
// 3. Set working frequencies
await sendFrame("SET_WORKING_FREQUENCY", [0, 2, 4, 6, 8, 10]);
// 4. Set duplicate filter to 1000ms
await sendFrame("SET_FILTER_SETTINGS", [0x03, 0xE8]);
// 5. Start inventory
await sendFrame("READ_EPC_TAG");
// 6. Process tags...
reader.on("tag", (tag) => {
const rssiDbm = -100 + Math.round((tag.rssi * 70) / 255);
console.log(`EPC: ${tag.epc}, Ant: ${tag.antenna}, RSSI: ${rssiDbm} dBm`);
});
// 7. Stop when done
await sendFrame("STOP_INVENTORY");