Archive for the 'Mikrokontroler' Category

Jan 20 2016

Modul 2 Tutorial Simulasi Pengendalian Input Digital Oleh Mikrokontroler AVR ATmega

Oleh : Agung Nugroho Adi – Teknik Mesin UII Yogyakarta

Tujuan Pembelajaran

Setelah melakukan proses pembelajaran peserta diharapkan dapat :

  • Menjelaskan rangkaian input mikrokontroler dari saklar.
  • Membuat program untuk mengendalikan output LED menggunakan saklar.

Saklar

Saklar adalah peranti input digital yang umum ditemui dalam banyak peralatan. Fungsi kerja saklar adalah untuk menghubungkan atau memutus aliran listrik pada suatu rangkaian listrik. Pada saklar terdapat 2 kemungkinan keadaan (biner), yaitu aktif dan tidak aktif. Jika suatu saklar menyambung rangkaian listrik saat aktif (ditekan) disebut sebagai saklar Normally Open (NO), jika sebaliknya disebut sebagai Normally Closed (NC). Berdasarkan cara pengaktifannya, saklar dapat dibedakan menjadi saklar tekan (pushbutton) dan saklar toggle/slide. Saklar tekan akan langsung kembali tidak aktif jika tidak ditekan, sedangkan saklar toggle baru akan tidak aktif jika posisi saklar dipindahkan.

Saklar Untuk Memilih Konfigurasi Nyala LED

  1. Rangkaian

Rangkaian ini menggunakan rangkaian saklar active low, dimana jika saklar ditekan (aktif) maka oleh mikrokontroler dibaca 0. Sebaliknya jika saklar tidak diaktifkan mikrokontroler akan membacanya sebagai logika 1, walaupun sebetulnya keadaan rangkaian adalah floating (mengambang), tidak terhubung dengan Vcc ataupun GND. Hal ini disebabkan port input/output ATMega8535 dapat diatur sebagai input dengan pull-up internal.

 


Gambar 1    Rangkaian saklar dan LED

 

  • Rangkaian seperti ini tidak dapat digunakan untuk semua jenis mikrokontroler, lebih disarankan untuk menggunakan resistor pull up. Resistor pull up digunakan untuk memastikan saat saklar tidak aktif, rangkaian tetap terhubung dengan Vcc.


Gambar 2    Resistor pull-up untuk rangkaian saklar

  1. Pengaturan Konfigurasi Nyala Padam LED Menggunakan Saklar

Buatlah file source dan file project baru dengan nama SAKLAR1.c dan SAKLAR.prj dan tuliskan program di bawah ini.

Program 1    Program Saklar_2.c

//=======================================================================

//Program Saklar_1.c

//Program untuk menampilkan kondisi saklar pada LED

//=======================================================================

#include <mega8535.h>

#define saklar PINB // saklar = PORTB

#define led PORTA // Led = PORTA

void main(void)

{

DDRA=0xFF;     //PortA dikonfigurasikan sebagai output, yaitu PA0 – PA7

PORTA=0xFF;        //PortA diberi nilai awal 0xFF = LED padam

DDRB=0;     //PortB dikonfigurasikan sebagai input, yaitu P

PORTB=0xFF;     //PortB diberikan internal pull up

while(1)

{

if (saklar==0xFF)    //jika tidak ada saklar ditekan

led =0xFF;        //led padam

else if (saklar==0xFE)    //jika PINA.0 ditekan

led = 0xAA;        //led nyala selang-seling

else led=0;        //selain itu led nyala semua

}

}

//=======================================================================

 

Lakukan proses compiling di CVAVR dan simulasi di Proteus ISIS, perhatikan hasilnya dengan mengubah kondisi masing-masing saklar.

  1. Prinsip Kerja File SAKLAR1.c

Pada awal program terdapat pernyataan define yang dipergunakan untuk menggantikan penyebutan PORTA dan PORTB masing-masing dengan nama variabel led dan saklar.

#define saklar PINB // saklar = PORTB

#define led PORTA // Led = PORTA

Hal ini akan berguna pada saat membuat program yang panjang dan kompleks, jika terdapat perubahan penggunaan pin atau port, cukup diganti pada pernyataan define.

PORTA dan PORTB perlu diinisialisasi sebelum digunakan.

DDRA=0xFF;     //PortA dikonfigurasikan sebagai output, yaitu PA0 – PA7

PORTA=0xFF;        //PortA diberi nilai awal 0xFF = LED padam

PORTA digunakan sebagai output dengan semua pin diberi sinyal high atau dengan kata lain LED padam semua.

DDRB=0;     //PortB dikonfigurasikan sebagai input, yaitu P

PORTB=0xFF;     //PortB diberikan internal pull up

PORTB digunakan sebagai input dan sesuai Tabel 21diset dengan internal pull up. Dengan diset menggunakan internal pull up maka PORTB tidak perlu dihubungkan dengan rangkaian eksternal pull up untuk memastikan sinyal yang diterima adalah 1 pada saat rangkaian tidak terhubung.

Tabel 1    Pengaturan pin I/O sebagai input

DDR bit = 0
PORT bit = 1 Input, Internal Pull Up
PORT bit = 0 Input, Floating

Untuk menguji keadaan saklar digunakan pernyataan If…Elseif…Else, sehingga jika keadaan saklar sesuai dengan keadaan yang disyaratkan, maka pernyataan setelah if atau else if akan dilaksanakan. Pada program ini kondisi saklar akan menentukan konfigurasi nyala LED.

if (saklar==0xFF)    //jika tidak ada saklar ditekan

led =0xFF;        //led padam

Jika tidak ada saklar yang diaktifkan maka semua LED akan padam.

else if (saklar==0xFE)    //jika PINA.0 ditekan

led = 0xAA;        //led nyala selang-seling

Jjika hanya saklar PORTB.0 saja yang diaktifkan maka LED akan membentuk konfigurasi nyala/padam secara berselang seling.

else led=0;        //selain itu led nyala semua

Jika selain dari dua keadaan tersebut maka LED akan menyala semua.

 

  1. Pengaturan Pergantian Konfigurasi Nyala Padam LED Menggunakan Saklar

Buatlah file source baru dengan nama file SAKLAR2.c untuk mengganti file source sebelumnya, yaitu file SAKLAR1.c dengan program sebagai berikut.

 

#include <mega8535.h>

#include <delay.h>

#define saklar PINB // saklar = PORTB

#define led PORTA // Led = PORTA

void main(void)

{

unsigned char pilih;        //deklarasi variabel pilih sebagai unsigned char

DDRA=0xFF;     //PortA dikonfigurasikan sebagai output, yaitu PA0 – PA7

PORTA=0xFF;        //PortA diberi nilai awal 0xFF = LED padam

DDRB=0;     //PortB dikonfigurasikan sebagai input, yaitu P

PORTB=0xFF;     //PortB diberikan internal pull up

while(1){

    if (saklar.0==0)pilih=1;     //jika PINA.0 ditekan pilih=1

    else if (saklar.1==0)pilih=2;     //jika PINA.1 ditekan pilih=2

    else if (saklar.2==0)pilih=0;     //jika PINA.2 ditekan pilih=0


    if (pilih==1){     //jika pilih=1

    led =0xFF;     //maka konfigurasi LED bergantian

    delay_ms(250);     //menyala semua dan padam semua

    led =0;

    delay_ms(250);

    }

    else if (pilih==2){     //jika pilih=2

    led = 0xAA;     //maka konfigurasi LED bergantian

    delay_ms(250);     //berselang-seling nyala padam

    led =0x55;

    delay_ms(250);

    }

    else led=0xFF;     //jika pilih=3 maka LED padam

}

}

 

  1. Prinsip Kerja File SAKLAR2.c

Pada dasarnya prinsip kerja file SAKLAR2.c mirip dengan SAKLAR1.c.

    if (saklar.0==0)pilih=1;     //jika PINA.0 ditekan pilih=1

    else if (saklar.1==0)pilih=2;     //jika PINA.1 ditekan pilih=2

    else if (saklar.2==0)pilih=0;     //jika PINA.2 ditekan pilih=0

Pernyataan ini mengecek kondisi saklar mana yang ditekan dan selanjutnya menentukan nilai variabel pilih.

    if (pilih==1){     //jika pilih=1

    led =0xFF;     //maka konfigurasi LED bergantian

    delay_ms(250);     //menyala semua dan padam semua

    led =0;

    delay_ms(250);

    }

Jika nilai variabel pilih adalah 1 maka konfigurasi LED akan menyala semua dan padam semua secara bergantian.

    else if (pilih==2){     //jika pilih=2

    led = 0xAA;     //maka konfigurasi LED bergantian

    delay_ms(250);     //berselang-seling nyala padam

    led =0x55;

    delay_ms(250);

    }

Jika nilai variabel pilih adalah 1 maka konfigurasi LED akan nyala padam berselang-seling secara bergantian.

    else led=0xFF;     //jika pilih=3 maka LED padam

Jika nilai variabel pilih adalah 2 maka semua LED akan padam

Comments Off on Modul 2 Tutorial Simulasi Pengendalian Input Digital Oleh Mikrokontroler AVR ATmega

Jan 20 2016

Modul 1 Tutorial Simulasi Pengendalian Output Digital Oleh Mikrokontroler AVR ATmega

Oleh : Agung Nugroho Adi – Program Studi Teknik Mesin UII Yogyakarta

Tujuan Pembelajaran

Setelah melakukan proses pembelajaran peserta diharapkan dapat :

  1. Membuat program untuk pengendalian output LED menggunakan Codevision AVR (CVAVR).
  2. Melakukan simulasi pengendalian output LED menggunakan Proteus.

Light Emitting Diode


Gambar 11    Komponen LED beserta simbolnya

LED (Light Emitting Diode) adalah semikonduktor (diode) yang dapat mengeluarkan cahaya. Terdapat berbagai macam warna LED, yaitu merah, hijau, oranye, kuning, dan biru, serta dalam berbagai bentuk. Seperti juga diode, LED juga merupakan komponen yang akan aktif (menyala) jika dialiri arus pada arah tertentu, dan tidak untuk arah arus sebaliknya. Gambar 11menunjukkan bentuk fisik LED beserta simbolnya. Kaki yang lebih panjang adalah anode, yang akan dihubungkan dengan kutub +, dan kaki yang lebih pendek adalah katode, yang akan dihubungkan dengan kutub – .


Gambar 12    Rangkaian untuk menyalakan LED

Gambar 12 menunjukkan rangkaian untuk menyalakan LED, anode terhubung dengan kutub positif catu daya dan katode terh ubung dengan resistor dan ground. Fungsi resistor pada rangkaian yang melibatkan LED adalah sebagai pembatas arus. Untuk menyalakan LED hanya diperlukan arus sebesar 1 – 10 mA, sedangkan arus yang dapat diberikan catu daya (dengan tegangan berkisar 5-9V) cukup besar. Jika arus yang masuk LED tidak dibatasi, maka LED akan rusak. Resistor dapat diletakkan pada sisi katode maupun anode dari LED.

 

Menyalakan dan Memadamkan LED

Rangkaian


Gambar 13    Rangkaian output LED beserta diagram pengkabelannya

Untuk mencoba rangkaian menyalakan/memadamkan LED, akan digunakan rangkaian yang terdiri dari 8 buah LED, yang akan dikendalikan oleh mikrokontroler melalui PORT A.

  • Ingat semua rangkaian LED haruslah selalu diberikan resistor sebagai pembatas arus

 

Tutorial Membuat Program Tanpa Menggunakan Wizzard
  • Pada CVAVR bukalah file source baru dengan mengklik File – New kemudian pilihlah tipe file Source dan klik OK


  • Mulailah mengetik program berikut ini pada jendela untitled.c

//File : LED1.c

//deklarasi file header

#include <mega8535.h> //jenis us ATMega8535

#include <delay.h> //berisi fungsi tundaan waktu

//program utama

void main(void) {

//inisialisasi PORTA.0

DDRA.0=1;    //PORTA.0 sebagai output

PORTA.0=1;    //PORTA.0 mengeluarkan sinyal high (1)

//perulangan secara terus menerus

while (1) {

PORTA.0=0;    //PORTA.0 mengeluarkan sinyal 0, LED nyala

delay_ms(1000);    //tunda 1 detik

PORTA.0=1;    //PORTA.0 mengeluarkan sinyal 1, LED padam

delay_ms(1000);    //tunda 1 detik

};

}

  • Simpanlah dan beri nama file source yang telah dibuat dengan mengklik File – Save As dengan nama LED1.c

 

  • Buatlah file project baru dengan mengklik File – New, pilihlah tipe file Project, klik OK


  • Untuk membuat program tanpa wizzard maka klik NO pada jendela Confirm, kemudian klik OK


  • Simpan project dengan nama LED.prj dan selanjutnya akan muncul jendela Configure Project pada tab Files untuk menambahkan file source. Tambahkanlah file LED1.c ke dalam project LED.prj dengan mengklik add kemudian pilih file LED1.c dan diakhiri dengan mengklik OK.


 

  • Klik tab C Compiler dan sesuaikan chip dan clock yang digunakan. Mikrokontroler yang digunakan pada praktikum ini adalah chip ATMega8535 dengan clock 4.000 MHz.


 

 

 

  • Setelah program C telah selesai dibuat maka tekan tombol F9 atau mengklik PROJECT – COMPILE untuk meng-compile program, jika tidak ada kesalahan dapat dilanjutkan dengan membuat program dengan menekan tombol SHIFT+F9 atau mengklik PROJECT – MAKE untuk melakukan kompiling program sekaligus untuk menghasilkan file 01-LED1.hex.


  • Berikutnya kita lakukan tahapan simulasi dengan membuka Proteus ISIS. Berikut adalah tampilan awal Proteus ISIS.

.

  • Klik File – Open Design atau gunakan shortcut Ctrl+o untuk membuka kotak dialog Load ISIS Design File. Berpindahlah ke folder tempat menyimpan file desain ISIS, kemudian pilih file 1-switch-led.DSN dan klik OK.


  • File 1-switch-led.DSN yang merupakan simulasi pertama kita memuat beberapa komponen, yaitu mikrokontroler ATMega8535 beserta rangkaian LED yang terhubung dengan PORTA sebagai output dan rangkaian DIP-switch yang terhubung dengan PORTB sebagai input.


  • Klik ganda IC mikrokontroler ATMega8535 sehingga terbuka kotak dialog Edit Component. Berikutnya pada bagian Program File buka kotak dialog Select File Name, berpindahlah ke folder program CVAVR atau folder lain tempat penyimpanan file 01-LED1.hex. Masih pada kotak dialog Edit Component gantilah nilai CKSEL Fuses menjadi (0100) Int RC 8MHz untuk memasukkan frekuensi clock mikrokontroler.


  • Proses berikutnya adalah mensimulasikan program hex pada rangkaian yang telah tersedia. Klik Debug – Start/Restart Debugging atau shortcut Ctrl+F12. Tunggu beberapa saat hingga proses selesai kemudian klik Debug – Execute atau shortcut F12.


  • Jika semua langkah telah dilakukan dengan benar maka kita dapat melihat tampilan simulasi program, yaitu LED D0 akan berkedap-kedip.

 

Prinsip Kerja Program LED1.c

Pada suatu file source haruslah diawali dengan mencantumkan file-file header sesuai yang diperlukan dalam program.

#include <mega8535.h>

#include <delay.h>

Pada program LED1.c tercantum dua file header yaitu mega8535.h yang merupakan file header untuk tipe mikrokontroler yang digunakan serta delay.h yang memuat fungsi-fungsi penundaan waktu.

Dalam suatu file source minimal terdapat 1 fungsi sebagai fungsi utama, yaitu void main(void). Jika terdapat fungsi lain selain fungsi utama maka fungsi void main(void) yang akan dilaksanakan pertama kali saat program dijalankan.

ATMega 8535 mempunyai 4 port Input/Output (I/O), yaitu PORTA, PORTB, PORTC, dan PORTD, yang pada masing-masing port 8 pin. Contohnya untuk PORTA terdapat 8 pin masing-masing PORTA.0, PORTA.1, PORTA.2, PORTA.3, PORTA.4, PORTA.5, PORTA.6, dan PORTA.7 begitu pula untuk PORTB, PORTC, dan PORTD. Setiap pin pada PORTA, PORTB, PORTC, dan PORTD dapat digunakan sebagai fungsi input ataupun output digital dengan melakukan inisialisasi masing-masing pin terlebih dahulu untuk menentukan fungsi pin. Pengaturan fungsi pin sebagai port output dilakukan dengan memberikan nilai 1 ke register DDR pada pin yang bersangkutan. Selanjutnya pin output dapat mengeluarkan sinyal high jika register PORT diberi nilai 1 dan mengeluarkan sinyal low jika diberi nilai 0.

Tabel 11    Pengaturan pin I/O sebagai output

DDR bit = 1
PORT bit = 1 Output, High
PORT bit = 0 Output, Low

 

//inisialisasi PORTA.0

DDRA.0=1;    //PORTA.0 sebagai output

PORTA.0=1;    //PORTA.0 meneluarkan sinyal high (1)

Baris program di atas menunjukkan inisialisasi untuk sebuah pin, yaitu PORTA.0, sebagai output dan mengeluarkan sinyal high.

Inti dari program LED1.c terdapat pada baris program

while (1) {

PORTA.0=0;    //PORTA.0 mengeluarkan sinyal 0, LED nyala

delay_ms(1000);    //tunda 1 detik

PORTA.0=1;    //PORTA.0 mengeluarkan sinyal 1, LED padam

delay_ms(1000);    //tunda 1 detik

};

yang menunjukkan PORTA.0 sebagai output diberikan nilai 1 dan 0 secara bergantian dengan jeda waktu tertentu. Pernyataan delay_ms (1000) digunakan untuk memberikan waktu tunda selama 1000 milidetik (1 detik). Jika diperlukan waktu tunda yang lebih singkat, dapat digunakan pernyataan delay_us(). Misal pernyataan delay_us (5000) akan memberikan waktu tunda selama 5000 mikrodetik (5 milidetik).

 

  • Ingat 1 detik = 1000 milidetik = 1000000 mikrodetik

 

Pada dasarnya prinsip kerja output mikrokontroler adalah mirip saklar yang mempunyai dua kondisi, yaitu :

  • menghubungkan rangkaian dengan Vcc jika diberi logika 1
  • menghubungkan rangkaian dengan GND jika diberi logika 0.

 


Gambar 14    Logika 0 dan 1 pada output mikrokontroler

Gambar 14 (a) menunjukkan saat PA.0 diberi logika 1, maka rangkaian terhubung dengan Vcc, akibatnya tidak ada beda tegangan pada rangkaian (sama-sama Vcc) sehingga tidak ada arus mengalir dan LED akan padam. Gambar 14 (b) menunjukkan saat PA.0 diberi logika 0, maka rangkaian terhubung dengan GND sehingga terjadi beda tegangan pada rangkaian. Karena anode LED terhubung dengan Vcc dan katode LED terhubung dengan GND, maka arus akan mengalir pada LED dan LED akan menyala. Rangkaian pada Gambar 14 disebut sebagai rangkaian active low, yaitu

  • pada saat diberi logika 0 (rendah) rangkaian akan aktif
  • pada saat diberi logika 1 (tinggi) rangkaian tidak aktif

Pernyataan while (1) menunjukkan bahwa program akan berulang secara terus menerus hingga catu daya diputus.

 

Tutorial Mengganti File Source Untuk Project yang Sama
  • Bukalah file source baru dengan mengklik File – New kemudian pilihlah tipe file Source dan klik OK


  • Mulailah mengetik program berikut ini pada jendela untitled.c

//File : LED2.c

//deklarasi file header

#include <mega8535.h>

#include <delay.h>

void main(void) {

//inisialisasi PORTA.0

DDRA=0b11111111;        //semua pin pada PORTA sebagai output

PORTA=0b11111111;        //semua pin pada PORTA mengeluarkan sinyal high (1)

while (1) {

PORTA=0b11110000;        //PORTA mengeluarkan sinyal 11110000

delay_ms(1000);        //tunda 1 detik

PORTA=0b00001111;        //PORTA mengeluarkan sinyal 00001111

delay_ms(1000);        //tunda 1 detik

};

}

 

  • Simpanlah dan beri nama file source yang telah dibuat dengan mengklik File – Save As dengan nama LED2.c
  • Klik Project – Configure, kemudian klik tab Files. Pilih file source yang akan diganti, yaitu file LED1.c kemudian klik Remove. Untuk mengganti file source dengan yang baru klik Add dan pilih file source yang baru, yaitu file LED2.c. Klik OK.


  • Lakukan langkah pemrograman mikrokontroler selanjutnya seperti pada langkah 8 hingga 13 pada Tutorial Membuat Program Tanpa Menggunakan Wizzard
  • Perhatikan apa yang terjadi pada simulasi.

 

Prinsip Kerja File LED2.c

Penentuan fungsi dan pemberian sinyal masing-masing pin dapat dilakukan satu per satu pin ataupun secara sekaligus 1 port (yang terdiri dari 8 pin).

//inisialisasi PORTA.0

DDRA=0b11111111;        //semua pin pada PORTA sebagai output

PORTA=0b11111111;        //semua pin pada PORTA mengeluarkan sinyal high (1)

Pernyataan ini menunjukkan semua pin pada PORTA difungsikan sebagai output dengan kondisi awal mengeluarkan sinyal high, sehingga semua LED padam.

 

while (1) {

PORTA=0b11110000;        //PORTA mengeluarkan sinyal 11110000

delay_ms(1000);        //tunda 1 detik

PORTA=0b00001111;        //PORTA mengeluarkan sinyal 00001111

delay_ms(1000);        //tunda 1 detik

};

}

Pernyataan ini menunjukkan bahwa PORTA diberi sinyal bergantian dengan jeda waktu 1 detik dengan konfigurasi seperti terdapat pada tabel

Tabel 12    Keadaan masing-masing pin dan bilangan biner ekivalennya

PA.7

PA.6

PA.5

PA.4

PA.3

PA.2

PA.1

PA.0

Biner

Heksa
desimal

Desimal

padam

padam

padam

padam

nyala

nyala

nyala

nyala

0b11110000

0xF0

240

nyala

nyala

nyala

nyala

padam

padam

padam

Padam

0b00001111

0x0F

15

 

Untuk memberikan sinyal secara sekaligus dapat dipilih salah satu di antara tiga sistem bilangan, yaitu biner, heksadesimal atau desimal, sehingga bilangan setiap bilangan biner dalam file LED2.c dapat pula dituliskan dalam bilangan heksadesimal

//File : LED2.c modifikasi menggunakan bilangan heksadesimal

//deklarasi file header

#include <mega8535.h>

#include <delay.h>

void main(void) {

//inisialisasi PORTA.0

DDRA=0xFF;            //=0b11111111

PORTA=0xFF;            //=0b11111111

while (1) {

PORTA=0xF0;        // = 0b11110000

delay_ms(1000);        //tunda 1 detik

PORTA=0x0F;        // = 0b00001111

delay_ms(1000);        //tunda 1 detik

};

}

Ataupun dalam bilangan desimal

//File : LED2.c modifikasi menggunakan bilangan desimal

//deklarasi file header

#include <mega8535.h>

#include <delay.h>

void main(void) {

//inisialisasi PORTA.0

DDRA=255;            //=0b11111111

PORTA=255;            //=0b11111111

while (1) {

PORTA=240;        // = 0b11110000

delay_ms(1000);        //tunda 1 detik

PORTA=15;            // = 0b00001111

delay_ms(1000);        //tunda 1 detik

};

}

 

 

  • Ingat anda dapat memanfaatkan program Calculator yang terdapat pada folder Accessories pada sistem operasi Windows untuk mengkonversi sistem bilangan.

Pemrograman File LED3.c

Buatlah file source baru dengan nama file LED3.c untuk mengganti file source sebelumnya, yaitu file LED2.c dengan program sebagai berikut.

//file : LED3.c

#include <mega8535.h>

#include <delay.h>

char i;

char data[4]={0x3F,0xCF,0xF3,0xFC}; // Tabel data konfigurasi LED

void main(void){

DDRA=0xFF;

PORTA=0xFF;

while(1){

    for(i=0;i<4;i++){        // i dimulai dari 0 dan akan selalu bertambah 1

                //sampai i < 4, dan i akan kembali lagi ke 0

        PORTA=(data[i]);     //nilai PORTA sama dengan nilai data ke-i pada tabel

         delay_ms(1000);         //tunda 1 detik

         }

    };

}

Prinsip Kerja File LED3.c

Program LED3 diawali dengan deklarasi variabel i sebagai char, yaitu data 8 bit.

char i;

Setiap variabel yang terdapat di program haruslah dideklarasikan terlebih dahulu menjadi salah satu tipe data.

char tabel[4]={0x3F,0xCF,0xF3,0xFC}; // Tabel data konfigurasi LED

Pernyataan ini adalah deklarasi variabel tabel yang berbentuk larik/array 1 dimensi. Larik secara sederhana dapat dianggap sebagai tabel, sehingga variabel data mempunyai empat nilai untuk masing-masing indeks, masing-masing data[0]=0x3F, data[1]=0xCF, data[2]=0xF3, dan data[3]=0xFC.

Pada program LED3.c terdapat dua kalang, yaitu kalang when dan kalang for.

for(i=0;i<4;i++)

pernyataan ini adalah merujuk pada penggunaan kalang for untuk nilai awal i adalah 0, nilai akhir adalah i kurang dari empat, dan nilai i akan bertambah 1 pada setiap kalangnya. Sehingga pernyataan tersebut akan melakukan empat kali perulangan dan pada setiap perulangan nilai data ke i akan dikirim ke PORTA. . Jika program dijalankan akan menghasilkan 4 konfigurasi nyala LED secara bergantian dan dilakukan secara terus menerus.

Comments Off on Modul 1 Tutorial Simulasi Pengendalian Output Digital Oleh Mikrokontroler AVR ATmega

Dec 11 2014

Memprogram Arduino Melalui Bluetooth

Published by under Arduino,Mikrokontroler

Pengguna Arduino tentunya sudah sangat familier dengan pemrograman Arduino yang dapat dilakukan dengan mudah. Cukup dengan menancapkan kabel ke port USB masing-masing pada PC dan board Arduino maka kita sudah dapat mengunggah program ke Arduino. Meski secara fisik menggunakan kabel USB, namun sebetulnya komunikasi antara komputer dan Arduino dilakukan menggunakan komunikasi serial. Seperti terlihat pada gambar di bawah ini.

Bluetooth adalah standar komunikasi untuk bertukar data tanpa perantara kabel (wireless) pada jarak yang tidak terlalu jauh. Bluetooth biasanya digunakan untuk komunikasi dua perangkat berpasangan (paired) menggunakan perantara sinyal gelombang radio UHF dengan frekuensi 2.4 – 2.485 MHz. Pada dasarnya komunikasi bluetooth adalah komunikasi serial hanya dilakukan tanpa perantara kabel. Karena sama-sama berbasis komunikasi serial tentu kita mengira-ngira apakah pemrograman Arduino juga dapat dilakukan tanpa menggunakan kabel melalui bluetooth. Jawabannya adalah ya, Arduino dapat diprogram melalui bluetooth. Pertanyaan berikutnya bagaimana caranya?

Sebenarnya saat ini ada beberapa produk yang memungkinkan Arduino dapat diprogram langsung melalui bluetooth contohnya adalah Arduino Wireless Programmer shield serta beberapa perangkat Arduino berbasis standar bluetooth terbaru yaitu Bluetooth 4 (BLE), antara lain Bluno dan BLE Shield. Meski demikian mungkin ada di antara kita yang saat ini telah memiliki modul bluetooth seperti Bluetooth shield ataupun modul HC-05 yang ingin dapat memprogram Arduino melalui bluetooth. Tulisan ini membahas tentang langkah-langkah yang perlu dilakukan untuk memprogram Arduino via bluetooth menggunakan modul Bluetooth Shield (Master/Slave) v2.2 dari Itead Studio yang berbasis HC-05.

Sebelum masuk ke penjelasan tentang langkah pemrograman, perlu kita ketahui beberapa hal berikut :

  • Selama ini perangkat lunak Arduino (versi xx ataupun 1.0.x) kurang mendukung untuk penggunaan bluetooth. Saya kira sebagian pembaca pernah merasakan masalah betapa lambatnya loading perangkat Arduino pada saat fitur bluetooth di komputer kita dinyalakan. Begitu pula saat akan meng-klik menu Tools – Serial Ports pada saat akan memilih port serial berapa yang akan digunakan. Hal ini disebabkan karena kekurangan bagian komunikasi serial perangkat lunak Arduino saat harus mengenali lebih dari 1 port serial yang aktif. Hal ini dapat diatasi dengan mengganti file rxtxserial.dll dengan yang telah dimodifikasi (tautan berikut) atau dengan cara yang lebih mudah, yaitu menggunakan perangkat lunak Arduino versi 1.5.x (saat tulisan ini ditulis versi terbaru adalah 1.5.8) pada tautan berikut.
  • Saat menjalani komunikasi serial kedua perangkat yang sedang berkomunikasi haruslah memiliki parameter protokol komunikasi yang sama. Jika tidak sama maka ibarat dua orang yang berkomunikasi dalam bahasa yang berbeda maka keduanya tidak akan saling memahami maksud lawan bicaranya. Parameter komunikasi serial yang paling penting adalah baudrate (kecepatan komunikasi), jumlah bit karakter, jumlah bit stop, dan jumlah bit parity. Pada pemrograman Arduino parameter komunikasi serial yang digunakan untuk jumlah bit karakter, jumlah bit stop, dan jumlah bit parity adalah sama, yaitu masing-masing 8 bit karakter, 1 bit stop, dan tanpa bit parity. Meski demikian terdapat perbedaan pada baudrate yang digunakan, misalnya Arduino Uno menggunakan baudrate 115200, Arduino Duemilanova/Diecimila baudrate 57600, serta Arduino Nano, dan Arduino NG dengan ATMega8 baudrate 19200 (sumber : boards.txt). Modul bluetooth berbasis HC-05 memiliki dua mode yaitu mode CMD untuk setting pada baudrate tetap 38400 (tidak dapat diatur) dan mode DAT untuk komunikasi yang dapat diatur baudrate-nya dengan default 9600 (sumber).
  • Pada saat proses pemrograman Arduino sebelum program diunggah ke mikrokontroler terdapat proses reset untuk mengaktifkan program bootloader. Pada modul bluetooth standar kita tidak dapat me-reset board Arduino secara otomatis untuk itu perlu ditambahkan rangkaian yang menghubungkan modul bluetooth dengan pin reset pada Arduino.

Berikut adalah langkah-langkahnya :

  1. Unduhlah perangkat lunak Arduino versi 1.5.x dari tautan berikut. Persiapkan ruang harddisk karena ukurannya cukup besar (ukuran zip lebih dari 170 MB setelah diekstrak lebih dari 550 MB). Kebutuhan yang tidak kalah penting adalah jaringan internet yang handal karena unduhan dari tautan resmi Arduino tersebut nampaknya tidak memiliki fasilitas resume, sehingga jika terputus di tengah jalan tidak dapat dilanjutkan dan harus memulai dari awal.
  2. Tambahkan rangkaian berupa kapasitor 1 uF yang menghubungkan antara pin 32 dari modul HC-05 dengan pin RESET Arduino (Informasi dari tautan berikut). Karena saya tidak menemukan kapasitor 1uF di toko elektronik dekat rumah maka saya gunakan rangkaian pada tautan lain yang terdiri dari 1 kapasitor keramik 100 nF, 1 resistor 10 K ohm, dan 1 resistor 15 k Ohm seperti pada gambar berikut.

  1. Berikutnya adalah langkah persiapan pengesetan modul bluetooth. Set saklar mode operasi menjadi CMD serta set jumper seperti terdapat pada gambar berikut. Pada langkah pengesetan modul bluetooth dilakukan melalui modul UART yang terdapat board Arduino, itulah sebabnya maka Tx modul dihubungkan dengan Tx Arduino dan Rx modul dengan Rx Arduino. Pasangkan modul bluetooth shield pada board Arduino. Perhatian untuk mengecek isi program Arduino apakah menggunakan komunikasi serial. Jika terdapat komunikasi serial upload program terlebih dahulu yang tidak menggunakan komunikasi serial (misal Blink). Proses ini tidak harus menggunakan board Arduino, tapi dapat juga menggunakan konverter USB – serial TTL, jangan lupa dengan koneksi Rx – Rx dan Tx – Tx.
  2. Lakukan pengesetan modul bluetooth shield dengan menyambungkan kabel Arduino ke port USB komputer serta menggunakan perangkat lunak terminal serial. Pada aktifitas ini digunakan Serial Monitor dari Arduino dengan setting baudrate 38400 (karena sedang pada mode CMD) dan line ending “Both NL and CR” (karena AT command harus diakhiri dengan karakter NL dan CR). Untuk mengetes komunikasi ketik AT kemudian diikuti dengan menekan ENTER pada keyboard (atau dapat juga dengan menekan tombol “Send” pada Serial Monitor). Jika komunikasi berjalan baik maka modul bluetooth akan menjawab OK. Pada modul yang saya gunakan jika pertama kali mengirim perintah AT, modul selalu menjawab ERROR. Modul baru akan menjawab OK untuk perintah AT kedua. Sejauh ini hal ini tidak mengganggu, hanya harus mengirim perintah AT 2 kali di awal komunikasi.
  3. Berikutnya ketikkanlah perintah berikut pada Serial Monitor (sumber)
AT Command Respon Keterangan
AT+ORGL OK Mengembalikan ke keadaan default
AT+ROLE=0 OK Mengeset modul sebagai slave
AT+POLAR=1,0 OK PIO 8 high drive LED; PIO 9 low drive LED.

Maksudnya adalah pada saat setiap awal komunikasi PIO 9 (pin 32) yang disambungkan dengan pin RESET diset logika low sehingga mereset Arduino (sumber)

AT+UART=115200,0,0 OK Set baudrate 115200, 1 bit stop dan tanpa bit parity. Catatan untuk Duemilanova baudrate 57600.
AT+INIT OK Inisialisasi modul

 

  1. Setelah selesai lepaskan kabel USB dari Arduino, set saklar operasi ke DAT, dan atur jumper seperti pada gambar berikut (Tx modul dengan Rx Arduino dan sebaliknya). Sambungkan lagi kabel USB, kali ini hanya sebagai catu daya.
  2. Klik kanan icon Bluetooth Device pada Notification Area pada Desktop komputer anda, klik Add Device. Maka akan ditampilkan media bluetooth yang akan disambungkan. Pilih modul bluetooth shield yang dapat memiliki nama yang berbeda-beda. 2 modul yang saya miliki (tipe sama) memiliki nama HC-05 dan H-C-2010-06-01. Setelah diklik maka akan ada menu pilihan Pairing Option, pilih “Enter the Device’s Pairing Code” dan isikan “1234”.
  3. Untuk mengecek port yang digunakan maka kembali klik kanan icon Bluetooth Device pada Notification area desktop, pilih Show Bluetooth Device kemudian klik icon modul bluetooth yang digunakan, kemudian klik tab Hardware. Jika belum ada klik tab Services dan klik tanda centang Serial port (SPP) “Dev B”.

  1. Buka perangkat lunak Arduino pilih Tools – Serial Port – Comxx (sesuai yang digunakan oleh modul bluetooth).
  2. Arduino siap diprogram melalui bluetooth J. Serial monitor juga berfungsi normal, hanya dalam program baudrate-nya disesuaikan menjadi 115200.

 

 

Semoga bermanfaat.

 

Referensi :

http://wiki.iteadstudio.com/BT_Shield_%28Master_Slave%29

http://blog.iteadstudio.com/upload-program-to-arduino-with-bt-shield/

http://blog.iteadstudio.com/warless-program-your-iteaduino-bt-2/

http://makezine.com/projects/diy-arduino-bluetooth-programming-shield/

http://forum.arduino.cc/index.php?topic=217884.0

http://forum.arduino.cc/index.php?topic=218049.0

http://www.rcscomponents.kiev.ua/datasheets/hc_hc-05-user-instructions-bluetooth.pdf

 

 

 

 

 

 

 

 

Comments Off on Memprogram Arduino Melalui Bluetooth