Вы находитесь на странице: 1из 13

2017

Divisi Hardware UNIKOM


MODUL I
PENDAHULUAN
2.1. HASIL PEMBELAJARAN

Mahasiswa dapat memahami, menjelaskan dan membedakan GPIO dari Arduino Uno.
2.2. TUJUAN
Bagian ini memberikan informasi mengenai perbedaan dari masing-masing GPIO
yang ada dalam Arduino Uno.
2.3. ARDUINO UNO
Dalam diskusi sehari-hari dan di forum internet, mikrokontroller sering dikenal
dengan sebutan C, uC atau MCU. Terjemahan bebas dari pengertian tersebut, bisa dikatakan
bahwa mikrokontroller adalah komputer yang berukuran mikro dalam satu chip IC
(integrated circuit) yang terdiri dari processor, memory dan antramuka yang bisa di program.
Jadi disebut komputer mikro karena dalam IC atau chip mikrokontroller terdiri dari CPU,
memory dan I/O yang bisa kita kontrol dengan memprogramnya. I/O juga sering disebut
dengan GPIO (General Purpose Input Output Pins) yang berarti: pin yang bisa kita program
sebagai input atau output sesuai dengan kebutuhan.

Gambar 1.1. Arduino Uno Board


Board Arduino Uno terdiri dari hardware/modul mikrokontroller yang siap pakai dan
software IDE yang digunakan untuk memprogram sehingga kita bisa belajar dengan mudah.
Kelebihan dari Arduino Uno yaitu kita tidak direpotkan dengan rangkaian minimum sistem
dan programmer karena sudah built-in dalam satu board. Oleh sebab itu kita bisa fokus ke
pengembangan sistem.
Untuk praktek, kita dapat menggunakan software Proteus untuk menghubungkan
antara komponen dengan Arduino Uno, kita tidak perlu menyolder rangkaian sehingga relatif
mudah dan cepat dalam merangkai komponen. Proteus memungkinkan kita untuk
membangun rangkaian dengan cepat sehingga sangat cocok untuk eksperimen, selain itu kita
Pelatihan Arduino |ITSC UNIKOM

2017

Divisi Hardware UNIKOM

PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

7
6
5
4
3
2
1
0
PD7/AIN1

~ PD6/AIN0
PD5/T1
~

PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO

AREF

13
12
11
10
9
8

dapat melakukan simulasi rangkaian dimana hasil simulasi tersebut mendekati hasil yang
sebenarnya, sehingga Proteus ini sangat cocok digunakan dalam perancangan mikrokontroler
berbasiskan Arduino Uno.

DUINO1
ARDUINO UNO R3

DIGITAL (~PWM)

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

1121
ATMEGA328P-PU

microcontrolandos.blogspot.com

A0
A1
A2
A3
A4
A5

RESET

ANALOG IN

Gambar 1.2. Arduino Uno Board dalam Software Proteus


2.4. ATMEGA328
ATmega328 merupakan mikrokontroler keluarga AVR 8 bit. Beberapa tipe
mikrokontroler yang sama dengan ATmega8 ini antara lain ATmega8535, ATmega16,
ATmega32, ATmega328, yang membedakan antara mikrokontroler antara lain adalah ukuran
memori, banyaknya GPIO (pin input/output), peripheral (USART, timer, counter, dan lainlain). Dari segi ukuran fisik, ATmega38 memiliki ukuran fisik lebih kecil dibandingkan
dengan beberapa mikrokontroler diatas. Namun untuk segi memori dan periperal lainnya
ATmega328 tidak kalah dengan yang lainnya karena ukuran memori dan periperalnya relatif
sama dengan ATmega8535, ATmega32, hanya saja jumlah GPIO lebih sedikit dibandingkan
mikrokontroler diatas.

Pelatihan Arduino |ITSC UNIKOM

2017

Divisi Hardware UNIKOM

Gambar 2.1. ATmega328


1.

Ping Out Diagram

ATmega328 memiliki 3 buah PORT utama yaitu PORTB, PORTC, dan PORTD
dengan total pin input/output sebanyak 23 pin. PORT tersebut dapat difungsikan sebagai
input/output atau difungsikan sebagai peripheral lainnya.
PORTB
PORTB merupakan jalur data 8 bit yang dapat difungsikan sebagai input/output. Selain
itu PORTB juga dapat memiliki fungsi alternatif seperti berikut :
ICP1 (PB0), berfungsi sebagai Timer Counter 1 input capture pin.
OC1A (PB1), OC1B (PB2) dan OC2 (PB3) dapat difungsikan sebagai PWM
(Pulse Width Modulation).
MOSI (PB3), MISO (PB4), SCK (PB5), SS (PB2) merupakan jalur komunikasi
SPI.
TOSC1 (PB6), TOSC2 (PB7) dapat difungsikan sebagai sumber clock external
untuk timer.
XTAL1 (PB6) dan XTAL2 (PB7) merupakan sumber clock utama
mikrokontroler.
PORTC
PORTC merupakan jalur data 7 bit yang dapat difungsikan sebagai input/output digital.
Fungsi alternatif PORTC antara lain sebagai berikut :

Pelatihan Arduino |ITSC UNIKOM

Divisi Hardware UNIKOM

2017

ADC6 channel (PC0, PC1, PC2, PC3, PC4, PC5) dengan resolusi sebesar 10 bit.
ADC dapat digunakan untuk mengubah input yang berupa tegangan analog
menjadi data digital.
I2C (SDA dan SDL) merupakan salah satu fitur yang terdapat pada PORTC. I2C
digunakan untuk komunikasi dengan sensor atau device lain yang memiliki
komunikasi data tipe I2C seperti sensor kompas, accelerometer nunchuck.
PORTD
PORTD merupakan jalur data 8 bit yang masing-masing pin-nya juga dapat difungsikan
sebagai input/output. Sama seperti PORTB dan PORTC, PORTD juga memiliki fungsi
alternatif dibawah ini :
USART (TXD dan RXD) merupakan jalur komunikasi serial dengan level sinyal
TTL. Pin TXD berfungsi untuk mengirimkan data serial, sedangkan RXD
kebalikannya yaitu sebagai pin yang berfungsi untuk menerima data serial.
Interrupt (INT0 dan INT1) merupakan pin dengan fungsi khusus sebagai interupsi
hardware. Interupsi biasanya digunakan sebagai selaan dari program, misalkan
pada saat program berjalan kemudian terjadi interupsi hardware/software maka
program utama akan berhenti dan akan menjalankan program interupsi.
XCK dapat difungsikan sebagai sumber external clock untuk USART, namun kita
juga dapat memanfaatkan clock dari CPU, sehingga tidak perlu membutuhkan
external clock.
T0 dan T1 berfungsi sebagai masukan counter external untuk timer 1 dan timer 0.
AIN0 dan AIN1 keduanya merupakan masukan input untuk analog comparator.
2.

Fitur Atmega328

ATmega328 adalah mikrokontroler keluaran dari Atmel yang mempunyai arsitektur


RISC (Reduce Instruction Set Computer) yang mana setiap eksekusi data lebih cepat dari
pada arsitektur CISC (Completed Instruction Set Computer). Mikrokontroler ini memiliki
beberapa fitur antara lain :
Memiliki EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar
1 KB sebagai tempat penyimpanan data semi permanen karena EEPROM tetap dapat
menyimpan data meskipun catu daya dimatikan.
Memiliki SRAM (Static Random Access Memory) sebesar 2 KB.
Memiliki pin I/O digital sebanyak 14 pin 6 diantaranya PWM (Pulse Width
Modulation) output.
32 x 8 bit regiser serbaguna.
Dengan clock 16 MHz kecepatan mencapai 16 MIPS.
32 KB Flash Memory dan pada Arduino memiliki bootloader yang menggunakan 2 KB
dari flash memori sebagai bootloader.
130 macam instruksi yang hampir semuanya dieksekusi dalam satu siklus clock.

Pelatihan Arduino |ITSC UNIKOM

Divisi Hardware UNIKOM

2017

Gambar 2.2. Pin Out Diagram Arduino Uno (ATmega328)


Dengan mengambil contoh sebuah papan arduino tipe USB, bagian-bagiannya dapat
dijelaskan sebagai berikut:
14 pin input/ouput digital (0 13), berfungsi sebagai input atau output, dapat diatur
oleh program. Khusus untuk 6 buah pin ~3, ~5, ~6, ~9, ~10 dan ~11, dapat juga
berfungsi sebagai pin analog output dimana tegangan outputnya dapat diatur. Nilai
sebuah pin analog output dapat diprogram antara 0 254, dimana hal itu mewakili nilai
tegangan 0 5 volt.
Port USB, berfungsi untuk: memuat program dari komputer ke dalam board Arduino
Uno, komunikasi serial antara board Arduino Uno dengan komputer, dan memberi
daya listrik kepada board Arduino Uno.
Kristal (quartz crystal oscillator), jika mikrokontroler dianggap sebagai otak, maka
kristal adalah jantungnya karena komponen ini menghasilkan detak-detak yang dikirim
kepada mikrokontroler agar melakukan sebuah operasi untuk setiap detaknya. Kristal
ini dipilih yang berdetak 16 juta kali per detik (16 MHz).
Tombol Reset, untuk mereset board arduino sehingga program akan mulai dari awal.
Perhatikan bahwa tombol reset ini bukan untuk menghapus program atau
mengosongkan mikrokontroler.
In Circuit Serial Programming (ICSP), Port ICSP memungkinkan pengguna untuk
memprogram mikrokontroler secara langsung, tanpa melalui bootloader. Umumnya
pengguna Arduino Uno tidak melakukan ini sehingga ICSP tidak terlalu dipakai
walaupun disediakan.
IC Mikrokontroler ATtmega328, komponen utama dari board Arduino Uno, di
dalamnya terdapat CPU, ROM dan RAM.
Sumber Daya Eksternal. Jika dikehendaki disuplai dengan sumber daya eksternal,
board Arduino Uno dapat diberikan tegangan DC antara 9 12 volt.

Pelatihan Arduino |ITSC UNIKOM

2017

Divisi Hardware UNIKOM

6 pin input analog (0 5), pin ini sangat berguna untuk membaca tegangan yang
dihasilkan oleh sensor analog, seperti sensor suhu. Program adapat membaca nilai
sebuah pin input antara 0 1023, dimana hal itu mewakili nilai tegangan 0 5 volt.
Tanpa melakukan konfigurasi apapun, begitu sebuah board Arduino Uno dikeluarkan
dari kotak pembungkusnya ia dapat langsung disambungkan ke sebuah komputer melalui
kabel USB. Selain berfungsi sebagai penghubung untuk pertukaran data, kabel USB ini juga
akan mengalirkan arus DC 5 volt kepada board Arduino Uno sehingga praktis tidak
diperlukan sumber daya dari luar. Saat mendapat suplai daya, lampu LED indikator daya
pada board Arduino Uno akan menyala menandakan bahwa ia siap bekerja.

Gamabr 2.3. Testing Board Arduino Uno


Pada board Arduino Uno terdapat sebuah LED kecil yang terhubung ke pin no 13.
LED ini dapat digunakan sebagai output saat seorang pengguna membuat sebuah program
dan ia membutuhkan sebuah penanda dari jalannya program tersebut. Ini adalah cara praktis
saat pengguna melakukan uji coba. Umumnya mikrokontroler pada board Arduino Uno telah
memuat sebuah program kecil yang akan menyalakan tersebut berkedip-kedip dalam jeda
satu detik. Jadi sangat mudah untuk menguji apakah sebuah board Arduino Uno yang baru
dalam kondisi baik atau tidak, cukup sambungkan board Arduino Uno tersebut dengan
sebuah komputer dan perhatikan apakah LED indikator daya menyala konstan dan LED
dengan pin 13 itu menyala berkedip-kedip.

Pelatihan Arduino |ITSC UNIKOM

Divisi Hardware UNIKOM

2017

Blinking LED
/*
Judul Program
: Blinking LED
Tanggal Pembuatan : 14 Februari 2016
Nama Programmer
: Sutono, M.Kom.
*/
/*
pin 13 Arduino, digunakan untuk mengontrol LED
pinLED berlogika HIGH
menunda waktu sekita 500ms
pinLED berlogika LOW
*/
const int pinLED=13;
void setup()
{
// put your setup code here, to run once:
pinMode(pinLED,OUTPUT);
}
void loop()
{
/*
put your main code here, to run repeatedly
pinLED berlogika HIGH
*/
digitalWrite(pinLED,HIGH);
// menunda waktu sekitar 500ms
delay(500);
digitalWrite(pinLED,LOW);
// menunda waktu sekitar 500ms
delay(500);
}

Pelatihan Arduino |ITSC UNIKOM

2017

Divisi Hardware UNIKOM


MODUL II
KONSEP DASAR ARDUINO
2.1. HASIL PEMBELAJARAN

Mahasiswa dapat memahami, menjelaskan dan membedakan fungsi dasar dari


Arduino.
2.2. TUJUAN
Bagian ini memberikan informasi mengenai perbedaan dari masing-masing fungsi
dasar yang ada dalam Arduino.
2.3. FUNGSI DASAR ARDUINO
Suatu progam Arduino Uno umumnya terdiri atas instruksi void setup() dan void
loop(). Instruksi void setup() digunakan untuk menginisialisasi variabel-variabel yang akan
digunakan dan hanya dijalankan satu kali saat Arduino Uno mulai dinyalakan. Sedangkan
instruksi void loop() digunakan untuk menjalankan suatu siklus program yang akan dilakukan
terus-menerus hingga Arduino Uno dimatikan/direset.

pinMode(PIN, SET)
Fungsi pinMode() digunakan untuk menginisialisasi sebuah pin Arduino dan
menentukan pin tersebut apakah akan digunakan sebagai INPUT atau sebagai
OUTPUT. Nilai SET dapat diisi INPUT atau OUTPUT tergantung dari kebutuhan.
Sedangkan nilai PIN adalah nomor pin pada Arduino Uno yang akan diset sebagai
INPUT atau sebagai OUTPUT.
Contoh: pinMode(13, OUTPUT) artinya kita menentukan bahwa pin digital 13 pada
Arduino Uno difungsikan sebagai pin OUTPUT.

digitalWrite(PIN, VAL)
Fungsi digitalWrite() digunakan untuk menuliskan nilai secara digital pada suatu pin
Arduino. Nilai VAL dapat berupa HIGH (ON) atau LOW (OFF) dan nilai PIN adalah
nomor pin pada Arduino Uno yang akan diset.
Contoh: digitalWrite(13, HIGH) artinya pin digital 13 diset pada kondisi menyala.

digitalRead(PIN)
Fungsi digitalRead() digunakan untuk membaca nilai input (masukan) yang diberikan
ke Arduino Uno. Nilai yang dibaca oleh Arduino melalui fungsi digitalRead()
tergantung pada voltase yang diberikan: 0 1,5V (logika LOW) dan 3 5V (logika
HIGH).
Contoh: digitalRead(13) artinya Arduino Uno akan membaca nilai input yang diberikan
melalui pin digital 13, hasilnya HIGH atau LOW.

Pelatihan Arduino |ITSC UNIKOM

Divisi Hardware UNIKOM

2017

analogWrite(PIN, VAL)
Fungsi analogWrite() adalah fungsi yang digunakan untuk mengirimkan output nilai
berupa angka pada sebuah komponen yang terhubung dengan pin tersebut, misalnya
LED. Pengguna dapat mengatur seberapa terang cahaya dari lampu LED saat menyala
tergantung dari nilai yang diberikan oleh Arduino Uno.
Fungsi ini akan berguna ketika kita menghubungkan Arduino Uno dengan aktuator,
dimana nilai yang dikirimkan seringkali berupa analog (0 1023).
Contoh: analogWrite(13, 1023) artinya Arduino Uno akan mengirimkan nilai output
maksimal pada pin 13 Arduino.

analogRead(PIN)
Fungsi analogRead() mirip dengan fungsi digitalRead(), yaitu membaca nilai input
pada suatu pin Arduino Uno. Bedanya adalah fungsi analogRead() akan menghasilkan
nilai input dari 0 1023 (0 - 5 volt).
Contoh: analogRead(0) artinya Arduino Uno akan membaca nilai input yang diberikan
olah sensor kepada Arduino Uno melalui pin Analog 0, hasilnya pembacaan Arduino
Uno berupa nilai 0 1023.

delay(TIME)
fungsi delay() digunakan untuk memberikan jeda waktu. Nilai TIME adalah waktu
lamanya jeda dalam satuan ms (milisekon), dimana 1 detik setara dengan 1000
milisekon (ms)
contoh: delay(1000) artinya Arduino Uno akan melakukan jeda selama 1 detik sebelum
melanjutkan instruksi berikutnya.

Serial.available()
Fungsi Serial.available() digunakan untuk mengecek apakah ada input data dari
perangkat hardware yang dihubungkan ke serial port, misalnya PC atau aktuator.
Fungsi ini akan menghasilkan 1 apabila ada input dan 0 bila tidak ada input.

Serial.read()
Fungsi Serial.read() berfungsi membaca karakter pada serial port. Karakter yang
dibaca akan disimpan dalam bentuk ASCII, misalnya karakter 0 memiliki nilai ASCII
48.

Serial.print() / Serial.println()
Fungsi Serial.print() / Serial.println() digunakan untuk menuliskan suatu kalimat ke
serial monitor, tetapi tidak mengirimkan data apapun, akan tetapi hanya digunakan
untuk memberikan teks visual pada pengguna. Serial.print(Teks) digunakan untuk

Pelatihan Arduino |ITSC UNIKOM

Divisi Hardware UNIKOM

2017

menuliskan Teks, sedangkan Serial.println(Teks) digunakan untuk menuliskan


kata Teks serta diakhiri dengan tombol ENTER.

Serial.write(VAL)
Fungsi Serial.write() digunakan untuk mengirimkan data dari Arduino Uno ke PC atau
aktuator dengan ukuran 1 byte.

2.4. SIMULASI PROTEUS


Proteus merupakan salah satu aplikasi simulasi dalam mendesain perangkat
elektronik, baik yang Non Programmable maupun yang Programmable. Dalam simulasi
arduino dibutuhkan Library Arduino Uno, yang dapat di unduh secara gratis. Kelebihan dari
simulasi proteus dan Arduino Uno ini adalah dalam hal hasil simulasi yang mendekati hasil
sebenarnya, sehingga Proteus ini cocok digunakan dalam perancangan Mikrokontroler
sebelum dicoba ke dalam Board Arduino Uno. Dalam mendesain aplikasi Mikrokontroler
menggunakan Proteus, kita harus mendesain rangkaian secara detail apa yang akan dibuat.
Untuk simulasi Mikrokontroler Arduino Uno ini, kita tidak perlu membuat rangkaian
minimum Arduino Uno, Library Arduino Uno yang telah kita unduh telah menyertakan
Board Arduino Uno secara utuh seperti aslinya.
Yang perlu diperhatikan dalam mendesain rangkaian Mikrokontroler Arduino
Uno adalah:
Supply, VCC dan Ground (GND) untuk semua sumber seperti gambar diatas.
Reset, sebagai media interrupt reset ketika terjadi hang atau kesalahan program,
sehingga perlu di reset ke alamat awal dari program (program dijalankan ulang
seperti proses startup).
Pin, 6 pin analog dan 14 pin digital untuk Port yang akan digunakan sesuai
dengan kebutuhan sistem.
Langkah-langkah membuat simulasi proteus:
Buka Program Proteus 7 Profesional.
Buat skema rangkaian berikut

Pelatihan Arduino |ITSC UNIKOM

10

2017

Divisi Hardware UNIKOM

Gambar 2.1. Blinking LED


Buat program Blinking LED dengan software Arduino IDE :
/*
Judul Program
Tanggal Pembuatan
Nama Programmer
*/

: Blinking LED
: 14 Februari 2016
: Sutono, M.Kom.

/*
pin 13 Arduino, digunakan untuk mengontrol LED
pinLED berlogika HIGH
menunda waktu sekita 500ms
pinLED berlogika LOW
*/
const int pinLED=13;
void setup()
{
// put your setup code here, to run once:
pinMode(pinLED,OUTPUT);
}
void loop()
{
/*
put your main code here, to run repeatedly
pinLED berlogika HIGH
*/
digitalWrite(pinLED,HIGH);
// menunda waktu sekitar 500ms
delay(500);
digitalWrite(pinLED,LOW);
// menunda waktu sekitar 500ms

Pelatihan Arduino |ITSC UNIKOM

11

2017

Divisi Hardware UNIKOM


delay(500);
}

Simpan programnya kemudian klik Verify. Pastikan tidak ada error. Perhatikan baris di
bagian bawah muncul keterangan lokasi program yang sudah di compile. Silahkan di
blok kemudian copy (Ctrl + C).

Gambar 2.2. Hasil Verify


Kembali ke Proteus. Kita masukkan programnya ke Arduino Uno, cukup klik 2x
sehingga muncul dialog box Edit Component. Pada bagian Program File, Paste (Ctrl
+ V) maka akan tertulis lokasi program Arduino Uno yang sudah dibuat sebelumnya.

Pelatihan Arduino |ITSC UNIKOM

12

2017

Divisi Hardware UNIKOM

Gambar 2.3. Upload file HEX

DIGITAL (~PWM)

DUINO1
ARDUINO UNO R3

13

PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

7
6
5
4
3
2
1
0
PD7/AIN1

~ PD6/AIN0
PD5/T1
~

PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO

AREF

13
12
11
10
9
8

13

Silahkan dicoba. Klik Play dan amati hasilnya, LED akan menyala secara bergantian
bergantian.

1121
ATMEGA328P-PU

R1

microcontrolandos.blogspot.com

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

220R

D1
LED-BIBY

GND

A0
A1
A2
A3
A4
A5

RESET

ANALOG IN

Gambar 2.4. Hasil simulasi Blinking LED

Pelatihan Arduino |ITSC UNIKOM

13

Вам также может понравиться