Archive for April 2015
Kontrol lampu LED On-Off melalui port USB dengan Visual C
Nama: M Robby Fajri Maulana
Kelas: 2Cb
NIM: 061430700535
Mata Kuliah: Praktek Peripheral Interface
Dosen Pembimbing: Ali Firdaus S.Kom., M.Kom.
Kelas: 2Cb
NIM: 061430700535
Mata Kuliah: Praktek Peripheral Interface
Dosen Pembimbing: Ali Firdaus S.Kom., M.Kom.
Kontrol lampu LED On-Off
melalui port USB dengan Visual C
Sebagai
mana komputer/laptop sekarang banyak yang sudah menghilangkan port paralel dan
port
serialnya, sebagai
gantinya terpasang beberapa port USB. Lupakan dahulu tentang specifikasi,
protokol dan driver USB, kita langsung saja semudah mungkin bisa on-off-kan
(menghidupkan dan mematikan) lampu LED melalui port USB. Biasanya setelah
praktek bisa menghidupkan LED akan lebih mudah untuk mempelajari lebih lanjut.
Ini merupakan contoh yang sangat sederhana sehingga mudah untuk diterapkan bagi
pemula sekalipun. Untuk mengontrol LED melalui port USB kita membutuhkan
konverter yang bisa menerjemahkan protokol serial USB menjadi logika high low
seperti yang kita inginkan. Kita tidak bisa menggunakan port USB ini langsung
berlogika high atau low seperti port paralel, kita membutuhkan konverter yang
menerjemahkan protokol USB ke logika high-low. Di internet di jual
bermacam-macam
konverter ini, misal
konverter USB ke serial yang cukup terkenal dari FTDI. Untuk pemograman LED ini
kita akan mengunakan USB I/O Converter dari www.satu-microelectronics.com
yaitu USB HID IO Converter yang berupakan USB HID yang tidak
memerlukan driver tersendiri, ini seperti Mouse dan Keyboard USB yang tinggal
colok dan langsung bisa digunakan.
USB HID IO Converter merupakan konverter USB ke 8
bit IO, I2C, SPI dan ADC. USB
konverter ini adalah
USB kelas HID (Human Interface Device) sehingga tidak memerlukan instalasi
driver USB baik di sistem operasi Windows (XP, WIN7 maupun Windows 8). Sistem
operasi tersebut sudah menyediakan drivernya yang tentunya memudahkan kita
dalam menggunakannya. Sistem operasi lain seperti MAC, Android dan LINUX pun
juga sudah menyediakan driver untuk USB kelas HID sehingga USB HID IO Converter
ini juga bisa di gunakan pada sistim operasi tersebut.
USB HIDClass<->IOConverter
Program sederhana untuk mengontrol lampu LED ini akan kita beri
nama USB HID - LED On-Off. Program ini digunakan untuk melakukan pengontrolan
(menyalakan / mematikan) LED. Kita bisa menyalakan atau mematikan LED dengan
mencentang CheckBox pada program kita, dan LED akan hidup atau mati sesuai
kondisi CheckBox. Program ini memerlukan rangkaian LED yang dikoneksikankan
pada port IO USB HIDClass<->IOConverter.
Rangkaian
LED
Berikut adalah
rangkaian LED yang harus dihubungkan dengan port IO0-IO7 USB HIDClass<-
>IOConverter ke
Ground melalui resistor 1K Ohm, seperti pada Gambar dibawah
www.satu-microelectronics.com 2
Pemograman
USB HID - LED On-Off
Setelah
rangkaian LED telah dibuat, maka sekarang adalah pembuatan program yang
digunakan untuk mengontrol LED tersebut. Langkah – langkah pembuatan program USB
HID - LED On-Off adalah sebagai berikut;
1. Buka Visual C.
Pada menu File, klik perintah New Project, lalu klik OK untuk membuat sebuah file
executable standar. Simpanlah project dengan nama LED
On-Off.
2. Klik kontrol Label
untuk membuat sebuah label yaitu untuk Label1 yang
akan kita gunakan untuk menampilkan pesan.
3. Buat delapan buah
kotak Check Box. Kotak - kotak check box tersebut nantinya akan menjadi status
dari LED yang akan kita kontrol.
4. Ubah properties
dan ukuran form agar seukuran kotak dialog sedang, seperti Gambar
dibawah
5. Klik menu ProjectAdd
Reference dan tambahkan HID_IOConverter_NET.dll seperti
gambar dibawah. (Copykan file HID_IOConverter_NET.dll pada folder project
terlebih dahulu)
www.satu-microelectronics.com
3
6. Buka View Code
maka akan terlihat penambahan code ;
using
HID_IOConverter_NET;
dan tambahkan code berikut;
using
Microsoft.Win32.SafeHandles;
7. Tambahkan object
class HID_IOConverter_Function dan tambahkan code untuk event
Form1_Load berikut;
SafeFileHandle
iHandle;
HID_IOConverter_Function
HIDi = new
HID_IOConverter_Function ();
long
iReturn;
private
void Form1_Load(object sender, EventArgs e)
{
iHandle
= HIDi.Hid_OpenDevice();
if (iHandle.IsInvalid)
{
label1.Text
= "USB HIDClass<->IOConverter tidak terkoneksi..." +
"\n"
+ "Koneksikan USB HIDClass<->IOConverter terlebih dahulu," +
"\n"
+ "kemudian buka kembali program ini....";
}
else
{
iReturn
= HIDi.GPIO_DDR_Out(iHandle, 255);
iReturn
= HIDi.GPIO_Port_Out(iHandle, 0);
label1.Text
= "Check CheckBox to turn on LED "
+
"\n"
+ "Uncheck CheckBox to turn off LED";
}
}
Gambar. Menambahkan object HID_IOConverter_Function
Prosedur Form1_Load
ini akan berjalan pertama kali ketika program dijalankan. Program
akan
mencoba mencari USB
HIDClass<->IOConverter melalui fungsi Hid_OpenDevice dan
handle dari USB ini akan kita simpan pada iHandle, jika berhasil maka
akan di kirim perintah
GPIO_DDR_Out(iHandle, 255) ke
USB HIDClass<->IOConverter untuk memnuat 8 bit
port IO-nya sebagai
output semua, kemudian mengirim perintah GPIO_Port_Out(iHandle,0)
yang akan membuat
ouput GPIO berlogika low (LED mati semua) saat awal program.
Jika USB
HIDClass<->IOConverter tidak ditemukan maka akan di tampilan pesan pada
Label1
bahwa USB
HIDClass<->IOConverter tidak terkoneksi.
www.satu-microelectronics.com
4
8. Ketikkan kode
program berikut ini pada even CheckBox1_CheckedChanged sampai
CheckBox8_CheckedChanged
private
void checkBox1_CheckedChanged(object
sender, EventArgs e)
{
if (checkBox1.Checked)
{
HIDi.Set_Bit(iHandle,
HID_IOConverter_Function.GPIO_Port0);
}
else
{
HIDi.Clear_Bit(iHandle,
HID_IOConverter_Function.GPIO_Port0);
}
}
Gambar. Mengakses fungsi-fungsi pada HID_IOConverter_Function
Setiap kali terjadi
peng-klik-an pada CheckBox1 maka LED pada port IO USB HIDClass<-
>IOConverter akan
ON dan OFF.
9. Selesai sudah
pembuatan program LED Driver.
Menjalankan
Program USB HID - LED Driver
Sekarang
kita siap menjalankan program LED On-Off. Tancapkan USB
HIDClass<->IOConverter
pada komputer,
kemudian klik tombol Start pada Toolbar, maka jika tidak ada kesalahan akan
muncul
seperti Gambar
berikut;
www.satu-microelectronics.com 5
Gambar Tampilan program LED On-Off
Pada awal program,
LED akan OFF semua. Peng-klik-an pada CheckBox LED0 - LED7 akan
menyalakan LED,
peng-klik-an selanjutnya akan mematikan kembali LED.
Foto USB HID - LED On-Off
Sumber:
http://www.satu-microelectronics.com/?p=22
Pengontrolan LED Via USB
Nama: M Robby Fajri Maulana
Kelas: 2CB
NIM: 061430700535
Mata Kuliah: Praktek Interface Peripheral
Dosen Pembimbing: Ali Firdaus S.Kom., M.kom.
PENGONTROLAN LED VIA PORT USB
Perlahan tapi pasti, port USB telah “mengalahkan” popularitas port serial (COM) dan port paralel (LPT). Kini, komputer-komputer dan laptop terbaru tidak menyertakan lagi port serial, apalagi port paralel. Beberapa tipe motherboard masih menyertakakan sebuah port serial (COM1).Namun demikian, kini hampir semua peralatan elektronik memiliki port USB untuk berkomunikasi dengan piranti elektronik lainnya.
Port USB memang memiliki banyak kelebihan dibandingkan dengan port serial dan port paralel. Terlepas dari sudut pandang aplikasi, port USB lebih cepat dan lebih ringkas dibandingkan port serial maupun port paralel. Port USB juga menyediakan catu daya 5V DC dengan kemampuan arus maksimum 500mA untuk menyuplai perangkat elektronik berbasis USB.
V-USB adalah sebuah software implementasi protokol USB berkecepatan rendah untuk mikrokontroller ATMEL AVR sehingga memungkinkan untuk membuat piranti USB dengan sebagian besar mikrokontroller AVR tanpa tambahan chip lain. V-USB dapat di download di www.obdev.at.
libusb-win32 adalah library Win32 yang memberikan akses kepada user (bukan admin) untuk mengakses piranti-piranti USB secara generik tanpa perlu membuat kode-kode program kernel. Dengan libusb, kita dapat menggunakan fungsi-fungsi API untuk transfer data Bulk, Control, Interrupt, dan Isochronous. Library dan driver libusb dapat di download di http://sourceforge.net/apps/trac/libusb-win32/wiki.
Skematik
Pada eksperimen ini mengunakan mikrokontroller ATtiny2313V dengan kristal 12MHz dengan sebuah LED aktif high yang terhubung ke pin PD6. Berikut adalah skematik rangkaian eksperimen USB LED.
Berikut adalah program mikrokontroller ATtiny2313 untuk pengontrolan LED dari port USB
#define ON 1
#define OFF 0
#define LED(n) ((n)==(OFF) ? (PORTD&=~_BV(PD6)) : (PORTD|=_BV(PD6)))
#define OFF 0
#define LED(n) ((n)==(OFF) ? (PORTD&=~_BV(PD6)) : (PORTD|=_BV(PD6)))
uchar usbFunctionSetup(uchar data[8])
{
usbRequest_t *rq = (void *) data;
{
usbRequest_t *rq = (void *) data;
if (rq->bRequest==4)
LED(ON);
else if (rq->bRequest==5)
LED(OFF);
}
LED(ON);
else if (rq->bRequest==5)
LED(OFF);
}
/*** P R O G R A M U T A M A ***/
int main(void)
{
//Inisialisasi PORT D
PORTD = 0;
DDRD = ~(1 << 2);
int main(void)
{
//Inisialisasi PORT D
PORTD = 0;
DDRD = ~(1 << 2);
//Inisialisasi PORT B
PORTB = 0;
DDRB = ~USBMASK;
PORTB = 0;
DDRB = ~USBMASK;
//Inisialisasi Driver USB
usbInit();
usbInit();
//Aktifkan fungsi interupsi
sei();
sei();
for(;;)
{
usbPoll(); //Pantau terus, apakah ada permintaan dari Host
_delay_ms(12);
}
return 0;
}
{
usbPoll(); //Pantau terus, apakah ada permintaan dari Host
_delay_ms(12);
}
return 0;
}
Untuk mengontrol LED melalui PC diperlukan sebuah antarmuka yang pada eksperimen ini menggunakan bahasa C. Kompiler yang digunakan yakni Pelles C. Berikut adalah gambar dari program USB LED Control
Jika button LED ON di klik, maka program akan mengirimkan request ke USB Device yakni ATtiny2313 yang sudah ditanami program USB Protocol. Demikian juga dengan button LED OFF di klik, maka program akan mengirimkan request ke ATtiny2313 dengan ID request yang berbeda.
Untuk dapat berinteraksi dengan ATtiny2313. maka driver libusb perlu diinstal terlebih dahulu. Jika komputer telah terinstal piranti USB yang menggunakan libusb sebagai drivernya, contoh AVR USB. maka modul akan dikenal sebagai USBasp.
Berikut ini adalah program Demo USB LED Control dalam bahasa C
static INT_PTR CALLBACK MainDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
unsigned char nBytes;
unsigned char buffer[64];
switch (uMsg)
{
case WM_INITDIALOG:
//Inisialisasi port USB
usb_init();
{
unsigned char nBytes;
unsigned char buffer[64];
switch (uMsg)
{
case WM_INITDIALOG:
//Inisialisasi port USB
usb_init();
//Buka komunikasi USB dengan Modul USBLED
if(usbOpenDevice(&handle, USBDEV_SHARED_VENDOR, “Teknik Elektro Links”, USBDEV_SHARED_PRODUCT, “TELINKS-USB LED”) != 0)
{
MessageBox(hwndDlg, “USBLED Error: Kode Vendor dan Product Salah!”, “Error!”, MB_ICONERROR);
exit(1);
}
return TRUE;
if(usbOpenDevice(&handle, USBDEV_SHARED_VENDOR, “Teknik Elektro Links”, USBDEV_SHARED_PRODUCT, “TELINKS-USB LED”) != 0)
{
MessageBox(hwndDlg, “USBLED Error: Kode Vendor dan Product Salah!”, “Error!”, MB_ICONERROR);
exit(1);
}
return TRUE;
case WM_COMMAND:
switch (GET_WM_COMMAND_ID(wParam, lParam))
{
case ID_LED_ON:
nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
PSCMD_ON, 0, 0, (char *)buffer, sizeof(buffer), 5000);
return TRUE;
switch (GET_WM_COMMAND_ID(wParam, lParam))
{
case ID_LED_ON:
nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
PSCMD_ON, 0, 0, (char *)buffer, sizeof(buffer), 5000);
return TRUE;
case ID_LED_OFF:
nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
PSCMD_OFF, 0, 0, (char *)buffer, sizeof(buffer), 5000);
return TRUE;
nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
PSCMD_OFF, 0, 0, (char *)buffer, sizeof(buffer), 5000);
return TRUE;
case IDOK:
EndDialog(hwndDlg, TRUE);
return TRUE;
}
break;
EndDialog(hwndDlg, TRUE);
return TRUE;
}
break;
case WM_CLOSE:
EndDialog(hwndDlg, 0);
return TRUE;
EndDialog(hwndDlg, 0);
return TRUE;
}
return FALSE;
}
}
Program menggunakan fungsi usb_control_msg() untuk mengirimkan request kepada modul USBLED. Identifikasi perintah LED ON dan LED OFF diletakkan pada ID-Request yang dalam hal ini angka 4 (PSCMD_ON) untuk LED ON dan angka 5 (PSCMD_OFF) untuk LED OFF.
Demikian sedikit informasi mengenai pengontrolan LED melalui port USB, semoga bermanfaat.
Laporan Tugas Membuat Downloader
Laporan
Tugas Membuat Downloader
Kelompok
III
Nama: Andre
Pratama (061430700529)
M
Ilham Huzairin (061430700534)
M
Robby Fajri Maulana (061430700535)
M
Ardhiansyah (061430700540)
Roy
Sandy (061430700547)
Kelas: 2CB
Dosen Pembimbing: Ali
Firdaus S.Kom, M kom.
Mata Kuliah: Interface
Peripheral Komputer
I.
Tujuan
Setelah melaksanakan
percobaan ini, mahasiswa diharapkan dapat:
a. Membuat downloader menggunakan ATMEGA 8.
b. Mengisi dan mengapus Program ke Downloader.
II.
Alat dan Bahan
a. Downloader ATMEGA 8.
b. Kabel penghubung
c. Software Downloader (PROGISP)
III.
Langkah Kerja
Untuk menggunakan atau
mengisi program melalui downloader, ikuti langkah-langkah berikut:
1. Downloader yang sudah dibuat dihubungkan ke PC
atau laptop menggunakan kabel penghubung type-B.
2. PC atau laptop akan mendeteksi adanya hardware
baru.
3. Install hardware ke PC atau laptop
4. Jalankan software downloadernya (PROGISP).
5. Apabila terdeteksi maka tanda PRG ISP dalam
program PROGISP akan menyala.
6. Untuk mengisi ATMEGA 8, klik file> Load
flash> Muncul jendela kerja pilihan> Pilih program yang akan diisi dengan
type ekstensi .hex> Open.
7. Pilih auto, kemudian proses pengisian akan
berjalan.
8. Untuk mengecek apakah ATMEGA 8 kosong atau tidak
bisa dilihat pada menu buffer. Apabila tanda di buffer berisi FFFF semua maka
ATMEGA 8 adalah kosong, apabila buffer berisi karakter lain maka ATMEGA 8 sudah
terisi.
IV.
Kesimpulan
Dengan Percobaan ini
dapat kami simpulkan bahwa IC ATMEGA 8 dapat diisi maupun dihapus programnya
melalui program atau software pembaca downloader, seperti PROGISP.