ÌWỌNỌ̀

Itọ́sọ́nà Ìdápọ̀ Olùkàwé RFID

Ìwé àkọ́kọ́ tó péye tó ń bo àtúnṣe ibaraẹnisọrọ serial, ìtò antenna, iṣẹ́ àkọ́ọ̀lẹ̀ tag (EPC Gen2 / ISO 18000-6C), àti iṣakoso agbára. Ó ní àpẹẹrẹ fún fifi antenna ọ̀pọ̀lọpọ̀ ṣàgbékalẹ̀ àti àwárí àkójọpọ̀ tó yara.

Àtúnṣe Ibaraẹnisọrọ Serial

Olùkàwé RFID ti ìlànà Nextwaves NRN ń bá a sọ̀rọ̀ nípasẹ̀ ibudo serial (RS-232 tàbí USB-to-Serial). Àwọn àlàyé asopọ gbọdọ̀ jẹ́ ṣètò nípò tó péye láti jẹ́ kí ìfiránṣẹ́ data dúró ṣinṣin.

Baud Rate

115200

Data Bits

8

Stop Bits

1

Parity

None

Fun awọn asopọ API WebSerial ti o da lori aṣàwákiri, lo Nextwaves Reader Connect ní app.nextwaves.com/reader. Ohun elo naa ń ṣe àwárí laifọwọyi awọn ibudo COM ati ṣeto awọn paramita asopọ.

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()

Ilana Fireemu Ìlànà NRN ti Nextwaves

Gbogbo àṣẹ ìlànà NRN jẹ́ àkópọ̀ nínú fireemu binary tí ó ní: Header (0x5A), PCW (Protocol Control Word), Ẹ̀ka, MID (Message ID), Gigun, Data payload, àti CRC16-CCITT checksum.

AayeIwọnApejuwe
Header1 byteNigbagbogbo 0x5A. ami ibẹrẹ-fọ́ọ̀mù
PCW2 bytesÀwọn ààmì ìlànà (ẹ̀ya, àdírẹ́sì)
Category1 byteẸ̀ka aṣẹ (0x00=Eto, 0x01=Ẹrọ, 0x02=RFID)
MID1 byteID ifiranṣẹ̀ ní inú ẹ̀ka
Length2 bytesGigun àkóónú ní báyìì (big-endian)
DataN bytesÀkópọ̀ data pàtó fún aṣẹ
CRC162 bytesChecksum CRC16-CCITT ti awọn baiti lẹ́yìn akọlé

Àpẹẹrẹ Aṣẹ

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

Ìtọ́kasí Àṣẹ Kókó

AṣẹKooduApejuwe
QUERY_INFO0x0100Beere nọmba jara oluka ati awọn ẹya firmware
QUERY_RFID_ABILITY0x1000Beere awọn agbara RFID (ibiti agbara, nọmba antena)
READ_EPC_TAG0x0210Bẹrẹ iṣiro aami EPC lemọlemọ
WRITE_EPC_TAG0x0211Kọ data si banki EPC ti aami
STOP_INVENTORY0x02FFDa iṣiro aami ti n ṣiṣẹ duro
CONFIGURE_READER_POWER0x0201Ṣeto agbara gbigbe (0-33 dBm fun antena kọọkan)
CONFIGURE_ANTENNA_ENABLE0x0203Mu awọn ibudo antena ṣiṣẹ/tabi pa (bitmask)
SET_WORKING_FREQUENCY0x0205Ṣeto awọn igbohunsafẹfẹ iṣẹ pato
SET_FILTER_SETTINGS0x0209Ṣeto àlẹmọ ẹda aami (ti o da lori akoko)
BUZZER_SWITCH0x011EṢakoso ipo buzzer

Iṣeto Antenna

Awọn oluka RFID ṣe atilẹyin to 32 awọn ibudo antena. Gbogbo ibudo le jẹ mu ṣiṣẹ tabi mu pa nipasẹ bitmask ti awọn baiti 4. Awọn antena ni a n ṣeto lati 1 si 32, pẹlu baiti kọọkan ti o baamu ibudo kan.

Bitmask Antenna

Ṣeéṣiṣẹ́ àntẹna 1-4

0x0F, 0x00, 0x00, 0x00

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

Ṣeéṣiṣẹ́ àntẹna 1 & 3 Nìkan

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

Fifi Antenna Ọ̀pọ̀lọpọ̀ Ṣe

Nígbà tí a bá ń fi antenna ọ̀pọ̀lọpọ̀ ṣàgbékalẹ̀, ó ṣe pàtàkì láti kà sí ìtòsí (ìlà-ìtòsí vs. yíyí), ààlà àárín antenna, àti àgbègbè àbo tí ń bà a pọ̀. Olùkàwé ń ṣàwárí ní títọ́ lẹ́sẹ̀sẹ̀ nípasẹ̀ antenna tí a ti ṣí, àti ìjábọ̀ tag kọọkan ní ID antenna fún ìdánimọ̀ ipo.

Ilẹ̀kùn Dock

2-4 àntẹna fún ẹnu-ọna, ìpolárìtì yíyíká, agbára 30 dBm

Bẹ́lììtì Gbigbe

1-2 àntẹna fún ọkọọkan ibudo, ìpolárìtì líníà, 20-25 dBm

Apá Tita

Antenna pẹ̀lú pápá tó sunmọ́, agbára kékèké 15-20 dBm, àkúnya gíga

Kóòdì Tag (EPC Gen2 / ISO 18000-6C)

UHF RFID ń tẹ̀lé àdájọ EPC Gen2 (ISO 18000-6C). Gbogbo tag ní ilé-ìrántí mẹ́rin: Reserved (ọ̀rọ̀ aṣínà), EPC (àmì idanimọ 96+ bit), TID (ID chip tí kò lè yípadà), àti User (data àdáṣe).

Ilé-ìrántí Tag

BankiIDIwọn TípíkàLílo
Reserved0064 bitsỌrọìgbaniwọle pa (32b) + Ọrọìgbaniwọle wọle (32b)
EPC0196-128 bitsSGTIN-96, SSCC-96, tàbí àkóòdù àdáṣe
TID1096+ bitsID oníṣòwò chip (kà-nìkan, aláìlòpin)
User110-512 bitsData pàtó fún ohun-èlo (da lori chip)

Àpẹẹrẹ Ìtúmọ̀ SGTIN-96

SGTIN-96 ni kóòdì tó wọ́pọ̀ jùlọ fún àwọn ọja tita ati pq ipese. Yi EPC hex ti awọn ohun kikọ 24 pada si GTIN-14, nọmba jara, ati 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]

Lo irinṣẹ EPC Encoder ori ayelujara ní /tools/tds-rfid-converter lati kóòdù àti ṣíṣe àtúnkò SGTIN-96, SSCC-96, GRAI-96 taara ninu aṣàwákiri rẹ.

Iṣakoso Agbára

Agbára ìfiránṣẹ́ olùkàwé lè ṣètò láti 0 sí 33 dBm fún ọkọ̀ọ̀kan ibudo antenna. Agbára tó ga jùlọ ń pọ̀ sí i àgbègbè ìkànsí, ṣùgbọ́n ó tún ń pọ̀ sí i ìfarapa àti ìlò agbára.

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

Ìmúlò RSSI

Àwọn iye RSSI (Received Signal Strength Indicator) láti inú tag ni a ń ṣàfihàn gẹ́gẹ́ bí àwọ̀n ADC àìlò (0-255). Lo àtúnṣe fọ́ọ́mùlá láti rí iye dBm tó péye.

Fórúmù Iyipada

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

Raw 128

-65 dBm

Dára

Raw 180

-51 dBm

Lágbára

Raw 220

-40 dBm

Pípé

Àyẹ̀wò Ìkójọpọ̀ Ohun-èlò Tó Yara

Fun àyẹ̀wò ìkójọpọ̀ ohun-èlò tó yara, ṣètò àwọn igbohùnsáfẹ́fẹ́ iṣẹ́, àlẹ́mọ́ àpẹẹrẹ tó jọra, àti àyípadà àyẹ̀wò aláìdákẹ́jẹ. Awọn oluka lè ṣe àtìlẹ́yìn tó 700 àmi/ìṣẹ́ju pẹ̀lú ìtò tó péye.

Ìtò Ìgbàgbọ́

UHF RFID ń ṣiṣẹ́ ní àgbègbè 920-925 MHz (Gúúsù Ìlà Oòrùn Ásíà), pẹ̀lú ààyè ikanni 0.5 MHz. Àwọn ikanni ní nǹkan 0 (920 MHz) sí 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

Ilana Ṣíṣe Àwárí Tó Dára Jùlọ

1

Ṣètò àwọn ibudo àntenna àti awọn ipele agbara

2

Ṣètò igbohunsafẹfẹ iṣẹ (FHSS fún àyíká tí ó kún)

3

Ṣètò àlẹ̀mọ́ àtúnṣe (500ms-3000ms gẹ́gẹ́ bí ọran ìlò ṣe yàtọ̀)

4

Firanṣẹ READ_EPC_TAG láti bẹ̀rẹ̀ àkójọ àìdáyẹ̀wò alákọ̀ọ́rẹ́

5

Ṣe àtúnṣe ìkìlọ̀ tag (PID 0x1231) bí wọ́n ṣe dé

6

Firanṣẹ STOP_INVENTORY nígbà tí o bá parí

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