DOCUMENTATION

Manuel d'intégration du lecteur RFID

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

Configuration de la communication série

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

Baud Rate

115200

Data Bits

8

Stop Bits

1

Parity

None

Pour les connexions via l'API WebSerial du 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.

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 Nextwaves NRN est encapsulée dans une trame binaire composée de : En-tête (0x5A), PCW (Protocol Control Word), Catégorie, MID (Message ID), Longueur, Charge utile (Data payload) et somme de contrôle CRC16-CCITT.

ChampTailleDescription
Header1 byteToujours 0x5A — marqueur de début de trame
PCW2 bytesDrapeaux de protocole (version, adresse)
Category1 byteCatégorie de commande (0x00=Système, 0x01=Appareil, 0x02=RFID)
MID1 byteID de message dans la catégorie
Length2 bytesLongueur de la charge utile en octets (big-endian)
DataN bytesCharge utile spécifique à la commande
CRC162 bytesSomme de contrôle CRC16-CCITT des octets après l'en-tête

Exemples de commandes

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

Référence des commandes clés

CommandeCodeDescription
QUERY_INFO0x0100Interroger le numéro de série du lecteur et les versions du firmware
QUERY_RFID_ABILITY0x1000Interroger les capacités RFID (plage de puissance, nombre d'antennes)
READ_EPC_TAG0x0210Démarrer l'inventaire continu des tags EPC
WRITE_EPC_TAG0x0211Écrire des données dans la banque EPC d'un tag
STOP_INVENTORY0x02FFArrêter un inventaire de tags en cours
CONFIGURE_READER_POWER0x0201Définir la puissance de transmission (0-33 dBm par antenne)
CONFIGURE_ANTENNA_ENABLE0x0203Activer/désactiver les ports d'antenne (masque de bits)
SET_WORKING_FREQUENCY0x0205Définir des fréquences de travail spécifiques
SET_FILTER_SETTINGS0x0209Configurer le filtre de doublons de tags (basé sur le temps)
BUZZER_SWITCH0x011EContrôler le mode du buzzer

Configuration de l'antenne

Les lecteurs RFID prennent en charge jusqu'à 32 ports d'antenne. Chaque port est activé ou désactivé via un masque de bits 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-4

0x0F, 0x00, 0x00, 0x00

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

Activer uniquement les antennes 1 et 3

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

Déploiement multi-antennes

Lors du déploiement de plusieurs antennes, tenez compte de la polarisation (linéaire ou circulaire), de l'espacement entre les antennes et des zones de couverture qui se chevauchent. Le lecteur scanne séquentiellement les antennes activées, et chaque rapport de tag inclut l'ID de l'antenne pour la détermination de la position.

Porte de quai

2 à 4 antennes par portail, polarisation circulaire, puissance de 30 dBm

Convoyeur

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

Rayonnage de vente au détail

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

Encodage des tags (EPC Gen2 / ISO 18000-6C)

La technologie RFID UHF suit la norme EPC Gen2 (ISO 18000-6C). Chaque tag possède 4 banques de mémoire : Réservée (mots de passe), EPC (identifiant de 96+ bits), TID (ID de puce immuable) et Utilisateur (données personnalisées).

Structure de la mémoire du tag

BanqueIDTaille typiqueUtilisation
Reserved0064 bitsMot de passe de destruction (32b) + Mot de passe d'accès (32b)
EPC0196-128 bitsSGTIN-96, SSCC-96 ou encodage personnalisé
TID1096+ bitsID du fabricant de la puce (lecture seule, unique)
User110-512 bitsDonnées spécifiques à l'application (dépend de la puce)

Exemple de décodage SGTIN-96

Le SGTIN-96 est l'encodage le plus courant pour les produits de la vente au détail et de la chaîne d'approvisionnement. Convertissez un EPC hexadécimal de 24 caractères en GTIN-14, numéro de série et 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]

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

Gestion de la puissance

La puissance de transmission du lecteur est réglable 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 du RSSI

Les valeurs RSSI (Received Signal Strength Indicator) des tags sont rapportées sous forme d'octets ADC bruts (0-255). Utilisez la formule de conversion pour obtenir des valeurs dBm précises.

Formule de conversion

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

Raw 128

-65 dBm

Bon

Raw 180

-51 dBm

Fort

Raw 220

-40 dBm

Excellent

Inventaire à haute vitesse

Pour un inventaire à haute vitesse, configurez les fréquences de travail, le filtre de tags en double et le mode de balayage continu. Les lecteurs supportent jusqu'à 700 tags/seconde avec une configuration optimale.

Configuration de la fréquence

Le RFID UHF fonctionne dans la bande 920-925 MHz (Asie du Sud-Est), avec un espacement des canaux 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 × 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 balayage optimal

1

Configurer les ports d'antenne et les niveaux de puissance

2

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

3

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

4

Envoyer READ_EPC_TAG pour démarrer l'inventaire continu

5

Traiter les notifications de tags (PID 0x1231) au fur et à mesure qu'elles arrivent

6

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