Minggu, 06 Juli 2014

Menghubungkan Arduino dengan MATLAB [Part I]

Arduino adalah prototyping platform yang sudah sangat populer dikalangan pelajar, profesional, dan umum. Banyak sekali proyek yang dapat  dibuat menggunakan Arduino. Yang lebih menarik lagi, telah terdapat berbagai contoh di internet yang dapat kita gunakan untuk mengerjakan proyek kita. Salah satu jenis Arduino yang paling banyak digunakan adalah Arduino UNO. Arduino UNO memanfaatkan kemampuan mikrokontroler Atmel ATmega328. Lihat laman berikut untuk informasi lebih lanjut: www.arduino.cc. Disisi lain, MATLAB adalah software yang sangat tangguh untuk aplikasi yang melibatkan proses pengolahan data maupun visualisasi. Kunjungi laman berikut untuk informasi lebih lanjut: www.mathworks.com. Akan menjadi hal yang menarik ketika kemampuan kedua tools ini dapat kita gabungkan. Nah, pada kesempatan kali ini, kita mencoba membahas langkah yang paling sederhana dalam menghubungkan Arduino dan MATLAB.

Untuk pembahasan kali ini, diasumsikan bahwa kita telah mengenal sedikit dasar-dasar Arduino dan MATLAB. Syarat yang harus kita miliki untuk percobaan kali ini adalah sebuah papan Arduino dan software MATLAB yang telah terinstal pada komputer kita. Untuk pembahasan kali ini, kami menggunakan Arduino UNO dan MATLAB 2014a. Selanjutnya, bagaimana mereka bisa saling berkomunikasi? Arduino dan MATLAB dapat saling berhubungan melalui komunikasi serial.
Mari kita Ikutilah langkah-langkah berikut:
 
Koneksikan Arduino dengan komputer menggunakan kabel USB. Selanjutnya, buka MATLAB dan ketikkan sintaks instrhwinfo ('serial'). Asumsi nama objek kita adalah serial

 >> serial = instrhwinfo ('serial')  
 serial =   
          AvailableSerialPorts: {6x1 cell}  
             JarFileVersion: 'Version 3.5'  
     ObjectConstructorName: {6x1 cell}  
             SerialPorts: {6x1 cell}  

Cek port serial berapa saja yang available dengan mengetik serial.AvailableSerialPorts

 >> serial.AvailableSerialPorts  
 ans =   
   'COM1'  
   'COM3'  
   'COM26'  
   'COM43'  
   'COM44'  
   'COM45'  

Ini menandakan bahwa port-port inilah yang bisa terdeteksi oleh MATLAB. Namun demikian, kita harus pilih port mana yang digunakan oleh Arduino. Caranya, cek serial berapa yang digunakan oleh Arduino pada komputer kita. Caranya, kita bisa cek di device manager (untuk OS Windows). Pada Windows 7, device manager dapat dicari dengan mengklik kiri lambang START, kemudian klik kanan Computer, dan pilih  Manage. Amati gambar berikut:



Selanjutnya, jendela Computer Management akan terbuka. Pilihlah Devide Manager, dan amati port yang dipakai di bagian Ports(COM &LPT). Asumsi port yang terpakai adalah COM26, seperti gambar di bawah. Ini menandakan bahwa informasi yang diberikan oleh MATLAB dan komputer kita telah sesuai.



Untuk merealisasikan percobaan kita kali ini, kita harus memprogram baik di sisi Arduino dan MATLAB. Nah, sekarang bukalah Arduino IDE, dan ketikkan sintaks berikut:

 int led = 13;  
 int InputData = 0;  
 void setup() {  
  pinMode(led, OUTPUT);  
  Serial.begin(9600);   
 }  
 void loop() {  
  while (Serial.available() > 0) {    
   InputData = Serial.read();  
   }  
   if (InputData == '1') digitalWrite(led, HIGH);    
   if (InputData == '0') digitalWrite(led, LOW);  
 }  


Prinsip pemrograman Arduino di atas sangatlah sederhana. Arduino UNO telah memiliki led internal yang diletakkan pada pin 13. Jadi, untuk saat ini kita tidak memerlukan led tambahan. Jika Arduino menerima data '1' melalui komunikasi serial dengan MATLAB, maka led akan menyala, sedangkan jika menerima data '0' makan akan memadamkan led tersebut. Sederhana, bukan? Yup, kembali ke MATLAB. Mari kontrol led kita dengan sintaks MATLAB. Ikutilah langkah-langkah berikut dengan megetikkan sintaks pada Command Window.

Buatlah objek untuk komunikasi serial kita menggunakan perintah serial. Beri nama s1, sebagai contoh. Selanjutnya, perintah fopen() digunakan untuk membuka komunikasi serial dengan Arduino. Setelah komunikasi dibuka, perintah fwrite() berfungsi untuk menuliskan data '1' dan mengirimkannya ke Arduino. Amati bahwa setelah perintah ini dikirim, maka led pada Arduino akan menyala. Untuk mematikan, cukup kirim data '0' menggunakan sintaks yang sama. Setelah selesai semuanya, kita bisa menutup dengan perintah fclose().

 >> s1 = serial('COM26','BaudRate',9600)  
 >> fopen(s1);  
 >> fwrite(s1,'1');  
 >> fwrite(s1,'0');  
 >> fclose(s1);  

Yuuppp.... sederhana, bukan? semoga bermanfaat :)

12 komentar:

Unknown mengatakan...

Terimakasih banyak atas sharing ilmunya, semoga Tuhan YME membalas kebaikan anda. Mas saya ada pertanyaan, bisakah sintaks tersebut digunakan dengan GUI-MATLAB? Bila dapat bagaimana ya, mohon bimbingannya, saya masih newbie banget soalnya. Matur suwun...

Kusuma Wardana mengatakan...

Bisa banget, mas... umumnya segala sesuatu yang bisa dikoding menggunakan MATLAB, akan bisa dikoding pula menggunakan GUI. GUI digunakan sebagai antarmuka saja, dan selanjutnya untuk aksi sistem sama dengan pemrograman MATLAB pada umumnya. Untuk lebih jelasnya, akan saya posting di web edukasi saya beikut: www.blog.miarana.com

Terima kasih

Unknown mengatakan...

Mas kalau aku bikin program fuzzy terus programnya ditransfer ke arduino bisa gak ya? Caranya bagaimana, mohon bantuannya!

Kusuma Wardana mengatakan...

bisa. namun mas perlu pemahaman mengenai bagaimana fuzzy bekerja. hal ini bisa menjadi kegiatan yang memusingkan. jika penggunaan komputer diperbolehkan, saran saya, mas desain fuzzy di matlab, kemudian hubungkan matlab dengan arduino. arduino digunakan sebagai pembaca input dan melakukan aksi. algoritma fuzzy sepenuhnya diprogram di matlab. nanti, output fuzzy mas keluarkan ke arduino.

Unknown mengatakan...

mau tanya misal pas kita pingin tau port yang ada kok ngga kebaca ya serial portnya. Penyebabnya apa kira2?Mhn bantuannya

Unknown mengatakan...

mau tanya misal pas kita pingin tau port yang ada kok ngga kebaca ya serial portnya. Penyebabnya apa kira2?Mhn bantuannya

Unknown mengatakan...

mau tanya dong kok pas saya cek port apa saja yang dibaca MATLAB ternyata ngga ada port yg bisa dipakai. itu kenapa ya min?

Unknown mengatakan...

saya mau beli buku yg anda buat. pembelian di nulisbuku.com ada kesulitan pada saat mengisi form pemesanan. sudah email ke adminnya tp belum diberikan solusi. Apakah saya bisa beli buku ttg Teknik Antarmuka Matlab dan Arduino secara langsung ??
terma kasih

Unknown mengatakan...

maaf ni mas.... saya udah nyobain pake syntak diatas... untuk mendeteksi port nya berhasil tapi pas di coding s1=..... jadi ada tulisan index aceeds matrix dimension... terus selanjutnya kebawah enggak bisa.. bagaimana cara mengatasinya? mohon bantuannya.

arga yudha mengatakan...

artikel bagus gan, kunjungan baliknya di PENGENALAN DENGAN ARDUINO DAN JENIS ARDUINO ARGA YUDHA
atau langsung ke website
http://www.argayudhaadhiprama.com/2016/01/25/pengenalan-dengan-arduino/

Unknown mengatakan...

maaf mas sblmnya. berhubung pertanyaan saya sama saudara bayu, maka prtanyaan saya "berarti matlab digunakan sebagai interfacenya? dan modul arduino uno tidak bisa lepas dr pc dong?"
mohon pencerahannya

Desa Rejosari mengatakan...

s1 = serial('COM5', 'Baudrate', 9600);
Index exceeds matrix dimensions.

ini kenapa ya kak?