usb2rel_python

PyUSB 1.0 adalah library Python yang dibuat untuk memudahkan kita dalam mengakses port USB. Jika versi sebelum-sebelumnya library ini ditulis menggunakan bahasa C, maka tidak demikian halnya dengan PyUSB versi 1.0. PyUSB ditulis 100% menggunakan bahasa Python!

USB adalah protokol yang sangat rumit, akan tetapi dengan PyUSB, maka pemrograman USB terasa sangat sederhana. ๐Ÿ˜€

Untuk membuktikan betapa mudahnya menggunakan library PyUSB 1.0, berikut adalah skrip ringan yang hanya terdiri dari beberapa baris saja yang bertujuan untuk mengontrol relay-relay yang ada pada modul USB-2REL.

Program pengontrolan modul USB-2REL menggunakan Python ini sangat berbeda dengan program kontrol USB-2REL versi Delphi, Lazarus, dan VB.NET. Ketiga versi program tersebut HANYA memanggil program USB2R.EXE untuk mengontrol USB-2REL. Adapun versi Python ini langsung berkomunikasi dengan USB-2REL seperti halnya pada program kontrol versi C.

Semakin menarik, bukan? Namun sebelum dapat menggunakan PyUSB, kita harus melakukan instalasi terlebih dahulu. Pertama-tama, download PyUSB dari situsnya. Pada eksperimen ini saya menggunakan PyUSB-1.0.0a3.

Setelah download, ekstraksi file pyusb-1.0.0a3.zip dan eksekusi file setup.py menggunakan console dengan perintah:

python setup.py install

Berikut adalah screenshot instalasi PyUSB 1.0 pada komputer saya.

image

Pada komputer saya, Python 2.5 terinstalasi pada direktori C:\Python25, oleh karenanya digunakan perintah:

c:\python25\python setup.py install

Selanjutnya, kita dapat menguji PyUSB dengan modul driver relay USB-2REL. Berikut adalah screenshot eksperimen yang saya lakukan dalam Python Shell.

image

Perintah import usb.core berfungsi meng-import fungsi-fungsi yang terdapat pada modul usb.core agar selanjutnya dapat kita gunakan dalam program.

Perintah usb2rel = usb.core.find(idVendor=5824, idProduct=1500) berfungsi untuk mendapatkan handle untuk modul USB-2REL. Melalui handle inilah nantinya program akan berkomunikasi dengan modul USB-2REL. Perintah ini secara spesifik mencari piranti USB dengan idVendor=5824 dan idProduct=1500. Jika terdapat lebih dari satu piranti USB dengan ID yang sama, maka piranti yang pertamalah yang digunakan.

Catatan: idVendor dan idProduct yang digunakan adalah ID gratisan yang diberikan oleh OBDEV.COM pada program freeware V-USB. Oleh karenanya ID USB-2REL akan sama dengan piranti USB lain yang dibuat dengan V-USB. Contoh yang populer adalah USBASP.

Fungsi usb.core.find() akan mengembalikan nilai None jika tidak menemukan piranti USB yang dimaksud, dan akan mengembalikan sebuah alamat handle/object jika berhasil menemukan piranti USB dengan ID yang cocok. Pada eksperimen ini USB-2REL ditemukan dengan alamat 0x00BD2070.

Perintah selanjutnya adalah usb2rel.ctrl_transfer(0x40, 1, 1, 1, None) yang berfungsi untuk mengaktifkan RELAY-1.

Dan perintah usb2rel.ctrl_transfer(0x40, 1, 0, 1, None) berfungsi untuk mematikan RELAY-1.

Perintah yang sama berlaku juga untuk RELAY-2 namun dengan parameter yang berbeda. Berikut adalah perintah untuk mengaktifkan RELAY-2 dan mematikan RELAY-2.

usb2rel.ctrl_transfer(0x40, 1, 1, 2, None)  # RELAY-2 ON

usb2rel.ctrl_transfer(0x40, 1, 0, 2, None)  # RELAY-2 OFF

usb2rel.ctrl_transfer(0x40, 2, 0, 0, None)  # ALL RELAYS ON

usb2rel.ctrl_transfer(0x40, 3, 0, 0, None)  # ALL RELAYS OFF

Untuk melengkapi eksperimen ini, berikut adalah skrip Python yang akan mengaktifkan dan mematikan kedua relay USB-2REL secara bersamaan dengan interval 1 detikan sebanyak 10 kali.

#——————————————————————————-
# Name:     USB-2REL.py
# Purpose:  TESTING PyUSB – USB2REL
# Author:   Chandra MDE
# Created:  13/04/2013 (c) Chandra MDE 2013
#——————————————————————————-

import usb.core
import time

def main():
    usb2rel = usb.core.find(idVendor=5824, idProduct=1500)
    if usb2rel == None:
        print "USB-2REL tidak ditemukan!"
        exit
    else:
        for i in range(1, 11):
            print โ€œPerulangan ke-โ€œ, i
            usb2rel.ctrl_transfer(0x40, 2, 0, 0, None) #ALL ON
            time.sleep(1) #tunda 1 detik
            usb2rel.ctrl_transfer(0x40, 3, 0, 0, None) #ALL OFF
            time.sleep(1) #tunda 1 detik

if __name__ == ‘__main__’:
    main()

Untuk IDE Python, saya menggunakan PyScripter 2.4.3.0 yang muantab! ๐Ÿ˜€

usb2rel_pyscripter

Demikian sedikit informasi yang dapat saya berikan, semoga bermanfaat.

Jika Anda berminat dengan modul driver relay USB-2REL, silakan mengunjungi situs kami di: http://teknikelektrolinks.com untuk mengetahui informasi harga dan pemesanan.

Selamat belajar dan selamat berkarya!

๐Ÿ™‚