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.
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.
// 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()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.
Exemples de commandes
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 CRC16Référence des commandes principales
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
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 enabledDé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.
Porte de quai
2-4 antennes par portail, polarisation circulaire, puissance 30 dBm
Convoyeur
1-2 antennes par station, polarisation linéaire, 20-25 dBm
É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
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.
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]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.
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 readersSurveillance 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.
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).
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 MHzFlux de travail de scan optimal
Configurer les ports d'antenne et les niveaux de puissance
Définir les fréquences de travail (FHSS pour les environnements denses)
Configurer le filtre de doublons (500ms-3000ms selon le cas d'utilisation)
Envoyer READ_EPC_TAG pour démarrer l'inventaire continu
Traiter les notifications d'étiquettes (PID 0x1231) à leur arrivée
Envoyer STOP_INVENTORY une fois terminé
// 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");