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ă.

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.

Baud Rate

115200

Data Bits

8

Stop Bits

1

Parity

None

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.

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
Header1 byteÎntotdeauna 0x5A. marker de început de cadru
PCW2 bytesSteaguri de protocol (versiune, adresă)
Category1 byteCategoria de comandă (0x00=Sistem, 0x01=Dispozitiv, 0x02=RFID)
MID1 byteID-ul mesajului în cadrul categoriei
Length2 bytesLungimea utilului în octeți (big-endian)
DataN bytesPayload specific comenzii
CRC162 bytesChecksum CRC16-CCITT al octeților după antet

Exemple de comandă

QUERY_INFO — Query reader serial number & 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_INFO0x0100Interogați numărul de serie al cititorului și versiunile de firmware
QUERY_RFID_ABILITY0x1000Interogați capacitățile RFID (interval de putere, număr de antene)
READ_EPC_TAG0x0210Începeți inventarierea continuă a etichetelor EPC
WRITE_EPC_TAG0x0211Scrie date în banca EPC a unei etichete
STOP_INVENTORY0x02FFOpriți o inventariere a etichetelor în curs de desfășurare
CONFIGURE_READER_POWER0x0201Setați puterea de transmisie (0-33 dBm per antenă)
CONFIGURE_ANTENNA_ENABLE0x0203Activați/dezactivați porturile antenei (bitmask)
SET_WORKING_FREQUENCY0x0205Setați frecvențe specifice de lucru
SET_FILTER_SETTINGS0x0209Configurați filtrul duplicat de etichete (bazat pe timp)
BUZZER_SWITCH0x011EControlaț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-4

0x0F, 0x00, 0x00, 0x00

Binary: 00001111 → Ports 1,2,3,4 ON

Activează doar antenele 1 și 3

0x05, 0x00, 0x00, 0x00

Binary: 00000101 → Ports 1,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.

Ușă de andocare

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

Bandă transportoare

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

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
Reserved0064 bitsParolă de ucidere (32b) + Parolă de acces (32b)
EPC0196-128 bitsSGTIN-96, SSCC-96 sau codificare personalizată
TID1096+ bitsID producător cip (doar pentru citire, unic)
User110-512 bitsDate 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 conversie

dBm = -100 + round((raw × 70) / 255)

Raw 128

-65 dBm

Bun

Raw 180

-51 dBm

Puternic

Raw 220

-40 dBm

Excelent

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 × 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

1

Configurați porturile antenei și nivelurile de putere

2

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

3

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

4

Trimiteți READ_EPC_TAG pentru a începe inventarierea continuă

5

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

6

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");