Interfacing Arduino dengan LabVIEW


Dalam kumpulan tutorial Arduino Indonesia kali ini akan mengulas mengenai dasar interfacing antara Arduino dengan LabVIEW.
LabVIEW Interface for Arduino atau disingkat LIFA, menyediakan interface (antarmuka) antara LabVIEW dengan Arduino. Pada awalnya LIFA dikembangkan dan diujikan pada board Arduino Uno, namun juga dapat bekerja dengan baik pada hampir semua hardware board Arduino yang compatible.
LabVIEW Interface for Arduino mencakup open source firmware untuk Arduino beserta juga dengan lebih dari 100 VIs untuk akses fungsi dan kendali Arduino dari LabVIEW. LIFA merupakan solusi dan dibutuhkan dalam sambungan koneksi data antara LabVIEW dengan board Arduino. Biasanya komunikasi data dilakukan via USB tapi dapat juga dilakukan dengan menggunakan Xbee atau juga dengan bluetooth.

<img src="arduino.png" alt="arduino">


Arduino Firmware
Setelah selesai melakukan install LIFA, firmware Arduino dapat ditemukan di <LabVIEW>\vi.lib\LabVIEW Interface for Arduino\Firmware\LIFA_Base\LIFA_Base.ino. Firmware Arduino tersebut terdiri dari beberapa function utama.

syncLV()
Perintah syncLV() digunakan untuk setup function dan membuat stabil koneksi antara Arduino dengan LabVIEW. Function ini digunakan sekali pada saat proses booting Arduino.

checkForCommand();
Perintah checkForCommand() digunakan berulang-ulang di dalam main loop dari source code (sketch) Arduino. Perintah ini melakukan pemeriksaan Arduino serial buffer data dari LabVIEW. Jika terdapat sebuah packet data lengkap, perintah ini akan memproses packet tersebut dan mengirimkan balasan yang sesuai pada LabVIEW.
Perintah checkForCommand() terdapat dalam LabVIEWInterface.ino dan berfungsi melakukan pemeriksaan packet data lengkap (secara default berukuran 15 byte) tersedia dalam Arduino serial buffer. Jika packet data tersebut ditemukan selanjutnya memanggil perintah processCommand().
Perintah processCommand() berfungsi membaca packet data dari Arduino serial buffer, melekukan pemeriksaan untuk memastikan bahwa semua data diterima dengan benar, dan kemudian memproses packet data berdasarkan Command byte, byte kedua dari packet data.

LabVIEW VIs
LIFA mencakup lebih dari 100 LabVIEW VIs. Untuk bagian LabVIEW LIFA dibedakan dalam beberapa low level command seperti Analog Input, Digital I/O, PWM, SPI, I2C, dan VIs untuk sensor yang khusus seperti photocell, thermistor, character LCD, BlinkM etc.
Baik low level maupun high level VIs menggunakan Send Receive VI untuk mengirimkan data ke Arduino dan menerima pesan balasannya. Send Receive VI melakukan perhitungan header dan checksum.

Packet Structure
Arsitektur LIFA memang sengaja dirancang secara sederhana dan mudah untuk diubah, dilakukan modifikasi. Seluruh packet data LIFA dari LabVIEW ke Arduino secara default berukuran 15 byte. Ukuran packet data dapat diubah untuk menyesuaikan dengan kebutuhan sistem dengan menggunakan perintah COMMANDLENGTH dalam LIFA firmware dan Packet Size input dari Init VI dalam LabVIEW. Perlu diperhatikan bahwa penting untuk memastikan kedua nilai tersebut sesuai. Packet data tersebut berukuran 15 byte, terdiri dari 12 byte data, 1 byte header, 1 byte command, dan 1 byte checksum.

<img src="packet_data.png" alt="packet_data">


Klik pada gambar untuk melihat lebih jelas. Jumlah byte yang dikembalikan ke LabVIEW tergantung dari perintah yang diberikan.
Bila ada sesuatu yang belum jelas dan ingin tahu lebih dalam seputar project Arduino, pemrograman, dan elektronika, bisa bertanya pada bagian comment atau melalui page Facebook berikut.