Dalam tutorial singkat ini dibahas mengenai integrasi perangkat lunak
Matlab 2010a dan perangkat keras Arduino Uno. Sinyal analog yang
bersumber dari sensor (dalam kasus ini digunakan sensor cahaya) diproses
oleh arduino menjadi sinyal digital. Sinyal tersebut kemudian
ditransfer oleh Arduino melalui port USB menuju PC. Program Matlab diset
untuk membaca data yang ditransfer melalui USB dan menvisualkan
hasilnya menggunakan command plot. Tutorial ini hanya menggunakan Arduino seri Uno dan Matlab tanpa software tambahan lainnya, sehingga sangat
mudah untuk dilakukan.
Permasalahan dan signifikansi
Data penelitian yang dikumpulkan secara berkala pada umumnya harus dianalisis terlebih dahulu agar didapatkannya kesimpulan penelitian yang diharapkan. Pengolahan data dapat dilakukan dengan menggunkan perangkat lunak,dalam kasus ini contohnya Matlab. Agar didapatkannya kemudahan dalam pengolahan data, maka diperlukan juga kemudahan secara teknis, artinya data yang didapatkan dari arduino bias diakses secara cepat dan akurat kedalam Matlab. Atas dasar tujuan tersebut maka diperlukan integrasi perangkat keras Arduino dan perangkat lunak Matlab melalui port USB, dengan cara ini transfer data dapat dilakukan setiap saat dan juga secara real-time.
Data penelitian yang dikumpulkan secara berkala pada umumnya harus dianalisis terlebih dahulu agar didapatkannya kesimpulan penelitian yang diharapkan. Pengolahan data dapat dilakukan dengan menggunkan perangkat lunak,dalam kasus ini contohnya Matlab. Agar didapatkannya kemudahan dalam pengolahan data, maka diperlukan juga kemudahan secara teknis, artinya data yang didapatkan dari arduino bias diakses secara cepat dan akurat kedalam Matlab. Atas dasar tujuan tersebut maka diperlukan integrasi perangkat keras Arduino dan perangkat lunak Matlab melalui port USB, dengan cara ini transfer data dapat dilakukan setiap saat dan juga secara real-time.
Pada Arduino
Untuk menjalankan eksperimen ini pada tahap awal arduino perlu di upload dengan program seperti berikut ini:
#include
<SoftwareSerial.h>
float sensorPin = A0; //menentukan pin input analog
float sensorValue = 0; //mendeklarasikan variable untuk menimpan nilai, dengan
nilai awal adalah 0
void setup() {
Serial.begin(115200); //mengaktifkan port serial dengan baudrate 115200
while (!Serial) {
; // menunggu
port serial terkoneksi (Needed for Leonardo only)
}
}
void loop() {
int sensorValue = analogRead(sensorPin); // membaca nilai
dari sensor
Serial.println(sensorValue); // menuliskan nilai yang terbaca dari sensor ke
port serial
delay(200);// memberikan delay sebesar 0.2 detik, berpengaruh pada
cepat pembacaan sensor dan visualisasi pada Matlab
}
Pada Matlab
Sedangkan pada matlab dapat digunakan fitur m-file dan dijalankan program dengan script sebagai berikut
s = serial('COM20'); %sesuaikan dengan settingan port
serial arduino anda
set(s, 'InputBufferSize', 256);
set(s, 'BaudRate',
115200);
set(s, 'DataBits', 8);
set(s, 'Parity', 'none');
set(s, 'StopBit', 1);
set(s, 'FlowControl', 'hardware'); %jangan pake none agar tidak
lambat
set(s, 'Timeout', 10);
disp(get(s, 'Name')) %tampilan
untuk konfigurasi serial
prop(1)=(get(s, 'BaudRate'));
prop(2)=(get(s, 'DataBits'));
prop(3)=(get(s, 'StopBit'));
prop(4)=(get(s, 'InputBufferSize'));
disp(['Port Setup
Done ', num2str(prop)])
fopen(s); %membuka
port yang telah ditentukan
t=1;
disp('start') %menampilkan
tulisan “start”
while(t>0)
data=fscanf(s, '%f'); %menyimpan
angka yang diterima dari serial kedalam variable “data”
plot(t,data,'*') %menampilkan dalam grafik
axis ([t-20 t 0 1100]) %syarat
batas sumbu-x dan sumbi-y pada plot
hold on;
t=t+1;
drawnow;
end
fclose(s); %menutup
port yang digunakan
clear s; %menghapus nilai yang tersimpan
dalam variable s
Ketika script matlab dijalankan, maka akan muncul tampilan seperti gambar 1, tampilan tersebut bertujuan untuk menginformasikan kembali pada user mengenai baudrate dan port yang digunakan.
Sedangkan plot akan muncul segera setelah tampilan awal, tampilannya adalah seperti gambar 2 dengan nilai yang selalu berubah sesuai nilai yang diberikan sensor. Perlu diketahui bahwa plot tidak dapat muncul apabila port yang dituju sedang digunakan oleh aplikasi lain.
Gambar 2 hasil plot secara real-time
Data dari sensor yang terpasang pada perangkat keras arduino dapat divisualisasikan pada Matlab. Walau demikian masih terdapat beberapa kekurangan diantaranya adalah data yang ditampilkan oleh Matlab belum bisa dikategorikan sebagai data murni real-time dikarenakan adanya proses penyimpanan data oleh matlab kedalam variabel yang telah ditentukan. Kekurangan lain yang juga dampak dari proses penyimpanan tersebut adalah proses visualisasi pada matlab menjadi lebih lambat. Walaupun terdapat beberapa kekurangan, inti dari tujuan percobaan ini dapat tercapai, dan penggunaan matlab sebagai media analisis kini menjadi semakin lebih menarik, betul begitu?
Referensi:
[1]http://www.mathworks.com/matlabcentral/answers/111231-real-time-data-acquisition-from-arduino-using-simulink
[2] http://billwaa.wordpress.com/2013/07/10/matlab-real-time-serial-data-logger/
[3] http://playground.arduino.cc/Interfacing/Matlab
[4] sabakukyu.wordpress.com/2013/07/23/arduino-matlab-serial-plot/
[2] http://billwaa.wordpress.com/2013/07/10/matlab-real-time-serial-data-logger/
[3] http://playground.arduino.cc/Interfacing/Matlab
[4] sabakukyu.wordpress.com/2013/07/23/arduino-matlab-serial-plot/
Terima kasih bg Muhammad ikhsan atas penjelasannya.
ReplyDeleteYoi Rich, terima kasih juga sudah membaca
Deletemas ikhsan saya mau sharing sharing bisa..?? kalo bisa ada kontak yang bisa saya hubungi..??
ReplyDeletesilahkan Mas Shalikhul, sharing disini saja gak apa, maaf baru saya balas, soalnya dalam minggu kemarin saya sedang siapin berkas2 administrasi, hehe..., jadi apa yang mau didiskusikan silahkan :)
DeleteThis comment has been removed by the author.
ReplyDeleteUntuk tuning pid arduino matlab gmn yaam
ReplyDeletetuning PID pakai PIDTOOL di matlab bisa dicoba Mas Ryan, coba lihat artikel saya yang ini http://sentroino.blogspot.de/2015/12/kontrol-pid-pada-arduino-rangkaian-orde.html
DeleteAssalamu'alaikum mas ikhsan, saya mau bertanya, saya punya generator sinyal yang memiliki yang dapat mengeluarkan frekuensi sampai dengan 1 MHz, pada arduino sudah terbaca, saya ingin memasukkan data yang saya dapat di arduino ke matlab, kodingan matlabnya bagaimana yah?
ReplyDelete