DOCUMENTATION

Manuel d'intégration lecteur RFID

Documentation complète couvrant la configuration de la communication série, la configuration des antennes, les opérations d'encodage d'étiquettes (EPC Gen2 / ISO 18000-6C) et la gestion de l'alimentation. Inclut des exemples pour les déploiements multi-antennes et l'inventaire haute vitesse.

Reader bring-up
NRN
Serial115200 8N1
ProtocolCRC16-CCITT
RF power0-33 dBm
Inventory700 tags/s
5APCWCATMIDLENDATACRC16

Configuration de communication série

Les lecteurs RFID à protocole NRN de Nextwaves communiquent via un port série (RS-232 ou USB vers série). Les paramètres de connexion doivent être configurés correctement pour garantir une transmission de données stable.

Pour les connexions via l'API WebSerial dans le navigateur, utilisez Nextwaves Reader Connect sur app.nextwaves.com/reader. L'application détecte automatiquement les ports COM et configure les paramètres de connexion.

Baud rate115200
Data bits8
Stop bits1
ParityNone
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()

Structure de trame du protocole Nextwaves NRN

Chaque commande du protocole NRN est encapsulée dans une trame binaire composée de : Header (0x5A), PCW (Protocol Control Word), Category, MID (Message ID), Length, Data payload et somme de contrôle CRC16-CCITT.

ChampTailleDescription
Header
1 byte
Toujours 0x5A. Marqueurs de début de trame
PCW
2 bytes
Drapeaux de protocole (version, adresse)
Category
1 byte
Catégorie de commande (0x00=Système, 0x01=Périphérique, 0x02=RFID)
MID
1 byte
ID de message dans la catégorie
Length
2 bytes
Longueur du payload en octets (gros-boutiste)
Data
N bytes
Payload spécifique à la commande
CRC16
2 bytes
Somme de contrôle CRC16-CCITT des octets après l'en-tête

Exemples de commandes

QUERY_INFO - Query reader serial number and 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

Référence des commandes principales

CommandeCodeDescription
QUERY_INFO
0x0100
Interroger le numéro de série du lecteur et les versions du firmware
QUERY_RFID_ABILITY
0x1000
Interroger les capacités RFID (plage de puissance, nombre d'antennes)
READ_EPC_TAG
0x0210
Démarrer l'inventaire continu des étiquettes EPC
WRITE_EPC_TAG
0x0211
Écrire des données dans la banque EPC d'une étiquette
STOP_INVENTORY
0x02FF
Arrêter un inventaire d'étiquettes en cours
CONFIGURE_READER_POWER
0x0201
Définir la puissance d'émission (0-33 dBm par antenne)
CONFIGURE_ANTENNA_ENABLE
0x0203
Activer/désactiver les ports d'antenne (masque de bits)
SET_WORKING_FREQUENCY
0x0205
Définir les fréquences de travail spécifiques
SET_FILTER_SETTINGS
0x0209
Configurer le filtre d'étiquettes en double (basé sur le temps)
BUZZER_SWITCH
0x011E
Contrôler le mode du buzzer

Configuration des antennes

Les lecteurs RFID prennent en charge jusqu'à 32 ports d'antenne. Chaque port est activé ou désactivé via un masque de 4 octets. Les antennes sont numérotées de 1 à 32, chaque bit correspondant à un port.

Masque de bits d'antenne

Activer les antennes 1-40F 00 00 00Binary 00001111 - ports 1, 2, 3, 4 on
Activer uniquement les antennes 1 et 305 00 00 00Binary 00000101 - ports 1 and 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

Déploiement multi-antennes

Lors du déploiement de plusieurs antennes,要考虑 la polarisation (linéaire vs circulaire), l'espacement entre les antennes et les zones de couverture chevauchantes. Le lecteur scanne séquentiellement les antennes activées, et chaque rapport d'étiquette inclut l'ID de l'antenne pour la détermination de la position.

Portal

Porte de quai

2-4 antennes par portail, polarisation circulaire, puissance 30 dBm

Station

Convoyeur

1-2 antennes par station, polarisation linéaire, 20-25 dBm

Shelf

Étagère de vente

Antennes en champ proche, basse puissance 15-20 dBm, haute densité

Encodage d'étiquettes (EPC Gen2 / ISO 18000-6C)

La RFID UHF suit la norme EPC Gen2 (ISO 18000-6C). Chaque étiquette a 4 banques de mémoire : Reserved (mots de passe), EPC (identifiant 96+ bits), TID (ID de puce immuable) et User (données personnalisées).

Structure de mémoire d'étiquette

BanqueIDTaille typiqueUtilisation
Reserved
00
64 bits
Mot de passe de destruction (32b) + Mot de passe d'accès (32b)
EPC
01
96-128 bits
SGTIN-96, SSCC-96 ou encodage personnalisé
TID
10
96+ bits
ID du fabricant de la puce (lecture seule, unique)
User
11
0-512 bits
Données spécifiques à l'application (dépend du puce)

Exemple de décodage SGTIN-96

Le SGTIN-96 est l'encodage le plus courant pour les produits de vente au détail et de chaîne d'approvisionnement. Convertissez un EPC hexadécimal de 24 caractères en GTIN-14, numéro de série et lien numérique GS1.

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]

Utilisez l'outil EPC Encoder en ligne à /tools/tds-rfid-converter pour encoder et décoder SGTIN-96, SSCC-96, GRAI-96 directement dans votre navigateur.

Gestion de l'alimentation

La puissance d'émission du lecteur est ajustable de 0 à 33 dBm par port d'antenne. Une puissance plus élevée augmente la portée de lecture mais augmente également les interférences et la consommation d'énergie.

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

Surveillance RSSI

Les valeurs RSSI (indicateur de force du signal reçu) des étiquettes sont rapportées en octets ADC bruts (0-255). Utilisez la formule de conversion pour obtenir des valeurs dBm précises.

Formule de conversiondBm = -100 + round((raw x 70) / 255)
Raw 128 - Bon-65 dBm
Raw 180 - Fort-51 dBm
Raw 220 - Excellent-40 dBm

Inventaire haute vitesse

Pour l'inventaire haute vitesse, configurez les fréquences de travail, le filtre d'étiquettes en double et le mode de scan continu. Les lecteurs prennent en charge jusqu'à 700 étiquettes/seconde avec une configuration optimale.

Configuration de fréquence

La RFID UHF fonctionne dans la bande 920-925 MHz (Asie du Sud-Est), avec un espacement de canal de 0,5 MHz. Les canaux sont numérotés de 0 (920 MHz) à 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 x 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 travail de scan optimal

01

Configurer les ports d'antenne et les niveaux de puissance

02

Définir les fréquences de travail (FHSS pour les environnements denses)

03

Configurer le filtre de doublons (500ms-3000ms selon le cas d'utilisation)

04

Envoyer READ_EPC_TAG pour démarrer l'inventaire continu

05

Traiter les notifications d'étiquettes (PID 0x1231) à leur arrivée

06

Envoyer STOP_INVENTORY une fois terminé

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