Dalam tutorial Arduino Indonesia kali ini akan mengulas mengenai bagaimana melakukan serial interfacing (antarmuka) antara board Arduino Uno dengan MATLAB. Beberapa hal yang perlu dipersiapkan dalam percobaan kali ini ialah sebagai berikut.
- Board Arduino Uno
- Kabel USB connector
- Arduino IDE
- MATLAB dan support package for Arduino
Untuk MATLAB dan support package for Arduino dapat diperoleh dengan download gratis melalui link berikut. MATLAB dan support package for Arduino tersebut tersedia untuk sistem komputer dengan operating system Windows 32-bit dan 64-bit, Mac OS 64-bit, dan juga Linux 64-bit.
Arduino IDE
Berikut ini adalah source code (sketch) Arduino untuk melakukan komunikasi serial.
/*
Program Arduino mengirimkan data ke MATLAB
Loki Lang
*/
int i = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.println(i);
i++;
}
Program Arduino mengirimkan data ke MATLAB
Loki Lang
*/
int i = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.println(i);
i++;
}
Source code (sketch) tersebut akan mengirimkan nilai variable i pada baud rate 9600. Nilai dari variable i akan terus bertambah seiring dengan waktu. Tulis source code(sketch) tersebut, lakukan Verify, lalu Upload.
MATLAB Serial Class
Pada program MATLAB, akan menampilkan plot data variable i yang dikirimkan oleh board Arduino. Data variable i tersebut dapat disesuaikan modifikasi program untuk pembacaan sensor. Hal ini dapat dilakukan semudah pada Arduino IDE. Langkah pertama adalah membuat sebuah object dari class serial di MATLAB. Lakukan set COM port yang digunakan Arduino. Bila Arduino terhubung dengan komputer pada COM4 maka tulis port tersebut, dan tuliskan juga baud rate yang digunakan.
arduino=serial('COM4','BaudRate',9600);
Selanjutnya ialah membuka object arduino sebagai sebuah file.
fopen(arduino)
Berikutnya menentukan set point sumbu x dari plot, dalam contoh kasus ini dari sumbu x bernilai hingga 100.
x=linspace(1,100);
Untuk membaca data dari Arduino, digunakan function fscanf(), sebagai data terbaca pada sumbu y pada plot.
for i=1:length(x)
y(i)=fscanf(arduino,'%d');
end
y(i)=fscanf(arduino,'%d');
end
Penggunaan %d berarti pembacaan object arduino dalam bilangan desimal. Setelah selesai, proses pengambilan data yang ditentukan sudah terpenuhi, maka komunikasi serial dengan Arduino akan diputus, dan menampilkan plot data dari Arduino tersebut.
fclose(arduino);
disp('making plot..')
plot(x,y);
disp('making plot..')
plot(x,y);
Berikut ini adalah keseluruhan source code MATLAB.
clear all
clc
arduino=serial('COM4','BaudRate',9600);
fopen(arduino);
x=linspace(1,100);
for i=1:length(x)
y(i)=fscanf(arduino,'%d');
end
fclose(arduino);
disp('making plot..')
plot(x,y);
clc
arduino=serial('COM4','BaudRate',9600);
fopen(arduino);
x=linspace(1,100);
for i=1:length(x)
y(i)=fscanf(arduino,'%d');
end
fclose(arduino);
disp('making plot..')
plot(x,y);
Berikut ini adalah hasil plot data variable i dari Arduino yang diterima oleh MATLAB.
Bila ada sesuatu yang belum jelas dan ingin tahu lebih dalam seputar project Arduino, pemrograman, dan elektronika, bisa bertanya pada bagian comment atau melalui page Facebook berikut.