Mengontrol Lima Unit USB-2REL Pada Satu Komputer/Laptop Menggunakan Python dan PyUSB 1.0


5x_usb2rel

Jika satu unit USB-2REL yang memiliki dua buah relay masih kurang, jangan kuatir, Anda bisa menggunakan dua, tiga, empat, atau bahkan lima unit USB-2REL sekaligus pada satu komputer atau laptop.

Keuntungan menggunakan USB-2REL selain tidak membutuhkan catudaya eksternal adalah modul ini dapat kita pasang pada port USB komputer/laptop sebanyak yang kita butuhkan. Seberapa banyak? Tentunya ada batasannya dan saya tidak akan membahas permasalahan itu pada tulisan ini. Tulisan ini hanya berisi tentang hasil eksperimen saya mengontrol 5 unit USB-2REL pada komputer saya dengan 1 unit USB-2REL terhubung pada port USB CPU (front-side), dan 4 unit USB-2REL terhubung pada USB hub 4-port.

Sebelum dapat menggunakan kelima unit USB-2REL, maka masing-masing unit USB-2REL harus dikenali oleh Windows. Jika Windows tidak dapat mengenali USB-2REL pada port USB yang kita pakai, maka instalasi driver perlu dilakukan. Jadi meskipun driver USB-2REL telah terinstal pada sistem, namun secara spesifik, untuk setiap port USB yang dimiliki komputer harus kita instalasi satu-persatu. Hal itu tidaklah sulit karena Windows akan secara otomatis menampilkan driver USB-2REL yang sudah terinstal dan kita tinggal memilihnya dan menekan tombol Next.

image

Setelah semuanya dikenali oleh Windows, maka kita dapat melihat 5 buat libUSB-Win32 Devices seperti ditunjukkan pada screenshot window Device Manager berikut ini.

image

Setelah kelimanya terinstalasi dengan benar, maka kini saatnya bereksperimen. Eksperimen ini menggunakan program Python yang telah dilengkapi dengan library atau modul PyUSB 1.0. Anda dapat membaca eksperimen sebelumnya untuk mengetahui lebih lanjut tentang modul PyUSB 1.0.

IDE yang saya gunakan tetaplah PyScripter 2.4.2.0 buatan Kiriakos Vlahos yang sangat muantab.😀

Nah, berikut adalah baris-baris skrip yang saya gunakan pada Python Interpreter.

image

Baris pertama: USB2REL = usb.core.find(True, idVendor=5824, idProduct=1500) berfungsi untuk mendapatkan handle untuk SEMUA piranti USB dengan idVendor=5824 dan idProduct=1500 yang terpasang pada port USB pada komputer/laptop.

Jika fungsi menemukan lebih dari satu piranti USB dengan ID yang dimaksud, maka fungsi akan mengembalikan sebuah list. Dalam hal ini variabel USB2REL akan secara otomatis bertipekan list.

Bukti bahwa kelima unit USB-2REL ditemukan oleh fungsi usb.core.find() adalah variabel USB2REL berisi data handle dari modul USB-2REL ke-1 hingga ke-5. Masing-masing modul USB-2REL dapat diakses melalui:

  1. USB2REL[0]
  2. USB2REL[1]
  3. USB2REL[2]
  4. USB2REL[3]
  5. USB2REL[4]

Baris-baris perintah berikutnya adalah contoh perintah untuk mengaktifkan RELAY-1 dari masing-masing unit USB-2REL.

>>> USB2REL[0].ctrl_transfer(0x40, 1, 1, 1, None)  #USB-2REL1, RELAY-1 ON
0
>>> USB2REL[1].ctrl_transfer(0x40, 1, 1, 1, None)  #USB-2REL2, RELAY-1 ON
0
>>> USB2REL[2].ctrl_transfer(0x40, 1, 1, 1, None)  #USB-2REL3, RELAY-1 ON
0
>>> USB2REL[3].ctrl_transfer(0x40, 1, 1, 1, None)  #USB-2REL4, RELAY-1 ON
0
>>> USB2REL[4].ctrl_transfer(0x40, 1, 1, 1, None)  #USB-2REL5, RELAY-1 ON
0
>>>

Supaya lebih enak mengujinya, kita buatkan skrip singkat untuk menguji kelima unit USB-2REL dengan urutan kerja pada masing-masing unit USB-2REL sebagai berikut:

RELAY-1 ON –> RELAY-1 OFF –> RELAY-2 ON –> RELAY-2 OFF –>
SEMUA RELAY ON –> SEMUA RELAY OFF

Listing skrip pengujian selengkapnya dapat Anda lihat di bawah ini.

#——————————————————————————-
# Name:     5xUSB2REL.py
# Purpose:  TESTING 5 Unit USB-2REL pada satu komputer
# Author:   Chandra MDE
# Created:  15/04/2013 (c) Chandra MDE 2013
#——————————————————————————-

import usb.core
import time

def main():
    USB2REL = usb.core.find(True, idVendor=5824, idProduct=1500)
    if USB2REL == None:
        print "USB-2REL tidak ditemukan!"
        exit
    else:
        for i in range(5):
            print "USB-2REL Unit Ke-", i
            USB2REL[i].ctrl_transfer(0x40, 1, 1, 1, None) #RELAY-1 ON
            time.sleep(1) #tunda 1 detik
            USB2REL[i].ctrl_transfer(0x40, 1, 0, 1, None) #RELAY-1 OFF
            time.sleep(1) #tunda 1 detik
            USB2REL[i].ctrl_transfer(0x40, 1, 1, 2, None) #RELAY-2 ON
            time.sleep(1) #tunda 1 detik
            USB2REL[i].ctrl_transfer(0x40, 1, 0, 2, None) #RELAY-2 OFF
            time.sleep(1) #tunda 1 detik
            USB2REL[i].ctrl_transfer(0x40, 2, 0, 0, None) #ALL ON
            time.sleep(1) #tunda 1 detik
            USB2REL[i].ctrl_transfer(0x40, 3, 0, 0, None) #ALL OFF
            time.sleep(1) #tunda 1 detik

if __name__ == ‘__main__’:
    main()

Sangat mudah, bukan?😀

Semoga bermanfaat, selamat belajar dan selamat berkarya!

Jika Anda berminat dengan modul USB-2REL, silakan mengunjungi situsnya di:
http://teknikelektrolinks.com.

🙂

One comment

  1. agaust · Agustus 26, 2015

    ini saya lihat hampir sama seperti setting wvdial, yang check idVendor dan idProduct terlebih dahulu..
    nice posts mas..🙂

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s