Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Modul arduino i ii
1. Pelatihan Arduino |ITSC UNIKOM 1
Divisi Hardware UNIKOM 2017
MODUL I
PENDAHULUAN
2.1. HASIL PEMBELAJARAN
Mahasiswa dapat memahami, menjelaskan dan membedakan GPIO dari Arduino.
2.2. TUJUAN
Bagian ini memberikan informasi mengenai perbedaan dari masing-masing GPIO
yang ada dalam Arduino.
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 Board
Arduino Board terdiri dari hardware/modul mikrokontroller yang siap pakai dan
software IDE yang digunakan untuk memprogram sehingga kita bisa belajar dengan mudah.
Kelebihan dari Arduino 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, 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
2. Pelatihan Arduino |ITSC UNIKOM 2
Divisi Hardware UNIKOM 2017
dapat melakukan simulasi rangkaian dimana hasil simulasi tersebut mendekati hasil yang
sebenarnya, sehingga Proteus ini sangat cocok digunakan dalam perancangan mikrokontroler
berbasiskan Arduino.
Gambar 1.2. Arduino 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 lain-
lain). 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.
DIGITAL (~PWM)
ANALOG IN
ATMEGA328P-PU
1121
~
~
~
~
~
~
microcontrolandos.blogspot.com
TX
RXPD0/RXD
0
PD1/TXD
1
PD2/INT0
2
PD3/INT1
3
PD4/T0/XCK
4
PD5/T1
5
PD6/AIN0
6
PD7/AIN1
7
PB0/ICP1/CLKO
8
PB1/OC1A
9
PB2/SS/OC1B
10
PB3/MOSI/OC2A
11
PB4/MISO
12
PB5/SCK
13
AREF
PC5/ADC5/SCL
A5
PC4/ADC4/SDA
A4
PC3/ADC3
A3
PC2/ADC2
A2
PC1/ADC1
A1
PC0/ADC0
A0
RESET
DUINO1
ARDUINO UNO R3
3. Pelatihan Arduino |ITSC UNIKOM 3
Divisi Hardware UNIKOM 2017
Gambar 1.3. 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 :
4. Pelatihan Arduino |ITSC UNIKOM 4
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.
5. Pelatihan Arduino |ITSC UNIKOM 5
Divisi Hardware UNIKOM 2017
Gambar 1.4. Pin Out Diagram Arduino (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,
komunikasi serial antara board Arduino Uno dengan komputer, dan memberi daya
listrik kepada board Arduino.
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 tidak melakukan ini sehingga ICSP tidak terlalu dipakai walaupun
disediakan.
IC Mikrokontroler ATtmega328, komponen utama dari board Arduino, di dalamnya
terdapat CPU, ROM dan RAM.
Sumber Daya Eksternal. Jika dikehendaki disuplai dengan sumber daya eksternal,
board Arduino dapat diberikan tegangan DC antara 9 – 12 volt.
6. Pelatihan Arduino |ITSC UNIKOM 6
Divisi Hardware UNIKOM 2017
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 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 sehingga praktis tidak diperlukan
sumber daya dari luar. Saat mendapat suplai daya, lampu LED indikator daya pada board
Arduino akan menyala menandakan bahwa ia siap bekerja.
Gamabr 1.5. Testing Board Arduino
Pada board Arduino 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 telah
memuat sebuah program kecil yang akan menyalakan tersebut berkedip-kedip dalam jeda
satu detik. Jadi sangat mudah untuk menguji apakah sebuah board Arduino yang baru
dalam kondisi baik atau tidak, cukup sambungkan board Arduino tersebut dengan sebuah
komputer dan perhatikan apakah LED indikator daya menyala konstan dan LED dengan pin
13 itu menyala berkedip-kedip.
7. Pelatihan Arduino |ITSC UNIKOM 7
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 sekitar 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);
}
8. Pelatihan Arduino |ITSC UNIKOM 8
Divisi Hardware UNIKOM 2017
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 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 mulai dinyalakan. Sedangkan
instruksi void loop() digunakan untuk menjalankan suatu siklus program yang akan dilakukan
terus-menerus hingga Arduino dimatikan/direset.
1. 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.
2. 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 yang akan diset.
Contoh: digitalWrite(13, HIGH) artinya pin digital 13 diset pada kondisi menyala.
3. digitalRead(PIN)
Fungsi digitalRead() digunakan untuk membaca nilai input (masukan) yang diberikan
ke Arduino. 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 akan membaca nilai input yang diberikan melalui
pin digital 13, hasilnya HIGH atau LOW.
9. Pelatihan Arduino |ITSC UNIKOM 9
Divisi Hardware UNIKOM 2017
4. 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.
Fungsi ini akan berguna ketika kita menghubungkan Arduino dengan aktuator,
dimana nilai yang dikirimkan seringkali berupa analog (0 – 1023).
Contoh: analogWrite(13, 1023) artinya Arduino akan mengirimkan nilai output maksimal
pada pin 13 Arduino.
5. analogRead(PIN)
Fungsi analogRead() mirip dengan fungsi digitalRead(), yaitu membaca nilai input
pada suatu pin Arduino. 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 berupa nilai
0 – 1023.
6. 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 akan melakukan jeda selama 1 detik sebelum
melanjutkan instruksi berikutnya.
7. 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.
8. 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.
9. 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 menuliskan
“Teks”, sedangkan Serial.println(“Teks”) digunakan untuk menuliskan kata “Teks” serta
diakhiri dengan tombol ENTER.
10. Pelatihan Arduino |ITSC UNIKOM 10
Divisi Hardware UNIKOM 2017
10. 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.
1. 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.
2. Langkah-langkah membuat simulasi proteus:
Buka Program Proteus 7 Profesional.
Buat skema rangkaian berikut
11. Pelatihan Arduino |ITSC UNIKOM 11
Divisi Hardware UNIKOM 2017
Gambar 2.1. Blinking LED
Buat program Blinking LED dengan software Arduino IDE :
/*
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
12. Pelatihan Arduino |ITSC UNIKOM 12
Divisi Hardware UNIKOM 2017
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.
13. Pelatihan Arduino |ITSC UNIKOM 13
Divisi Hardware UNIKOM 2017
Gambar 2.3. Upload file HEX
Silahkan dicoba. Klik Play dan amati hasilnya, LED akan menyala secara
bergantian bergantian.
Gambar 2.4. Hasil simulasi Blinking LED
DIGITAL (~PWM)
ANALOG IN
ATMEGA328P-PU
1121
~
~
~
~
~
~
microcontrolandos.blogspot.com
TX
RXPD0/RXD
0
PD1/TXD
1
PD2/INT0
2
PD3/INT1
3
PD4/T0/XCK
4
PD5/T1
5
PD6/AIN0
6
PD7/AIN1
7
PB0/ICP1/CLKO
8
PB1/OC1A
9
PB2/SS/OC1B
10
PB3/MOSI/OC2A
11
PB4/MISO
12
PB5/SCK
13
AREF
PC5/ADC5/SCL
A5
PC4/ADC4/SDA
A4
PC3/ADC3
A3
PC2/ADC2
A2
PC1/ADC1
A1
PC0/ADC0
A0
RESET
DUINO1
ARDUINO UNO R3
R1
220R
D1
LED-BIBY
13GND
13