Download

This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Jumat, 26 Juni 2015

Interface/Peripheral Komputer : Membuat USB 2-RELAY




Alat dan Bahan :

  1. Relay 5 Volt
  2. Port UBS tipe B
  3. Dioda Zener 3,9  dan Dioda Zener 4148
  4. Resistor 4K7 Ω, 1K5 Ω, 220 Ω, 820 Ω, dan 4,7 Ω
  5. Transistor S9013
  6. Kristal 12000
  7. Elco 220μF
  8. Kapasitor kertas 22pF dan Kapasitor kertas 104
  9. Led
  10. IC AT Tiny 2313
  11. Socket IC
  12. Kapasitor keramik104J/400V
  13. Terminal blok 3 pin
  14. Papan PCB polos

Langkah-Langkah Pembuatan Alat :
  1. Buat rangkaian skematik USB 2 – Relay seperti gambar dibawah ini :

  1. Setelah buat rangkaian skematiknya menggunakan Circuit Wizard, lalu buat pula layuot PCB nya. Berikut adalah gambar layout PCB nya
C:\Users\User\Pictures\2rel.png
  1. Setelah itu, print layout PCB nya kemudian fotocopy menggunakan kertas kalender atau kertas foto.
  2. Setrika layout yang telah difotocopy tersebut diatas papan PCB sampai rangkaiannya rekat, lalu rendam PCB tersebut didalam air dan diamkan sebentar lalu tarik bagian kertas secara perlahan.
  3. Amplas PCB yang telah menempel rangkaiannya untuk membersihkan PCB tersebut.
  4. Setelah bersih, bor PCB untuk memasang kaki – kaki komponen.
  5. Pasang semua komponen seperti gambar dibawah ini, kemudian solder semua kaki komponennya.
                             C:\Users\User\Pictures\blue_usb2rel_320.jpg



Cara Pemasangan Lampu :
  1. Siapkan 2 buah lampu 5 watt dan kabel secukupnya
  2. Pasang terlebih dahulu steker pada kabel
  3. Buat cabang pada masing-masing kabel steker tadi
  4. Cabang pertama pasang pada terminal block NO (Normally Open)
  5. Buat kabel lagi pada masing-masing lampu, lalu hubungkan pada lampu tersebut
  6. Hubungkan salah satu kabel lampu, lalu sambungkan menjadi satu.
  7. Hubungkan kabel lampu yang satunya ke cabang kedua tadi.
  8. Jangan lupa tembaga lampu dibalut dengan lakban agar aman.


Langkah-Langkah Memprogram/Menjalankan Relay :
Modul USB-2REL (device) menggunakan V-USB, yakni open-source implementasi protokol USB kecepatan rendah untuk mikrokontroler AVR. Sedangkan pada komputer (host), program aplikasi pengontrolan modul USB-2REL dibuat menggunakan kompiler Delphi. Untuk berkomunikasi dengan modul USB-2REL, program aplikasi menggunakan library libusb-win32 yang juga open-source. Berikut contoh program menggunakan Delphi:
C:\Users\User\Pictures\1.PNG
C:\Users\User\Pictures\2.PNG
C:\Users\User\Pictures\3.PNG
  1. Instalasi Driver Ketika modul USB-2REL dihubungkan ke komputer melalui port USB, maka sistem operasi Windows akan mendeteksi adanya piranti USB yang hadir di port USB.
  2. Selanjutnya, Windows akan melakukan proses enumerasi dengan tujuan untuk mengenali piranti USB yang baru hadir tersebut. Jika piranti USB tersebut dikenali, maka Windows akan menjalankan driver yang sesuai dan piranti USB pun siap digunakan. Sesaat setelah modul USB-2REL terhubung ke port USB, maka mikrokontroler akan memperoleh suplai tegangan dan firmware di dalam memori program pun dijalankan. Firmware dalam mikrokontroler pun akan menjawab proses enumerasi yang dilakukan oleh Windows dengan menyetorkan ID-nya untuk dikenali oleh Windows.Catatan: Modul USB-2REL menggunakan firmware implementasi USB buatan OBDEV (V-USB) dan telah banyak diimplementasikan oleh banyak perancang sistem mikrokontroler karena menyediakan ID yang gratis untuk digunakan. Oleh karenanya, jika port USB yang digunakan untuk modul USB-2REL pernah digunakan untuk modul USB lain seperti USBASP misalnya, maka filter libusb akan mengenali USB-2REL sebagai USBASP. Hal ini tidak menjadi masalah karena implementasi firmwarenya sama dan modul akan tetap beroperasi dengan baik sebagai driver relay. Akan tetapi jika Windows tidak mengenali ID dari USB-2REL sebagai piranti USB yang telah terinstalasi pada port USB, maka Windows akan menampilkan dialog instalasi driver seperti screenshot berikut ini.
https://telinks.files.wordpress.com/2013/03/telinks_usb2rel_found.jpg
  1. Modul USB-2REL dilengkapi dengan CD yang berisi installer Delphi, source code project program aplikasi USB-2REL, dan driver libusb untuk USB-2REL.
https://telinks.files.wordpress.com/2013/03/telinks_usb2rel_driver.jpg
  1. Setelah folder driver USB-2REL dipilih dan tekan OK serta Next >, maka proses instalasi driver pun dimulai.
https://telinks.files.wordpress.com/2013/03/telinks_usb2rel_installdriver.jpg
https://telinks.files.wordpress.com/2013/03/telinks_usb2rel_installed.jpg
Setelah instalasi driver selesai dan berhasil, maka USB-2REL kini siap digunakan. :)
Program Aplikasi USB-2REL.
Ketika program aplikasi USB-2REL dijalankan, sebelum form aplikasi ditampilkan, program melakukan inisialisasi dan mencoba berkomunikasi dengan driver USB-2REL yang telah aktif. Jika gagal maka program akan menampilkan pesan kesalahan bahwa modul USB-2REL tidak ditemukan dan program pun selesai.
Tapi jika program berhasil melakukan komunikasi dengan driver USB-2REL yang telah aktif, maka form aplikasi pun ditampilkan seperti gambar di bawah ini.
C:\Users\User\Pictures\4.PNG
Modul USB-2REL dapat diperintah atau diminta melakukan/mengerjakan fungsi tertentu sesuai dengan kode permintaan yang dikenalinya. Modul USB-2REL dapat diperintah untuk mengirimkan ID dari modul USB-2REL, yang dalam hal ini adalah data string “USB-2REL”. Pada program demo, Button Baca ID Modul akan mengirimkan permintaan tersebut kepada modul USB-2REL. Setelah ID Modul USB diterima, maka program akan menampilkannya pada editbox yang tersedia.
Modul USB-2REL juga dapat diperintah untuk mengaktifkan/mematikan RELAY-1 dan RELAY-2, baik secara individu (sendiri-sendiri) ataupun secara bersamaan. Button ON dan Button OFF pada Group RELAY-1 berfungsi untuk mengaktifkan dan mematikan RELAY-1. Sedangkan Button ON dan Button OFF pada Group RELAY-2 berfungsi untuk mengaktifkan dan mematikan RELAY-2. Button ALL RELAYS ON berfungsi untuk mengirimkan permintaan agar modul USB-2REL mengaktifkan kedua relay secara bersamaan. Dan Button ALL RELAYS OFF berfungsi untuk mengirimkan permintaan agar modul USB-2REL mematikan kedua relay secara bersamaan. Button EXIT, seperti nama yang diberikan kepadanya, berfungsi untuk keluar dari aplikasi.

Kamis, 25 Juni 2015

TUTORIAL MEMBUAT DOWNLOADER

NAMA  :  M. FAHMI HIDAYAT
KELAS :  2 CA
NIM     :  061430700514
 
SYARAT SAH MEMBUAT DOWNLOADER USB ADA 20 PERKARA:
1. Sehat lahir dan batin
2. Mempunyai niat mau belajar dengan ikhlas, ga perlu dilafalkan
3. Bisa nyolder, pangkat minimal “teman solder”
4. mempunyai alat solder, kalau ga punya pinjam sama teman
5. Mempunyai komputer
6. Ada komputer teman yang ada parallel portnya untuk mendownload mikro master
7. mempunyai PCB, minimal PCB titik
8. mempunyai IC ATMEGA8
9. mempunyai minimum system ATMEGA 8
10. mempunyai kristal 12 MHz
11. mempunyai kapasitor 22pF
12. mempunyai konektor USB dan kabel USB
13. mempunyai soket IC 14pin 2 buah
14. mempunyai resistor 10k, 68ohm atau 100 ohm, 2k2, 1K
15. mempunyai elko 4,7 uF/16 V dan kapasitor 100nF
16. mempunyai LED 3 buah
17. mempunyai housing 5 pin dan 4 pin
18. Dioda zener 3.6 volt 2 buah
19. Koleksi program yang mendukung panduan ini
20. tidak sedang pacaran kecuali sudah tunangan dan menikah
SEDANGKAN RUKUNNYA YAITU:
– sediakan komputer, dan nyalakan (bukan nyalakan api)
– mainkan lagu ThePanasDalam (cita-citaku)
– ekstrak folder gawean
– lihat rangkaian dengan program eagle. Nama File RANGKEYAN.SCH
– buat rangkaian tersebut ke PCB, sebagaimana kita menjadi pegawai solder yang baik dan benar
– periksa lagi pekerjaan kita, minta diperiksa sama pendekar solder
– siapkan kabel usb, hati hati tertukar minimal VCC sama GND tidak nyambung, celaka… USB komputer taruhannya….
– sekarang masukkan kabel usbnya
– Ingat , ini baru percobaan, MIKRO ATMEGA 8 JANGAN DIMASUKKAN DULU KE SOKET !!!!JANGAN DULU…..
– jika benar, akan muncul seperti ini
usb1– jika sudah muncul seperti itu, berarti rangkaian sudah bener, dan LED power harus nyala
– Sesudah itu lepas kembali kabel USB
– Sekarang download software nya, bisa pakai khazama atau progisp.
Berikut ini langkah penggunaan dan troubleshooting-nya:
  1. Pertama temen2 install dulu drivernya… tinggal cek di device manager PC ato laptop temen2.
  2. Kedua Instal software Khazamanya… tinggal Next…Finish dan Yes :D.
  3. Jalankan software Khazama AVR Programmer, berikut tampilannya:  
  4.  Pada menu “ AVR : “ Pilih tipe mikrokontroler yang digunakan, misalkan ATMEGA32.
  5. Untuk mendownload program yang telah di compile ( file dalam bentuk    *.hex) berikut langkahnya:
Klik Menu File kemudian pilih “ load FLASH file to Buffer “ atau tinggal klik icon seperti gambar berikut:

  • Cari file *.hex hasil compile di folder dimana program tersebut disimpan, kemudian pilih open. 
Maka tampilan jendela khazama akan menjadi:
  
Langkah selanjutnya tinggal meng-klik tombol “ Auto Program “ maka proses downloading akan berlangsung.
  • Kemudian akan muncul jendela seperti berikut, yang menandakan proses downloading telah selesai dan berhasil ^_^
     
     
Berikut beberapa kejadian error saat penggunaan khazama dan troubleshootingnya.
Error diatas, terjadi jika Khazama downloader belum ditancapkan pada computer PC ato laptop anda.
Error diatas, terjadi jika Khazama downloader belum di sambungkan dengan sistem minimum mikrokontroler yang akan diprogram, solusinya adalah dengan menghubungkan keduanya. Atau dapat juga terjadi saat sistem minimum mikrokontroler dengan Khazama downloader telah terhubung, namun mikrokontroler yang digunakan adalah mikrokontroler baru (baru dari pabrikan) yang belum di konfigurasi fuse bit-nya. Maka solusinya adalah mengatur fuse bitnya terlebih dahulu.
                                                                                                                                                           
Tutorial Software ProgISP v.1.7.2
Menggunakan ProgISP_v.1.72
Salam buat sobat semua,....
Pada posting kali ini penulis akan mencoba menjelaskan sedikit cara menggunakan Software ProgISP_v1.72. Software ini digunakan dalam pemrograman mikrokontroler khususnya saat melakukan Download File *.HEX ke dalam memori mikrokontroller MCS-51. Untuk bisa menggunakan software ini tentunya sobat harus mempunyai soft-copysoftware tersebut, karena software ini bersifat portable jadi tidak perlu di instal terlebih dahulu.
Bentuk tampilan programnya sebagai berikut:

Gambar 1. Tampilan program ProgISP_v.1.72
Selain mempunyai soft-copy programnya, sobat juga harus punya hardware USBASP yang merupakan perangkat komunikasi antara PC dengan Chip Mikrokontroler. Setelah hardware terhubung tampilan jendela program menjadi seperti di bawah ini, perhatikan perbedaannya:
 Gambar 2.a Perhatikan perubahan yang terjadi
 Gambar 2.b Hardware terdeteksi
Selanjutnya memanggil file *.HEX yang akan di download ke memori mikrokontroller, caranya Klik tombol Load Flash - truss pilih file *.HEX yang akan di download dan Klik tombol Open, seperti ditunjukan pada gambar berikut ini :
 Gambar 3.a Klik Load Flash
Gambar 3.b Memilih File *.HEX
Langkah terakhir adalah Klik tombol Auto untuk Downloadding, jangan lupa lihat proses downloadnya hingga selesai.

Interface/Peripheral Komputer : Membuat USB 2-RELAy


NAMA  :  M. FAHMI HIDAYAT
KELAS :  2 CA
NIM     :  061430700514
SYARAT SAH MEMBUAT DOWNLOADER USB ADA 20 PERKARA:
1. Sehat lahir dan batin
2. Mempunyai niat mau belajar dengan ikhlas, ga perlu dilafalkan
3. Bisa nyolder, pangkat minimal “teman solder”
4. mempunyai alat solder, kalau ga punya pinjam sama teman
5. Mempunyai komputer
6. Ada komputer teman yang ada parallel portnya untuk mendownload mikro master
7. mempunyai PCB, minimal PCB titik
8. mempunyai IC ATMEGA8
9. mempunyai minimum system ATMEGA 8
10. mempunyai kristal 12 MHz
11. mempunyai kapasitor 22pF
12. mempunyai konektor USB dan kabel USB
13. mempunyai soket IC 14pin 2 buah
14. mempunyai resistor 10k, 68ohm atau 100 ohm, 2k2, 1K
15. mempunyai elko 4,7 uF/16 V dan kapasitor 100nF
16. mempunyai LED 3 buah
17. mempunyai housing 5 pin dan 4 pin
18. Dioda zener 3.6 volt 2 buah
19. Koleksi program yang mendukung panduan ini
20. tidak sedang pacaran kecuali sudah tunangan dan menikah
SEDANGKAN RUKUNNYA YAITU:
– sediakan komputer, dan nyalakan (bukan nyalakan api)
– mainkan lagu ThePanasDalam (cita-citaku)
– ekstrak folder gawean
– lihat rangkaian dengan program eagle. Nama File RANGKEYAN.SCH
– buat rangkaian tersebut ke PCB, sebagaimana kita menjadi pegawai solder yang baik dan benar
– periksa lagi pekerjaan kita, minta diperiksa sama pendekar solder
– siapkan kabel usb, hati hati tertukar minimal VCC sama GND tidak nyambung, celaka… USB komputer taruhannya….
– sekarang masukkan kabel usbnya
– Ingat , ini baru percobaan, MIKRO ATMEGA 8 JANGAN DIMASUKKAN DULU KE SOKET !!!!JANGAN DULU…..
– jika benar, akan muncul seperti ini usb1– jika sudah muncul seperti itu, berarti rangkaian sudah bener, dan LED power harus nyala
– Sesudah itu lepas kembali kabel USB
– Sekarang download software nya, bisa pakai khazama atau progisp.
Berikut ini langkah penggunaan dan troubleshooting-nya:
  1. Pertama temen2 install dulu drivernya… tinggal cek di device manager PC ato laptop temen2.
  2. Kedua Instal software Khazamanya… tinggal Next…Finish dan Yes :D.
  3. Jalankan software Khazama AVR Programmer, berikut tampilannya:  
  4.  Pada menu “ AVR : “ Pilih tipe mikrokontroler yang digunakan, misalkan ATMEGA32.
  5. Untuk mendownload program yang telah di compile ( file dalam bentuk    *.hex) berikut langkahnya:
Klik Menu File kemudian pilih “ load FLASH file to Buffer “ atau tinggal klik icon seperti gambar berikut:



  • Cari file *.hex hasil compile di folder dimana program tersebut disimpan, kemudian pilih open. 
Maka tampilan jendela khazama akan menjadi:
  
Langkah selanjutnya tinggal meng-klik tombol “ Auto Program “ maka proses downloading akan berlangsung.
  • Kemudian akan muncul jendela seperti berikut, yang menandakan proses downloading telah selesai dan berhasil ^_^
     
     
Berikut beberapa kejadian error saat penggunaan khazama dan troubleshootingnya.
Error diatas, terjadi jika Khazama downloader belum ditancapkan pada computer PC ato laptop anda.
Error diatas, terjadi jika Khazama downloader belum di sambungkan dengan sistem minimum mikrokontroler yang akan diprogram, solusinya adalah dengan menghubungkan keduanya. Atau dapat juga terjadi saat sistem minimum mikrokontroler dengan Khazama downloader telah terhubung, namun mikrokontroler yang digunakan adalah mikrokontroler baru (baru dari pabrikan) yang belum di konfigurasi fuse bit-nya. Maka solusinya adalah mengatur fuse bitnya terlebih dahulu.
                                                                                                                                                           
Tutorial Software ProgISP v.1.7.2
Menggunakan ProgISP_v.1.72
Salam buat sobat semua,....
Pada posting kali ini penulis akan mencoba menjelaskan sedikit cara menggunakan Software ProgISP_v1.72. Software ini digunakan dalam pemrograman mikrokontroler khususnya saat melakukan Download File *.HEX ke dalam memori mikrokontroller MCS-51. Untuk bisa menggunakan software ini tentunya sobat harus mempunyai soft-copysoftware tersebut, karena software ini bersifat portable jadi tidak perlu di instal terlebih dahulu.
Bentuk tampilan programnya sebagai berikut:


Gambar 1. Tampilan program ProgISP_v.1.72
Selain mempunyai soft-copy programnya, sobat juga harus punya hardware USBASP yang merupakan perangkat komunikasi antara PC dengan Chip Mikrokontroler. Setelah hardware terhubung tampilan jendela program menjadi seperti di bawah ini, perhatikan perbedaannya:
 Gambar 2.a Perhatikan perubahan yang terjadi
 Gambar 2.b Hardware terdeteksi
Selanjutnya memanggil file *.HEX yang akan di download ke memori mikrokontroller, caranya Klik tombol Load Flash - truss pilih file *.HEX yang akan di download dan Klik tombol Open, seperti ditunjukan pada gambar berikut ini :
 Gambar 3.a Klik Load Flash
Gambar 3.b Memilih File *.HEX
Langkah terakhir adalah Klik tombol Auto untuk Downloadding, jangan lupa lihat proses downloadnya hingga selesai.

MENGONTROL USB 2 RELAY

NAMA  :  M. FAHMI HIDAYAT
KELAS :  2CA
NIM      :  061430700514

Mengontrol Relay Via USB Menggunakan USB-2REL 
DESKRIPSI:
USB-2REL adalah modul USB Relay yang memiliki 2 buah relay sebagai output. Dengan modul ini kita bisa mengendalikan kondisi 2 buah relay (on/off) melalui program komputer dengan antarmuka port USB.

Modul ini mengambil daya secara langsung dari port USB sehingga tidak membutuhkan catu daya eksternal. Oleh karenanya modul USB-2REL sangat mudah dan praktis digunakan.

Modul dilengkapi dengan kabel data USB dengan panjang 1,5m dan CD yang berisi driver dan contoh-contoh program aplikasi.
SPESIFIKASI:
Tegangan kerja                        : DC 5V (USB Powered - tidak perlu catudaya eksternal)
Jumlah Output                                    : 2 buah
Tipe Output                             : Relay (Kontak NO=10A, Kontak NC=6A @250VAC)
Konektor Relay                       : Terminal Screw
Mikrokontroler                        : AVR ATtiny2313
Kabel data                               : USB konektor tipe B - 1,5 meter
3 LED Indikator                     : Power ON, Relay-1 ON, Relay-2 ON
Watchdog Timer                     : 30ms
Sistem Operasi                        : Win98, Win2000, WinXP, Win7, WinVista, Linux, Raspian
Software Driver                      : LIBUSB
Command-Line Tools             : usb2rc.exe (Win), usb2rc (Linux), usb2rc (Raspi)
Dilengkapi contoh program    : C, Delphi, Lazarus, JustBASIC, PHP, Python, Raspberry Pi,
REBOL, VB, VB.NET
Contoh Program:
/****************************************************************************
 *                                                                                                                                                    *
 * File    : main.c                                                                                                                            *
 *                                                                                                                                                    *
 * Purpose : Generic dialog based Win32 application.                                                                  *
 *                                                                                                                                                    *
 * History : Date      Reason                                                                                                           *
 *           00/00/00  Created                                                                                                            *
 *                                                                                                                                                    *
 ****************************************************************************/
/*
 * Either define WIN32_LEAN_AND_MEAN, or one or more of NOCRYPT,
 * NOSERVICE, NOMCX and NOIME, to decrease compile time (if you
 * don't need these defines -- see windows.h).
 */
#define WIN32_LEAN_AND_MEAN
/* #define NOCRYPT */
/* #define NOSERVICE */
/* #define NOMCX */
/* #define NOIME */
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <commdlg.h>
#include <tchar.h>
#include "main.h"
#include <lusb0_usb.h>
#include <stdio.h>
#include <process.h>
#include <excpt.h>
#define NELEMS(a)  (sizeof(a) / sizeof((a)[0]))
#define USBDEV_SHARED_VENDOR    0x16C0  /* VOTI */
#define USBDEV_SHARED_PRODUCT   0x05DC  /* Obdev's free shared PID */
/* Perintah-perintah yang digunakan Host pada USB Crypto Dongle */
#define PSCMD_ASKID                  0
#define PSCMD_CONTROL            1
#define PSCMD_ALLON                 2
#define PSCMD_ALLOFF    3
/** Prototypes **************************************************************/
static INT_PTR CALLBACK MainDlgProc(HWND, UINT, WPARAM, LPARAM);
//static LRESULT CALLBACK MainDlgProc(HWND, UINT, WPARAM, LPARAM);
static int  usbGetStringAscii(usb_dev_handle *dev, int index, int langid, char *buf, int buflen);
static int usbOpenDevice(usb_dev_handle **device, int vendor, char *vendorName, int product, char *productName);
/** Global variables ********************************************************/
usb_dev_handle    *handle = NULL;
static HANDLE     ghInstance;
/****************************************************************************
 *                                                                                                                                                    *
 * Function: WinMain                                                                                                                   *
 *                                                                                                                                                   *
 * Purpose : Initialize the application.  Register a window class,                                                 *
 *           create and display the main window and enter the                                                         *
 *           message loop.                                                                                                                  *
 *                                                                                                                                                    *
 * History : Date      Reason                                                                                                          *
 *           00/00/00  Created                                                                                                           *
 *                                                                                                                                                   *
 ****************************************************************************/
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
    INITCOMMONCONTROLSEX icc;
    WNDCLASSEX wcx;
    ghInstance = hInstance;
    /* Initialize common controls. Also needed for MANIFEST's */
    /*
     * TODO: set the ICC_???_CLASSES that you need.
     */
    icc.dwSize = sizeof(icc);
    icc.dwICC = ICC_WIN95_CLASSES /*|ICC_COOL_CLASSES|ICC_DATE_CLASSES|ICC_PAGESCROLLER_CLASS|ICC_USEREX_CLASSES|... */;
    InitCommonControlsEx(&icc);
    /* Load Rich Edit control support */
    /*
     * TODO: uncomment one of the lines below, if you are using a Rich Edit control.
     */
    // LoadLibrary(_T("riched32.dll"));  // Rich Edit v1.0
    // LoadLibrary(_T("riched20.dll"));  // Rich Edit v2.0, v3.0
    /*
     * TODO: uncomment line below, if you are using the Network Address control (Windows Vista+).
     */
    // InitNetworkAddressControl();
    /* Get system dialog information */
    wcx.cbSize = sizeof(wcx);
    if (!GetClassInfoEx(NULL, MAKEINTRESOURCE(32770), &wcx))
        return 0;
    /* Add our own stuff */
    wcx.hInstance = hInstance;
    wcx.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDR_ICO_MAIN));
    wcx.lpszClassName = _T("USB2RELClass");
    if (!RegisterClassEx(&wcx))
        return 0;
    /* The user interface is a modal dialog box */
    return DialogBox(hInstance, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)MainDlgProc);
}
/****************************************************************************
 *                                                                                                                                                    *
 * Function: MainDlgProc                                                                                                             *
 *                                                                                                                                                    *
 * Purpose : Process messages for the Main dialog.                                                                      *
 *                                                                                                                                                    *
 * History : Date      Reason                                                                                                          *
 *           00/00/00  Created                                                                                                            *
 *                                                                                                                                                    *
 ****************************************************************************/
static INT_PTR CALLBACK MainDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
            unsigned char nBytes, xx;
            char buffer[64];
    switch (uMsg)
    {
        case WM_INITDIALOG:
                                    //Inisialisasi port USB
                                    usb_init();
                                    //Buka komunikasi USB dengan USBCrypto Dongle
                        if(usbOpenDevice(&handle, USBDEV_SHARED_VENDOR, "Teknik Elektro Links", USBDEV_SHARED_PRODUCT, "TELINKS-USB2REL") != 0)
                        {
                        MessageBox(hwndDlg, "Modul TELINKS-USB2REL tidak ditemukan!", "Error!", MB_ICONERROR);
                        exit(1);
                        }
            return TRUE;
        case WM_SIZE:
            /*
             * TODO: Add code to process resizing, when needed.
             */
            return TRUE;
        case WM_COMMAND:
            switch (GET_WM_COMMAND_ID(wParam, lParam))
            {
                                                case ID_ASK_ID:
                                                            nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
                                    PSCMD_ASKID, 0, 0, (char *)buffer, sizeof(buffer), 5000);
                                    if (nBytes<0)
                                                MessageBox(hwndDlg, usb_strerror(), "Error!", MB_ICONINFORMATION);
                                                            else
                                                                        SetDlgItemText(hwndDlg, ID_EDIT1, (char*)buffer);
                                   
                                                            return TRUE;
                case ID_RL1_ON:
                                    nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
                                    PSCMD_CONTROL, 1, 1, (char *)buffer, sizeof(buffer), 5000);
                                    if (nBytes<0)
                                                MessageBox(hwndDlg, usb_strerror(), "Error!", MB_ICONINFORMATION);
                                                            else
                                                                        SetDlgItemText(hwndDlg, ID_EDIT1, (char*)buffer);
                                    return TRUE;
                        case ID_RL1_OFF:
                                    nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
                                    PSCMD_CONTROL, 0, 1, (char *)buffer, sizeof(buffer), 5000);
                                    if (nBytes<0)
                                                MessageBox(hwndDlg, usb_strerror(), "Error!", MB_ICONINFORMATION);
                                    return TRUE;
                        case ID_RL2_ON:
                                                            nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
                                                            PSCMD_CONTROL, 1, 2, (char *)buffer, sizeof(buffer), 5000);
                                                if (nBytes<0)
                                                MessageBox(hwndDlg, usb_strerror(), "Error!", MB_ICONINFORMATION);
                                                           
                    return TRUE;
                        case ID_RL2_OFF:
                                    nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
                                    PSCMD_CONTROL, 0, 2, (char *)buffer, sizeof(buffer), 5000);
                                    if (nBytes<0)
                                                MessageBox(hwndDlg, usb_strerror(), "Error!", MB_ICONINFORMATION);
                                    return TRUE;
                                                case ID_ALL_ON:
                                                            nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
                                    PSCMD_ALLON, 0, 0, (char *)buffer, sizeof(buffer), 5000);
                                    if (nBytes<0)
                                                MessageBox(hwndDlg, usb_strerror(), "Error!", MB_ICONINFORMATION);
                                    return TRUE;
                                                case ID_ALL_OFF:
                                                            nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
                                    PSCMD_ALLOFF, 0, 0, (char *)buffer, sizeof(buffer), 5000);
                                    if (nBytes<0)
                                                MessageBox(hwndDlg, usb_strerror(), "Error!", MB_ICONINFORMATION);
                                    return TRUE;
       
                case IDOK:
                    EndDialog(hwndDlg, TRUE);
                    return TRUE;
            }
            break;
        case WM_CLOSE:
                                    usb_close(handle);
            EndDialog(hwndDlg, 0);
            return TRUE;
        /*
         * TODO: Add more messages, when needed.
         */
    }
    return FALSE;
}
/*
  Fungsi-fungsi komunikasi data USB
*/
static int  usbGetStringAscii(usb_dev_handle *dev, int index, int langid, char *buf, int buflen)
{
char    buffer[256];
int     rval, i;
    if((rval = usb_control_msg(dev, USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, (USB_DT_STRING << 8) + index, langid, buffer, sizeof(buffer), 1000)) < 0)
        return rval;
    if(buffer[1] != USB_DT_STRING)
        return 0;
    if((unsigned char)buffer[0] < rval)
        rval = (unsigned char)buffer[0];
    rval /= 2;
    /* lossy conversion to ISO Latin1 */
    for(i=1;i<rval;i++){
        if(i > buflen)  /* destination buffer overflow */
            break;
        buf[i-1] = buffer[2 * i];
        if(buffer[2 * i + 1] != 0)  /* outside of ISO Latin1 range */
            buf[i-1] = '?';
    }
    buf[i-1] = 0;
    return i-1;
}
#define USB_ERROR_NOTFOUND  1
#define USB_ERROR_ACCESS    2
#define USB_ERROR_IO        3
static int usbOpenDevice(usb_dev_handle **device, int vendor, char *vendorName, int product, char *productName)
{
struct usb_bus      *bus;
struct usb_device   *dev;
usb_dev_handle      *handle = NULL;
int                 errorCode = USB_ERROR_NOTFOUND;
static int          didUsbInit = 0;
    if(!didUsbInit){
        didUsbInit = 1;
        usb_init();
    }
    usb_find_busses();
    usb_find_devices();
    for(bus=usb_get_busses(); bus; bus=bus->next){
        for(dev=bus->devices; dev; dev=dev->next){
            if(dev->descriptor.idVendor == vendor && dev->descriptor.idProduct == product){
                char    string[256];
                int     len;
                handle = usb_open(dev); /* we need to open the device in order to query strings */
                if(!handle){
                    errorCode = USB_ERROR_ACCESS;
                    fprintf(stderr, "Warning: cannot open USB device: %s\n", usb_strerror());
                    continue;
                }
                if(vendorName == NULL && productName == NULL){  /* name does not matter */
                    break;
                }
                /* now check whether the names match: */
                len = usbGetStringAscii(handle, dev->descriptor.iManufacturer, 0x0409, string, sizeof(string));
                if(len < 0){
                    errorCode = USB_ERROR_IO;
                    fprintf(stderr, "Warning: cannot query manufacturer for device: %s\n", usb_strerror());
                }else{
                    errorCode = USB_ERROR_NOTFOUND;
                    /* fprintf(stderr, "seen device from vendor ->%s<-\n", string); */
                    if(strcmp(string, vendorName) == 0){
                        len = usbGetStringAscii(handle, dev->descriptor.iProduct, 0x0409, string, sizeof(string));
                        if(len < 0){
                            errorCode = USB_ERROR_IO;
                            fprintf(stderr, "Warning: cannot query product for device: %s\n", usb_strerror());
                        }else{
                            errorCode = USB_ERROR_NOTFOUND;
                            /* fprintf(stderr, "seen product ->%s<-\n", string); */
                            if(strcmp(string, productName) == 0)
                                break;
                        }
                    }
                }
                usb_close(handle);
                handle = NULL;
            }
        }
        if(handle)
            break;
    }
    if(handle != NULL){
        errorCode = 0;
        *device = handle;
    }
    return errorCode;
}
 
USB-2REL adalah modul driver 2-relay yang dapat dikendalikan oleh komputer melalui perantaraan port USB. Modul ini tidak membutuhkan catu daya eksternal sehingga sangat praktis untuk digunakan baik dengan komputer maupun laptop/netbook.
Modul USB-2REL (device) menggunakan V-USB, yakni open-source implementasi protokol USB kecepatan rendah untuk mikrokontroler AVR. Sedangkan pada komputer (host), program aplikasi pengontrolan modul USB-2REL dibuat menggunakan kompiler dan IDE C For Windows (freeware) yakni Pelles C. Untuk berkomunikasi dengan modul USB-2REL, program aplikasi menggunakan library libusb-win32 yang juga open-source.
Instalasi Driver Ketika modul USB-2REL dihubungkan ke komputer melalui port USB, maka sistem operasi Windows akan mendeteksi adanya piranti USB yang hadir di port USB. Selanjutnya, Windows akan melakukan proses enumerasi dengan tujuan untuk mengenali piranti USB yang baru hadir tersebut. Jika piranti USB tersebut dikenali, maka Windows akan menjalankan driver yang sesuai dan piranti USB pun siap digunakan.
Sesaat setelah modul USB-2REL terhubung ke port USB, maka mikrokontroler akan memperoleh suplai tegangan dan firmware di dalam memori program pun dijalankan. Firmware dalam mikrokontroler pun akan menjawab proses enumerasi yang dilakukan oleh Windows dengan menyetorkan ID-nya untuk dikenali oleh Windows.
Catatan: Modul USB-2REL menggunakan firmware implementasi USB buatan OBDEV (V-USB) dan telah banyak diimplementasikan oleh banyak perancang sistem mikrokontroler karena menyediakan ID yang gratis untuk digunakan. Oleh karenanya, jika port USB yang digunakan untuk modul USB-2REL pernah digunakan untuk modul USB lain seperti USBASP misalnya, maka filter libusb akan mengenali USB-2REL sebagai USBASP. Hal ini tidak menjadi masalah karena implementasi firmwarenya sama dan modul akan tetap beroperasi dengan baik sebagai driver relay.
Akan tetapi jika Windows tidak mengenali ID dari USB-2REL sebagai piranti USB yang telah terinstalasi pada port USB, maka Windows akan menampilkan dialog instalasi driver seperti screenshot berikut ini.
telinks_usb2rel_found
Modul USB-2REL dilengkapi dengan CD yang berisi installer Pelles C, source code project program aplikasi USB-2REL, dan driver libusb untuk USB-2REL.
telinks_usb2rel_driver
Setelah folder driver USB-2REL dipilih dan tekan OK serta Next >, maka proses instalasi driver pun dimulai.
telinks_usb2rel_installdriver
telinks_usb2rel_installed
Setelah instalasi driver selesai dan berhasil, maka USB-2REL kini siap digunakan. :)
Program Aplikasi USB-2REL
usb2rel_app1
Ketika program aplikasi USB-2REL dijalankan, sebelum form aplikasi ditampilkan, program melakukan inisialisasi dan mencoba berkomunikasi dengan driver USB-2REL yang telah aktif. Jika gagal maka program akan menampilkan pesan kesalahan bahwa modul USB-2REL tidak ditemukan dan program pun selesai.
Tapi jika program berhasil melakukan komunikasi dengan driver USB-2REL yang telah aktif, maka form aplikasi pun ditampilkan seperti gambar di samping ini.
Modul USB-2REL dapat diperintah atau diminta melakukan/mengerjakan fungsi tertentu sesuai dengan kode permintaan yang dikenalinya. Modul USB-2REL dapat diperintah untuk mengirimkan ID dari modul USB-2REL, yang dalam hal ini adalah data string “USB-2REL”. Pada program demo, Button Baca ID Modul akan mengirimkan permintaan tersebut kepada modul USB-2REL. Setelah ID Modul USB diterima, maka program akan menampilkannya pada editbox yang tersedia.
usb2rel_app2 Modul USB-2REL juga dapat diperintah untuk mengaktifkan/mematikan RELAY-1 dan RELAY-2, baik secara individu (sendiri-sendiri) ataupun secara bersamaan. Button ON dan Button OFF pada Group RELAY-1 berfungsi untuk mengaktifkan dan mematikan RELAY-1. Sedangkan Button ON dan Button OFF pada Group RELAY-2 berfungsi untuk mengaktifkan dan mematikan RELAY-2.
Button ALL RELAYS ON berfungsi untuk mengirimkan permintaan agar modul USB-2REL mengaktifkan kedua relay secara bersamaan. Dan Button ALL RELAYS OFF berfungsi untuk mengirimkan permintaan agar modul USB-2REL mematikan kedua relay secara bersamaan. Button EXIT, seperti nama yang diberikan kepadanya, berfungsi untuk keluar dari aplikasi.
Berikut adalah foto hasil pengujian modul USB-2REL dengan program aplikasi di atas.
usb2rel_onoff
Modul USB-2REL beserta dengan driver dan program aplikasinya telah kami uji pada beberapa komputer yang kami miliki, antara lain:

  • Netbook Lenovo @1.66GHz + Windows 7
  • PC Pentium-4 XEON @3.2GHz + Windows XP
  • PC Pentium-3 @750MHz + Windows XP
  • PC Pentium-2 @333MHz + Windows 98
Berikut adalah screenshot hasil pengujian pada sistem-sistem tersebut.
usb2rel_win7_640
usb2rel_winxp
usb2rel_win98_640
Berikut adalah screenshot program aplikasi kontrol USB-2REL yang dibuat menggunakan VB.NET 2005 Express Edition.
usb2rel_vbnet
 
SELESAI