Mengapa
UHF Reader memungkinkan Anda untuk memberikan kontrol atas tag pada jarak 10 meter, yang memberikan prospek menarik untuk berbagai penggunaan. Yang paling jelas adalah kontrol terhadap lintasan kendaraan. Tetapi Anda dapat menemukan opsi yang lebih eksotis: kontrol peralatan di garasi / gudang. Sangat tidak mungkin bagi pencuri untuk berpikir bahwa tag RFID terpaku pada sepeda (case tool) dan dia dapat melaporkan kepergiannya di luar batas yang diamati.
NodeJS + RaspberryPI adalah server yang fleksibel dan murah untuk pemrosesan data dan manajemen periferal.
Peralatan
Saya mengambil CF-RU5109 (CHAFON) untuk pengujian, yang mendukung RS232, RS485, Wiegand, koneksi TCP.
(Saya hanya membutuhkan TCP untuk kenyamanan peralatan pengujian)
Halaman Model -
CF-RU5109Tag - tag uhf kertas gen2 rfid dengan chip Alien H3
Rentang membaca. Eksperimen menunjukkan bahwa pembacaan tergantung pada aktivitas label (pergerakannya dalam ruang). Tanda berbaring pasif dibaca dengan percaya diri pada jarak 3 meter, bergerak lemah - 5-5,5 meter, pada jarak 8 meter saya harus secara aktif melambaikan tangan saya. Pembaca saya memiliki antena 9dbi bawaan.


Perangkat lunak
Pembaca dilengkapi dengan SDK, deskripsi terperinci dari perintah, beberapa program pengujian untuk Windows. Saya menggunakan perangkat lunak ini hanya untuk mencoba bekerja dengan Pembaca - kami tidak memerlukan apa pun dari bekerja dengan NodeJS.
Hubungkan ke Node
tcpclient.prototype.Start = function () { client = new net.Socket(); client.setEncoding('ascii'); client.connect(6000, '192.168.0.190', function() { }); client.on('connect', function(data) { console.log('UHF reader connected'); var bytes = Buffer.from([0x04, 0xff, 0x21, 0x19, 0x95], "ascii"); client.write(bytes); client.on('data', function(data) { console.log('UHF reader respond:'); var buffer = Buffer.from(data, "ascii"); console.log(buffer); }); }); client.on('close', function() { console.log('UHF reader - connection closed'); }); client.on('error', function(err) { console.log(err) }); }; tcpclient.prototype.Write = function (req) { var bytes = new Buffer(req, "ascii"); console.log(bytes); client.write(bytes); };
Dari manual. Blok perintah disusun seperti ini:
Len, Adr, Cmd, Data [], LSB-CRC16, MSB-CRC16
Dua byte terakhir adalah checksum CRC16, dengan 0x8408 polinomial, angka awal 0xFFFF. Bytes ditampilkan dalam urutan terbalik. Pabrikan dengan baik hati memberikan kode C untuk perhitungan, dan saya menulis ulang di JS (lihat di bawah).
Dengan demikian, [0x04, 0xff, 0x21, 0x19, 0x95] adalah perintah yang meminta status pembaca di alamat default FF. Checksum 04 panjang, 21 perintah, 19 dan 95 - CRC16.
var PRESET_VALUE = 0xFFFF; var POLYNOMIAL = 0x8408; var CRC16 = function (pucY) { var uiCrcValue = PRESET_VALUE; for(var i = 0; i < pucY.length; i++){ uiCrcValue = uiCrcValue ^ (pucY[i]); for(var j = 0; j < 8; j++){ if(uiCrcValue & 0x0001){ uiCrcValue = (uiCrcValue >> 1) ^ POLYNOMIAL; } else { uiCrcValue = (uiCrcValue >> 1); } } } var buf = Buffer.from(uiCrcValue.toString(16), 'hex'); buf = Buffer.from([buf[1], buf[0]], 'hex'); return buf; };
Contoh Perintah
Inventaris - permintaan membaca kartu tunggal. Bertindak dalam mode Jawab
req =[0x04, 0x00, 0x01, 0xdb, 0x4b]; tcpClient.Write(req);
Jika tanda sudah terlihat, maka kita mendapatkan jawabannya
Pembaca UHF merespons:
<Buffer 13 00 01 01 01 0c 62 00 51 79 17 19 00 04 05 60 5b 28 2f 24>
62 00 51 79 17 19 00 04 05 60 5b 28 adalah tag tag.
Mengganti mode operasi pembaca
Mode jawab: [0x0a, 0x00, 0x35, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x2a, 0x9f]
Mode Pindai / Aktif : [0x0a, 0x00, 0x35, 0x01, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01, 0x9b]. Dalam mode ini, pembaca secara konstan melakukan polling tag dan memberi mereka tag.
Apa selanjutnya
Dan kemudian, jika solusi sederhana diperlukan, maka kami juga menulis kode yang mengirimkan perintah 0x01 (Persediaan) secara berkala. Label di zona visibilitas memberi tag mereka, kami memeriksanya dengan database dan memulai tindakan yang sesuai. Atau kami menulis kode yang, dalam mode pemindaian konstan, menunggu tag masuk ke rentang visibilitas dan merespons dengan suatu peristiwa.