Manual de Integração do Leitor RFID
Documentação abrangente que cobre a configuração da comunicação serial, configuração da antena, operações de codificação de tags (EPC Gen2 / ISO 18000-6C) e gerenciamento de energia. Inclui exemplos para implantações de múltiplas antenas e varredura de inventário de alta velocidade.
Configuração da Comunicação Serial
Os leitores RFID do protocolo NRN da Nextwaves se comunicam via porta serial (RS-232 ou USB-to-Serial). Os parâmetros de conexão devem ser configurados corretamente para garantir uma transmissão de dados estável.
Para conexões de API WebSerial baseadas em navegador, use Nextwaves Reader Connect em app.nextwaves.com/reader. O aplicativo detecta automaticamente as portas COM e configura os parâmetros de conexão.
// 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()Estrutura do Quadro do Protocolo NRN da Nextwaves
Cada comando do protocolo NRN é encapsulado em um quadro binário consistindo em: Header (0x5A), PCW (Protocol Control Word), Category, MID (Message ID), Length, Data payload e checksum CRC16-CCITT.
Exemplos de Comandos
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 CRC16Referência de Comandos Chave
Configuração da Antena
Os leitores RFID suportam até 32 portas de antena. Cada porta é habilitada ou desabilitada por meio de uma bitmask de 4 bytes. As antenas são numeradas de 1 a 32, com cada bit correspondendo a uma porta.
Máscara de Bit da Antena
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 enabledImplantação Multi-Antena
Ao implantar várias antenas, considere a polarização (linear vs. circular), o espaçamento entre as antenas e as zonas de cobertura sobrepostas. O leitor faz a varredura sequencialmente pelas antenas habilitadas, e cada relatório de tag inclui o ID da antena para determinação da posição.
Porta de Docagem
2-4 antenas por portal, polarização circular, potência de 30 dBm
Esteira Transportadora
1-2 antenas por estação, polarização linear, 20-25 dBm
Prateleira de Varejo
Antenas de campo próximo, baixa potência 15-20 dBm, alta densidade
Codificação de Tag (EPC Gen2 / ISO 18000-6C)
RFID UHF segue o padrão EPC Gen2 (ISO 18000-6C). Cada tag possui 4 bancos de memória: Reservado (senhas), EPC (identificador de 96+ bits), TID (ID de chip imutável) e Usuário (dados personalizados).
Estrutura de Memória da Tag
Exemplo de Decodificação SGTIN-96
SGTIN-96 é a codificação mais comum para produtos de varejo e cadeia de suprimentos. Converta um EPC hexadecimal de 24 caracteres em GTIN-14, número de série e 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]Use a ferramenta online EPC Encoder em /tools/tds-rfid-converter para codificar e decodificar SGTIN-96, SSCC-96, GRAI-96 diretamente em seu navegador.
Gerenciamento de Energia
A potência de transmissão do leitor é ajustável de 0 a 33 dBm por porta de antena. Uma potência mais alta aumenta o alcance de leitura, mas também aumenta a interferência e o consumo de energia.
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 readersMonitoramento RSSI
Os valores de RSSI (Received Signal Strength Indicator) das tags são relatados como bytes ADC brutos (0-255). Use a fórmula de conversão para obter valores precisos em dBm.
Leitura de Inventário em Alta Velocidade
Para leitura de inventário em alta velocidade, configure as frequências de trabalho, filtro de tags duplicadas e modo de leitura contínua. Os leitores suportam até 700 tags/segundo com configuração ideal.
Configuração de Frequência
O RFID UHF opera na banda de 920-925 MHz (Sudeste Asiático), com espaçamento de canal de 0,5 MHz. Os canais são numerados de 0 (920 MHz) a 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 MHzFluxo de Trabalho de Varredura Ideal
Configure as portas da antena e os níveis de potência
Defina as frequências de trabalho (FHSS para ambientes densos)
Configure o filtro de duplicatas (500ms-3000ms, dependendo do caso de uso)
Envie READ_EPC_TAG para iniciar o inventário contínuo
Processe as notificações de tags (PID 0x1231) à medida que chegam
Envie STOP_INVENTORY quando terminar
// 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");