Budiy • Upvote 0 • Downvote 0

Komunikasi Software Serial Pada Arduino

Pada umumnya kita bisa membuat perangkat arduino milik kita dapat berkomunikasi dengan arduino lain menggunakan komunikasi serial secara hardware serial. Komunikasi serial dapat dilakukan dengan menggunakan kabel. Sebelum membahas mengenai software serial, akan saya jelaskan terlebih dahulu mengenai hardware serial.


Hardware Serial

Komunikasi hardware serial dapat dilakukan dengan menggunakan pin TX dan RX pada arduino. Jika arduino ingin berkomunikasi dengan perangkat lain maka sambungan kabel yang digunakan harus disesuaikan. Pin TX berfungsi untuk mengirim data, sedangkan pin RX berfungsi untuk menerima data. Di bawah ini adalah contoh jika ingin menggunakan hardware serial sebagai metode komunikasi data.


Pin TX pada arduino (server) dihubungkan dengan pin RX pada arduino (client). Pin RX pada arduino (server) dihubungkan dengan pin TX pada arduino (client).

Software Serial

Jumlah pin TX dan RX pada arduino sangat terbatas sehingga tidak mungkin untuk dapat menghubungkan arduino dengan banyak arduino sekaligus menggunakan hardware serial. Untuk mengatasi masalah keterbatan jumlah pin TX dan pin RX maka digunakanlah software serial. Untuk melakukan komunikasi dengan menggunakan software serial pada arduino bisa dilakukan tanpa menggunakan pin TX dan pin RX. Dengan menggunakan software serial, kita bisa menggunakan pin digital lainnya sebagai pengganti pin TX dan pin RX.


Perbedaan utama antara hardware serial dan software serial adalah pada kecepatan data. Kecepatan baudrate maksimal pada software serial yaitu 56700 bps. Sedangkan pada hardware serial dapat melakukan komunikasi dengan kecepatan yang lebih tinggi. Akan tetapi jumlah pin TX dan pin RX pada arduino sangat terbatas sehingga tidak memungkinkan untuk berkomunikasi dengan banyak perangkat menggunakan hardware serial.


Implementasi Software Serial

Saya akan mencontohkan ketika arduino ingin mengirim pesan ke arduino lainnya. Di sini saya akan menggunakan arduino UNO karena merupakan mikrokontroller yang paling populer. Arduino UNO banyak digunakan karena harganya yang sangat terjangkau. Pada umumnya pin RX berada pada pin D0 sedangkan pin TX berada pada pin D1. Karena kita akan menggunakan software serial jadi kita bisa menggunakan pin digital lainnya yaitu pin D2 sampai dengan pin D13.


rangkaian arduino uno
rangkaian arduino uno
Source: pixabay Seven_au

Berikut ini contoh source code pada arduino yang bertindak sebagai server atau pengirim pesan.


#include <SoftwareSerial.h>
SoftwareSerial mySerial(2,3);
void setup(){
Serial.begin(9600);
mySerial.begin(9600);
}
void loop(){
if(mySerial.available()){
String data="";
while(mySerial.available()){
char inputan=(char)mySerial.read();
delay(10);
data=data+inputan;
}
Serial.println(data);
}
Serial.println("hello Client");
mySerial.print("hello Client");
delay(2000);
}

Penjelasan:

Pada kode di atas software serial yang akan digunakan adalah pin D2 dan pin D3. Pin D2 dijadikan sebagai pengganti pin TX. Pin D3 dijadikan sebagai pengganti pin RX. Arduino yang bertindak sebagai server akan memeriksa apakah ada data serial yang diterima melalui pin D3 dan mengirim data serial melalui pin D2.


Serial.println("hello Client");

Perhatikan kode di atas baik-baik. Kode di atas digunakan untuk mencetak "hello Client" ke serial monitor pada layar komputer.


mySerial.print("hello Client");

Kode di atas digunakan untuk mengirim pesan "hello Client" ke arduino lainnya (client).


if(mySerial.available()){
String data="";
while(mySerial.available()){
char inputan=(char)mySerial.read();
delay(10);
data=data+inputan;
}
Serial.println(data);
}

Kode di atas digunakan untuk memeriksa apakah ada data komunikasi serial di server yang diterima dari client melalui pin D3. Jika ada data dari client maka data akan ditampung pada variabel data dalam tipe data string. Kode while digunakan untuk memeriksa dan mengambil data sampai data terakhir. Jadi jika dimisalkan client mengirim pesan "hello Server" dan tidak menggunakan while maka hanya karakter pertama saja yang disimpan yaitu huruf "h". Jadi kode while dibutuhkan agar arduino dapat menyimpan seluruh data yang tersedia. Apabila seluruh data komunikasi serial sudah didapatkan maka akan dicetak ke serial monitor pada layar komputer.


Jika tidak ingin mencetak pesan ke serial monitor pada komputer maka kode di bawah ini dapat dihilangkan.

Serial.begin(9600);
Serial.println(data);
Serial.println("hello Client");

Berikut ini contoh source code pada arduino yang bertindak sebagai client atau penerima pesan.


#include <SoftwareSerial.h>
SoftwareSerial mySerial(2,3);
void setup(){
Serial.begin(9600);
mySerial.begin(9600);
}
void loop(){
if(mySerial.available()){
//isi variabel data bisa diganti dengan data dari sensor yang dipakai
String data="hello Server";
//kirim data ke server
mySerial.print(data);
}
}

Penjelasan:

Hampir sama seperti konfigurasi pada arduino server. Pin D2 dijadikan sebagai pengganti pin TX. Pin D3 dijadikan sebagai pengganti pin RX. Jadi pin D2 pada server dihubungkan ke pin D3 pada client menggunakan kabel jumper. Pin D3 pada server dihubungkan ke pin D2 pada client menggunakan kabel jumper.


Sambungan kabel:

Pin D2 SERVER dihubungkan ke pin D3 Client 1

Pin D3 SERVER dihubungkan ke pin D2 Client 1


mySerial.print(data);

Kode di atas digunakan untuk mengirim data dari client ke server melalui pin D2.


Apabila kita ingin arduino berkomunikasi lebih dari satu perangkat arduino (client) maka kita harus menambah kode software serial lainnya. Misalnya kita tambah dua pin lain yang berbeda untuk komunikasi serial yaitu pin D4 dan pin D5. Jadi pin D4 untuk mengirim data serial. Pin D5 untuk menerima data serial.


Berikut ini contoh kode arduino (server) setelah ditambahkan kode software serial lainnya.


#include <SoftwareSerial.h>
SoftwareSerial mySerial(2,3);
SoftwareSerial mySerialTwo(4,5);
void setup(){
Serial.begin(9600);
mySerial.begin(9600);
mySerialTwo.begin(9600);
}
void loop(){
if(mySerial.available()){
String data="";
while(mySerial.available()){
char inputan=(char)mySerial.read();
delay(10);
data=data+inputan;
}
Serial.println(data);
}
Serial.println("hello Client");
mySerial.print("hello Client");
delay(2000);
if(mySerialTwo.available()){
String data2="";
while(mySerialTwo.available()){
char inputan2=(char)mySerialTwo.read();
delay(10);
data2=data2+inputan2;
}
Serial.println(data2);
}
Serial.println("hello Client 2");
mySerialTwo.print("hello Client 2");
delay(2000);
}

Penjelasan:

Kode di atas berfungsi untuk menerima data serial dari client 1 dan client 2 secara bergantian.


Sambungan kabel:

Pin D2 SERVER dihubungkan ke pin D3 pada CLIENT 1

Pin D3 SERVER dihubungkan ke pin D2 CLIENT 1

Pin D4 SERVER dihubungkan ke pin D5 CLIENT 2

Pin D5 SERVER dihubungkan ke pin D4 CLIENT 2


Berikut ini contoh source code pada arduino yang bertindak sebagai client 2 atau penerima pesan ke 2.


#include <SoftwareSerial.h>
SoftwareSerial mySerial(4,5);
void setup(){
Serial.begin(9600);
mySerial.begin(9600);
}
void loop(){
if(mySerial.available()){
//isi variabel data bisa diganti dengan data dari sensor yang dipakai
String data="hello Server";
//kirim data ke server
mySerial.print(data);
}
}

Catatan:

Komunikasi serial berarti harus berjalan secara serial yang berarti hanya dapat menerima data atau mengirim data dari atau ke perangkat lain dalam satu waktu. Artinya komunikasi tidak bisa berjalan bersamaan jadi harus bergantian. Jadi dapat diartikan juga jangan meminta data sensor ke seluruh node dalam waktu bersamaan, ingat: harus gantian.


Contoh urutan algoritme program antara server dan client kira-kira seperti ini:

SERVER : minta data ke CLIENT 1

CLIENT 1 : memberi data

SERVER : simpan data dari CLIENT 1

SERVER : minta data ke CLIENT 2

CLIENT 2 : memberi data

SERVER : simpan data dari CLIENT 2

SERVER : minta data ke CLIENT N

CLIENT N : memberi data

SERVER : simpan data dari CLIENT N

SERVER : proses seluruh data dari semua CLIENT


Setiap client melakukan looping untuk ngecek apakah server meminta data. Cek dengan komunikasi serial apakah ada data yang masuk. Jika ada permintaan data, kasih data ke server. Jika tidak, lanjutkan looping menunggu ada permintaan data dari server.

Popice • Upvote 0 • Downvote 0#1

gg

Anda harus sudah login untuk berkomentar di thread ini
Artikel Terkait
mahasiswa kelelahan
7 Bahaya Gadget Pada Anak Yang Wajib Anda Cegah

Teknologi memang merupakan sesuatu yang berkembang dengan sangat cepat. Tidak dipungkiri bahwa kita semua sangat membutuhkan bahkan cenderung bergantung pada teknologi. Bukan tanpa sebab, teknologi hadir dengan menyuguhkan berbagai kemudahan. Kemu...


Penulis: ayua
kecanduan gadget
Perlu Ditiru, Ini Cara Mengatasi Kecanduan Gadget Pada Anak

Gadget sendiri sebenarnya mulai berkembang pesat beberapa tahun belakangan ini. Semua ini juga kerana adanya percepatan perkembangan teknologi informasi dan digital. Bahkan penggunaannya tidak hanya sekadar alat komunikasi belaka. Gadget hari ini...


Penulis: ayua
HTTP3 test website
Implementasi HTTP3 QUIC pada Nginx (build from source)

H3 atau HTTP3 merupakan protokol HTTP versi 3 yang dikabarkan memiliki peningkatan pada keandalan dan performa pertukaran data. Protokol ini menggunakan UDP sehingga proses pertukaran data lebih cepat dan efisien. Di sini saya akan memberikan tutoria...


Penulis: pangerangalau
Artikel Lainnya dari Budiy
anonymous hacker
3 jenis klasifikasi hacker yang perlu dipahami

Kegiatan hacking atau peretasan sudah dimulai sejak tahun 1960-an. Penggunaan switch telepon pada masa itu menggunakan berbagai macam nada untuk menunjukkan aktivitas apa yang sedang dikerjakan. Seorang hacker menyadari bahwa dengan meniru nada mengg...


Penulis: sadboy
perempuan pergi meninggalkanku
Lirik lagu The Middle East - Blood terjemahan Indonesia

Berikut ini lirik lagu dari "The Middle East - Blood" disertai dengan terjemahan lirik dalam bahasa Indonesia. Lagu tersebut juga menjadi soundtrack dari film romance "Crazy, Stupid, Love - (2011)". [file]image/265[/file]...


Penulis: sadboy
vnc laptop linux melalui iphone
Cara remote komputer dengan OS Linux melalui iPhone menggunakan VNC

Pada tutorial kali ini kita akan fokus membahas mengenai cara remote komputer OS Linux berbasis distro Debian melalui perangkat iPhone menggunakan Virtual Network Computing (VNC). Pada umumnya konfigurasi remote antara komputer dan perangkat mobile m...


Penulis: sadboy
mengedit video
Kompres ukuran file video x264 tanpa mengurangi kualitas dengan FFmpeg

Tutorial ini difokuskan pada kalian yang ingin melakukan kompres file video dengan format x264 atau H.264 pada Sistem Operasi Linux dengan distro Debian. Format x264 merupakan format video yang banyak didukung pada berbagai macam perangkat. Pada umum...


Penulis: sadboy
projek skripsi
Projek: Enkripsi Vernam Cipher Dan Distribusi Kunci Three-Pass Protocol

Ini adalah projek berupa dua buah sistem yang dapat digunakan untuk komunikasi [i]chatting[/i] secara offline menggunakan jaringan radio. Dikarenakan sifatnya yang offline sehingga komunikasi chatting dapat dilakukan tanpa perlu menggunakan pulsa ata...


Penulis: sadboy