[TUTORIAL] Menghubungkan MATLAB-Arduino


Kusuma Wardana 11 Des 2015 Elektronika

Mulai Baca

Fungsi Dasar Pustaka Arduino

Ketika kita menggunakan pustaka Arduino pada MATLAB, maka MATLAB dapat mengambil alih kontrol pada papan Arduino. Kita dapat langsung mengetikkan sintaks atau skrip tertentu pada MATLAB, dan melihat hasilnya pada papan Arduino. Proses awal ketika membangun koneksi antara MATLAB dengan Arduino memang membutuhkan waktu beberapa saat. Kita harus sabar menunggu proses ini. Namun, untuk selanjutnya, kita dapat mengontrol Arduino sepenuhnya tanpa harus melakukan koneksi ulang. Hal ini akan berbeda jika kita mengetikkan program pada IDE Arduino. Perbaikan satu karakter saja harus melakukan proses upload ulang ke papan Arduino.

Jika kita menggunakan pustaka Arduino pada MATLAB, maka tentunya terdapat beberapa fungsi yang akan digunakan oleh MATLAB untuk berkomunikasi dan mengontrol Arduino. Secara garis besarnya, terdapat beberapa fungsi pada MATLAB yang sepadan dengan fungsi yang digunakan pada IDE Arduino. Fungsi sepadan maksudnya adalah fungsi yang memiliki kegunaan yang serupa, namun dengan perbedaan nama dan input untuk setiap fungsi. Amatilah Tabel 1.

Tabel 1. Kesepadanan fungsi Arduino dan MATLAB

Perlu dipahami bahwa MATLAB terus melakukan perbaruan terhadap pustaka Arduino ini. Pada saat tulisan ini dibuat, penulis menggunakan pustaka versi 14.1.1. Pembaca dapat melakukan pembaruan dengan mengikuti langkah-langkah yang sama, seperti proses instalasi sebelumnya. Namun demikian, mungkin beberapa fungsi akan mengalami penambahan dan perbaikan.

Semua fungsi MATLAB pada Tabel 1 akan dimulai dengan pemanggilan fungsi utama, yaitu arduino(). Fungsi arduino() akan membangun koneksi antara MATLAB dan Arduino. Saat eksekusi ini dijalankan, maka kita harus menunggu beberapa saat sampai semua pustaka diunggah ke papan Arduino.

Menghubungkan MATLAB-Arduino

Pastikan komputer kita terkoneksi dengan Arduino melalui kabel USB. Untuk menghubungkan ke Arduino, ketikklah sintaks berikut pada Command Window:

a = arduino

a = 

  arduino with properties:

                    Port: 'COM33'
                   Board: 'Uno'
     AvailableAnalogPins: [0,1,2,3,4,5]
    AvailableDigitalPins: [2,3,4,5,6,7,8,9,10,11,12,13]
               Libraries: {'I2C', 'SPI', 'Servo'}

 

Jika kita menggunakan produk tidak resmi (unofficial) atau produk dari vendor lain yang mungkin tidak terdeteksi secara langsung oleh komputer, maka pastikan nomer port COM yang digunakan dan jenis papan yang terpakai. Tambahkanlah input tersebut ke fungsi Arduino sebelumnya:

a = arduino('com33','uno')

a = 

  arduino with properties:

                    Port: 'COM33'
                   Board: 'Uno'
     AvailableAnalogPins: [0,1,2,3,4,5]
    AvailableDigitalPins: [2,3,4,5,6,7,8,9,10,11,12,13]
               Libraries: {'I2C', 'SPI', 'Servo'}

 

Selain untuk produk unofficial, penambahan nomer COM dan jenis papan Arduino berguna untuk akses yang lebih cepat dan penggunaan lebih dari sebuah papan Arduino pada saat yang sama. Kita dapat membuat variabel yang berbeda untuk beberapa papan yang kita gunakan, misalnya:

a1 = arduino('com31','uno');
a2 = arduino('com33','uno');
a3 = arduino('com20','mega');

Pada pembahasan selanjutnya, kita akan menggunakan penulisan fungsi arduino(), lengkap dengan nomer COM dan jenis papannya. Penulisan seperti ini dapat digunakan, baik produk official maupun unofficial.

Membaca dan Menulis Pin Digital

Membaca Pin Digital

Tempatkanlah sebuah push button pada pin digital 8, seperti pada Gambar 1. Hubungkan salah satu kaki dengan GND dan sisanya ke pin digital 8.

Gambar 1. Pemasangan pushbutton

Hubungkan Arduino dengan komputer. Saat ini, penulis menggunakan COM33 (sesuaikan dengan komputer Pembaca). Aktifkan pull-up resistor internal pada Arduino untuk pin ke-8, dan buatlah sebagai input dengan sintaks berikut:

a = arduino('com33','uno');
configureDigitalPin(a,8,'pullup');

Ingat, jika variabel a masih tersimpan pada Workspace MATLAB, kita tidak perlu lagi menuliskan sintaks a=arduino('com31','uno'). Kita cukup memulai dari configureDigitalPin(a,8,'pullup'). Jika ditulis untuk kedua kalinya, maka akan terdapat pesan error yang mengatakan bahwa port telah terpakai. Skrip di atas Penulis asumsikan bahwa kita membangun koneksi dari awal.

Bacalah keadaan tombol, dan simpanlah keadaan tombol dengan nama variabel tertentu, misalnya buttonState:

buttonState = readDigitalPin(a,8)

buttonState =

     1

Ubahlah posisi push button dengan cara menekan tombol tersebut, dan baca kembali begaimana keadaan tombol saat ini:

buttonState = readDigitalPin(a,8)

buttonState =

     0

Menulis Pin Digital

Selain membaca, kita juga dapat menulis melalui digital pin. Saat ini kita akan menempatkan LED pada pin digital 7 dan sebuah resistor sebesar 220 atau 330 Ohm, seperti pada Gambar 2. Buatlah objek Arduino jika kita belum membuatnya.

Gambar 2. Pemasangan LED

a = arduino('com33','uno');

Nyalakanlah LED dengan sintaks berikut:

writeDigitalPin(a,7,1)

Untuk memadamkan, gunakanlah sintaks berikut:

writeDigitalPin(a,7,0)

Sebagai variasi, jika kita ingin menyalakan dan memadamkan LED secara bergantian sebanyak 10 kali dengan selang waktu 0,5 detik diantara menyala dan padam, maka kita dapat menggunakan sintaks berikut:

for i= 0:10
    writeDigitalPin(a,7,1);
    pause(0.5);
    writeDigitalPin(a,7,0);
    pause(0.5);
end

Kita dapat mengubah input untuk fungsi pause untuk mendapatkan variasi durasi menyala dan padam dari LED tersebut.

Memainkan Nada

Selain membaca posisi tombol dan menghidupkan LED secara digital, pustaka Arduino pada MATLAB juga dapat membangkitkan sinyal dengan frekuensi tertentu melalui pin digital. Pasanglah sebuah piezo buzzer melalui pin digital 11, seperti pada Gambar 3. Buatlah objek Arduino jika kita belum membuatnya:

Gambar 3. Pemasangan buzzer

a = arduino('com33','uno');

Mainkan nada dengan frekuensi 1500 Hertz selama 5 detik.

playTone(a,11,1500,5);

Untuk mematikan nada buatlah durasi menjadi 0 detik, atau buatlah frekuensi menjadi 0 Hertz.

playTone(a,11,1500,0);

atau:

playTone(a,11,0,5);

Membaca dan Menulis Pin Analog

Membaca Pin Analog

Setelah membahas bagaimana membaca dan menulis pada pin digital, mari kita lanjutkan untuk pin analog. Untuk membaca nilai analog, kita dapat memanfaatkan sebuah potensiometer. Rangkailah potensiometer melalui pin Analog 2, seperti pada Gambar 4.

Buatlah objek Arduino, jika kita belum membuatnya. Konfigurasikan pin sebagai input:

a = arduino('com33','uno');
configureAnalogPin(a,2,'input');

Putar-putarnya potensiometer, dan bacalah berapa tegangan yang masuk ke pin analog 2.

tegangan = readVoltage(a,2)

Gambar 4. Pemasangan potensiometer

Menulis Pin Analog

Untuk menulis pin Analog, kita harus menempatkan komponen kita pada pin yang memiliki fungsi PWM. Pada Arduino Uno, fasilitas ini terdapat pada Pin 3, 5, 6, 9, 10, dan 11. Pin ini dicirikan dengan karakter “ ~ ” di awal angka pin. Walaupun berada pada pin digital, fungsi PWM (Pulse Width Modulation) pada pin ini dapat membuat variasi output analog. Manipulasi sinyal digital dengan duty cycle tertentu dapat mengakibatkan variasi outout tegangan pada pin digital yang memiliki fasilitas PWM. Pembahasan lebih detail mengenai PWM akan dibahas pada BAB berikutnya.

Ubahlah rangkaian pada Gambar 2.. Jika sebelumnya berada pada pin 7, sekarang rangkailah sebuah LED melalui pin 9. Jangan lupa untuk menempatkan sebuah resistor. Pilihlah resistor dengan nilai antara 220 Ohm sampai 1 kOhm.

Buatlah objek Arduino jika kita belum membuatnya.

a = arduino('com33','uno');

Gambar 5. Pemasangan LED melalui pin PWM

Buatlah variasi tegangan pada pin 9. Karena Arduino bekerja dengan level tegangan 5 Volt, buatlah variasi antara 0 – 5. Misalnya kita ingin LED setengah redup. Kita dapat menuliskannya sebagai berikut berikut:

writePWMVoltage(a,9,2.5);

Selain menggunakan fungsi writePWMVoltage, kita juga dapat menggunakan perintah writePWMDutyCycle. Namun, perbedaannya adalah pada penulisan rentang inputnya. Jika menggunakan fungsi writePWMDutyCycle, kita memberi nilai antara 0 dan 1. Berikut contohnya:

writePWMDutyCycle(a,9,0.5);

Cobalah sintaks berikut, dan amati nyala LED pada pin 9:

step = (1-0)/20;
for i = 1:20
    writePWMDutyCycle(a, 9, i*step);
    pause(0.1);
end

for i = 1:20
    writePWMDutyCycle(a, 9, 1-i*step);
    pause(0.1);
end

Bagi pembaca yang ingin mencoba kombinasi membaca dan menulis pin analog, lakukanlah percobaan berikut. Rangkailah perangkat seperti pada Gambar 6. Ketiklah skrip berikut:

durasi = 300;
while durasi > 0
  tegangan = readVoltage(a, 2);
  writePWMVoltage(a, 9, tegangan);
 
  durasi = durasi - 1;
  pause(0.1);
end

Gambar 6. Kombinasi Read dan Write sinyal analog

Demikian tutorial kali ini. Semoga bermanfaat. Terima kasih :)

Referensi

Tutorial ini diambil dari Buku:

Wardana, Kusuma. 2015. Teknik Antarmuka MATLAB dan Arduino - Membangun Interaksi antara Bahasa Komputasi Teknis dengan Platform Berbasis Mikrokontroler. MiaranaDIY

Kusuma Wardana

Tentang Penulis, Kusuma Wardana

I Nyoman Kusuma Wardana, yang akrab dipanggil Kusuma, lahir dan besar di Bali. Ia tinggal di Desa Wisata Ubud, dan lebih banyak melaksanakan aktivitasnya di Denpasar. Profesinya adalah sebagai staf pengajar di Jurusan Teknik Elektro, Politeknik Negeri Bali. Ia menjadi salah satu penulis di tutorkeren.com bersama Aditya Suranata dan Agus Ady Aryanto.

lihat artikel lain oleh Kusuma Wardana

Artikel Lainnya

Kategori Tulisan

E-Book Terbaru

Teknik Antarmuka MATLAB dan Arduino

Teknik Antarmuka MATLAB dan Arduino - Cover.jpg
Pelajari konsep yang sangat luar biasa antara visualisasi, analisis dan komputasi yang ditawarkan MATLAB dengan Platform Arduino sebagai perangkat...
Jumlah Halaman:
411 Halaman

Video Terbaru

Belum Puas ? Mari Kita Saling Bicara


Join Forum Diskusi MiaranaDIY untuk berdiskusi dengan respon cepat mengenai berbagai macam tutorial hingga ulasan yang terdapat di blog ini. Untuk berlangganan artikel terbaru silahkan Like & Follow Facebook Page MiaranaDIY dan Follow Twitter @MiaranaDIY