Komunikasi Arduino Matlab Serial (Handshaking)

Posted on

Matlab Arduino Serial

A. Komunikasi Handshaking

Cara Menghubungkan Arduino Matlab Serial (Handshaking) – Aplikasi Matlab memiliki sangat banyak library yang tidak dimiliki oleh aplikasi lain. Dengan berbagai library kita dapat dengan mudah menganalisa sesuatu hal sesuai kebutuhan.

Di antara library yang ada, kita dapat mencari solusi dalam bidang Data Analisis, Komunikasi Wireless, Deep Learning, Computer Vision, Signal Processing, Quantitative Finance and Risk Management, Robotics, hingga Control Systems.

Cara Menghubungkan Arduino Matlab Serial (Handshaking)
Ilustrasi Matlabor

Dari itu, jika kita ingin memembuat sebuah hardware (arduino) yang data dari hardware dapat diporses didalam matlab, kita harus memahami sintaks dasar komunikasi serial antara keduanya.

Pada saya akan membagikan perintah dasar serial dan versi Matlab yang saya gunakan adalah Matlab R2020b.

 

B. Perintah Dasar Komunikasi Serial Arduino Matlab

Langkah pertama dalam membangun komunikasi serial pada Matlab adalah menentukan port yang akan digunakan beserta kecepatan baudrate nya.

1. Inisialisasi Perangkat

Sintaksnya adalah:

>> s = serialport ( “COM4” , 9600);

Nama Port COM4 dan nilai baudRate 9600 dapat diganti sesuai kebutuhan. 

Jika anda belum tahu nama Port yang terdeteksi saat hardware setelah dihubungkan ke komputer atau port anda terhubung ke banyak arduino, anda dapat cek dengan perintah pada Command Window:

>> serialportlist

Maka akan mengeluarkan hasil seperti:

ans =

1×2 string array

“COM4” “COM5”

Setelah anda menentukan nama port, kita baru bisa melakukan proses menulis dan membaca.

 

2. Perintah Mengirim Data

Untuk menulis atau mengirimkan data melalui komunikasi serial, kita harus mengetahui dua hal yaitu mengirimkan data string atau data mentah.

Maksudnya data mentah gmn tuh?

Data mentah dis artinya data dengam tipe data tertentu.

Jika kita mengirim data string seperti “deteksi” ke hardware, maka perintah yang digunakan adalah:

>> writeline(s,”deteksi”)

Kirimkan kata “deteksi” ke perangkat “s”.

 

Namun ketika kita ingin mengirim data dengan tipe data tertentu kita menggunakan perintah:

>> write(s, data, tipe_data)

Keterangan: 

  • s adalah perangkat yang sudah kita sialisasi diawal, yaitu s = serialport ( “COM4” , 9600);.
  • data isikan data sesuai dengan yang diinginkan seperti data numerik, karakter atau string
  • tipe_data adalah tipe data yang kita gunakan. Di antara dipe data yang dapat digunakan adalah : “uint8” , “int8” , “uint16” , “int16” , “uint32” , “int32” , “uint64” , “int64” , “single” , “double” , “char” , “string”

Contohnya:

>> write(s, [1:5] , “int16”)

artinya kita mengirim data dengan nilai [1, 2, 3, 4, 5] ke hardware.

 

3. Perintah Membaca Data

Untuk membaca data juga dibagi atas dua sintaks dasar yaitu untuk membaca data string atau data dengan stipe tertentu.

Jika data yang ingin dibaca adalah berupa string, maka perintahnya adalah:

>> readline(s)

Namun jika data yang ingin dibaca dengan tipe data tertentu, maka perintah dasarnya adalah:

>> read(s, jumlah , tipe_data)

 

Keterangan

  • s adalah perangkat yang sudah kita sialisasi.
  • jumlah adalah jumlah nilai uamg ingin dibaca dari tipe data.
  • tipe data yang dapat dibaca adalah sama seperti menulis data diatas, yaitu “uint8” , “int8” , “uint16” , “int16” , “uint32” , “int32” , “uint64” , “int64” , “single” , “double” , “char” , “string”.

 

Contohnya:

>> read(device, 5, “uint8”)

maka hasilnya adalah :

ans = 1×5

1 2 3 4 5

 

C.  Menulis Dan Membaca Data Secara Realtime

Sekarang saya akan memberikan contoh nyata dari aplikasi .

Saya akan membuat arduino menghidupkan 2 LED secara bergantian melalui perintah dari Matlab dan mengirimkan kembali keterangan berupa string ke Matlab.

Kita beri nama saja dari 2 LED yaitu Led Merah dan Led Hijau.

Ketika Matlab mengirimkan kata “ledR”, maka LED Merah akan hidup, LED Hijau akan mati. Disaat yang bersamaan, arduino mengirimkan kata “Red LED is Turn On” ke matlab .

Ketika Matlab mengirimkan kata “ledG”, maka LED Hijau akan hidup, LED Merah akan mati. Disaat yang bersamaan arduino mengirimkan kata “Green LED is Turn On”.

Adapun program arduino.ino adalah sebagai berikut. Silahkan upload ke Arduino anda.

// www.chippiko.com

String data;

int ledR = 13;
int ledG = 12;

void setup() {
Serial.begin(9600);
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
}

void loop() {
if ( Serial.available() > 0)
{
//Read String Only
data = Serial.readStringUntil('n');
data.trim();


if (data == "ledR")
{
digitalWrite(ledR, HIGH);
digitalWrite(ledG, LOW);
Serial.println("Red LED is Turn On");
}
else if (data == "ledG")
{
digitalWrite(ledR, LOW);
digitalWrite(ledG, HIGH);
Serial.println("Green LED is Turn On");
}
}
}

 

Adapun program matlab.m adalah sebagai berikut. Silahkan klik Run pada Matlab. Lalu perhatikan pada Command Window.

delete(instrfindall);
clear all;

s = serialport ( "COM4" , 9600);

while true
writeline(s,"ledR");
readline(s)
pause(1)

writeline(s,"ledG");
readline(s)
pause(1)
end

 

Dari program matlab di atas, ada dua perintah yang kita gunakan dan belum dibahas sebelumnya, yaitu :

>> delete(instrfindall);

dan 

>> clear all;

 

Apa fungsinya?

delete(instrfindall) berfungsi untuk menghapus data atau menghilangkan atau memutuskan perangkat yang pernah terhubung atau sedang terhubung.

sedangkan clear all; berfungsi untuk menghapus data yang masih tersimpan pada “Workspase”.

 

Semoga tulisan dapat membantu projek anda.

Terima kasih telah berkunjung pada website CHIP PIKO. Jika tulisan bermanfaat, silahkan share dengan klik tombol berikut: