Rabu, 18 Desember 2013

KOMUNIKASI SERIAL



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