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.
// 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 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.
| Champ | Taille | Description |
|---|---|---|
| Header | 1 byte | Toujours 0x5A — marqueur de début de trame |
| PCW | 2 bytes | Drapeaux de protocole (version, adresse) |
| Category | 1 byte | Catégorie de commande (0x00=Système, 0x01=Appareil, 0x02=RFID) |
| MID | 1 byte | ID de message dans la catégorie |
| Length | 2 bytes | Longueur de la charge utile en octets (big-endian) |
| Data | N bytes | Charge utile spécifique à la commande |
| CRC16 | 2 bytes | Somme de contrôle CRC16-CCITT des octets après l'en-tête |
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 clés
| Commande | Code | Description |
|---|---|---|
| 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 tags EPC |
| WRITE_EPC_TAG | 0x0211 | Écrire des données dans la banque EPC d'un tag |
| STOP_INVENTORY | 0x02FF | Arrêter un inventaire de tags en cours |
| CONFIGURE_READER_POWER | 0x0201 | Définir la puissance de transmission (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 des fréquences de travail spécifiques |
| SET_FILTER_SETTINGS | 0x0209 | Configurer le filtre de doublons de tags (basé sur le temps) |
| BUZZER_SWITCH | 0x011E | Contrô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
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, 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
| Banque | ID | Taille typique | Utilisation |
|---|---|---|---|
| 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 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.
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 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.
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 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).
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 MHzFlux de travail de balayage 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 de tags (PID 0x1231) au fur et à mesure qu'elles arrivent
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");