Komunikasi antara komputer dengan EL-UHF-RMT01 dapat dilakukan dengan bantuan USB to TTL agar bisa mengirim ataupun menerima data melalui usb di komputer, data yang dikirim ataupun diterima dapat diakses secara program. Pada artikel ini modul RFID scanner akan diakses dengan bahasa python.

Persiapan

Sebelum masuk ke bagian code, siapkan dulu beberapa hal berikut :

  • Python versi 2.7, 3.4 atau lebih baru.
  • Library pySerial.
  • Driver PL2303hxa.
  • Pycharm IDE.
  • Python versi 3 dapat langsung didownload di https://www.python.org/downloads/

Untuk library pySerial bisa langsung dicari di python interpreter pada pycharm atau langsung di cmd dengan mengetikan,

pip install pyserial

Driver PL2303hxa dapat di install mengikuti pada link berikut: https://www.connectix.nl/pl2303hxa-phased-out-since-2012-please-contact-your-supplier-solved/

pycharm Ide dapat di instal di link berikut: https://www.jetbrains.com/pycharm/

1. Sambungan EL-UHF-RMT01 dengan USB to TTL

Untuk menghubungkan Arduino dengan komputer diperlukan seperti pada gambar berikut.

EL-UHF-RMT01 dengan USB to TTL

EL-UHF-RMT01 perlu dihubungkan ke USB to TTL sebelum melakukan komunikasi dengan komputer.

EL-UHF-RMT01USB to TTL
VCC5V
TXRX
RXTX
EN3.3V
GNDGND

2. Kode dan Penjelasan

Dalam kode ini dipersiapkan terdapat 2 bagian utama, yang pertama adalah bagian menyusun perintah setelah itu membuka komunikasi dengan serial port.

perintah-perintah yang akan digunakan pada tutorial ini adalah berfokus pada read / write memori didalam tag, dimana perintah tersbut disusun seperti di bawah ini.

#scan
INVENTORY = 'BB 00 22 00 00 22 7E'
#read
readUserMemory0 = 'BB 00 39 00 09 00 00 00 00 00 00 00 00 07 49 7E'
# 0 Reserved Memory
readUserMemory1 = 'BB 00 39 00 09 00 00 00 00 01 00 00 00 0A 4D 7E'
# 1 EPC 8 - 10 word
readUserMemory2 = 'BB 00 39 00 09 00 00 00 00 02 00 00 00 06 4A 7E'
# 2 TID 6 word
readUserMemory3 = 'BB 00 39 00 09 00 00 00 00 03 00 00 00 02 47 7E'
# 3 user memory 2 word
#Select
selectTag = 'BB 00 0C 00 13 01 00 00 00 20 60 00 00 09 B1 E8 80 00 00 00 4E 21 51 11 93 7E'
#Select tag
cancelSelect = 'BB 00 12 00 01 01 14 7E'
#Write
writeTag1 = 'BB 00 49 00 0D 00 00 00 00 01 00 00 00 02 12 34 56 78 9E 7E' # Write to EPC
WriteTag0 = 'BB 00 49 00 0D 00 00 00 00 00 00 00 00 02 12 34 56 78 6C 7E' # Write to Reserved Memory
writeTag3 = 'BB 00 49 00 0D 00 00 00 00 03 00 00 00 02 11 12 13 14 A5 7E' # Write to user memory

Code diatas merupakan perintah yang sudah disusun sehingga ketika perintah akan dikririm cukup masukan variabelnya saja.

Format perintah yang sudah diatur diatas akan dikirimkan dengan code seperti di bawah ini.

def send_cmd(cmd):
    data = bytes.fromhex(cmd)
    test_serial.write(data)
    response = test_serial.read(512)
    response_hex = response.hex().upper()
    hex_list = [response_hex[i:i+2] for i in range(0, len(response_hex), 2)]
    hex_space = ' '.join(hex_list)
    print(hex_space)
 
send_cmd(INVENTORY)

Code diatas berfungsi untuk meggirimkan perintah dan juga menerima perintah yang sudah dibentuk menjadi hexa, untuk keseluruha code dapat dilihat di bawah ini.

from serial import *
test_serial = Serial('COM6', 115200, timeout=0.1)
 
#scan
INVENTORY = 'BB 00 22 00 00 22 7E'
#read
readUserMemory0 = 'BB 00 39 00 09 00 00 00 00 00 00 00 00 07 49 7E'
# 0 Reserved Memory
readUserMemory1 = 'BB 00 39 00 09 00 00 00 00 01 00 00 00 0A 4D 7E'
# 1 EPC 8 - 10 word
readUserMemory2 = 'BB 00 39 00 09 00 00 00 00 02 00 00 00 06 4A 7E'
# 2 TID 6 word
readUserMemory3 = 'BB 00 39 00 09 00 00 00 00 03 00 00 00 02 47 7E'
# 3 user memory 2 word
#Select
selectTag = 'BB 00 0C 00 13 01 00 00 00 20 60 00 00 09 B1 E8 80 00 00 00 4E 21 51 11 93 7E'
#Select tag
cancelSelect = 'BB 00 12 00 01 01 14 7E'
#Write
writeTag1 = 'BB 00 49 00 0D 00 00 00 00 01 00 00 00 02 12 34 56 78 9E 7E' # Write to EPC
WriteTag0 = 'BB 00 49 00 0D 00 00 00 00 00 00 00 00 02 12 34 56 78 6C 7E' # Write to Reserved Memory
writeTag3 = 'BB 00 49 00 0D 00 00 00 00 03 00 00 00 02 11 12 13 14 A5 7E' # Write to user memory
 
def send_cmd(cmd):
    data = bytes.fromhex(cmd)
    test_serial.write(data)
    response = test_serial.read(512)
    response_hex = response.hex().upper()
    hex_list = [response_hex[i:i+2] for i in range(0, len(response_hex), 2)]
    hex_space = ' '.join(hex_list)
    print(hex_space)
 
send_cmd(INVENTORY)

Video

Nah dari keseluruhan code diatas jika ingin mengirimkan perintah yang lain cukup ganti data yang di passing ke prosedure send_cmd, untuk panduan dapat dilihat di youtube electron di bawah ini.