Anda di halaman 1dari 28

NAMA : Muhammad Afif Bahrain

NIM : 1841220025
KELAS : 3B D-IV TOE
PRAKTIKUM INTERFACING & MIKROKONTROLLER
KOMUNIKASI SERIAL

A. TUJUAN
1. Dapat menjalankan Proteus untuk aplikasi komunikasi serial.
2. Membuat aplikasi komunikasi serial antara PC dengan modul mikrokontroler arduino
3. Menampilkan dan mengamati data setelah pengiriman data dari arduino ke serial monitor
PC.

B. DASAR TEORI
Komunikasi serial adalah salah satu protokol komunikasi yang paling banyak diadopsi dan
juga terdokumentasi dengan baik. Komunikasi serial adalah komunikasi yang pengiriman datanya
per-bit secara berurutan dan bergantian. Komunikasi serial ada dua macam, asynchronous serial
dan synchronous serial.
1. Synchronous serial adalah komunikasi dimana hanya ada satu pihak (pengirim atau
penerima) yang menghasilkan clock dan mengirimkan clock tersebut bersama-sama
dengan data.
Contoh: terdapat pada transmisi data keyboard.
2. Asynchronous serial adalah komunikasi dimana kedua pihak (pengirim dan penerima)
masing-masing menghasilkan clock namun hanya data yang ditransmisikan, tanpa clock.
Contoh: UART pada serial port (COM) komputer.

Konsep Baud Rate


Menghubungkan dua perangkat melalui komunikasi serial adalah kedua perangkat berkomunikasi
dengan konfigurasi yang sama. Parameter komunikasi secara serial, diantaranya adalah baud rate,
paket data, parity bit, dan synchronization bit. Baud rate: kecepatan data dikirim melalui
komunikasi serial. Satuan bit-per-second (bps). Standar kecepatan: 1200, 2400, 4800, 9600,
19200, 38400, 57600, dan 115200 bps.

Contoh Pengiriman Data


Scenario pengiriman, yaitu 9600 8N1. Kode 9600 8N1 bermakna bahwa kecepatan yang
digunakan 9600 baud, 8-bit data, tidak terdapat parity, dan 1- bit stop. Data akan dikirim dalam
format ASCII (American Standard Code for Information Interchange). Dikirim kata OK (O dan
K), maka komunikasi akan memilki dua buah paket data.
• Karakter „O‟ = 79d (0100 1111 b)
• Karakter „K‟ = 75d (0100 1011 b).

Kecepatan 9600 bit/detik, maka setiap bitnya memerlukan waktu selama 1/9600 = 104
mikrodetik/bit. Satu paket data untuk satu karakter terdiri dari 10 bit (8-bit data, 1-bit start dan 1-
bit stop). Pengiriman satu karakter (yang terdiri dari 10-bit) akan membutuhkan waktu selama 10
x 104 mikrodetik = 1.040 mikrodetik = 1,04 ms (milidetik). Pengiriman kata
„OK‟ akan membutuhkan waktu sekitar 2 milidetik pada kecepatan 9600 bps.

Gambar 1. Bentuk LED dan Simbol LED

Setiap port komunikasi serial akan menggunakan sepasang pin digital. Satu pin untuk
menerima, dan satu lagi untuk mengirim. Sebagai contoh, di Arduino UNO yang memiliki satu
port komunikasi serial, pin #0 untuk menerima (RX), dan pin #1 untuk mengirim (TX). Semua
board Arduino memiliki sedikitnya satu buah kontroller komunikasi serial. Hal ini menyebabkan
komunikasi serial dengan board Arduino mudah untuk dilakukan.

(Silahkan Anda ketikkan tambahkan sendiri, jika ada, dasar teori yang berisi tentang
pengertian, cara kerja, dan fungsi dari Komunikasi Serial)
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………

C. HARDWARE
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. LED 1 Buah
5. Resistor 220 Ω
6. Resistor 10 kΩ
7. Push Button
8. Kabel Data USB

D. RANGKAIAN PERCOBAAN SIMULASI

Gambar 2. Rangkaian Percobaan 1

Gambar 3. Rangkaian Percobaan 2


Gambar 4. Rangkaian Percobaan 3

Gambar 5. Rangkaian Latihan Eksperimen Arduino Chat

(Silahkan Anda lanjutkan dengan menambahkan gambar rangkaian percobaan simulasi


Komunikasi Serial yang Anda buat sendiri melalui software Proteus/Tinkercad)

E. LANGKAH PERCOBAAN
1. Buka dan buat project di Proteus.
2. Rangkailah project simulasi Arduino dengan 8-LED.
3. Buka Visual Studio Code / Arduino IDE / Arduino Genuino.
4. Buat programnya dan jalankan, pastikan tidak ada error.

5. Copy as path file “firmware.hex” pada board Arduino UNO di Proteus


6. Jalankan simulasi rangkaian, Run the Simulation.

Langkah Percobaan pada Hardware Arduino

1. Tancapkan USB serial ke kemputer.

2. Pastikan drivernya sudah terinstall dan dikenali dengan benar.

3. Cek driver, lihat port COM dan samakan pada software Arduino IDE.

4. Jalankan Arduino dan buat programnya.

5. Buka jendela komunikasi serial pada IDE Arduino caranya, pilih Tools > Serial Monitor.
F. PROGRAM
1. Percobaan 1, Menampilkan kata “Hello World!” pada Serial Monitor.

2. Percobaan 2, menampilkan nilai kondisi apabila button ditekan maka akan muncul 1 di serial
monitor, apabila tidak maka muncul 0.
3. Percobaan 3, Membuat program tx dan rx dengan Arduino

➢ Pengirim Tx

➢ Penerima Rx
➢ Percobaan Tx dan Rx
Latihan/Tugas!

1. Buatlah eksperimen dengan menggunakan komunikasi serial untuk menampilkan hasil dari
ekspresi matematika.
2. Buatlah eksperimen dengan menggunakan komunikasi serial antara 2 modul arduino yang
dapat berkomunikasi seperti chatting. Rangkaian terdapat pada Gambar 5.
➢ Analisis
Percobaan ini hanya dapat dilakukan jika langsung digunakan pada hardware. Karena
Arduino IDE harus ter-connect.

G. ANALISIS HASIL PERCOBAAN


1. Kerjakan di Tinkercad (Menyalakan 1 LED dengan Power Supply)
2. Kerjakan di Tinkercad (Menyalakan 1 LED dengan Arduino UNO)

3. Kerjakan di Tinkercad (Menyalakan 2 LED ON/OFF dengan Arduino UNO, untuk


logika HIGH dan LOW)
4. Lanjutkan dengan percobaan pada Modul Praktikum menggunakan Software
Proteus…
a. Untuk nomor satu karena tidak perlu program (serta arduino), jadi tidak
saya tampilkan di proteusnya.
b. 1 LED Arduino

c. 2 LED Arduino High-Low


Nyala Merah
Nyala biru

(Silahkan Anda tulis ulang program (source code/script) Anda disini dan menambahkan gambar
hasil rangkaian percobaan simulasi pada Proteus/Tinkercad, buatlah analisis pengamatan yang
Anda alami selama melakukan percobaan)

Menampilkan “Hello World”

void setup() {

Serial.begin(9600);

// put your setup code here, to run once:

void loop() {

Serial.println("Hello World");

delay(1000);
// put your main code here, to run repeatedly:

➢ Analisis : println berfungsi untuk menampilkan karakter

Menampilkan Program PushButton

int pushButton = 2;

void setup() {

Serial.begin(9600);

pinMode(pushButton, INPUT);

// put your setup code here, to run once:

void loop() {

int kondisiButton = digitalRead(pushButton);

Serial.println(kondisiButton);

delay(1000);

// put your main code here, to run repeatedly:

➢ Analisis : fungsi perintah pushbutton yaitu saat tombol dipencet akan menjalankan input.

Program Tx dan Rx

Pengirim Tx

#include<Wire.h>

void setup() {
Wire.begin(2);

Wire.onRequest(requestEvent);

// put your setup code here, to run once:

void loop() {

delay(1000);

// put your main code here, to run repeatedly:

void requestEvent()

Wire.write("test");

Penerima Rx

#include<Wire.h>

void setup() {

Wire.begin(2);

Serial.begin(9600);

// put your setup code here, to run once:

void loop() {

Wire.requestFrom(2,6);

while(Wire.available());

{char c = Wire.read();

Serial.print(c);

// put your main code here, to run repeatedly:

delay(500);

}
➢ Analisis : pada “Wire.requestFrom(2,6);” angka 2 dan 6 menunjukkan alamat dan
kuantitas.

Percobaan Program Rx Tx lain

Tx :

#include <Wire.h>

void setup() {

Wire.begin();

// put your setup code here, to run once:

byte a = 0;

void loop() {

Wire.beginTransmission(8);

Wire.write("a adalah ");

Wire.write(a);

Wire.endTransmission();

a++;

delay(1000);

// put your main code here, to run repeatedly:

}
Rx :

#include <Wire.h>

void setup() {

Wire.begin(8);

Wire.onReceive(receiveEvent);

Serial.begin(9600);

// put your setup code here, to run once:

void loop() {

void receiveEvent(int howMany) {

while (0 < Wire.available()){

char c = Wire.read();

Serial.print(c);

int a = Wire.read();

Serial.println(a);

Ekspresi Matematika
#include <Arduino.h>

int x;

int y;

int z;

void setup() {

Serial.begin(9600);}

void loop() {

Serial.println("Masukkan x= ");

while(!Serial.available());

x= Serial.parseInt(); //Masukkan x

Serial.println("Masukkan y= ");

y= Serial.parseInt(); //Masukkan y

Serial.println("Masukkan z= ");

z= Serial.parseInt(); //Masukkan z

Serial.print("x = ");Serial.println(x);

Serial.print("y = ");Serial.println(y);

Serial.print("z = ");Serial.println(z);

// Ekspresi matematika

Serial.print("x + y = ");
Serial.println(x + y);

Serial.print("y - z = ");

Serial.println(y - z);

Serial.print("x * z = ");

Serial.println(x * z);

Serial.print("x / z = ");

Serial.println(x / z);

➢ Analisis : while menyatakan perulangan

Serial 2 Modul

#include <SoftwareSerial.h>

SoftwareSerial chat(10, 11);

int text;

void setup() {

Serial.begin(9600);

Serial.println("Memulai pesan...");

chat.begin(9600);

delay(1000);

chat.println("Ohayou sekai");

// put your setup code here, to run once:

void loop() {

if (chat.available())

Serial.write(chat.read());

if (Serial.available())
{

Serial.print("Apip : ");

while (Serial.available())

text = Serial.read();

chat.write(text);

Serial.write(text);

chat.println();

Serial.println();

// put your main code here, to run repeatedly:

Soal Analisis Hasil Percobaan

a. Untuk soal nomor 1 tidak memiliki program pengoprasian

b. 1 LED Arduino
void setup()

pinMode(13, OUTPUT);

void loop()

digitalWrite(13, HIGH);

delay(1000); // Wait for 1000 millisecond(s)

c. 2 LED HIGH-LOW
void setup()

pinMode(13, OUTPUT);
pinMode(12, OUTPUT);

void loop()

digitalWrite(13, HIGH);

delay(1000); // Wait for 1000 millisecond(s)

digitalWrite(13, LOW);

delay(1000); // Wait for 1000 millisecond(s)

digitalWrite(12, HIGH);

delay(1000); // Wait for 1000 millisecond(s)

digitalWrite(12, LOW);

delay(1000); // Wait for 1000 millisecond(s)

}
H. KESIMPULAN
Setelah melakukan percobaan di atas, buatlah kesimpulan pengamatan yang Anda alami selama
melakukan percobaan)

1. Ada beberapa program yang hanya dapat dijalankan apabila langsung diaplikasikan ke
hardware
2. Dari 2 aplikasi untuk proses pembelajaran terdapat keunggulannya masing2.

Anda mungkin juga menyukai