Anda di halaman 1dari 25

LAPORAN PERCOBAAN

No. Percobaan : 05
Judul : Serial Asinkron (UART)
Nama Praktikan : Verina Mega Puspita
Kelas / NIM : TE-2B / 4.31.16.1.23
Tanggal Percobaan : 26 April 2018
Penyerahan Laporan : 5 Juli 2018
Pengampu : Dr. Amin Suharjono, S.T.,
M.T.

Nilai :
Keterangan :

PROGRAM STUDI TEKNIK


TELEKOMUNIKASI
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2018
PERCOBAAN V
Serial Asinkron (UART)

1. Dasar Program IO Serial Asinkron


1.1. Deskripsi Singkat
Salah satu komponen LSI standar adalah Universal Asynchronous
Receiver-Transmitter (UART). UART bekerja mengubah data serial
ke paralel dan data paralel ke serial. UART paling sering digunakan
untuk ope rasi kecepatan rendah ke sedang. Sedangkan untuk
transmisi kecepatan tinggi digunakan jenis Universal Synchronous
Receiver Transmitter (USRT).

1.2.Contoh dan Tugas


1.2.1. Flowchart dan Program
START

SerialBaudrate = 9600
Int number = 0

Serial.print
“The number is “

Serial.println
(number)

Delay
500 ms

number++
1.2.2. Hasil

Berdasarkan percobaan yang dilakukan. Pada contoh 5.1


hasil dari program adalah terdapat tulisan yang tercetak yaitu
“The number is “ dan juga angka yang dicetak berawal dari
angka nol lalu terus bertambah satu hingga tak terhingga
dengan delay 500ms pada baud rate 9600.
1.2.3. Analisis
Berdasarkan hasil output program di atas dapat diketahui
bahwa serial monitor tercetak “The number is (number)”.
Dimana (number) merupakan integer dengan nilai awal 0,
kemudian perintah loop dijalankan dan nilainya bertambah
satu dengan waktu jeda 500 ms. Sehingga keseluruhan yang
tercetak pada serial monitor adalah hitungan counter dari
“The number is (number)”
1.3. Tugas
1.3.1. Flowchart dan Program

START

SerialBaudrate = 9600
Int number = 0

Serial.print
“The number is “

Serial.println
(number)

Delay
500 ms

number++

Number N
> 100 ?

Number = 0

Delay
500 ms

number++
1.3.2. Hasil

Pada Tugas 5.1 hasil dari program adalah terdapat tulisan


yang tercetak di serial monitor yaitu “The number is “dengan
nilai yang berubah-ubah mulai dari 0 naik 1 angka menjadi 2,
lalu naik 1 nilai lagi menjadi 3 dan seterusnya (number++),
hingga kurang dari sama dengan 100 karena ada perintah
number<=100. Apabila telah mencapai angka 100 maka
nilainya akan kembali lagi menjadi 0 karena ada perintah
number=0 pada akhir program. Dengan delay 100 ms pada
baud rate 9600.
1.3.3. Analisa
Berdasarkan hasil output program di atas dapat diketahui
bahwa serial monitor tercetak “The number is (number)”.
Dimana (number) merupakan integer dengan nilai awal 0,
kemudian perintah loop dijalankandan nilainya bertambah
satu dengan waktu jeda 500 ms. Ketika nilai (number) lebih
dari 100 maka serial monitor mencetak 0 kembali. Sehingga
counter yang tercetak pada serial monitor hanya 0-100.
2. Mengirim Data Serial dengan Berbagai Format
2.1. Deskripsi Singkat

Komunikasi data serial menggunakan 2 buah pin yaitu pin


RX untuk menerima data dan ppin TX untuk mengirimkan
data. Pada board arduino pin RX terletak pada pin0 dan pin
TX terletak pada pin1. Ketika board arduino
dikonfigurasikan untuk berkomunikasi secara serial, maka
kedua pin0 dan pin1 tidak dapat digunakan sebagai pin
input/output digital.
2.2. Contoh
2.2.1. Flowchart dan Program

START

SerialBaudrate = 9600
Int number = 0

Serial.print
“The number is “

Serial.println
(number)

Delay
500 ms

number++

Number N
> 100 ?

Number = 0

Delay
500 ms

number++
2.2.2. Hasil
Pada program contoh hasil keluaran
program yaitu program menampilkan hasil
pengkonversian :

- Charvalue = character nilai

- ByteValue = byte nilai,


- IntValue = interger nilai

- floatValue = float nilai

Ke character ASCII:

- DEC = nilai decimal

- HEX = nilai
heksadecimal

- BIN = nilai biner.

Nilai selanjutnya akan bertambah 1 karena ada


perintah chrValue++, intValue++, byteValue++,
floatValue++ . Program juga akan terus mengkonversi
sampai tak terhingga dan terjadi delay sebesar 500 ms untuk
setiap pengkonversian huruf ASCII.

2.2.3. Analisa
Hasil dari program ini adalah char, byte, int, dan float.
Huruf yang muncul ini dikonversi ke decimal, okta decimal,
heksa decimal dan biner. Huruf ini muncul secara berurutan
sesuai dengan kode ASCII. Jika program sudah maksimal,
maka akan terjadi perulangan dari awal.
2.3. Tugas
2.3.1. Flowchart dan Program
START

Char chrValue = 65; Byte byteValue = 65


Int intValue = 65; Float floatValue = 65.0

SerialBaudrate = 9600

Serial.println (“chrValue :“)


Serial.println(chrValue)
Serial.write(chrValue)
Serial.println()
Serial.println(chrValue,DEC)
Serial.println (“byteValue :“)
Serial.println(byteValue)
Serial.write(byteValue)
Serial.println()
Serial.println(byteValue,DEC)
Serial.println (“intValue :“)
Serial.println(intValue)
Serial.println(intValue,DEC)
Serial.println(intValue,HEX)
Serial.println(intValue,OCT)
Serial.println(intValue,BIN)
Serial.println (“floatValue :“)
Serial.println(floatValue)

Delay
1000 ms

chrValue++
byteValue++
intValue++
floatValue=+1
2.3.2. Hasil
Berdasarkan hasil output program di atas maka dapat
diketahui ahwa serial monitor tercetak nilai awal kedua data
adalah 65 maka perintah Serial.println(char) mencetak nilai
char dalam bentuk char yaitu karakter ‘A’, dan perintah
Serial.println(intValue, DEC) adalah konversi dari nilai
integer 65 ke bentuk desimal yaitu ‘65’,
Serial.println(intValue, HEX) adalah konversi dari nilai
integer 65 ke bentuk hexadesimal yaitu 41 sedangkan
Serial.println(intValue, BIN) adalah konversi dari nilai
integer 65 ke bentuk biner yaitu 100 0001. Kemudian
setelah nilai char dan int = 90 atau ‘Z’, nilai char dan int
kembali ke 65. Artinya pada program ini hanya karakter
huruf kapital saja yang ditampilkan pada serial monitor
seperti pada screenshot serial monitor di bawah ini.

2.3.3. Analisa
Program tugas 5.2 merupakan program untuk
mengirim kode ascii dari huruf A hingga Z dalam format:
character, desimal, hexadecimal, dan biner. Sehingga hasil
keluaran program ini yaitu program menampilkan hasil
pengkonversian character nilai, byte nilai, interger nilai, dan
float nilai ke character ASCII yaitu nilai decimal, nilai
heksadecimal, dan juga nilai biner sama seperti program
contoh. Namun pada program tugas hanya sampai huruf
ASCII A-Z sehingga program terdapat intruksi
64<=nilai<90 untuk character nilai, byte nilai, dan interger
nilai sedangkan untuk float nilai berkisar 64.0<=nilai<=89.0
yang merupakan nilai ASCI huruf A-Z. Nilai selanjutnya
akan bertambah 1 karena intruksi yang dimasukan
chrValue++, intValue++, byteValue++, floatValue++
apabila sudah mencapai huruf ASCII Z atau nilai 90 pada
character nilai, byte nilai, interger nilai dan Float nilai 89.0.
Maka program akan kembali lagi ke huruf ASCII A dan
begitu seterusnya. Program memiliki delay 1000 ms untuk
setiap perpindahan satu huruf ASCII.
3. Menerima Data Serial
3.1. Deskripsi Singkat
Komunikasi data serial menggunakan 2 buah pin yaitu pin RX
untuk menerima data dan ppin TX untuk mengirimkan data. Pada
board arduino pin RX terletak pada pin0 dan pin TX terletak pada
pin1. Ketika board arduino dikonfigurasikan untuk berkomunikasi
secara serial, maka kedua pin0 dan pin1 tidak dapat digunakan
sebagai pin input/output digital.

3.2. Contoh 1
3.2.1. Flowchart dan Program

START

SerialBaudrate = 9600

N
Serial
Available?

Char ch =
Serial.Read()

Serial.write(ch)

END

3.2.2. Hasil
Hasil output program diatas adalah ketika ada data serial
masuk dalam hal ini kakater yang diketikkan pada kolom
menu, maka data serial yang masuk akan dikonversikan ke
dalam bentuk char, kemudian ditampilkan pada serial
monitor dalam bentuk char.
3.2.3. Analisa
Pada program contoh 1 hasil keluaran program yaitu pada
serial monitor akan menampilkan character apa yang kita
kirimkan. Asal yang di inputkan memiliki minimal 1
character maka akan dimunculkan semua dalam serial
monitor (if ( Serial.available()){ ) tanpa terbatas berapapun
character tersebut.
3.3. Contoh 2
3.3.1. Flowchart dan Program
START

Pin 13 = LED,
blinkRate =0

SerialBaudrate = 9600
Pin LED = Output

Serial N
Available?

Y
Char ch =
Serial.Read()

ch = ASCII N
0-9 ?

Y
BlinkRate = ch – ‘0’
BlinkRate = blinkRate*100

Blink()

Pin LED = 1

Delay
BlinkRate

Pin LED = 0

Delay
BlinkRate
3.3.2. Hasil
Pada program contoh 2 hasil keluaran program yaitu pada
ledPin akan berkedip sesuai dengan digit ASCII yang
diinputkan. Digit ASCII yang dinputkan dikonversikan dalam
nilai numerik (blinkRate = (ch - '0 -„9‟'); ) lalu diproses dan
ditampilkan pada ledPin sesuai dengan angka input (blinkRate
= blinkRate * 100;) . Jika semakin besar input yang
dimasukan, maka jangka waktu kedipan led semakin lama.
3.3.3. Analisa
Hasil program ini adalah jika mengetikkan teks berisi angka
atau huruf, maka Arduino akan mendeteksi data tersebut
melalui port serial atau tidak. Jika iya, maka Arduino akan
mnegkonversi ke char. Lalu pin 13 pada LED akan berkedip-
kedip tergantung dengan input serial yang diberikan.
3.4. Tugas
3.4.1. Flowchart dan Program

START

SerialBaudrate = 9600

Serial N
Available?

Y
Char ch =
Serial.Read()

N
Ch < 65

Y N
Ch < 91
Serial.write(ch)

Y N
Ch < 97
Ch += 32
N
Y
Serial.write(ch) Ch < 123
Serial.write(ch)

Y
Ch -= 32

Serial.write(ch)

N
Ch < 128

Y
Serial.write(ch)

END
3.4.2. Hasil
Hasil output program diatas adalah ketika ada data serial masuk
dalam hal ini kakater yang diketikkan pada kolom menu, maka
data serial yang masuk akan dikonversikan ke dalam bentuk char,
jika nilai char tersebut kurang dari 65 maka char ASCII akan
mencetaknya.
3.4.3. Analisa
Program tugas merupakan program agar Arduino mampu
menerima data karakter huruf dari keyboard PC dan
mengkonversi menjadi huruf kapital atau sebaliknya. Cara kerja
dari program ini yaitu program akan mengkonversi huruf kecil
menjadi huruf kapital dan sebaliknya dengan cara mengubah nilai
data chracter pada data ASCII. Yaitu dengan menambahkan nilai
+32 atau mengurangi nilai -32. Sehingga pembacaan data pada
ASCII akan mengkonversikannya. Jika character antara 65
sampai 91 atau a sampai z (pada pembacaan kode ASCII) maka
akan ditambahkan +32 (chr+=32) agar mencapai nilai
konversinya. Untuk character 97 sampai 122 atau A sampai Z
(pada pembacaan kode ASCII) maka akan dikurangi -32 (chr-
=32) agar mencapai nilai konversinya
4. Komunikasi Serial dari Data ADC
4.1. Deskripsi Singkat
Komunikasi serial UART mempunyai prinsip kerjanya yaitu ada dua
buah mikrokontroller dengan satu buah mikrokontroller sebagai master
atau trasmitter atau pengirim data, kemudian mikrokontroller kedua
diposisikan menjadi slave atau receiver atau penerima. Data yang akan
dikirimkan oleh transmitter adalah data ADC yang didapat oleh
mikrokontroller melalui PortA atau Port ADC. Mikrokontroller kedua
dilengkapi dengan sebuah LCD yang akan digunakan untuk penampil
datanya.
4.2. Contoh
4.2.1. Flowchart dan Program
START

13 = ledPin A0=SensorPin

SerialBaudrate
= 9600
ledPin=OUTPUT
Sensor Value = 0

Analog Read
Sensor Value

Char ch =
Serial.Read()

Serial.println
(SensorValue)

Delay
2000 ms

END
4.2.2. Hasil

Hasil output program diatas maka dapat diketahui bahwa serial


monitor tercetak nilai serial yang berasal dari PIN A0 yang terhubung
dengan potensiometer. Nilai A0 yang ada diterima dan dibaca oleh
arduino dengan range 0-1023 dan selanjutnya dikonversikan ke bentuk
ASCII dan ditampilkan pada serial monitor dengan delay cetak sebesar
2 detik.
4.2.3. Analisa

Jika potensiometer diputar ke kiri yaitu berlawanan arah jarum jam,


maka nilainya semakin tinggi. Dan sebaliknya apabila diputar ke
kanan, yaitu searah jarum jam, maka nilainya akan rendah. Nilai
maksimum potensiometer yang dihasilkan adalah 1015.
4.3. Contoh 2
4.3.1. Flowchart dan Program

START

13 = ledPin A0=SensorPin

SerialBaudrate
= 9600
ledPin=OUTPUT
Sensor Value = 0

Analog Read
Sensor Value

Sensor Olah =
2*Sensor Value

Char ch =
Serial.Read()

Serial.println
Nilai ADC : (SensorValue)
Nilai Olah : (Sensor Olah)

Delay
2000 ms

END
4.3.2. Hasil
Hasil output program diatas maka dapat diketahui bahwa
serial monitor tercetak nilai serial yang berasal dari PIN A0
yang terhubung dengan potensiometer. Nilai A0 yang ada
diterima dan dibaca oleh arduino dengan range 0-1023.
Setelah itu nilai A0 diolah dengan dikalikan dua dan
selanjutnya dikonversikan ke bentuk ASCII. Nilai A0 dan
hasil olah ditampilkan pada serial monitor dengan delay
cetak sebesar 2 detik. Secara umum program ini adalah
pengembangan dari program contoh 1 dimana ada operasi
dari dalam arduino terhadap input dari luar arduino.
4.3.3. Analisa
Hasil dari program ini adalah nilai Olah akan bernilai dua
kali lipat dari nilai ADC. Nilai ADC didapat ketika memutar
potensiometer. Semakin ke kiri (berlawanan arah jarum jam)
maka nilainya semakin tinggi. Dan ketika diputar ke kanan,
nilainya semakin rendah.
4.4.Tugas
4.4.1. Flowchart dan Program

START

13 = ledPin A0=SensorPin

SerialBaudrate
= 9600
ledPin=OUTPUT
Sensor Value = 0

Analog Read
Sensor Value

N N
Sensor Sensor Sensor
Value<101 Value < 500 Value < 1023

Y Y Y
Sensor Olah = Sensor Olah = Sensor Olah =
0 Sensor Value 2*Sensor Value

Serial.println
Nilai ADC : (SensorValue)
Nilai Olah : (Sensor Olah)

Delay
2000 ms

END
4.4.2. Hasil
Berdasarkan hasil output program diatas maka dapat diketahui bahwa
serial monitor tercetak nilai serial yang berasal dari PIN A0 yang
terhubung dengan potensiometer. Nilai A0 yang ada diterima dan dibaca
oleh arduino dengan range 0-1023. Jika nilai A0 kurang dari atau sama
dengan 100 maka nilai olah sama dengan 0, sedangkan jika nilai A0
antara 101-499 maka nilai olah sama dengan nilai A0, kemudian jika nilai
A0 lebih dari atau sama dengan 500 maka nilai olah adalah dua kali nilai
A0. Setelah itu nilai A0 diolah dengan dikalikan dua dan selanjutnya
dikonversikan ke bentuk ASCII. Nilai A0 dan hasil olah ditampilkan
pada serial monitor dengan delay cetak sebesar 2 detik. Secara umum
program ini adalah pengembangan dari program contoh 1 dimana ada
operasi dari dalam arduino terhadap input dari luar arduino.
4.4.3. Analisa
Hasil dari program ini sesuai dengan ketentuan
Y = 0 jika X =< 100;
Y = X jika 100 < X
< 500; Y = 2X jika
X >= 500 ;
Seperti yang dapat dilihat pada hasil, Nilai 58 kurang dari 100 maka nilai
olah yang dihasilkan adalah 0. Ketika nilai 205, di mana nilai tersebut
lebih dari 100 dan kurang dari 500, hasil olahnya adalah sama yaitu 205.
Ketika nilai yang ADC lebih dari 500, maka hasilnya adalah dua kali
lipat, seperti 622 menjadi 1244

5. Data Serial dikirim ke LCD


5.1. Deskripsi Singkat
Pada percobaan kali ini, digunakan LCD sebagai display data
yang dikirim pada komunikasi serial.
5.2. Contoh
5.2.1. Flowchart dan Program

START

# Include LCD
Pin 12,11,5,4,3,2 = LCD
LCD 16,2

SerialBaudrate = 9600
LCD Cursor 0,1

N
Serial
Available?

Y
Char ch =
Serial.Read()

LCD print (ch)

END
5.2.2. Hasil
Pada program contoh hasil keluaran program yaitu pada lcd
menampilkan pesan “Mikro & Antarmuka” yang dimulai pada
kolom 0 baris 0. Dan untuk kolom 0 baris 1, program akan
menampilkan hasil dari inputan pada serial monitor yang
diinnputkan melalui keyboard PC atau Laptop.
5.2.3. Analisa
Berdasarkan hasil output program diatas maka dapat diketahui
bahwa ketika ada data serial masuk dalam hal ini kakater yang
diketikkan pada kolom menu, maka data serial yang masuk akan
dikonversikan ke dalam bentuk char kemudian ditampilkan pada
LCD
5.3. Tugas
5.3.1. Flowchart dan Program

START

# Include LCD
Pin 12,11,5,4,3,2 = LCD
LCD 16,2

SerialBaudrate = 9600
LCD Cursor 0,1

N
Serial
Available?

Y
Char ch =
Serial.Read()

N N N

Ch < 65 Ch < 91 Ch < 97 Ch < 123

Y Y Y

ch = Serial.Read() ch += 32 ch = Serial.Read() ch -= 32

LCD print (ch)

END
5.3.2. Hasil
Hasil progam ini adalah tulisan Mikro&Antarmuka dengan hasil di
bawahnya berlawanan dengan input yang dimasukkan. Terlihat bahwa
ketika diinputkan huruf kecil “a” maka pada LCD akan tampil huruf
kapital “A”. Begitu pula sebaliknya ketika diinputkan “A” maka pada
LCD akan tampil huruf “a”.

5.3.3. Analisa
Program tugas merupakan program agar Arduino mampu menerima data
karakter huruf dari keyboard PC dan mengkonversi menjadi huruf kapital
atau sebaliknya dan menampilkan dalam LCD. Jika data bukan huruf,
maka data ditampilkan pada LCD seperti aslinya.
Cara kerjanya program akan mengkonversi huruf kecil menjadi huruf
kapital dan sebaliknya dengan cara mengubah nilai data chracter pada
data ASCII. Yaitu dengan menambahkan nilai +32 atau mengurangi nilai
-32. Sehingga pembacaan data pada ASCII akan mengkonversikannya.
Jika character antara 65 sampai 91 atau a sampai z (pada pembacaan kode
ASCII) maka akan ditambahkan +32 (chr+=32) agar mencapai nilai
konversinya. Untuk character 97 sampai 122 atau A sampai Z (pada
pembacaan kode ASCII) maka akan dikurangi -32 (chr-=32) agar
mencapai nilai konversinya.
Lalu LCD akan menampilkan pesan “Mikro & Antarmuka” pada kolom 0
baris 0 dan akan menampilkan hasil konversi character ASCII pada
kolom 0 baris