Teknik Elektro LinksThermostat, Panel Bel, Board Mikro, Driver Relay.

Instalasi pyUSB – Modul Python Untuk Mengakses Port USB Pada Debian 7 (Wheezy)

Instalasi pyParallel sudah. Instalasi pySerial juga sudah. Sekarang kita akan melakukan instalasi pyUSB – modul Python untuk mengakses port USB. Sebelum melakukan instalasi, saya akan sampaikan informasi sekilas tentang pyUSB, tepatnya pyUSB-1.0.

Modul Python pyUSB dibuat oleh Wander Lairson Costa (walac). Tujuannya adalah memudahkan pengaksesan piranti-piranti USB menggunakan Python. pyUSB menggunakan library bawaan sistem (native) untuk mengakses port USB. Modul ini lancar-jaya (baca: bekerja dengan baik) dengan libusb-0.1, libusb-1.0, libusbx, libusb-win32 dan OpenUSB.

Distro linux masa-kini telah memasukkan libusb pada paket instalasi standar, jadi tidak perlu lagi melakukan instalasi libusb secara terpisah.

pyUSB-1.0 murni dibuat dalam bahasa Python. Versi sebelumnya dibuat menggunakan bahasa C, jadi programmer Python tanpa kemampuan C bisa mengeksplorasi kode program pyUSB-1.0 dan memahami prinsip kerjanya.

pyUSB-1.0 bekerja pada platform apapun dengan Python versi 2.4 atau versi yang lebih baru. Saya telah mencoba pyUSB (dengan hasil yang baik) pada sistem operasi Windows 98, Windows 2000, Windows XP dan Windows 7. Untuk sistem operasi linux, saya telah mencoba pyUSB pada distro Damn Small Linux, Debian, DeLi Linux, Knoppix, Tiny Core dan tentu saja Ubuntu.

Langkah-langkah Instalasi

  1. Pastikan PC atau Laptop Anda terhubung ke internet.
  2. Buka terminal.
  3. Download paket pyusb-1.0.0b2.tar.gz (versi terakhir) dengan perintah:
    $wget http://downloads.sourceforge.net/project/pyusb/PyUSB%201.0/1.0.0-beta-2/pyusb-1.0.0b2.tar.gz
  4. Ekstraksi file paket dengan perintah:
    $tar xvzf pyusb-1.0.0b2.tar.gz
  5. Masuk ke direktori pyusb-1.0.0b2 dengan perintah:
    $cd pyusb-1.0.0b2
  6. Lakukan instalasi dengan perintah:
    $sudo ./setup.py install
  7. Tunggu 1-2 detik dan …

pyusb-1.0 setup

Alhamdulillaah, instalasi pyUSB-1.0 telah berhasil dilakukan.

Testing (ngetes itu penting)

Testing saya lakukan untuk mengakses modul USB-2R3IO. Modul ini memiliki 2 buah relay yang bisa dikontrol melalui USB dan 3 buah programmable digital I/O dengan level tegangan 3,3V. Dengan modul ini komputer bisa mengontrol 2 beban melalui relay dan membaca 3 buah input digital seperti switch, push-button dan proximity sensor. USB-2R3IO mengambil catudaya dari port USB, oleh karenanya tidak membutuhkan catudaya/adaptor eksternal. Berikut adalah penampakan modul USB-2R3IO.

neo usb2r3io

Setelah modul USB-2R3IO menancap di salah satu port USB komputer, periksa apakah proses enumerasi berhasil dan modul terhubung ke port USB sistem. Caranya adalah sebagai berikut:

lsusb dmesg grep TELINKS

Perintah $lsusb digunakan untuk menampilkan daftar piranti USB yang tersedia pada komputer. Modul USB-2R3IO menggunakan VOTI shared ID for use with libusb. ID USB ini disediakan gratis oleh Objective Development, perusahaan pembuat program Virtual-USB untuk mikrokontroler AVR.

Tercatat ada 4 piranti USB dengan ID = 16c0:05dc VOTI shared ID. Ini menunjukkan ada 4 piranti dengan ID yang sama. ID memang boleh sama, akan tetapi handle pasti berbeda. Oleh karenanya masing-masing piranti USB dapat diakses menggunakan handle masing-masing.

Perintah $dmesg | TELINKS menampilkan pesan kernel yang mengandung string “TELINKS”. Hasilnya adalah daftar piranti USB yang memiliki nama “TELINKS”. Pada screenshot nampak ada 4 piranti yakni USB-2R3IO, USB-TC101, USB-2REL dan USB-1REL. Dan memanglah keempat piranti itu menancap pada port USB komputer saya.

Testing Interaktif

Sebelum menguji dengan skrip, kita coba dulu instalasi pyUSB-1.0 melalui layar interaktif Python seperti ditampilkan oleh gambar berikut ini. Penjelasan singkat saya tulis setelah gambar.

Testing Interaktif pyUSB

Karena pyUSB memerlukan akses root, maka jangan lupa memanggil interpreter Python dengan sudo. Dan agar dapat menggunakan fungsi-fungsi utama pyUSB dalam program, tentunya kita harus mengimpor terlebih dahulu modul usb dengan perintah:

>>>import usb.core.

Setelah itu kita bisa uji dengan menampilkan daftar piranti USB yang ada di komputer kita dengan digunakan perintah:

>>>usb.core.show_devices()

Untuk menampilkan semua piranti USB buatan Teknik Elektro Links (TELINKS), pertama kita ambil handle semua piranti USB dengan ID 16c0:05dc dan menampilkannya dengan menggunakan perulangan sebagai berikut:

>>> devs = usb.core.find(True, idVendor=0x16c0, idProduct=0x05dc)
>>> for dev in devs:
...     print dev.manufacturer, dev.product
... <enter>

Dengan berhasilnya mengimpor modul pyUSB, menampilkan daftar piranti USB dan mengambil handle piranti USB, maka dapat dipastikan bahwa instalasi pyUSB telah sukses. Dan sekarang kita akan melanjutkan pengujian dengan membuat skrip Python untuk modul USB-2R3IO.

Skrip Testing usb2r3io .py

#---------------------------------------------------
# Name:     usb2r3io.py
# Purpose:  TESTING PyUSB - USB2R3IO
# Author:   Chandra MDE
# Created:  17/01/2015 (c) Chandra MDE
#
# Linux Forte - linux4teknikelektro
# http://linux.teknikelektrolinks.com
#---------------------------------------------------

import usb.core
import time, sys

def main():
    devs = usb.core.find(True, idVendor=0x16c0, idProduct=0x05dc)
    if devs == None:
        print "Tidak ditemukan modul USB TELINKS!"
        sys.exit(1)
    else:
	for dev in devs:
		if (dev.product=="TELINKS-USB2R3IO"):
			usb2r3io = dev
			break
		else:
			usb2r3io = None

	if (usb2r3io==None):
		print "Modul TELINKS-USB2R3IO tidak ditemukan!"
		sys.exit(1)

	#aktifkan relay-1 selama 1 detik
	print "Aktifkan Relay-1"
        usb2r3io.ctrl_transfer(0xc0, 1, 1, 1, None)	#on
	time.sleep(1)					#delay
	print "Matikan Relay-1"			
	usb2r3io.ctrl_transfer(0xc0, 1, 0, 1, None)	#off
	time.sleep(1)					#delay

	
	#aktifkan relay-2 selama 1 detik
	print "Aktifkan Relay-2"
        usb2r3io.ctrl_transfer(0xc0, 1, 1, 2, None)	#on
	time.sleep(1)					#delay
	print "Matikan Relay-2"
	usb2r3io.ctrl_transfer(0xc0, 1, 0, 2, None)	#off
	time.sleep(1)					#delay

	#baca input
	print "Baca input..."
        inputs = usb2r3io.ctrl_transfer(0xc0, 2, 0, 0, 100, 1000)
	string_inputs = inputs.tostring()
	print "Input   = ", string_inputs
	print "Input-1 = ", string_inputs[0]
	print "Input-2 = ", string_inputs[1]
	print "Input-3 = ", string_inputs[2]

	#baca ID modul
	print "Baca ID..."
	ID = usb2r3io.ctrl_transfer(0xc0, 0, 0, 0, 100, 1000)
	print ID.tostring()


if __name__ == '__main__':
    main()

 

Hasil eksekusi skrip usb2r3io.py adalah sebagai berikut:

usb2r3io.py

Nah, dengan suksesnya eksekusi skrip usb2r3io.py, maka saya cukupkan catatan instalasi pyUSB sampai di sini.

Semoga bermanfaat dan sampai berjumpa lagi pada catatan-catatan eksperimen Linux Forte yang lain.

Selamat berkarya!

 

Add a Comment

Your email address will not be published. Required fields are marked *