4 December 2015

Pengiriman Data Dari Aruino Ke Matlab Via USB Tanpa Software Tambahan

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. 

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.

Gambar 1. Informasi baudrate dan serial port

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/‎

8 comments:

  1. Terima kasih bg Muhammad ikhsan atas penjelasannya.

    ReplyDelete
  2. mas ikhsan saya mau sharing sharing bisa..?? kalo bisa ada kontak yang bisa saya hubungi..??

    ReplyDelete
    Replies
    1. silahkan 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 :)

      Delete
  3. This comment has been removed by the author.

    ReplyDelete
  4. Untuk tuning pid arduino matlab gmn yaam

    ReplyDelete
    Replies
    1. tuning 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

      Delete
  5. Assalamu'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