DOKUMENTATSIOON
RFID-lugeja integreerimise käsiraamat
Põhjalik dokumentatsioon, mis hõlmab jadaliidese seadistamist, antenni konfiguratsiooni, sildistamise toiminguid (EPC Gen2 / ISO 18000-6C) ja energiahaldust. Sisaldab näiteid mitme antenniga kasutuselevõtuks ja kiireks inventuuri skaneerimiseks.
Jadaliidese seadistamine
Nextwaves NRN-protokolli RFID-lugejad suhtlevad jadaliidese (RS-232 või USB-to-Serial) kaudu. Stabiilse andmeedastuse tagamiseks tuleb ühenduse parameetrid õigesti konfigureerida.
Baud Rate
115200
Data Bits
8
Stop Bits
1
Parity
None
Brauseripõhiste WebSerial API-ühenduste jaoks kasutage Nextwaves Reader Connecti aadressil app.nextwaves.com/reader. Rakendus tuvastab automaatselt COM-pordid ja konfigureerib ühenduse parameetrid.
// 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()Nextwaves NRN-protokolli raami struktuur
Iga NRN-protokolli käsk on kapseldatud binaarsesse raami, mis koosneb: päisest (0x5A), PCW-st (protokolli juhtimis sõna), kategooriast, MID-st (sõnumi ID), pikkusest, andmete kasulikust koormast ja CRC16-CCITT kontrollsummast.
| Väli | Suurus | Kirjeldus |
|---|---|---|
| Header | 1 byte | Alati 0x5A. raami alguse marker |
| PCW | 2 bytes | Protokolli lipud (versioon, aadress) |
| Category | 1 byte | Käsu kategooria (0x00=Süsteem, 0x01=Seade, 0x02=RFID) |
| MID | 1 byte | Sõnumi ID kategoorias |
| Length | 2 bytes | Kasuliku koormuse pikkus baitides (suur-endian) |
| Data | N bytes | Käskudele spetsiifiline andmepakett |
| CRC16 | 2 bytes | CRC16-CCITT kontrollsumma baitidest pärast päist |
Käskude näited
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 CRC16Põhikäskude viide
| Käsk | Kood | Kirjeldus |
|---|---|---|
| QUERY_INFO | 0x0100 | Päringu lugeja seerianumber ja püsivara versioonid |
| QUERY_RFID_ABILITY | 0x1000 | Päringu RFID võimalused (võimsusvahemik, antennide arv) |
| READ_EPC_TAG | 0x0210 | Alusta pidevat EPC sildi inventuuri |
| WRITE_EPC_TAG | 0x0211 | Kirjutage andmed sildi EPC panka |
| STOP_INVENTORY | 0x02FF | Peata käimasolev sildi inventuur |
| CONFIGURE_READER_POWER | 0x0201 | Määra edastusvõimsus (0-33 dBm antenni kohta) |
| CONFIGURE_ANTENNA_ENABLE | 0x0203 | Luba/keela antenniportid (bitimask) |
| SET_WORKING_FREQUENCY | 0x0205 | Määra konkreetsed töösagedused |
| SET_FILTER_SETTINGS | 0x0209 | Konfigureeri sildi duplikaatide filter (ajapõhine) |
| BUZZER_SWITCH | 0x011E | Juhtige summeri režiimi |
Antenni konfiguratsioon
RFID-lugejad toetavad kuni 32 antenniporti. Iga port on lubatud või keelatud 4-baidise bitimaskiga. Antennid on nummerdatud 1 kuni 32, kusjuures iga bitt vastab pordile.
Antenni bitimask
Luba antennid 1-4
0x0F, 0x00, 0x00, 0x00
Binary: 00001111 → Ports 1,2,3,4 ON
Luba ainult antennid 1 ja 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 enabledMitme antenniga kasutuselevõtt
Mitme antenni kasutuselevõtul arvestage polarisatsiooni (lineaarne vs ringikujuline), antennide vahelist kaugust ja kattuvate levialade piirkondi. Lugeja skaneerib järjestikku lubatud antenne ja iga sildiraport sisaldab antenni ID-d positsiooni määramiseks.
Dokk-uks
2-4 antenni portaali kohta, ringpolariseeritus, 30 dBm võimsus
Konveierlint
1-2 antenni jaama kohta, lineaarne polarisatsioon, 20-25 dBm
Jaemüügiriiul
Lähivälja antennid, madal võimsus 15-20 dBm, kõrge tihedus
Sildi kodeerimine (EPC Gen2 / ISO 18000-6C)
UHF RFID järgib EPC Gen2 standardit (ISO 18000-6C). Igal sildil on 4 mälupanka: Reserved (paroolid), EPC (96+ bitine identifikaator), TID (muutumatu kiibi ID) ja User (kohandatud andmed).
Sildi mälustruktuur
| Pank | ID | Tüüpiline suurus | Kasutus |
|---|---|---|---|
| Reserved | 00 | 64 bits | Hävitamise parool (32b) + Juurdepääsu parool (32b) |
| EPC | 01 | 96-128 bits | SGTIN-96, SSCC-96 või kohandatud kodeering |
| TID | 10 | 96+ bits | Kiibi tootja ID (ainult lugemiseks, unikaalne) |
| User | 11 | 0-512 bits | Rakendusespetsiifilised andmed (kiibist sõltuv) |
SGTIN-96 dekodeerimise näide
SGTIN-96 on kõige levinum kodeering jaemüügi- ja tarneahela toodete jaoks. Konverteerige 24-märgilise kuueteistkümnendsüsteemi EPC GTIN-14, seerianumbriks ja GS1 Digital Linkiks.
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]Kasutage veebipõhist EPC kodeerimise tööriista aadressil /tools/tds-rfid-converter SGTIN-96, SSCC-96, GRAI-96 otse oma brauseris kodeerimiseks ja dekodeerimiseks.
Energiahaldus
Lugeja edastusvõimsus on reguleeritav vahemikus 0 kuni 33 dBm antenni pordi kohta. Suurem võimsus suurendab lugemisulatust, kuid suurendab ka häireid ja energiatarbimist.
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 readersRSSI jälgimine
Sildidelt saadud RSSI (Received Signal Strength Indicator) väärtused teatatakse toore ADC baitidena (0-255). Täpsete dBm väärtuste saamiseks kasutage teisendusvalemit.
Konversioonivalem
dBm = -100 + round((raw × 70) / 255)
Raw 128
-65 dBm
Hea
Raw 180
-51 dBm
Tugev
Raw 220
-40 dBm
Suurepärane
Kiire inventuuri skaneerimine
Kiireks inventuuri skaneerimiseks konfigureerige töösagedused, duplikaatide sildi filter ja pideva skaneerimise režiim. Lugejad toetavad optimaalse konfiguratsiooniga kuni 700 silti sekundis.
Sageduse konfiguratsioon
UHF RFID töötab sagedusalas 920–925 MHz (Kagu-Aasia), kanalite vahega 0,5 MHz. Kanalid on nummerdatud 0-st (920 MHz) kuni 10-ni (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 MHzOptimaalne skaneerimise töövoog
Seadistage antenni pordid ja võimsustasemed
Määrake töösagedused (FHSS tihedate keskkondade jaoks)
Seadistage duplikaatide filter (500 ms-3000 ms olenevalt kasutusjuhtumist)
Saatke READ_EPC_TAG, et alustada pidevat inventuuri
Töötle silditeatisi (PID 0x1231) nende saabumisel
Saatke STOP_INVENTORY, kui olete lõpetanud
// 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");