NYARAKA
Mwongozo wa Ujumuishaji wa Kisomaji cha RFID
Nyaraka za kina zinazohusu usanidi wa mawasiliano ya serial, usanidi wa antena, shughuli za usimbaji wa lebo (EPC Gen2 / ISO 18000-6C), na usimamizi wa nishati. Inajumuisha mifano ya matumizi ya antena nyingi na uchanganuzi wa hesabu ya kasi ya juu.
Usanidi wa Mawasiliano ya Serial
Visomaji vya RFID vya itifaki ya Nextwaves NRN huwasiliana kupitia mlango wa serial (RS-232 au USB-to-Serial). Vigezo vya muunganisho lazima visanidiwe kwa usahihi ili kuhakikisha upitishaji thabiti wa data.
Baud Rate
115200
Data Bits
8
Stop Bits
1
Parity
None
Kwa miunganisho ya API ya WebSerial inayotegemea kivinjari, tumia Nextwaves Reader Connect katika app.nextwaves.com/reader. Programu hugundua kiotomatiki milango ya COM na kusanidi vigezo vya muunganisho.
// 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()Muundo wa Fremu ya Itifaki ya Nextwaves NRN
Kila amri ya itifaki ya NRN imefungwa katika fremu ya binary inayojumuisha: Kichwa (0x5A), PCW (Neno la Udhibiti wa Itifaki), Kitengo, MID (Kitambulisho cha Ujumbe), Urefu, malipo ya Data, na checksum ya CRC16-CCITT.
| Sehemu | Ukubwa | Maelezo |
|---|---|---|
| Header | 1 byte | Daima 0x5A. alama ya mwanzo wa fremu |
| PCW | 2 bytes | Bendera za itifaki (toleo, anwani) |
| Category | 1 byte | Kategoria ya amri (0x00=Mfumo, 0x01=Kifaa, 0x02=RFID) |
| MID | 1 byte | Kitambulisho cha ujumbe ndani ya kategoria |
| Length | 2 bytes | Urefu wa mzigo katika baiti (big-endian) |
| Data | N bytes | Malipo maalum ya amri |
| CRC16 | 2 bytes | CRC16-CCITT checksum ya bytes baada ya kichwa |
Mifano ya Amri
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 CRC16Rejea ya Amri Muhimu
| Amri | Msimbo | Maelezo |
|---|---|---|
| QUERY_INFO | 0x0100 | Uliza nambari ya serial ya kisomaji na matoleo ya firmware |
| QUERY_RFID_ABILITY | 0x1000 | Uliza uwezo wa RFID (masafa ya nguvu, hesabu ya antena) |
| READ_EPC_TAG | 0x0210 | Anzisha hesabu ya lebo ya EPC inayoendelea |
| WRITE_EPC_TAG | 0x0211 | Andika data kwenye benki ya EPC ya lebo |
| STOP_INVENTORY | 0x02FF | Simamisha hesabu ya lebo inayoendeshwa |
| CONFIGURE_READER_POWER | 0x0201 | Weka nguvu ya upitishaji (0-33 dBm kwa kila antena) |
| CONFIGURE_ANTENNA_ENABLE | 0x0203 | Washa/zima bandari za antena (bitmask) |
| SET_WORKING_FREQUENCY | 0x0205 | Weka masafa maalum ya kufanya kazi |
| SET_FILTER_SETTINGS | 0x0209 | Sanidi kichujio cha nakala ya lebo (kulingana na wakati) |
| BUZZER_SWITCH | 0x011E | Dhibiti hali ya buzzer |
Usanidi wa Antena
Visomaji vya RFID vinaunga mkono hadi bandari 32 za antena. Kila bandari imewezeshwa au kulemazwa kupitia bitmask ya baiti 4. Antena zinahesabiwa 1 hadi 32, na kila kidogo ikilingana na bandari.
Antena Bitmask
Washa Antena 1-4
0x0F, 0x00, 0x00, 0x00
Binary: 00001111 → Ports 1,2,3,4 ON
Washa Antena 1 & 3 Pekee
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 enabledUtekelezaji wa Antena Nyingi
Unapotumia antena nyingi, fikiria uelekezaji (linear vs. circular), umbali kati ya antena, na maeneo ya ufunikaji yanayoingiliana. Kisomaji huchanganua mfululizo kupitia antena zilizowezeshwa, na kila ripoti ya lebo inajumuisha kitambulisho cha antena kwa uamuzi wa nafasi.
Mlango wa Dock
Antena 2-4 kwa kila portal, polarization ya mviringo, nguvu ya 30 dBm
Ukanda wa Kusafirisha
Antena 1-2 kwa kila kituo, polarization ya mstari, 20-25 dBm
Rafu ya Rejareja
Antena za karibu na uwanja, nguvu ya chini 15-20 dBm, msongamano wa juu
Usimbaji wa Lebo (EPC Gen2 / ISO 18000-6C)
UHF RFID hufuata kiwango cha EPC Gen2 (ISO 18000-6C). Kila lebo ina benki 4 za kumbukumbu: Zimehifadhiwa (nywila), EPC (kitambulishi cha biti 96+), TID (kitambulishi cha chip kisichobadilika), na Mtumiaji (data maalum).
Muundo wa Kumbukumbu ya Lebo
| Benki | Kitambulisho | Ukubwa wa Kawaida | Matumizi |
|---|---|---|---|
| Reserved | 00 | 64 bits | Nenosiri la kuua (32b) + Nenosiri la ufikiaji (32b) |
| EPC | 01 | 96-128 bits | SGTIN-96, SSCC-96, au usimbaji maalum |
| TID | 10 | 96+ bits | Kitambulisho cha mtengenezaji wa chip (cha kusoma tu, cha kipekee) |
| User | 11 | 0-512 bits | Data maalum ya programu (inategemea chip) |
Mfano wa Usimbaji wa SGTIN-96
SGTIN-96 ndiyo usimbaji wa kawaida zaidi kwa bidhaa za rejareja na ugavi. Badilisha EPC ya herufi 24 za hex kuwa GTIN-14, nambari ya serial, na Kiungo cha Dijitali cha GS1.
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]Tumia zana ya EPC Encoder mtandaoni kwa /tools/tds-rfid-converter ili kusimba na kufumbua SGTIN-96, SSCC-96, GRAI-96 moja kwa moja kwenye kivinjari chako.
Usimamizi wa Nishati
Nguvu ya upitishaji wa kisomaji inarekebishwa kutoka 0 hadi 33 dBm kwa kila bandari ya antena. Nguvu ya juu huongeza masafa ya kusoma lakini pia huongeza usumbufu na matumizi ya nishati.
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 readersUfuatiliaji wa RSSI
Thamani za RSSI (Kielekezi cha Nguvu ya Ishara Iliyopokelewa) kutoka kwa lebo zinaripotiwa kama baiti mbichi za ADC (0-255). Tumia fomula ya ubadilishaji ili kupata thamani sahihi za dBm.
Fomula ya Ubadilishaji
dBm = -100 + round((raw × 70) / 255)
Raw 128
-65 dBm
Nzuri
Raw 180
-51 dBm
Nguvu
Raw 220
-40 dBm
Bora
Uchanganuzi wa Hesabu wa Kasi ya Juu
Kwa uchanganuzi wa hesabu wa kasi ya juu, sanidi masafa ya kazi, kichujio cha lebo rudufu, na hali ya uchanganuzi endelevu. Visomaji vinaunga mkono hadi lebo 700/sekunde na usanidi bora.
Usanidi wa Marudio
UHF RFID hufanya kazi katika bendi ya 920-925 MHz (Asia ya Kusini-Mashariki), na nafasi ya chaneli ya 0.5 MHz. Vituo vinahesabiwa kutoka 0 (920 MHz) hadi 10 (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 MHzUtiririshaji Bora wa Uchanganuzi
Sanidi bandari za antena na viwango vya nguvu
Weka masafa ya kufanya kazi (FHSS kwa mazingira yenye msongamano)
Sanidi kichujio cha nakala (500ms-3000ms kulingana na matumizi)
Tuma READ_EPC_TAG ili kuanza hesabu endelevu
Chakata arifa za lebo (PID 0x1231) zinapofika
Tuma STOP_INVENTORY ukimaliza
// 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");