Anda di sini

Pemrograman

Membaca Data dari Arduino ke MATLAB Menggunakan Firmata

Kusuma Wardana - 22 November 2015 11:00:22 0

Pada pembahasan sebelumnya, kita telah mengulas secara detail bagaimana cara membaca data dari Arduino dan memploting data tersebut menggunakan MATLAB. Bagi yang belum membaca, silahkan simak artikel tersebut di sini. Namun demikian, sampai saat ini kita masih menggunakan pemrograman dua sisi, yaitu memprogram di sisi Arduino, dan memprogram di sisi MATLAB. Dengan menggunakan skema ini, kita harus mengunggah program ke mikrokontroler berulang kali jika ingin melakukan koreksi terhadap program kita yang sebelumnya. Kita harus mengetikkan program di Arduino IDE, dan selanjutnya mengunggah (upload) program tersebut ke mikrokontroler. Hal ini dapat menjadi kegiatan yang cukup memakan waktu.

Nah, untuk pertemuan kali ini, kita akan memprogram HANYA dari sisi MATLAB. Kita hanya sekali saja mengunggah program yang dikenal sebagai firmata ke Arduino. Pustaka firmata adalah pustaka yang menerapkan Protokol Firmata yang memungkinkan dilakukannya komunikasi dengan perangkat lunak pada komputer host. Hal ini memungkinkan kita untuk menulis firmware yang kita inginkan tanpa harus membuat protokol dan objek kita sendiri. Contoh, dengan firmata, kita dapat mengontrol Arduino menggunakan software seperti LabVIEW, MATLAB, dll, tanpa harus memprogram khusus di Arduino. Kita sepenuhnya memprogram menggunakan lingkungan pengembangan kita (tidak lagi menggunakan IDE Arduino). Firmata bertindak sebegai "jembatan" untuk berkomunikasi antara Arduino dengan bahasa pemrograman lainnya.

Pada pembahasan kita, MATLAB akan sepenuhnya mengambil kontrol pada Arduino. Hal ini menjadi cukup menarik untuk dilakukan, dan tentunya akan menghemat waktu. Kemampuan perangkat lunak MATLAB beserta Toolbox yang dimilikinya dapat sepenuhnya kita gunakan dalam rangka integrasi MATLAB-Arduino. Contoh, misalnya menggunakanControl Systems Toolbox dan mengintegrasikannya dengan Arduino. Toolbox ini dapat digunakan untuk mendesain algoritma sistem kontrol (misal PID). Arduino selanjutnya menerima data dari MATLAB dan melakukan aksi ke lingkungan fisik (misal pada robot, sistem pemanas, kontrol motor, dsb). Penggunaan Fuzzy Logic Toolbox pada MATLAB dapat digunakan untuk membangun logika fuzzy, Image Processing Toolbox untuk melakukan pengolahan citra,Image Acquisition Toolbox dapat dimanfaatkan jika kita ingin menggunakan webcam, Neural Network Toolbox untuk mendesain arsitektur Jaringan Saraf Tiruan (JST), dan masih banyak lagi Toolbox pada MATLAB yang dapat digunakan. Dengan kata lain, biarkanlah algortima yang kompleks dilakukan oleh MATLAB, sedangkan pembacaan sensor dan melakukan aksi di-handle oleh Arduino. Bagaimana proses melakukan hal ini? Mari kita simak langkah-langkahnya, sebagai berikut:

1. Instalasi Pustaka Arduino
Ketika pertama kali MATLAB membangun koneksi dengan Arduino, sebenarnya MATLAB melakukan proses uploadpustaka firmata ke Arduino. Bagaimana cara melakukan instalasi telah kita bahas pada tautan berikut. Silahkan disimak dengan baik, dan selanjutnya dicoba.

2. Koneksikan MATLAB dan Arduino
Setelah instalasi pustaka selesai, hubungkanlah MATLAB dan Arduino menggunakan kabel serial USB. Ceklah PORT yang digunakan oleh Arduino untuk berkomunikasi dengan MATLAB. Kita dapat mencarinya di Device Manager (untuk pengguna Windows) dan carilah dibagian PORT (COM & LPT), seperti terlihat pada Gambar 1.

Gambar 1. Mencari Port yang digunakan oleh Arduino

Selanjutnya, ketiklah sintaks berikut pada Command Window pada MATLAB:

>> a = arduino

Tunggu beberapa saat, dan selanjutnya respon yang diberikan oleh MATLAB adalah sebegai berikut:

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'}

Dari keterangan tersebut, terlihat bahwa jenis Arduino yang kita gunakan saat ini adalah Arduino UNO, dan PORT yang digunakan adalah COM33. Pin-pin dan pustaka yang tersedia untuk jenis Arduino UNO juga ditampilkan pada layar. Komputer Anda mungkin akan menghasilkan keterangan yang berbeda, tergantung jenis papan Arduino apa yang digunakan dan COM yang digunakan. Namun, jika kita menggunakan papan yang sama dalam melakukan percobaan dan telah hafal port yang digunakan, kita dapat secara langsung mengetikkan sintaks berikut, untuk akses yang lebih cepat:

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

Saat ini kita menggunakan papan Arduino UNO. Arduino jenis ini telah memiliki built-in LED didalamnya. Untuk keperluan testing, kita dapat menggunakannya. Ketiklah sintaks berikut, dan amati lampu LED kecil di pin 13 pada papan Arduino:

>> % menyalakan LED
>> writeDigitalPin(a,13,1)
>> % memadamkan LED
>> writeDigitalPin(a,13,0)

Jika sukses, maka kita siap untuk mencoba langkah selanjutnya.

3. Membaca Data dari Arduino
Pada prakteknya, data yang diambil dari Arduino adalah data-data yang diperoleh menggunakan sensor, baik sensor digital maupun sensor analog. Kita dapat menggunakan jenis sensor apapun, dan selanjutnya mengirim nilai yang dibaca oleh Arduino ke MATLAB. Untuk saat ini, kita akan menggunakan sebuah potensiometer. Potensiometer akan mewakili penggunaan sensor analog. Dengan menggunakan potensiometer, kita dapat mengubah-ubah nilai input ke Arduino dengan sangat mudah. Rangkailah sebuah potensiometer dan Arduino seperti Gambar 2. Sambungkan kaki bagian tengah ke pin A0, sedangkan dua kaki di bagian kanan dan kirinya (boleh terbalik) dihubungkan ke pin 5V dan GND.

Putarlah sesuka hati kita. Selanjutnya bacalah data dari hasil putaran kita menggunakan sintaks readVoltage, seperti berikut:

>> data = readVoltage(a, 0)

data =

Nilai yang diperoleh adalah hasil perhitungan dari sinyal analog yang telah dikonversi menjadi tegangan antara 0 - 5 Volt.Analog-to-Digital Converter (ADC) yang digunakan untuk mengubah sinyal analog menjadi data digital pada Arduino UNO memiliki resolusi 10-bit. Dengan demikian, besarnya kemungkinan data yang dperoleh adalah 2^10 = 1024 kemungkinan data, atau dari 0 sampai 1023. Untuk melihat besarnya input analog yang diterima pin A0 dari potensiometer, kita dapat menghitungnya dengan rumus berikut:

>> outputAnalog = floor((data*1023)/5)

outputAnalog =
   669

Data adalah nilai yang kita peroleh sebelumnya (yaitu sebesar 3.2715). Tegangan referensi yang digunakan oleh Arduino adalah 5 Volt, dan untuk membulatkan kita menggunakan sintaks floor. Untuk penerapan yang lebih praktis, potensiometer dapat diganti menggunakan sensor sesungguhnya. Kita selanjutnya dapat menghitung berapa tegangan keluaran sensor ataupun nilai analog yang dihasilkannya, dengan menggunakan sintaks di atas.

Demikian tutorial ini. Semoga bermanfaat.

5.881
Image

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. Saat ini Ia menjadi salah satu penulis di tutorkeren.com.

Artikel Menarik Lainnya
Mari Gabung

Halo Emo 51 , Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.