kali ini kita akan
belajar tentang komunikasi serial,
kenapa harus belajar komunikasi serial sih
jawabanya jangan tanya mengapa karena jikalau kita ingin mendalami arduino
kita harus mengetahui dulu apa itu komunikasi serial
dan sekarang yang kita pelajarin di komunikasi serial dimana kita akan belajar cara mengirimkan
data dan menerima data melalui UART Arduino, membuat program untuk mengirimkan
data berbasis teks dan berbasis byte, dan juga kita mampu untuk membuat program
untuk menerima data dengan cara pooling dan interupsi serial.
Silahkan dicoba seperti berikut ini :
Seperti biasa, yang kita butuhkan
dalam praktikum ini adalah :
- Komputer
- Arduino
- Project Board
- Kabel Jumper
- LCD
- Potensiometer 10K
PERCOBAAN :
1. Mengirimkan Data Teks
Percobaan ini dibuat untuk
mengirimkan data teks ke komputer melalui komunikasi serial. Pengiriman data
akan menggunakan baudrate 9600.
Prosedur :
1. Tuliskan sintaks program seperti
berikut, kompilasi dan upload program berikut ke sistej arduino (seperti
biasanya yaa :))
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print(“Hello World”
delay(2000);
}
2. Berikutnya, buka serial
monitor ARDUINO IDE seperti berikut ini.
(Tools – Serial Monitor)
3. Pastikan bahwa konfigurasi
baudrate yang dipakai adalah 9600.
4. Lalu pastikan, apakah kata yang
dikirimkan Arduino diterima oleh Serial Monitor
2. Mengirim Data Byte
Percobaan berikut ini untuk
mengirimkan data byte ke komputer melalui komunikasi serial menggunakan 115200
Prosedur :
1. Tuliskan sintaks program seperti
berikut, kompilasi dan uploud ke sistem Arduino.
void setup()
{
Serial.begin(115200);
}
void loop()
{
Serial.write(0×41);
Serial.write(0×42);
Serial.write(0×43);
Serial.write(0×44);
Serial.write(0×45);
delay(2000);
}
2. Buka aplikasi Hterm pada komputer
dan pastikan konfigurasi Hterm seperti gambar ini.
3. Klik tombol connect dan
perhatikan data yang ditampilkan pada Received Data.
Apakah data tersebut sama dengan
data yang dikirimkan pada arduino.
3. Menerima Data dari UART dengan
Sistem Pooling
Percobaan ini dibuat untuk menerima
data teks dari komputer melalui komunikasi serial. Proses penerimaan data akan
menggunakan sistem pooling (seperti yang sudah dpelajari sebelumnya).
Penerimaan menggunakan baudrate 9600.
Prosedur percobaan :
1. Buat rangkaian seperti berikut
2. Tuliskan sintaks program
berikut, kompilasikan dan uploud program ke sistem minimum arduino
#include<LiquidCrystal.h>
LiquidCrystal lcd (2,3,4,5,6,7);
String textFromSerial = “”;
void setup()
{
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Data From Serial”);
Serial.begin(9600);
}
void loop()
{
while(Serial.available()>0)
{
char data = Serial.read();
if(data == ‘\n’)
{
lcd.clear ();
lcd.setCursor(0,0);
lcd.print(“Data From Serial”);
lcd.setCursor(0,1);
lcd.print(textFromSerial);
textFromSerial=”";
}
else
{
if(data!=’\r’)
{
textFromSerial += data;
}
}
}
}
3. Ketikkan kata (sembarang) pada
serial monitor lalu tekan send.
4.Menerima Data dari UART dengan
INTERUPSI
Percobaan ini sama dibuat untuk
menerima teks namun kali ini menggunakan interupsi serial. Data yang diterima
akan ditampilkan oleh LCD dan penerimaan menggunakan baudrate 115200.
Prosedur Percobaan :
1. Tuliskan sintaks program berikut,
kompilasi dan uploud ke sistem minimum arduino.
#include <LiquidCrystal.h>
#define FOSC 16000000
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
String dataSerial;
void initSerial(int baudrate)
{
int ubrr = FOSC/16/baudrate-1;
// Mengisi register UBRR0H dan
UBRR0L untuk menentukan baudrate
UBRR0H |= ubrr>>8;
UBRR0L |= ubrr;
// Mengaktifkan saluran transmitter
dan receiver
UCSR0B |=
(1<<RXEN0)|(1<<TXEN0);
// Menggunakan format data 8 bit
UCSR0C |=
(0<<UCSZ02)|(1<<UCSZ01)|(1<<UCSZ00); // Menggunakan 1
stop bit
UCSR0C |= (0<<USBS0);
// No Parity
UCSR0C |=
(0<<UPM01)|(0<<UPM00);
// Mengaktifkan RX interrupt
UCSR0B |= (1<<RXCIE0);
}
// Rutin yang akan dijalankan jika
terjadi interupsi
ISR(USART_RX_vect)
{
char data = UDR0;
if(data==’\n’)
{
lcd.clear ();
lcd.setCursor(0,0);
lcd.print(“Incoming Data”);
lcd.setCursor(0,1);
lcd.print(dataSerial);
dataSerial = “”;
}
else
{
if(data!=’\r’)
{
dataSerial += data;
}
}
}
void setup()
{
initSerial(9600);
lcd.begin(16,2);
lcd.clear();
sei();
}
void loop() {
}
2. Ketikkan kata (sembarang) pada
serial monitor lalu tekan send
sekian dulu ye kalau wasalamualaikum warrohmatulahiwabarokatuh
Tidak ada komentar:
Posting Komentar