DOCUMENTAȚIE

Manual de integrare a cititorului RFID

Documentație cuprinzătoare care acoperă configurarea comunicării seriale, configurarea antenei, operațiunile de codificare a etichetelor (EPC Gen2 / ISO 18000-6C) și gestionarea energiei. Include exemple pentru implementări cu antene multiple și scanare de inventar de mare viteză.

Reader bring-up
NRN
Serial115200 8N1
ProtocolCRC16-CCITT
RF power0-33 dBm
Inventory700 tags/s
5APCWCATMIDLENDATACRC16

Configurarea comunicării seriale

Cititoarele RFID cu protocol Nextwaves NRN comunică prin port serial (RS-232 sau USB-to-Serial). Parametrii de conectare trebuie configurați corect pentru a asigura o transmisie stabilă a datelor.

Pentru conexiunile API WebSerial bazate pe browser, utilizați Nextwaves Reader Connect la app.nextwaves.com/reader. Aplicația detectează automat porturile COM și configurează parametrii de conectare.

Baud rate115200
Data bits8
Stop bits1
ParityNone
TypeScript - WebSerial Connection
// 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();
Python - PySerial Connection
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()

Structura cadrului protocolului Nextwaves NRN

Fiecare comandă a protocolului NRN este încapsulată într-un cadru binar format din: Antet (0x5A), PCW (Protocol Control Word), Categorie, MID (ID mesaj), Lungime, Sarcină utilă de date și checksum CRC16-CCITT.

CâmpDimensiuneDescriere
Header
1 byte
Întotdeauna 0x5A. marker de început de cadru
PCW
2 bytes
Steaguri de protocol (versiune, adresă)
Category
1 byte
Categoria de comandă (0x00=Sistem, 0x01=Dispozitiv, 0x02=RFID)
MID
1 byte
ID-ul mesajului în cadrul categoriei
Length
2 bytes
Lungimea utilului în octeți (big-endian)
Data
N bytes
Payload specific comenzii
CRC16
2 bytes
Checksum CRC16-CCITT al octeților după antet

Exemple de comandă

QUERY_INFO - Query reader serial number and firmware
TX -> 5A 00 01 01 00 00 00 DC E5
       +----+ +------+ +----+ +----+ +------+ +------+
       | 5A | | 0001 | | 01 | | 00 | | 0000 | | DCE5 |
       +----+ +------+ +----+ +----+ +------+ +------+
        HDR     PCW    CAT   MID    LEN     CRC16
READ_EPC_TAG - Start continuous EPC tag inventory
TX -> 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)
STOP_INVENTORY - Stop running inventory scan
TX -> 5A 00 01 02 FF 00 00 88 5A
       HDR  PCW   CAT MID LEN   CRC16

Referință comenzi cheie

ComandăCodDescriere
QUERY_INFO
0x0100
Interogați numărul de serie al cititorului și versiunile de firmware
QUERY_RFID_ABILITY
0x1000
Interogați capacitățile RFID (interval de putere, număr de antene)
READ_EPC_TAG
0x0210
Începeți inventarierea continuă a etichetelor EPC
WRITE_EPC_TAG
0x0211
Scrie date în banca EPC a unei etichete
STOP_INVENTORY
0x02FF
Opriți o inventariere a etichetelor în curs de desfășurare
CONFIGURE_READER_POWER
0x0201
Setați puterea de transmisie (0-33 dBm per antenă)
CONFIGURE_ANTENNA_ENABLE
0x0203
Activați/dezactivați porturile antenei (bitmask)
SET_WORKING_FREQUENCY
0x0205
Setați frecvențe specifice de lucru
SET_FILTER_SETTINGS
0x0209
Configurați filtrul duplicat de etichete (bazat pe timp)
BUZZER_SWITCH
0x011E
Controlați modul buzzer

Configurarea antenei

Cititoarele RFID suportă până la 32 de porturi de antenă. Fiecare port este activat sau dezactivat printr-un bitmask de 4 octeți. Antenele sunt numerotate de la 1 la 32, fiecare bit corespunzând unui port.

Masca de antenă

Activează antenele 1-40F 00 00 00Binary 00001111 - ports 1, 2, 3, 4 on
Activează doar antenele 1 și 305 00 00 00Binary 00000101 - ports 1 and 3 on
CONFIGURE_ANTENNA_ENABLE - Enable ports 1-4
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 enabled

Implementare multi-antenă

Când implementați antene multiple, luați în considerare polarizarea (liniară vs. circulară), spațierea dintre antene și zonele de acoperire suprapuse. Cititorul scanează secvențial prin antenele activate, iar fiecare raport de etichetă include ID-ul antenei pentru determinarea poziției.

Portal

Ușă de andocare

2-4 antene per portal, polarizare circulară, putere de 30 dBm

Station

Bandă transportoare

1-2 antene per stație, polarizare liniară, 20-25 dBm

Shelf

Raft de vânzare cu amănuntul

Antene de câmp apropiat, putere redusă 15-20 dBm, densitate mare

Codificarea tag-urilor (EPC Gen2 / ISO 18000-6C)

RFID UHF respectă standardul EPC Gen2 (ISO 18000-6C). Fiecare tag are 4 bănci de memorie: Reserved (parole), EPC (identificator de 96+ biți), TID (ID-ul cipului imuabil) și User (date personalizate).

Structura memoriei tag-ului

BancăIDDimensiune tipicăUtilizare
Reserved
00
64 bits
Parolă de ucidere (32b) + Parolă de acces (32b)
EPC
01
96-128 bits
SGTIN-96, SSCC-96 sau codificare personalizată
TID
10
96+ bits
ID producător cip (doar pentru citire, unic)
User
11
0-512 bits
Date specifice aplicației (dependente de cip)

Exemplu de decodare SGTIN-96

SGTIN-96 este cea mai comună codificare pentru produsele de retail și lanțul de aprovizionare. Convertiți un EPC hexazecimal de 24 de caractere în GTIN-14, număr de serie și GS1 Digital Link.

SGTIN-96 Decode - Example
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
WRITE_EPC_TAG - Write EPC data to tag
// 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]

Utilizați instrumentul online EPC Encoder la /tools/tds-rfid-converter pentru a codifica și decodifica SGTIN-96, SSCC-96, GRAI-96 direct în browserul dvs.

Gestionarea energiei

Puterea de emisie a cititorului este reglabilă de la 0 la 33 dBm per port de antenă. O putere mai mare crește raza de citire, dar crește și interferența și consumul de energie.

CONFIGURE_READER_POWER - Set 30 dBm on all 4 ports
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 readers

Monitorizarea RSSI

Valorile RSSI (Received Signal Strength Indicator) de la etichete sunt raportate ca octeți ADC brute (0-255). Utilizați formula de conversie pentru a obține valori dBm exacte.

Formula de conversiedBm = -100 + round((raw x 70) / 255)
Raw 128 - Bun-65 dBm
Raw 180 - Puternic-51 dBm
Raw 220 - Excelent-40 dBm

Scanare inventar la viteză mare

Pentru scanarea inventarului la viteză mare, configurați frecvențele de lucru, filtrul de etichete duplicate și modul de scanare continuă. Cititoarele suportă până la 700 de etichete/secundă cu o configurație optimă.

Configurare frecvență

RFID UHF funcționează în banda de 920-925 MHz (Asia de Sud-Est), cu o distanță de canal de 0,5 MHz. Canalele sunt numerotate de la 0 (920 MHz) la 10 (925 MHz).

SET_WORKING_FREQUENCY - 6 channels (920-925 MHz)
TX -> 5A 00 01 02 05 00 06 00 02 04 06 08 0A C4 1B

Channel mapping (formula: 920.0 + index x 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 MHz

Flux de lucru optim de scanare

01

Configurați porturile antenei și nivelurile de putere

02

Setați frecvențele de lucru (FHSS pentru medii dense)

03

Configurați filtrul de duplicate (500ms-3000ms în funcție de caz)

04

Trimiteți READ_EPC_TAG pentru a începe inventarierea continuă

05

Procesați notificările de tag (PID 0x1231) pe măsură ce sosesc

06

Trimiteți STOP_INVENTORY când ați terminat

Complete inventory flow - TypeScript
// 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");