Koneksi Arduino Dengan Android via USB
Ada banyak cara agar smartphone android bisa saling bertukar data/berkomunikasi dengan arduino. Salah satu cara yang praktis adalah dengan menggunakan usb serial.
Disini saya akan berbagi tentang komunikasi android ke arduino via usb dengan tambahan library dari usb-serial-for-android .Dengan library ini kita tidak perlu membeli lagi shield usb host atau arduino ADK untuk berkomunikasi dengan android, jadi secara biaya juga lebih hemat. Syarat menggunakan library ini adalah android support USB Host.
Pada artikel ini, saya akan menerapkan komunikasi serial antara android
dengan arduino untuk menyalakan led .Langkah selanjutnya adalah:
- Download library usb-serial
- Copy file library usb-serial-for-android-v010.jar ke project yang anda buat di folder libs
-
Buat file dengan nama device_filter.xml ,isi dengan sourcecode seperti dibawah ini, lalu simpan di direktori /res/xml/
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- 0x0403 / 0x6001: FTDI FT232R UART --> <usb-device vendor-id="1027" product-id="24577" /> <!-- 0x2341 / Arduino --> <usb-device vendor-id="9025" product-id="0067" /> <!-- 0x16C0 / 0x0483: Teensyduino --> <usb-device vendor-id="5824" product-id="1155" /> <!-- 0x10C4 / 0xEA60: CP210x UART Bridge --> <usb-device vender-id="4292" product-id="60000" /> </resources>
- Konfigurasi AndroidManifest.xml seperti dibawah ini
-
Sekarang kita buat user interfacenya main.xml, sederhana saja menggunakan LinearLayout dan terdiri dari beberapa
Button
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#060000"> <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#FFFFFF" android:textStyle="bold" android:textSize="18dp" android:text="Button dengan OnClickListener" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_gravity="center_horizontal" android:paddingTop="10dp" > <Button android:id="@+id/merahOn" android:background="#FF0000" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ON" /> <Button android:id="@+id/putihOn" android:background="#FFFFFF" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ON" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_gravity="center_horizontal" android:paddingBottom="5dp" > <Button android:id="@+id/merahOff" android:background="#FF0000" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="OFF" /> <Button android:id="@+id/putihOff" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#FFFFFF" android:text="OFF" /> </LinearLayout> <TextView android:id="@+id/teks" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:textColor="#FFFFFF" android:textStyle="bold" android:paddingBottom="10dp" android:text="" /> <View android:layout_width="fill_parent" android:layout_height="1dp" android:background="#FFFFFF" /> <TextView android:id="@+id/textView2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#FFFFFF" android:textStyle="bold" android:textSize="18dp" android:text="Button dengan OnTouchListener" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_gravity="center_horizontal" android:paddingTop="10dp" android:paddingBottom="5dp" > <Button android:id="@+id/BTmerahOn" android:background="#FF0000" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ON" /> <Button android:id="@+id/BTputihOn" android:background="#FFFFFF" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ON" /> </LinearLayout> <TextView android:id="@+id/teks1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:textColor="#FFFFFF" android:textStyle="bold" android:paddingBottom="10dp" android:text="" /> </LinearLayout>
- Sekarang buat program serial.java
- Setelah semua program di android dibuat, sekarang kita buat program baca serial di arduino, disini saya menggunakan board arduino uno R3
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.testserial"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.testserial.serial">
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</activity>
</application>
</manifest>
package com.example.testserial;
import android.app.Activity;
import android.content.Context;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.TextView;
import java.io.IOException;
import com.hoho.android.usbserial.driver.UsbSerialDriver;
import com.hoho.android.usbserial.driver.UsbSerialProber;
public class serial extends Activity
{
private UsbManager usbManager;
private UsbSerialDriver device;
TextView teks,teks1;
byte[] kirim,kirim1;
int pm,mm=0;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
teks = (TextView)findViewById(R.id.teks);
teks1 = (TextView)findViewById(R.id.teks1);
usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
Button merahOn = (Button)findViewById(R.id.merahOn);
merahOn.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
if (device != null)
{
kirim = new byte[] {(byte)'M','O','N','\n'};
try
{
device.write(kirim, 500);
teks.setText("Merah Nyala");
mm=0;
}
catch (IOException e)
{
teks.setText("Pengiriman data gagal");
}
}
else
{
teks.setText("Perangkat Tidak Ditemukan");
}
}
});
Button putihOn = (Button)findViewById(R.id.putihOn);
putihOn.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
if (device != null)
{
kirim = new byte[] {(byte)'P','O','N','\n'};
try
{
device.write(kirim, 500);
teks.setText("Putih Nyala");
pm=0;
}
catch (IOException e)
{
teks.setText("Pengiriman data gagal");
}
}
else
{
teks.setText("Perangkat Tidak Ditemukan");
}
}
});
Button putihOff = (Button)findViewById(R.id.putihOff);
putihOff.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
if (device != null)
{
kirim = new byte[] {(byte)'P','O','F','\n'};
try
{
device.write(kirim, 500);
teks.setText("Putih Mati");
pm = 1;
}
catch (IOException e)
{
teks.setText("Pengiriman data gagal");
}
if (pm==1 && mm==1)
{
teks.setText("LED MATI");
pm=0;
mm=0;
}
}
else
{
teks.setText("Perangkat Tidak Ditemukan");
}
}
});
Button merahOff = (Button)findViewById(R.id.merahOff);
merahOff.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
if (device != null)
{
kirim = new byte[] {(byte)'M','O','F','\n'};
try
{
device.write(kirim, 500);
teks.setText("Merah Mati");
mm=1;
}
catch (IOException e)
{
teks.setText("Pengiriman data gagal");
}
if (pm==1 && mm==1)
{
teks.setText("LED MATI");
}
}
else
{
teks.setText("Perangkat Tidak Ditemukan");
}
}
});
}
public void onResume()
{
super.onResume();
device = UsbSerialProber.acquire(usbManager);
if (device == null)
{
teks.setText("Perangkat Tidak Ditemukan");
}
else
{
try
{
device.open();
device.setBaudRate(9600);
teks.setText("Perangkat Ditemukan");
}
catch (IOException err)
{
try
{
device.close();
}
catch (IOException err2)
{}
device = null;
return;
}
}
}
}
int ledMerah=5;
int ledPutih=6;
int maksData = 10;
char data[10];
int dataIndex;
void bacaSerial()
{
if (Serial.available() > 0)
{
char dataMasuk = Serial.read();
data[dataIndex] = dataMasuk;
Pada program android yang dibuat diatas menggunakan Button yang diberi
listener OnClickListener, sehingga
:
- Ketika Button di android ditekan maka hanya mengirim perintah satu kali saja
- Data serial yang diterima di arduino akan dieksekusi satu kali, dan akan berganti state saat mendapat input lagi dari Button lainnya
- Buat button dengan listener OnTouchListener
sumber: http://arridhoabid.blogspot.com/
Leave a Comment