Archive for April 2015

Kontrol lampu LED On-Off melalui port USB dengan Visual C

//19 Apr 2015
//Posted by Robby Fajri Maulana
Nama: M Robby Fajri Maulana
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

//15 Apr 2015
//Posted by Robby Fajri Maulana

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)))
uchar   usbFunctionSetup(uchar data[8])
{
usbRequest_t    *rq = (void *) data;
  if (rq->bRequest==4)
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);
    //Inisialisasi PORT B
PORTB = 0;
DDRB = ~USBMASK;
    //Inisialisasi Driver USB
usbInit();
    //Aktifkan fungsi interupsi
sei();
    for(;;)
{
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();
            //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;
        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;
                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;
                case IDOK:
EndDialog(hwndDlg, TRUE);
return TRUE;
}
break;
        case WM_CLOSE:
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

//8 Apr 2015
//Posted by Robby Fajri Maulana
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.