DOKÜMANTASYON
RFID Okuyucu Entegrasyon Kılavuzu
Seri iletişim kurulumu, anten yapılandırması, etiket kodlama işlemleri (EPC Gen2 / ISO 18000-6C) ve güç yönetimini kapsayan kapsamlı belgeler. Çok antenli konuşlandırmalar ve yüksek hızlı envanter taraması için örnekler içerir.
Seri İletişim Kurulumu
Nextwaves NRN protokolü RFID okuyucuları, seri port (RS-232 veya USB-seri) aracılığıyla iletişim kurar. Kararlı veri iletimini sağlamak için bağlantı parametreleri doğru yapılandırılmalıdır.
Baud Rate
115200
Data Bits
8
Stop Bits
1
Parity
None
Tarayıcı tabanlı WebSerial API bağlantıları için, app.nextwaves.com/reader adresinden Nextwaves Reader Connect'i kullanın. Uygulama, COM portlarını otomatik olarak algılar ve bağlantı parametrelerini yapılandırır.
// 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 Protokol Çerçeve Yapısı
Her NRN protokol komutu, aşağıdakilerden oluşan bir ikili çerçeve içinde kapsüllenir: Başlık (0x5A), PCW (Protokol Kontrol Sözcüğü), Kategori, MID (Mesaj Kimliği), Uzunluk, Veri yükü ve CRC16-CCITT sağlama toplamı.
| Alan | Boyut | Açıklama |
|---|---|---|
| Header | 1 byte | Her zaman 0x5A. çerçeve başlangıç işareti |
| PCW | 2 bytes | Protokol bayrakları (sürüm, adres) |
| Category | 1 byte | Komut kategorisi (0x00=Sistem, 0x01=Cihaz, 0x02=RFID) |
| MID | 1 byte | Kategori içindeki mesaj kimliği |
| Length | 2 bytes | Bayt cinsinden yük uzunluğu (big-endian) |
| Data | N bytes | Komuta özel yük |
| CRC16 | 2 bytes | Başlıktan sonraki baytların CRC16-CCITT sağlama toplamı |
Komut Örnekleri
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 CRC16Temel Komutlar Referansı
| Komut | Kod | Açıklama |
|---|---|---|
| QUERY_INFO | 0x0100 | Okuyucu seri numarasını ve ürün yazılımı sürümlerini sorgulama |
| QUERY_RFID_ABILITY | 0x1000 | RFID yeteneklerini sorgulama (güç aralığı, anten sayısı) |
| READ_EPC_TAG | 0x0210 | Sürekli EPC etiket envanteri başlatma |
| WRITE_EPC_TAG | 0x0211 | Verileri bir etiketin EPC bankasına yazın |
| STOP_INVENTORY | 0x02FF | Çalışan bir etiket envanterini durdurma |
| CONFIGURE_READER_POWER | 0x0201 | İletim gücünü ayarlama (anten başına 0-33 dBm) |
| CONFIGURE_ANTENNA_ENABLE | 0x0203 | Anten portlarını etkinleştirme/devre dışı bırakma (bitmaske) |
| SET_WORKING_FREQUENCY | 0x0205 | Belirli çalışma frekanslarını ayarlama |
| SET_FILTER_SETTINGS | 0x0209 | Etiket çoğaltma filtresini yapılandırma (zamana dayalı) |
| BUZZER_SWITCH | 0x011E | Zil modunu kontrol etme |
Anten Yapılandırması
RFID okuyucular 32 adede kadar anten portunu destekler. Her bir port, 4 baytlık bir bitmaske aracılığıyla etkinleştirilir veya devre dışı bırakılır. Antenler 1'den 32'ye kadar numaralandırılır ve her bir bit bir porta karşılık gelir.
Anten Bitmaskesi
1-4 Nolu Antenleri Etkinleştir
0x0F, 0x00, 0x00, 0x00
Binary: 00001111 → Ports 1,2,3,4 ON
Yalnızca 1 ve 3 Nolu Antenleri Etkinleştir
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 enabledÇoklu Anten Dağıtımı
Birden fazla anten konuşlandırırken, polarizasyonu (doğrusal ve dairesel), antenler arasındaki mesafeyi ve örtüşen kapsama alanlarını göz önünde bulundurun. Okuyucu, etkinleştirilmiş antenler arasında sıralı olarak tarama yapar ve her etiket raporu, konum belirleme için anten kimliğini içerir.
Rıhtım Kapısı
Portal başına 2-4 anten, dairesel polarizasyon, 30 dBm güç
Konveyör Bandı
İstasyon başına 1-2 anten, doğrusal polarizasyon, 20-25 dBm
Perakende Rafı
Yakın alan antenleri, düşük güç 15-20 dBm, yüksek yoğunluk
Etiket Kodlaması (EPC Gen2 / ISO 18000-6C)
UHF RFID, EPC Gen2 standardını (ISO 18000-6C) takip eder. Her etiket 4 bellek bankasına sahiptir: Ayrılmış (şifreler), EPC (96+ bit tanımlayıcı), TID (değiştirilemez çip kimliği) ve Kullanıcı (özel veriler).
Etiket Bellek Yapısı
| Banka | Kimlik | Tipik Boyut | Kullanım |
|---|---|---|---|
| Reserved | 00 | 64 bits | Öldürme şifresi (32b) + Erişim şifresi (32b) |
| EPC | 01 | 96-128 bits | SGTIN-96, SSCC-96 veya özel kodlama |
| TID | 10 | 96+ bits | Çip üreticisi kimliği (salt okunur, benzersiz) |
| User | 11 | 0-512 bits | Uygulamaya özel veriler (çipe bağlı) |
SGTIN-96 Kod Çözme Örneği
SGTIN-96, perakende ve tedarik zinciri ürünleri için en yaygın kodlamadır. 24 karakterli bir onaltılık EPC'yi GTIN-14, seri numarası ve GS1 Dijital Bağlantı'ya dönüştürün.
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]Online EPC Kodlayıcı aracını şurada kullanın: /tools/tds-rfid-converter SGTIN-96, SSCC-96, GRAI-96'yı doğrudan tarayıcınızda kodlamak ve kodunu çözmek için.
Güç Yönetimi
Okuyucu iletim gücü, anten portu başına 0 ila 33 dBm arasında ayarlanabilir. Daha yüksek güç, okuma aralığını artırır, ancak aynı zamanda paraziti ve güç tüketimini de artırır.
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 İzleme
Etiketlerden gelen RSSI (Alınan Sinyal Gücü Göstergesi) değerleri, ham ADC baytları (0-255) olarak rapor edilir. Doğru dBm değerlerini elde etmek için dönüşüm formülünü kullanın.
Dönüşüm Formülü
dBm = -100 + round((raw × 70) / 255)
Raw 128
-65 dBm
İyi
Raw 180
-51 dBm
Güçlü
Raw 220
-40 dBm
Mükemmel
Yüksek Hızlı Envanter Taraması
Yüksek hızlı envanter taraması için çalışma frekanslarını, yinelenen etiket filtresini ve sürekli tarama modunu yapılandırın. Okuyucular, optimum yapılandırmayla saniyede 700'e kadar etiketi destekler.
Frekans Yapılandırması
UHF RFID, 920-925 MHz bandında (Güneydoğu Asya) 0,5 MHz kanal aralığıyla çalışır. Kanallar 0 (920 MHz) ile 10 (925 MHz) arasında numaralandırılmıştır.
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 MHzOptimal Tarama İş Akışı
Anten portlarını ve güç seviyelerini yapılandırın
Çalışma frekanslarını ayarlayın (yoğun ortamlar için FHSS)
Yinelenen filtreyi yapılandırın (kullanım durumuna bağlı olarak 500ms-3000ms)
Sürekli envanteri başlatmak için READ_EPC_TAG gönderin
Etiket bildirimlerini (PID 0x1231) geldikçe işleyin
İşlem bittiğinde STOP_INVENTORY gönderin
// 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");