Anda di halaman 1dari 41

MODUL PRAKTIKUM

MIKROKONTROLER

Tim penyusun:

1 ACHMAD FAIDI 9 AGUNG RAHARJO


2 IMAM TURMUDZI 10 M. KHOIRUT TAMIMI
3 MAIMUN MAHASINUL KHU 11 LAILY AGUNG KURNIA
4 ATA LUKMAN FADLAH 12 SUHERMANTO
5 ZAINAL ABIDIN 13 FAHRUS SAKARIYA
6 KHOLID AMIN AZZAKY 14 WAHYUNI OKTAFIA
7 IAN FAIZAL I 15 ALVIN SETIYORISMAN
8 AHMAD YUNUS MAULANA A.A. 16 M. FAHMI MAULANA

Dosen pengampu:

ACHMAD FIQHI IBADILLAH, S.T., M.Sc.

PROGRAM STUDI S1 TEKNIK ELEKTRO


FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2017

i
MODUL I
APLIKASI MOTOR STEPPER BERBASIS PASSWORD

1.1. Tujuan
1. Mahasiswa dapat menjalankan progran AVR Studio.
2. Mahasiswa dapat memahami cara pemrograman LCD pada mokrokontroller.
3. Mahasiswa dapat memahami cara pemrograman keypad pada mokrokontroller.
4. Mahasiswa dapat memahami cara pemrograman motor stepper.

1.2. Dasar Teori


1. LCD (Liquid Crystal Display)
LCD merupakan perangkat output yang sering digunakan dalam dunia elektronik. Teknologi
terkini untuk keperluan output sebagian besar sudah menggunakan LCD, baik untuk keperluan
televisi, layar ponsel, osiloskop serta keperluan lain. Bentuk LCD ada berbagai macam baik mulai
dari layar lebar, layar sedang, maupun layar kecil. Untuk aplikasi pada praktikum ini menggunakan
LCD 16x2. Maksudnya LCD ini mempunyai 16 kolom dan 2 baris. LCD ini dapat digunakan
dengan tegangan +5 volt.

Gambar 1.1 LCD jenis 16x2

2. Keypad
Keypad merupakan salah satu jenis tombol switch atau saklar. Untuk penggunaan tombol
sendiri (satu tombol terhubung langsung ke port mikrokontroler yang berguna untuk satu aplikasi)
mempunyai keterbatasan jumlah tombol yang dapat dipakai. Untuk mengatasi keterbatasan
masalah pada pin mikrokontroler yang dihubungkan dengan tombol maka digunakanlah keypad.
Sistem kerja keypad adalah berdasarkan matriks. Ada beberapa keypad, diantaranya adalah keypad
matriks 3x4 dan 4x4. Pada praktikum ini menggunakan keypad tipe 4x4. Dengan teknik matriks
dapat dilakukan penghematan. Untuk matriks 4x4 dapat digunakan aplikasi sebanyak 16 buah.

Gambar 1.2 Keypad jenis 4x4

1
3. Motor Stepper
Aktuator adalah bagian yang berfungsi sebagai penggerak dari perintah yang diberikan oleh
input. Salah satu jenis dari aktuator listrik adalah Motor Stepper. Dimana motor stepper dapat
meningkatkan kecenderungan terhadap kendali digital dari mesin-mesin dan berfungsi
menghasilkan suatu permintaan untuk peranti-peranti mekanis, serta mampu mengirimkan
gerakan-gerakan yang inkremental dengan ketelitian yang dapat diprediksi.
Motor Stepper adalah salah satu alat mesin listrik yang mengubah sinyal-sinyal listrik ke
dalam gerakan-gerakan mekanis diskrit. Batang atau spindel dari suatu motor stepper berputar
disebabkan kenaikan-kenaikan langkah diskrit ketika sinyal listrik berada di dalam urutan yang
tepat. Urutan sinyal pulsa yang diterapkan secara langsung dihubungkan dengan arah rotasi spindle
motor. Kecepatan dari rotasi spindel motor dihubungkan dengan frekuensi dari sinyal masukan
dan panjang rotasi secara langsung berhubungan dengan nomor sinyal masukan.

Gambar 1.3 Motor Stepper 28BYJ-48

Gambar 1.4 Driver Motor Stepper 28BYJ-48

1.3. Alat dan Bahan


1. 1 unit komputer dengan dilengkapi software AVR Studio.
2. 1 unit modul hardware mikrokontroler ATMega16.
3. 1 unit modul LCD 16x2.
4. 1 unit modul Keypad 4x4.
5. 1 unit modul motor stepper dan driver ULN2003APG.
6. 1 unit power supply/adaptor.

1.4. Langkah Percobaan


1. LCD
a. Hubungkan modul LCD dengan Port-B mikrokontroler.
b. Bukalah program AVR Studio.
c. Buatlah project baru dengan ketentuan LCD ke Port-B.
d. Tampilkan kata pada LCD sesuai dengan nama kelompok.
e. Ketiklah inisialisasi LCD dengan program berikut :
2
#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h"

void main()
{
unsigned char i;
LCDInit(LS_BLINK|LS_ULINE);

LCDClear();

LCDWriteString("Congrats ");

LCDWriteStringXY(0,1,"Loading ");

for (i=0;i<99;i+=1)
{
LCDWriteIntXY(9,1,i,3);
LCDWriteStringXY(12,1,"%");
_delay_loop_2(0);
}

LCDClear();
LCDWriteString("Hello world");
LCDWriteStringXY(0,1,"By YourName Here");

for(i=0;i<100;i++) _delay_loop_2(0);

LCDClear();
LCDWriteString(" eXtreme");
LCDWriteStringXY(0,1," Electronics");
}

f. Save, build Active Configuration program tersebut.


g. Unggah program.

2. Keypad
a. Hubungkan kabel alamat aplikasi LCD pada Port-B mikrokontroler.
b. Hubungkan kabel data Keypad pada Port-C mikrokontroler.
c. Buka program AVR Studio.
d. Tampilkan angka sesuai dengan NIM anggota kelompok masing-masing pada LCD.
e. Ketiklah inisialisasi LCD dan Keypad dengan program berikut :
#include<util/delay.h>
#include<stdlib.h>
#include<avr/io.h>
#include<avr/pgmspace.h>
#include<avr/interrupt.h>
#include"lcd.h"

3
#define selamanya for(;;) {;}
#define out_keypad PORTC
#define in_keypad PINC
#define kolom1 3
#define kolom2 2
#define kolom3 1
#define kolom4 0
#define baris1 7
#define baris2 6
#define baris3 5
#define baris4 4

//#define delaykeypad 1
#define kolom1_hi out_keypad|=(1<<kolom1)
#define kolom1_lo out_keypad&=~(1<<kolom1)
#define kolom2_hi out_keypad|=(1<<kolom2)
#define kolom2_lo out_keypad&=~(1<<kolom2)
#define kolom3_hi out_keypad|=(1<<kolom3)
#define kolom3_lo out_keypad&=~(1<<kolom3)
#define kolom4_hi out_keypad|=(1<<kolom4)
#define kolom4_lo out_keypad&=~(1<<kolom4)

uint8_t key1 =1;


uint8_t key2 =2;
uint8_t key3 =3;
uint8_t key4 =4;
uint8_t key5 =5;
uint8_t key6 =6;
uint8_t key7 =7;
uint8_t key8 =8;
uint8_t key9 =9;
uint8_t key0 =0;
uint8_t keyX =1;
uint8_t keyY =2;
uint8_t keyA =3;
uint8_t keyB =4;
uint8_t keyC =5;
uint8_t keyD =6;

void get_keypad()
{
kolom1_lo;kolom2_hi;kolom3_hi;kolom4_hi;
_delay_ms(50);
if(bit_is_clear(in_keypad,baris1))
{
loop_until_bit_is_set(in_keypad,baris1);
LCDClear();
LCDWriteIntXY(7,0,1,2);
}
4
if(bit_is_clear(in_keypad,baris2))
{
loop_until_bit_is_set(in_keypad,baris2);
LCDClear();
LCDWriteIntXY(7,0,4,2);
}
if(bit_is_clear(in_keypad,baris3))
{
loop_until_bit_is_set(in_keypad,baris3);
LCDClear();
LCDWriteIntXY(7,0,7,2);
}
if(bit_is_clear(in_keypad,baris4))
{
loop_until_bit_is_set(in_keypad,baris4);
LCDClear();
LCDWriteStringXY(7,0,"*");
}

//PORTB =0b10111111;
kolom1_hi;kolom2_lo;kolom3_hi;kolom4_hi;
_delay_ms(50);
if(bit_is_clear(in_keypad,baris1))
{
loop_until_bit_is_set(in_keypad,baris1);
LCDClear();
LCDWriteIntXY(7,0,key2,2);
}
if(bit_is_clear(in_keypad,baris2))
{
loop_until_bit_is_set(in_keypad,baris2);
LCDClear();
LCDWriteIntXY(7,0,key5,2);
}
if(bit_is_clear(in_keypad,baris3))
{
loop_until_bit_is_set(in_keypad,baris3);
LCDClear();
LCDWriteIntXY(7,0,key8,2);
}
if(bit_is_clear(in_keypad,baris4))
{
loop_until_bit_is_set(in_keypad,baris4);
LCDClear();
LCDWriteIntXY(7,0,key0,2);
};

//PORTB =0b11011111;
kolom1_hi;kolom2_hi;kolom3_lo;kolom4_hi;
_delay_ms(50);
5
if(bit_is_clear(in_keypad,baris1))
{
loop_until_bit_is_set(in_keypad,baris1);
LCDClear();
LCDWriteIntXY(7,0,key3,2);
}
if(bit_is_clear(in_keypad,baris2))
{
loop_until_bit_is_set(in_keypad,baris2);
LCDClear();
LCDWriteIntXY(7,0,key6,2);
}
if(bit_is_clear(in_keypad,baris3))
{
loop_until_bit_is_set(in_keypad,baris3);
LCDClear();
LCDWriteIntXY(7,0,key9,2);
}
if(bit_is_clear(in_keypad,baris4))
{
loop_until_bit_is_set(in_keypad,baris4);
LCDClear();
LCDWriteStringXY(7,0,"#");
}

kolom1_hi;kolom2_hi;kolom3_hi;kolom4_lo;
_delay_ms(50);
if(bit_is_clear(in_keypad,baris1))
{
loop_until_bit_is_set(in_keypad,baris1);
LCDClear();
LCDWriteStringXY(7,0,"A");
}
if(bit_is_clear(in_keypad,baris2))
{
loop_until_bit_is_set(in_keypad,baris2);
LCDClear();
LCDWriteStringXY(7,0,"B");
}
if(bit_is_clear(in_keypad,baris3))
{
loop_until_bit_is_set(in_keypad,baris3);
LCDClear();
LCDWriteStringXY(7,0,"C");
}
if(bit_is_clear(in_keypad,baris4))
{
loop_until_bit_is_set(in_keypad,baris4);
LCDClear();
LCDWriteStringXY(7,0,"D");
6
}
}

int main()
{
DDRC=0b00001111;
PORTC=0b11111111;

LCDInit(LS_BLINK|LS_ULINE);
LCDClear();
LCDWriteStringXY(5,0,"Keypads");
LCDWriteStringXY(6,1,"4 X 4");
_delay_ms(100);

for(;;)
{
get_keypad();
}
}

f. Save, build Active Configuration program tersebut.


g. Unggah program.

3. Motor Stepper
a. Hubungkan modul Motor Stepper 28BYJ-48 dengan Driver Motor ULN2003APG .
b. Tambahkan tegangan supply sebesar 5-12 V dengan Power Supply/Adaptor.
c. Hubungkan Driver Motor ULN2003APG dengan modul mikrokontroler pada Port-D.
d. Bukalah program AVR Studio.
e. Ketiklah inisialisasi LCD, Keypad dan Motor Stepper dengan program berikut :

#include<util/delay.h>
#include<stdlib.h>
#include<avr/io.h>
#include<avr/pgmspace.h>
#include<avr/interrupt.h>
#include"lcd.h"
#include "xstepper.h"

#define selamanya for(;;) {;}

#define out_keypad PORTC


#define in_keypad PINC
#define kolom1 3
#define kolom2 2
#define kolom3 1
#define kolom4 0
#define baris1 7
#define baris2 6
#define baris3 5
#define baris4 4
7
#define kolom1_hi out_keypad|=(1<<kolom1)
#define kolom1_lo out_keypad&=~(1<<kolom1)
#define kolom2_hi out_keypad|=(1<<kolom2)
#define kolom2_lo out_keypad&=~(1<<kolom2)
#define kolom3_hi out_keypad|=(1<<kolom3)
#define kolom3_lo out_keypad&=~(1<<kolom3)
#define kolom4_hi out_keypad|=(1<<kolom4)
#define kolom4_lo out_keypad&=~(1<<kolom4)

/*uint8_t key1 =1;


uint8_t key2 =2;
uint8_t key3 =3;
uint8_t key4 =4;
uint8_t key5 =5;
uint8_t key6 =6;
uint8_t key7 =7;
uint8_t key8 =8;
uint8_t key9 =9;
uint8_t key0 =0;
uint8_t keyX =1;
uint8_t keyY =2;
uint8_t keyA =3;
uint8_t keyB =4;
uint8_t keyC =5;
uint8_t keyD =6;
*/
uint8_t pas[6];
uint8_t pase[6]={ 1,2,3,4,5,6 } ;

////////////
void stepper()
{
StepperInit();
_delay_loop_2(10000);

while(1)
{

for(uint16_t i=0;i<24*85;i++)
{
StepperStepCW();
_delay_loop_2(10000);
}

for(uint16_t i=0;i<24*85;i++)
{
StepperStepCCW();
_delay_loop_2(10000);
}
}
8
}
///////////

uint8_t get_keypad(void)
{
uint8_t key=100;
kolom1_lo;kolom2_hi;kolom3_hi;kolom4_hi;
_delay_ms(50);

if(bit_is_clear(in_keypad,baris1))
{
loop_until_bit_is_set(in_keypad,baris1);
key=1;
}

if(bit_is_clear(in_keypad,baris2))
{
loop_until_bit_is_set(in_keypad,baris2);
key=4;
}

if(bit_is_clear(in_keypad,baris3))
{
loop_until_bit_is_set(in_keypad,baris3);
key=7;
}

if(bit_is_clear(in_keypad,baris4))
{
loop_until_bit_is_set(in_keypad,baris4);
key=21;
}

kolom1_hi;kolom2_lo;kolom3_hi;kolom4_hi;
_delay_ms(50);

if(bit_is_clear(in_keypad,baris1))
{
loop_until_bit_is_set(in_keypad,baris1);
key=2;
}

if(bit_is_clear(in_keypad,baris2))
{
loop_until_bit_is_set(in_keypad,baris2);
key=5;
}

if(bit_is_clear(in_keypad,baris3))
{
9
loop_until_bit_is_set(in_keypad,baris3);
key=8;
}

if(bit_is_clear(in_keypad,baris4))
{
loop_until_bit_is_set(in_keypad,baris4);
key=0;
};

kolom1_hi;kolom2_hi;kolom3_lo;kolom4_hi;
_delay_ms(50);

if(bit_is_clear(in_keypad,baris1))
{
loop_until_bit_is_set(in_keypad,baris1);
key=3;
}

if(bit_is_clear(in_keypad,baris2))
{
loop_until_bit_is_set(in_keypad,baris2);
key=6;
}

if(bit_is_clear(in_keypad,baris3))
{
loop_until_bit_is_set(in_keypad,baris3);
key=9;
}

if(bit_is_clear(in_keypad,baris4))
{
loop_until_bit_is_set(in_keypad,baris4);
key=20;
}

kolom1_hi;kolom2_hi;kolom3_hi;kolom4_lo;
_delay_ms(50);

if(bit_is_clear(in_keypad,baris1))
{
loop_until_bit_is_set(in_keypad,baris1);
key=12;
}

if(bit_is_clear(in_keypad,baris2))
{
loop_until_bit_is_set(in_keypad,baris2);
10
key=13;
}

if(bit_is_clear(in_keypad,baris3))
{
loop_until_bit_is_set(in_keypad,baris3);
key=14;
}

if(bit_is_clear(in_keypad,baris4))
{
loop_until_bit_is_set(in_keypad,baris4);
key=15;
}
return key;
}

int main()
{
uint8_t keypad,posisi;

DDRC=0b00001111;
PORTC=0b11111111;

LCDInit(LS_BLINK|LS_ULINE);
LCDClear();
_delay_ms(100);
posisi=0;

for(;;)
{
keypad=get_keypad();

if(keypad!= 100 && keypad !=21 && keypad !=20 )


{
if( posisi < 6 ) {
LCDWriteString("*");
pas[posisi]=keypad;
posisi++;
}
_delay_ms(150);
}

if(keypad == 21 )
{
if(posisi != 0) posisi--;
LCDWriteStringXY((posisi),0," ");
LCDWriteStringXY((posisi),0,"");
_delay_ms(150);
}
11
else if(keypad == 20 )
{
if(posisi == 6)
{
if( pas[0] == pase[0] && pas[1] == pase[1] && pas[2] == pase[2]
&& pas[3] == pase[3] && pas[4] == pase[4] && pas[5] == pase[5] )
{
LCDClear();
LCDWriteStringXY(0,0,"Password Benar");
stepper();
}
else
{
LCDClear();
LCDWriteStringXY(0,0,"Password Salah");
}
}
else
{
LCDClear();
LCDWriteStringXY(0,0,"Password Salah");
}
_delay_ms(150);
}
}
}

f. Save, build Active Configuration program tersebut.


g. Unggah program.

12
1.5. Percobaan Modul
1. Percobaan LCD
Tampilan Sketsa LCD 16x2:

Foto Tampilan LCD 16x2:

2. Percobaan LCD dan Keypad


Tampilan Sketsa LCD 16x2:

Foto Tampilan LCD 16x2:

13
3. Percobaan LCD, Keypad dan Motor Stepper
Foto Tampilan LCD 16x2 (Input Password):

Foto Tampilan LCD 16x2 (Password Salah):

Apa yang terjadi pada Motor Stepper ?

Foto Tampilan LCD 16x2 (Password Benar):

Apa yang terjadi pada Motor Stepper ?

1.6. Tugas Modul


Buatlah contoh program Save Password dengan EEPROM pada mikrokontroler menggunakan
software AVR Studio ! Lampirkan Source Codenya !

14
MODUL II
PENGONTROLAN MAGNETIC DOOR LOCK BERBASIS RFID MIFARE RC522

2.1 Tujuan Praktikum


1. Mahasiswa mampu membuat dan memahami source code untuk RFID Mifare RC522
menggunakan software WinAVR.
2. Mahasiswa mampu memahami pengendalian perangkat RFID Mifare RC522 untuk prototype door
lock.
3. Mahasiswa mampu mengaplikasikan dan mengembangkan penggunaan modul RFID Mifare
RC522 dalam dunia nyata.

2.2 Dasar Teori


1. RFID Mifare RC522
RFID adalah proses identifikasi frekuensi gelombang radio. RFID menggunakan frekuensi
radio untuk membaca informasi dari sebuah alat yang disebut RFID Tag Card.
RFID merupakan teknologi identifikasi yang fleksibel, mudah digunakan dan sangat cocok
untuk oprasi otomatis. RFID mengkombinasikan keunggulan yang tidak tersedia pada teknologi
identifikasi yang lain. RFID dapat disediakan dalam alat yang hanya dapat dibaca saja (Read
Only ) atau dibaca dan ditulis ( Read/Write ), tidak memerlukan kontak langsung maupun jalur
cahaya untuk dapat beroprasi, dapat berfungsi pada berbagai variasi kondisi lingkungan, dan
menyediakan tingkat integrasi data yang tinggi.

Gambar 2.1 RFID MIFARE RC522.

Mifare RC522 RFID Reader Module adalah sebuah modul berbasis IC Philips MFRC522
yang dapat membaca RFID dengan penggunaan yang mudah dan harga yang murah, karena modul
ini sudah berisi komponen-komponen yang diperlukan oleh MFRC522 untuk dapat bekerja.
Modul ini dapat digunakan langsung oleh MCU dengan menggunakan interface SPI, dengan
suplai tegangan sebesar 3,3V. MFRC522 merupakan produk dari NXP yang menggunakan fully
integrated 13.56MHz non-contact communication card chip untuk melakukan pembacaan maupun
penulisan. MFRC522 support dengan semua varian MIFARE Mini, MIFARE 1K, MIFARE 4K,
MIFARE Ultralight, MIFARE DESFire EV1 and MIFARE Plus RF identification rotocols.
RFID Tag Card adalah alat yang dibuat dari rangkaian elektronika dan antena yang
terintergrasi didalam rangkaian tersebut. Rangkaian elektronik dari RFID Tag Card umumnya
memiliki memori sehingga Tag Card ini mempunyai kemampuan untuk menyimpan data.
Berdasarkan catu daya, RFID Tag Card digolongkan menjadi:
1. Tag Card Aktif
Tag ini dapat dibaca (Read) dan ditulis (Write). Baterai yang terdapat didalam tag
ini digunakan untuk memancarkan gelombang radio kepada reader sehingga reader
dapat membaca data yang terdapat pada tag ini.

15
2. Tag Card Pasif
Tag ini hanya dapat dibaca saja (Read) dan tidak memiliki internal baterai seperti
halnya tag aktif. Sumber tegangan untuk mengaktifkan tag ini didapat dari RFID
reader.
Tag ini bekerja saat antena mendapatkan sinyal dari reader RFID dan sinyal tersebut akan
dipantulkan lagi, sinyal pantul ini biasanya sudah ditambahkan dengan data yang dimiliki tag
tersebut. RFID tag ukurannya dapat berbeda-beda, pada umumnya kecil. Beberapa jenis tag yang
sudah diproduksi terlihat pada Gambar 2.4, yang diantaranya adalah :
a. Tag berbentuk disk atau koin.
b. Tag dari bahan kaca.
c. Tag dari bahan plastic.
d. Tag yang ditanamkan ke dalam metal, kunci ,dsb.

Gambar 2.2 Contoh RFID Tag.


2. Magnetic Door Lock
Electric Lock secara sederhana adalah kunci yang digerakan oleh arus listrik.
Umumnya Electric Lock yang ada saat ini digerakkan oleh listrik 12 VDC atau 24 VAC. Electric
Lock merupakan kebutuhan bangunan modern yang memungkinkan pengelolaan access
control secara lebih terpadu, lebih aman, dan lebih efisien. Electric Lock memungkinkan
pengelola bangunan untuk mengunci dan membuka pintu tanpa harus menggunakan kunci
(Keyless Access). Untuk mengatur mekanisme kerja dari electric lock ini maka dibutuhkan
perangkat yang lebih dikenal dengan Door Access Control System. Dimana Electrick Lock sendiri
adalah salah satu komponen dari suatu access control system.
Jenis Electric Lock berdasarkan tipe proteksi:
a. Fail Safe: Electric Lock yang memberikan proteksi jika terdapat aliran listrik. Lock jenis ini
umumnya digunakan pada ruangan yang memiliki intensitas kegiatan / aktifitas manusia cukup
tinggi. Dengan menggunakan lock ini, pintu akan otomatis terbuka pada saat emergency (aliran
listrik padam), sehingga orang yang berada di dalam ruangan dapat keluar pada saat terjadi
emergency seperti kebakaran.
b. Fail Secure: Electric Lock yang memberikan proteksi jika terjadi pemutusan aliran listrik. Lock
jenis ini umumnya digunakan pada ruangan yang memiliki tingkat aktifitas manusia yang
rendah dan diisi oleh barang barang yang sangat berharga. Dengan menggunakan lock ini,
pintu akan otomatis tertutup pada saat emergency (aliran listrik padam). Lock jenis ini
umumnya digunakan pada tempat seperti gudang dan lemari penyimpanan.

Gambar 2.3 Contoh Magnetic Door Lock.

16
3. Microcontroller ATMega 16
Mikrokontroler adalah sebuah sistem komputer lengkap dalam satu serpih (chip).
Mikrokontroler lebih dari sekedar sebuah mikroprosesor karena sudah terdapat atau
berisikan ROM (Read-Only Memory), RAM (Read-Write Memory), beberapa port masukan
maupun keluaran, dan beberapa peripheral seperti pencacah/pewaktu, ADC (Analog to Digital
converter), DAC (Digital to Analog converter) dan serial komunikasi.

Gambar 2.4 Pin-pin Atmega 16

2.3 Alat dan Bahan


1. Modul praktikum microcontroller.
2. PC/laptop yang sudah terinstal dengan software WinAVR dan aplikasi Progisp.
3. Modul microcontroller ATMega16.
4. Downloader ISP.
5. LCD 16 x 2.
6. RFID Mifare RC522.
7. Library lcd dan RFID Mifare RC522 untuk WinAVR (mfrc522 dan spi).
8. Magnetic door lock.
9. Minimum sytem DC 5V to 3,3V.
10. Modul switch mosfet IRF Z44 12 V.
11. Kabel jumper.
12. DC Voltage Source/Baterai 12 V.
13. Arduino Uno (kondisional).

17
2.4 Langkah Percobaan
1. Rangkaialah modul LCD dengan modul RFID Mifare RC522 dengan modul ATMega16
menggunakan kabel jumper dengan pengkonfigurasian seperti berikut.

Untuk modul RFID Mifare RC522 tegangan yang dipakai adalah 3,3V yang disuplai dari
minimum system atau sebagai gantinya dari Arduino (kondisional).

2. Hubungkan kabel Magnetic Door Lock dengan pengkonfigurasian positif dengan positif pada
sumber 12 V dan negatif dengan modul switching.
3. Hidupkan PC/Laptop kemudian buka aplikasi WinAVR.
4. Buatlah project baru beserta pembuatan folder baru secara otomatis dengan pengkonfigurasian
seperti berikut.

Dengan project type AVR GCC, kemudian klik next.


18
Pilih debug platform AVR Simulator dan device ATmega16, kemudian finish.

5. Pada menu project buka configuration option, kemudian ubah frequency menjadi 8000000 Hz
dan device atmega16 kemudian klik OK, seperti berikut.

6. Buka Windows Explorer, kemudian copy-kan semua library (LCD dan RFID Mifare RC522)
kedalam folder project WinAVR yang sudah kita buat.

19
7. Masukkan library dan header program dengan cara menginputkan ke WinAVR dari folder project
yang sudah dibuat, seperti berikut.

Untuk Source Files inputkan semua file yang ber-ekstensi .c kecuali nama main program project
yang sudah ada. Dan untuk Header Files inputkan semuafile yang ber-ekstensi .h.

2.5 Percobaan Modul


1. Percobaan pertama.
1. Masukkan source code berikut pada main program.
#include <avr/io.h>
#include <util/delay.h>
#include lcd.h
#include utils.h
#include spi.h
#include mfrc522.h

uint8_t SelfTestBuffer[64];

int main()
{
uint8_t byte;
_delay_ms(50);
LCDInit(LS_BLINK);
LCDWriteStringXY(2,0,"RFID Reader");
LCDWriteStringXY(5,1,VERSION_STR);

spi_init();
_delay_ms(1000);
LCDClear();
LCDWriteStringXY(0,0,"FIFO Data : 0x");

mfrc522_reset();
for(byte = 0 ; byte<25; byte ++)
mfrc522_write(FIFODataReg,0x00);
mfrc522_write(CommandReg,Mem_CMD);
mfrc522_write(AutoTestReg,0x09);
20
mfrc522_write(FIFODataReg,0x00);
mfrc522_write(CommandReg,CalcCRC_CMD);
_delay_ms(500);
for(byte = 0; byte< 64; byte++)
{
SelfTestBuffer[byte] = mfrc522_read(FIFODataReg);
LCDHexDumpXY(14,0,SelfTestBuffer[byte]);
_delay_ms(1500);
}

while(1){}
}

2. Kemudian Build and Run yang bisa ditemukan pada menu Build. Jika terjadi Error maka
selesaikan hingga benar-benar tidak ada error.
3. Hubungkan Downloader ISP dengan PC/Lapto dan microcontroller.
4. Unduhkan program dengan cara membuka aplikasi Progisp kemudian secara otomatis
program akan menginisialisasi device. Kemudian buka program yang sudah di buat pada
folder project dengan cara mengeklik Load Flash dan pilih program yang ber-ekstensi .hex.
Kemudian unduh dengan cara mengeklik tombol Auto.

5. Dekatkan Tag Card RFID.


6. Tinjau apa yang terjadi baik pada LCD maupun pada magnetic door lock.

2. Percobaan kedua.
1. Masukkan source code berikut pada main program.
#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h"
#include "utils.h"
#include "spi.h"
#include "mfrc522.h"

21
uint8_t SelfTestBuffer[64];
int main()
{
uint8_t byte;
uint8_t str[MAX_LEN];
_delay_ms(50);
LCDInit(LS_BLINK);
LCDWriteStringXY(1,0,">>RFID Reader<<");
LCDWriteStringXY(5,1,byte);

spi_init();
_delay_ms(1000);
LCDClear();

//init reader
mfrc522_init();

//check version of the reader


byte = mfrc522_read(VersionReg);
if(byte == 0x92)
{
LCDWriteStringXY(2,0,"MIFARE RC522v2");
LCDWriteStringXY(4,1,"Detected");
}else if(byte == 0x91 || byte==0x90)
{
LCDWriteStringXY(2,0,"MIFARE RC522v1");
LCDWriteStringXY(4,1,"Detected");
}else
{
LCDWriteStringXY(0,0,"No reader found");
}

byte = mfrc522_read(ComIEnReg);
mfrc522_write(ComIEnReg,byte|0x20);
byte = mfrc522_read(DivIEnReg);
mfrc522_write(DivIEnReg,byte|0x80);

_delay_ms(1500);
LCDClear();

while(1){
byte = mfrc522_request(PICC_REQALL,str);
LCDHexDumpXY(0,0,byte);
_delay_ms(1000);
}
}

2. Lakukan langkah-langkah seperti sub point 2-6 pada point h langkah percobaan.

22
3. Percobaan ketiga.
1. Masukkan source code berikut pada main program.
#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h"
#include "utils.h"
#include "spi.h"
#include "mfrc522.h"

uint8_t SelfTestBuffer[64];

int main()
{
uint8_t byte;
uint8_t str[MAX_LEN];
_delay_ms(50);
LCDInit(LS_BLINK);
LCDWriteStringXY(2,0,"RFID Reader");
LCDWriteStringXY(5,1,VERSION_STR);

spi_init();
_delay_ms(1000);
LCDClear();

//init reader
mfrc522_init();

//check version of the reader


byte = mfrc522_read(VersionReg);
if(byte == 0x92)
{
LCDWriteStringXY(2,0,"MIFARE RC522v2");
LCDWriteStringXY(4,1,"Detected");
}else if(byte == 0x91 || byte==0x90)
{
LCDWriteStringXY(2,0,"MIFARE RC522v1");
LCDWriteStringXY(4,1,"Detected");
}else
{
LCDWriteStringXY(0,0,"No reader found");
}

byte = mfrc522_read(ComIEnReg);
mfrc522_write(ComIEnReg,byte|0x20);
byte = mfrc522_read(DivIEnReg);
mfrc522_write(DivIEnReg,byte|0x80);

_delay_ms(1500);
LCDClear();
23
while(1){
byte = mfrc522_request(PICC_REQALL,str);
LCDHexDumpXY(0,0,byte);

if(byte == CARD_FOUND)
{
byte = mfrc522_get_card_serial(str);
if(byte == CARD_FOUND)
{
for(byte=0;byte<8;byte++)
LCDHexDumpXY(byte*2,0,str[byte]);

_delay_ms(2500);
}
else
{
LCDWriteStringXY(0,1,"Error");
}
}

_delay_ms(1000);
}
}
2. Lakukan langkah-langkah seperti sub point 2-6 pada point 2.4 langkah percobaan.

2.6 Tugas Modul


1. Buatlah flowchart mengenai pengontrolan magnetic door lock berbasis RFID Mifare RC522
seperti yang sudah dipraktikan pada percobaan terakhir?
2. Dari program dibawah ini :
if(byte == 0x92)
{
LCDWriteStringXY(2,0,"MIFARE RC522v2");
LCDWriteStringXY(4,1,"Detected");
}
Coba terangkan apa fungsi kode byte dari contoh program diatas!

24
MODUL III
IMPLEMENTASI SENSOR ULTRASONIK PADA MOBIL ROBOT

3.1. Tujuan
1. Praktikan bisa memahami konsep kerja dari sensor jarak ultrasonik
2. Praktika mampu menggunakan sensor ultrasonik HC-SR04.
3. Praktika bisa memahami cara kerja dari driver motor dc.
3.2. Dasar Teori
1. Sensor ultrasonik
Sensor Ultrasonik adalah salah satu jenis sensor yang berfungsi untuk mengukur jarak suatu
benda dari sensor tersebut. secara garis besar prinsip sensor tersebut seperti navigasi hewan
kelelawar, yaitu denga prinsip ekolokasi. Prinsip ekolokasi yaitu dengan memantulkan gelombang
suara dengan suatu benda dan hasil pantulan tersebut diterima kembali sebagai suatu informasi.
Sensor ultrasonik berbentuk papan elektronik ukuran kecil dengan beberapa rangkaian elektronik
dan dua buah transduser. Dari dua buah transduser ini, salah satu berfungsi sebagai transmitter dan
satu lagi sebagai receiver. Tersedia pin VCC, TRIG, ECHO, dan GND.

Gambar 3.1 Bentuk Fisik Ultrasonik

Spesifiksi sensor ultrasonik:


- Gelombang ultrasonik yang dipancarkan memiliki kecepatan rambat sebesar343m/s (kecepatan
dari gelombang suara), nilai tersebut tidak lebih cepat dari kecepatan kerja dari MCU sehingga
menghasikan pengukuran yang akurat.
Cara akses sensor ultrasonik dengan mikrokontroler
- Hubungkan TRIG (triger) pada pin mikrokontroler atur pin tersebut sebagai output.
- Hubungkan ECHO pada pin mikrokontroler yang lain atur pin tersebut sebagai input.

Berikut ini diagram waktu dari penggunaan sensor ini:

Gambar 3.2 Diagram waktu sensor US

25
TRIG bangkitkan pulsa pendek sepanjang 10uS sebagai sinyal pemicu ke pin picu masukan
dari sensor untuk mulai pendeteksi (catat waktu saat ini), HC-SR04 akan memancarkan 8 siklus
gelombang ultrasonik pada frekuensi 4KHz. Saat gelombang ini menabrak object (benda atau
dinding di depannya ), gelombang akan dipantulkan kembali dan diterima oleh detektor yang
kemudian membangkitkan sinyal deteksi di pin keluaran sensor (ECHO). Lama selang waktu
antara pengiriman signal hingga pendeteksi signal pantulan adalah waktu yang ditempuh
gelombang suara , yaitu sepanjang dua kali jarak antara sensor dan object yang terdeteksi karena
signal berjalan pulang-pergi dengan mengetahui selang waktu ini dan kecepatan rambat suara di
udara (343m/s pada udara kering), jarak dapat dihitung sesuai rumus
Jarak = kecepatan x waktu
Jika waktu yang digunakan adalah mikro sekon maka jarak dapat ditentukan dengan rumus sebagai
berikut:
Jarak (cm) = waktu/58
Jarak (inchi) = waktu/148
2. Driver Motor L298N
Rangkaian driver motor DC dengan IC L298D dapat digunakan untuk mengendalikan motor
DC dengan arus maksimum hingga 4A. Dengan IC driver motor DC L298D dapat digunakan untuk
mngendalikan 2 buah motor DC sekaligus secara independent. Kemampuan tiap driver motor DC
dalam IC L298D ini adlah 4A untuk masing-masing drivernya. IC L298 adalah driver motor DC
H-Bridge dengan 2 unit driver didalam 1 chip IC. IC L298 sendiri adalah sebuah IC H-bridge yang
mampu mengendalikan beban-beban induktif seperti relay, solenoid, motor DC dan motor stepper.
IC L298 mempunyai 2 buah H-bridge di dalamnya sehingga bisa mengendalikan kecepatan dan
arah 2 buah motor DC dengan arus 2 Amps setiap H-bridge nya. Kedua H bridge di dalam IC ini
bisa di parallel untuk meningkatkan kemampuan menopang arus mencapai 4 Amp. Feature yang
dimiliki IC driver motor DC L298 sesuai datasheet adalah :
a. Operating Supply Voltage Up To 46 V
b. Total Dc Current Up To 4 A
c. Low Saturation Voltage
d. Overtemperature Protection
e. Logical 0 Input Voltage Up To 1.5 V
f. (High Noise Immunity)

Gambar 3.3 Driver Motor L298N

26
Berikut adalah konfigurasi pin pada driver L298
1. DC motor 1 + atau stepper motor A+
2. DC motor 1 - atau stepper motor A-
3. 12V jumper lepaskan jumper ini jika menggunakan sumber lebih dari 12 V DC. Ini
memungkinkan sumber dari regulator pada Arduino 5V.
4. Hubungkan sumber tegangan motor disini, maksimum 35 V DC. Lepaskan 12V jumperV
jika >12V.
5. GND
6. 5V output jika 12V jumper digunakan, ideal untuk mensuplai Arduino Anda(etc).
7. DC motor 1 enable jumper. Lepaskan ini ketika menggunakan stepper motor. Hubungkan ke
keluaran PWM untuk menatur kecepatan motor.
8. IN1
9. IN2
10. IN3
11. IN4
12. DC motor 2 enable jumper. Lepaskan ini ketika menggunakan stepper motor. Hubungkan ke
keluaran PWM untuk menatur kecepatan motor.
13. DC motor 2 + or stepper motor B+
14. DC motor 2 - or stepper motor B-

3. PWM (Pulse Width Modulation)


PWM, Pulse-Width Modulation, adalah salah satu jenis modulasi. Modulasi PWM
dilakukan dengan cara mengubah lebar pulsa dari suatu pulsa data. Total 1 perioda (T) pulsa dalam
PWM adalah tetap, dan data PWM pada umumnya menggunakan perbandingan pulsa positif
terhadap total pulsa.

Gambar 3.4 PWM = 50%.

Gambar 3.5 PWM = 30%.

Gambar 3.6 PWM = 60%.

27
Aplikasi dari PWM
1. PWM sebagai data keluaran suatu perangkat. PWM dapat digunakan sebagai data dari suatu
perangkat, data direpresentasikan dengan lebar pulsa positif (Tp).
2. PWM sebagai data masukan kendali suatu perangkat. Selain sebagai data keluaran, PWM pun
dapat digunakan sebagai data masukan sebagai pengendali suatu perangkat. Salah satu
perangkat yang menggunakan data PWM sebagai data masukannya adalah Motor DC Servo.
Motor DC Servo itu sendiri memiliki dua tipe: 1. Kontinyu, 2. Sudut. Pada tipe 1., PWM
digunakan untuk menentukan arah Motor DC Servo, sedangkan pada tipe 2, PWM digunakan
untuk menentukan posisi sudut Motor DC Servo.
3. PWM sebagai pengendali kecepatan Motor DC bersikat. Motor DC bersikat atau Motor DC
yang biasa ditemui di pasaran yang memiliki kutub A dan kutub B yang jika diberikan beda
potensial diantara kedua-nya, maka Motor DC akan berputar. Pada prinsipnya Motor DC jenis
ini akan ada waktu antara saat beda potensial diantara keduanya dihilangkan dan waktu
berhentinya. Prinsip inilah yang digunakan untuk mengendalikan kecepatan Motor DC jenis ini
dengan PWM, semakin besar lebar pulsa positif dari PWM maka akan semakin cepat putaran
Motor DC. Untuk mendapatkan putaran Motor DC yang halus, maka perlu dilakukan
penyesuaian Frekuensi (Perioda Total) PWM-nya.

4. LCD (Liquid Cystal Display)


Layar LCD merupakan suatu media penampilan data yang sangat efektif dan efisien dalam
penggunaannya. Untuk menampilkan sebuah karakter pada layar LCD diperlukan beberapa
rangakaian tambahan. Untuk lebih memudahkan para pengguna, maka beberapa perusahaan
elektronik menciptakan modul LCD. Adapun bentuk fisik LCD 16x2 seperti pada Gambar 7.

Gambar 3.7 Bentuk fisik LCD 16x2


LCD dibagi menjadi dua bagian yaitu bagian depan panel LCD yang terdiri dari banyak dot
atau titik LCD dan mikrokontroler yang menempel pada bagian belakang panel LCD yang
berfungsi untuk mengatur titik-titik LCD sehingga dapat menampilkan huruf, angka, dan simbol
khusus yang dapat terbaca. Pengendali / Kontroler LCD (Liquid Cristal Display) Dalam modul
LCD (Liquid Cristal Display) terdapat microcontroller yang berfungsi sebagai pengendali
tampilan karakter LCD (Liquid Cristal Display). Microntroller pada suatu LCD (Liquid Cristal
Display) dilengkapi dengan memori dan register. Memori yang digunakan microcontroler internal
LCD adalah :
- DDRAM (Display Data Random Access Memory) merupakan memori tempat karakter yang
akan ditampilkan berada.
- CGRAM (Character Generator Random Access Memory) merupakan memori untuk
menggambarkan pola sebuah karakter dimana bentuk dari karakter dapat diubah-ubah sesuai
dengan keinginan.
- CGROM (Character Generator Read Only Memory) merupakan memori untuk
menggambarkan pola sebuah karakter dimana pola tersebut merupakan karakter dasar yang
sudah ditentukan secara permanen oleh pabrikan pembuat LCD (Liquid Cristal Display)
tersebut sehingga pengguna tinggal mangambilnya sesuai alamat memorinya dan tidak dapat
merubah karakter dasar yang ada dalam CGROM.

28
- Register perintah yaitu register yang berisi perintah-perintah dari mikrokontroler ke panel LCD
(Liquid Cristal Display) pada saat proses penulisan data atau tempat status dari panel LCD
(Liquid Cristal Display) dapat dibaca pada saat pembacaan data.
- Register data yaitu register untuk menuliskan atau membaca data dari atau keDDRAM.
Penulisan data pada register akan menempatkan data tersebut keDDRAM sesuai dengan alamat
yang telah diatur sebelumnya.

Fungsi Pin-Pin LCD


Modul LCD berukuran 16 karakter x 2 baris dengan fasilitas backlighting memiliki 16 pin
yang terdiri dari 8 jalur data, 3 jalur kontrol dan jalur-jalur catu daya, dengan fasilitas pin yang
tersedia maka lcd 16 x 2 dapat digunakan secara maksimal untuk menampilkan data yang
dikeluarkan oleh mikrokontroler, secara ringkas fungsi pin-pin pada LCD dituliskan pada tabel.
PIN NUMBER SYMBOL FUNCTION
1 Vss GND
2 Vdd +3V or +5V
3 Vo Contrast Adjustment
4 RS H/L Register Select Signal
5 R/W H/L Read/Write Signal
6 E HL Enable Signal
7 DB0 H/L Data Bus Line
8 DB1 H/L Data Bus Line
9 DB2 H/L Data Bus Line
10 DB3 H/L Data Bus Line
11 DB4 H/L Data Bus Line
12 DB5 H/L Data Bus Line
13 DB6 H/L Data Bus Line
14 DB7 H/L Data Bus Line
15 A/Vee +4.2V for LED/Negative Voltage Output
16 K Power Supply for B/L (OV)
Tabel 3.1 Konfigurasi pin LCD 16x2

Sedangkan secara umum pin-pin LCD diterangkan sebagai berikut :


Pin 1 dan 2
Merupakan sambungan catu daya, Vss dan Vdd. Pin Vdd dihubungkan dengan tegangan
positif catu daya, dan Vss pada 0V atau ground. Meskipun data menentukan catu 5 Vdc (hanya
pada beberapa mA), menyediakan 6V dan 4.5V yang keduanya bekerja dengan baik, bahkan 3V
cukup untuk beberapa modul.
Pin 3
Pin 3 merupakan pin kontrol Vee, yang digunakan untuk mengatur kontras display. Idealnya
pin ini dihubungkan dengan tegangan yang bisa dirubah untuk memungkinkan pengaturan
terhadap tingkatan kontras display sesuai dengan kebutuhan, pin ini dapat dihubungkan dengan
variable resistor sebagai pengatur kontras.
Pin 4
Pin 4 merupakan Register Select (RS), masukan yang pertama dari tiga command control
input. Dengan membuat RS menjadi high, data karakter dapat ditransfer dari dan menuju
modulnya.
Pin 5
Read/Write (R/W), untuk memfungsikan sebagai perintah write maka R/W low atau menulis
karakter ke modul. R/W high untuk membaca data karakter atau informasi status dari register-nya.
Pin 6

29
Enable (E), input ini digunakan untuk transfer aktual dari perintah-perintah atau karakter
antara modul dengan hubungan data. Ketika menulis ke display, data ditransfer hanya pada
perpindahan high atau low. Tetapi ketika membaca dari display, data akan menjadi lebih cepat
tersedia setelah perpindahan dari low ke high dan tetap tersedia hingga sinyal low lagi.
Pin 7-14
Pin 7 sampai 14 adalah delapan jalur data/data bus (D0 sampai D7) dimana data dapat
ditransfer ke dan dari display.
Pin 16
Pin 16 dihubungkan kedalam tegangan 5 Volt untuk memberi tegangan dan menghidupkan
lampu latar/Back Light LCD.

Pengalamatan LCD
Pengalamatan LCD dimulai dengan menghidupkan modul LCD, karakter kursor pada LCD
diposisikan pada awal baris pertama (alamat 00H). Masing-masing sewaktu sebuah karakter
dimasukkan, kursor bergerak ke alamat selanjutnya 01H, 02H dan seterusnya. Sebuah alamat awal
yang baru bergerak ke alamat selanjutnya, harus dimasukkan sebagai sebuah perintah. Dengan
cara mengirimkan sebuah perintah Set Display Address, nilai 80H. Dengan dua line karakter, baris
yang pertama dari karakter, baris pertama mulai pada alamat 00H dan baris ke dua pada alamat
40H. Hubungan antara tata letak alamat-alamat terlihat pada Gambar 8 berikut ini.

Gambar 3.8 Pengalamatan LCD


Pin data adalah jalur untuk memberikan data karakter yang ingin ditampilkan menggunakan
LCD (Liquid Cristal Display) dapat dihubungkan dengan bus data dari rangkaian lain seperti
mikrokontroler dengan lebar data 8 bit. Pin RS (Register Select) berfungsi sebagai indikator atau
yang menentukan jenis data yang masuk, apakah data atau perintah. Logika low menunjukan yang
masuk adalah perintah, sedangkan logika high menunjukan data. Pin R/W (Read Write) berfungsi
sebagai instruksi pada modul jika low tulis data, sedangkan high baca data. Pin E (Enable)
digunakan untuk memegang data baik masuk atau keluar. Pin VLCD berfungsi mengatur
kecerahan tampilan (kontras) dimana pin ini dihubungkan dengan trimpot 5 Kohm, jika tidak
digunakan dihubungkan ke ground, sedangkan tegangan catu daya ke LCD sebesar 5 Volt.

3.3. Alat dan Bahan


a. Sensor ultrasonik HC-SR04.
b. Driver L298D.
c. Kit mikrokontroler ATMEGA16.
d. Kit mobile robot.
e. LCD.
f. Kabel jumper.

30
3.4. Langkah Percobaan
1. Koneksi driver L298D dengan mikrokontroler dengan kofigurasi sebagai berikut:
Diver L298D Mikrokontroler
IN 1 PORT A1
IN 2 PORT A2
IN 3 PORT A4
IN 4 PORT A5
EN 1 PORT B3
EN 2 PORT D7

2. Koneksi LCD dengan mikrokontroler dengan kofigurasi sebagai berikut:


LCD Mikrokontroler
RW PORT B0
RS PORT B2
EN PORT C7
D4 PORT D3
D5 PORT D4
D6 PORT D5
D7 PORT D6

3. Koneksi sensor ultrasonik dengan mikrokontroler dengan konfigurasi sebagai berikut:


Ultrasonik Mikrokontroler
VCC VCC
TRIGGER PC0
ECHO PC1
GND GND

4. Masukkan program pada mikrokontroler.

3.5. Percoban Modul


1. Atur program, rubah variable jarak_min dengan nilai 3, kemudian rubah jarak_max dengan nilai
5, 10, dan 15 secara bertahap. Amati apa yang terjadi kemudian analisa.
2. Atur program, rubah variable jarak_max dengan nilai 20, kemudian rubah jarak_min dengan nilai
18, 12, dan 6 secara bertahap. Amati apa yang terjadi kemudian analisa.

3.6. Tugas Modul


1. Buatlah program agar pergerakan robot tetap pada jarak 12-15 cm dari dinding atau halangan di
dpannya.
2. Buatlah program apabila jarak robot dengan halangan didepannya kurang dari 20 cm, maka robot
berhenti.
3. Buatlah program apabila jarak robot dengan halangan didepannya kurang dari 20 cm, maka robot
belok kiri atau belok kanan kemudian jalan kembali.

31
MODUL IV
PENENTUAN LOKASI
MENGGUNAKAN GPS U-blox NEO -6M

4.1. Tujuan
1. Mahasiswa dapat memahami struktur data yang dihasilkan oleh GPS U-blox NEO -6M.
2. Mahasiswa dapat menampilkan data dari GPS pada LCD 16x2.
3. Mahasiswa dapat menampilkan data dari GPS pada Serial Monitor menggunakan Hyperterminal.
4.2. Dasar Teori
GPS U-blox NEO -6M
Global Positioning System (GPS) adalah sistem untuk menentukan letak di permukaan bumi
dengan bantuan penyelarasan (synchronization) sinyal satelit. Sistem ini menggunakan 24 satelit
yang mengirimkan sinyal gelombang mikro ke Bumi. Sinyal ini diterima oleh alat penerima di
permukaan, dan digunakan untuk menentukan letak, kecepatan, arah, dan waktu. GPS Tracker atau
sering disebut dengan GPS Tracking adalah teknologi AVL (Automated Vehicle Locater) yang
memungkinkan pengguna untuk melacak posisi kendaraan, armada ataupun mobil dalam keadaan
Real-Time. GPS Tracking memanfaatkan kombinasi teknologi GSM dan GPS untuk menentukan
koordinat sebuah objek, lalu menerjemahkannya dalam bentuk peta digital.
Pada praktikum ini digunakan sensor GPS U-blox NEO -6M dengan spesifikasi sebagai berikut:
Input tegangan : 5 V
Oscillator : Crystal
Akurasi posisi : GPS (toleransi error 2.5 m)
Interface : UART, USB, SPI dan I2C

Gambar 4.1 U-blox GPS

KOORDINAT GEOGRAFI BUMI


Sistem koordinat geografi bumi digunakan untuk menunjukkan suatu titik di Bumi berdasarkan
garis lintang dan garis bujur atau yang biasa disebut dengan Latitude dan Longitude.
Latitude adalah garis lintang yang mengarah dari khatulistiwa (0) ke kutub selatan (-90), atau
khatulistiwa ke kutub utara (90). Titik 0 adalah sudut ekuator atau khatulistiwa, tanda + menunjukan
arah ke atas menuju kutub utara, sedangkan tanda minus di koordinat Latitude menuju ke kutub

32
selatan. Titik yang dipakai adalah dari 0 ke 90 derajat ke arah kutub utara, dan 0 ke -90 derajat ke
kutub selatan.
Longitude adalah garis bujur atau garis yang ditarik dari kutub utara hingga ke kutub selatan
atau sebaliknya dengan titik awal dari greenwich dengan 0 derajat sampai ke hawai 180 derajat dan
dari greenwich dengan arah sebaliknya akan menjadi -180 derajat.

4.3. Alat dan Bahan


1. Laptop yang telah terinstall AVR Studio, Extreme Burner, Hiperterminal dan Converter GPS.
2. Modul mikrokontroller Atmega 16.
3. U-block NEO-6M GPS
4. Kabel Jumper
5. USB Downloader
6. USB to TTL

4.4. Langkah Percobaan


1. Buka aplikasi AVR Studio.
2. Buat project baru dengan format penamaan namakelompok dalam folder "namakelompok".
3. Salin paket file library modul 4 ke dalam folder project, kemudian panggil file library .c dan .h ke
dalam project AVR Studio.
4. Ketiklah program untuk GPS.
5. Jalankan program kemudian upload ke dalam mikrokontroller.

4.5. Percobaan Modul


1. Tampilkan data serial GPS sebelum diparsing menggunakan USB to TTL dan aplikasi
Hyperterminal !
2. Ambil 4 titik lokasi yang berbeda dari beberapa titik yang telah ditentukan, lalu tampilkan data
Lattitude dan Longitude GPS pada LCD 16x2 !

33
3. Konversi nilai GPS menjadi format degreess menggunakan Aplikasi Konverter GPS, kemudian
masukkan nilai Lattitude dan Longitude pada Google Map. Terakhir bandingkan hasilnya dengan
posisi pengambilan data sebenarnya !

4.6. Tugas Modul


1. Ubah tampilan Lattitude dan Longitude menjadi Date dan Time, kemudian tampilkan pada LCD
16x2 !
2. Buatlah program untuk menampilkan data serial berikut ini:
TEAM DATE TIME LATTITUDE LONGITUDE ALTITUDE
USB 09/16/16 08:35:59 4717.11437 N 00833.91522 E 10 METER
USB 09/16/16 08:35:59 4717.11437 N 00833.91522 E 10 METER
USB 09/16/16 08:35:59 4717.11437 N 00833.91522 E 10 METER
USB 09/16/16 08:35:59 4717.11437 N 00833.91522 E 10 METER
*** ****** ****** *********** ************ *********

34
MODUL V
IMPLEMENTASI SENSOR SUHU DAN KELEMBAPAN DHT11

5.1. Tujuan Praktikum


1. Mahasiswa memahami prinsip kerja sensor suhu dan kelembaban DHT11
2. Mahasiswa memahami prinsip kerja LCD 16x2
3. Mahasiswa memahami prinsip kerja OCR (Output Compare Register) pada mikrokontroler
4. Mahasiswa memahami prinsip kerja driver motor sederhana
5. Mahasiswa mampu mengkombinasikan penggunaan sensor suhu dan kelembaban DHT11, OCR
pada mikrokontroler, LCD 16x2 & driver motor untuk aplikasi nyata.

5.2. Dasar Teori


1. DHT11
DHT11 berfungsi untuk mengukur suhu dan kelembaban yang berada di sekitar sensor.
DHT11 memiliki tingkat stabilitas yang sangat baik serta fitur kalibrasi yang sangat akurat.
Koefisien kalibrasi disimpan dalam OTP program memory, sehingga ketika internal sensor
mendeteksi sesuatu, maka sensor ini menyertakan koefisien tersebut dalam kalkulasinya.

Gambar 5.1 Modul DHT11

Modul ini memiliki respon yang baik, pembacaan data yang cepat, serta kemampuan anti-
interference. Berikut ini spesifikasi lebih detailnya :
a. Mendeteksi kelembapan dan suhu udara
b. Rentang pengukuran kelembapan: 20% - 95% dengan toleransi 5%.
c. Rentang pengukuran suhu: 0-50 C dengan tolerasi 2C
d. Tegangan kerja : 3.3-5V
e. Sinyal output dalam bentuk digital
f. Ukuran kecil 3.2 cm x 1.4 cm

2. LCD 16x2
LCD merupakan perangkat output yang banyak digunakan dalam dunia elektronik.
Teknologi terkini untuk keperluan output sebagian besar sudah menggunakan LCD. Baik untuk
keperluan televisi, layar ponsel, osiloskop, serta keperluan lain. Bentuk LCD ada berbagai macam,
baik mulai dari layar lebar, layar sedang, maupun layar kecil.
Untuk aplikasi pada praktikum ini digunakan LCD 16x2. Maksudnya adalah LCD ini
mempunyai 16 kolom dan 2 baris. LCD ini dapat digunakan dengan tegangan + 5 volt.
(Referensi: http://extremeelectronics.co.in/avrtutorials/using-lcd-module-with-avrs/)

Gambar 5.2 LCD jenis 16x2

35
Fungsi Pin-Pin LCD
Modul LCD berukuran 16 karakter x 2 baris dengan fasilitas backlighting memiliki 16 pin
yang terdiri dari 8 jalur data, 3 jalur kontrol dan jalur-jalur catu daya, dengan fasilitas pin yang
tersedia maka lcd 16 x 2 dapat digunakan secara maksimal untuk menampilkan
data yang dikeluarkan oleh mikrokontroler, secara ringkas fungsi pin-pin pada LCD dituliskan
pada table berikut.

PIN NUMBER SYMBOL FUNCTION


1 Vss GND
2 Vdd +3V or +5V
3 Vo Contrast Adjustment
4 RS H/L Register Select Signal
5 R/W H/L Read/Write Signal
6 E HL Enable Signal
7 DB0 H/L Data Bus Line
8 DB1 H/L Data Bus Line
9 DB2 H/L Data Bus Line
10 DB3 H/L Data Bus Line
11 DB4 H/L Data Bus Line
12 DB5 H/L Data Bus Line
13 DB6 H/L Data Bus Line
14 DB7 H/L Data Bus Line
15 A/Vee +4.2V for LED/Negative Voltage Output
16 K Power Supply for B/L (OV)
Tabel 5.1 Fungsi pin-pin pada LCD 16x2

Sedangkan secara umum pin-pin LCD diterangkan sebagai berikut :


Pin 1 dan 2
Merupakan sambungan catu daya, Vss dan Vdd. Pin Vdd dihubungkan dengan tegangan
positif catu daya, dan Vss pada 0V atau ground. Meskipun data menentukan catu 5 Vdc (hanya
pada beberapa mA), menyediakan 6V dan 4.5V yang keduanya bekerja dengan baik, bahkan 3V
cukup untuk beberapa modul.
Pin 3
Pin 3 merupakan pin kontrol Vee, yang digunakan untuk mengatur kontras display. Idealnya
pin ini dihubungkan dengan tegangan yang bisa dirubah untuk memungkinkan pengaturan
terhadap tingkatan kontras display sesuai dengan kebutuhan, pin ini dapat dihubungkan dengan
variable resistor sebagai pengatur kontras.
Pin 4
Pin 4 merupakan Register Select (RS), masukan yang pertama dari tiga command control
input. Dengan membuat RS menjadi high, data karakter dapat ditransfer dari dan menuju modulnya.
Pin 5
Read/Write (R/W), untuk memfungsikan sebagai perintah write maka R/W low atau menulis
karakter ke modul. R/W high untuk membaca data karakter atau informasi status dari register-nya.
Pin 6
Enable (E), input ini digunakan untuk transfer aktual dari perintah-perintah atau karakter
antara modul dengan hubungan data. Ketika menulis ke display, data ditransfer hanya pada
perpindahan high atau low. Tetapi ketika membaca dari display, data akan menjadi lebih cepat
tersedia setelah perpindahan dari low ke high dan tetap tersedia hingga sinyal low lagi.
Pin 7-14
Pin 7 sampai 14 adalah delapan jalur data/data bus (D0 sampai D7) dimana data dapat
ditransfer ke dan dari display.

36
Pin 16
Pin 16 dihubungkan kedalam tegangan 5 Volt untuk memberi tegangan dan menghidupkan
lampu latar/Back Light LCD.

3. OCR (Output Compare Register)


OCR pada mikrokontroler termasuk jenis komparator 8 bit secara kontinu membandingkan
nilai TCNT0 dengan nilai register Output Compare (OCR0). Pada mikrokontroler, OCR masuk
dalam Unit Output Compare. Ketika TCNT0 sama dengan OCR0, maka komparator akan memberi
sinyal bahwa terjadi kesamaan. Kesamaan ini akan mengeset Output Compare Flag (OCF0) pada
saat clock cycle timer selanjutnya. Jika OCIE0 = 1 dan Global Interrupt Flag di SREG di set, maka
Output Compare Flag akan menghasilkan interupsi output compare. Flag OCF0 akan secara
otomatis di-clear-kan ketika interupsi dieksekusi. Gambar dibawah ini memperlihatkan blok
diagram unit Output Compare.

Gambar 5.3 Blok diagram Unit Output Compare


Nilai yang ada pada Output Compare Register (OCR) akan di bandingkan dengan nilai yang
ada pada Timer/Counter setiap saat. Hasil dari proses pembandingan ini dapat digunakan
waveform generation untuk menghasilkan PWM (Pulse Width Modulation) atau output yang
memiliki frekuensi yang berubah pada pin Output Compare (OC0). Kejadian pembandingan
output yang sesuai nilainya antara OCR dan nilai pada Timer/Counter akan mengeset nilai pada
Output Compare Flag (OCF0) yang dapat digunakan untuk menghasilkan permintaan output
compare interrupt.

4. Driver motor
Merupakan suatu rangkaian yang berfungsi sebagai pengontrol motor, dimana rangkaian ini
didesain sedemikianrupa sehingga tidak menimbulkan feedback arus listrik pada mikrokontroler.
Driver motor secara sederhana terbentuk oleh sebuah Optocoupler PC817 dan mosfet IRF414

5.3. Alat dan Bahan


1. 1 unit komputer yang sudah terinstal software AVR Studio 4 dan Extreme Burner
2. 1 unit modul mikrokontroler ATMEGA16
3. 1 unit sensor DHT11
4. 1 unit LCD 16x2
5. 1 Unit rangkaian driver motor
6. 1 Unit solder 40 W
7. Kabel jumper secukupnya
37
5.4. Langkah Percobaan
1. Hubungkan solder sebagai pemanas ke listrik AC 220 Volt
2. Rakitlah rangkaian percobaan sesuai dengan ilustrasi di bawah ini:

3. Cek kembali sambungan pada rangkaian, pastikan rangkaian yang telah dirakit, sesuai dengan
ilustrasi di atas. Dan tegangan supply + dan telah terhubung sesuai pada rangkaian.
4. Buka aplikasi AVR Studio 4 untuk memprogram rangkaian.
5. Masukkan file header :
- stdio.h
- stdlib.h
- avr/io.h
- avr/interrupt.h
6. Tulislah program dibawah ini :
#include <stdio.h>
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "dht/dht.h"
#include "lcd.h"

int suhu=25;
int main()
{
char printbuff[100];
cli();
#if DHT_FLOAT == 0
int8_t temperature = 0;
int8_t humidity = 0;
#elif DHT_FLOAT == 1
float temperature = 0;
float humidity = 0;
#endif

38
// Initialize LCD module
LCDInit(LS_NONE);
LCDClear();
LCDWriteStringXY(0,0,"Bismillah");
_delay_ms(200);
LCDClear();

TCCR0|=(1<<WGM00)|(1<<WGM01)|(1<<COM01)|(1<<CS00);
DDRB|=(1<<PB3);

for (;;) {

if(dht_gettemperaturehumidity(&temperature, &humidity) != -1) {

#if DHT_FLOAT == 0
itoa(temperature, printbuff, 10);
#elif DHT_FLOAT == 1
dtostrf(temperature, 3, 3, printbuff);
#endif
#if DHT_FLOAT == 0
itoa(humidity, printbuff, 10);
#elif DHT_FLOAT == 1
dtostrf(humidity, 3, 3, printbuff);
#endif
LCDWriteStringXY(0,0,"T : ");
LCDWriteIntXY(4,0,temperature,4);
LCDWriteStringXY(7,0,"H : ");
LCDWriteIntXY(11,0,humidity,4);

if(temperature>suhu)
{
OCR0+=10;
}
else
{
OCR0=0;
}
LCDWriteStringXY(0,1,"PWM : ");
LCDWriteIntXY(11,0,0,4);
}
else
{
LCDWriteStringXY(0,1,"error");
}
_delay_ms(10);
}
return 0;
}
7. Buka Aplikasi Extreme burner untuk mengupload program.
8. Load file [dot] hex program, kemudian flash.
9. Ubah-ubahlah parameter suhu yang ada, dengan mengatur jarak pemanas terhadap sensor sesuai
tabel percobaan.
10. Amatilah perubahan data pada layar LCD, dan catat hasilnya pada tabel percobaan.

39
5.5. Percobaan Modul
Ubahlah parameter suhu pada sensor sesuai tabel di bawah ini :

Jarak Pemanas Nilai Pembacaan Suhu


NO PWM Motor
Terhadap Sensor (C)
1 1 cm
2 2 cm
3 3 cm
4 4 cm
5 5 cm

5.6. Tugas Modul


1. Buatlah program membaca suhu dengan ketentuan input DHT11 berada pada PINB.2 dan port
LCD pada PORT A.
2. Buatlah program pengendali kecepatan motor dengan ketentuan setiap kenaikan suhu 10 C,
PWM motor bertambah 10 serta data PWM tampil pada LCD.

40