안녕하세요. 시더입니다.
오늘은 다소 어렵지만 재밌는것을 해보려 합니다.
바로 안드로이드와 아두이노간의 시리얼 통신인데요.. 아이폰은 예전부터 지원됬으나 안드로이드는 지원이 된지
얼마 안된것으로 알고 있습니다.
-준비물-
아두이노 Uno
안드로이드 폰 (갤럭시 S3 테스트)
USB B타입 (F) to 마이크로B (M) 젠더나 케이블
기본 설정만 되어 있는 심플한 안드로이드 앱
그럼 시작하도록 하겠습니다.
가장 먼저 https://code.google.com/p/usb-serial-for-android/ 사이트에 접속해주세요. 들어가자 마자 반겨주는것
은 영어입니다. 다른 부분은 천천히 시간나면 읽어 보시구요. 우리는 빠른 진행을 위해서 ...Quick Start 을 읽어
줍니다.
Quick Start
1. Download usb-serial-for-android-v010.jar
// 저 jar 파일은 다운 받아주시구요.
2. Copy the jar to your Android project's libs/ directory. (See Android's FAQ for help).
// 여러분이 만든 안드로이드 프로젝트의 libs/ 디렉토리에 저장하세요.
3. Copy device_filter.xml to your project's res/xml/ directory.
// 그다음에 요 xml 파일은 다운받아서 res/xml/ 디렉토리에 저장하세요. 이 폴더는 기본 생성시 없으니 xml 폴더 추가해주시구요.
4. Configure your AndroidManifest.xml to notify your app when a device is attached (see Android USB Host documentation for help).
// 그리고 안드로이디 매니페스트.xml 파일에 해당 부분의 소스를 넣어줍니다.
<activity
android:name="..."
...>
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</activity>
이 부분을 넣어 주시면 되는데요. 일단 간단하게 설명하자면.. 메인 엑티비티 부분에 저 부분을 넣어주면 됩니다.
5. Use it! Example code snippet:
// 밑의 소스를 사용하면 됩니다.
// Get UsbManager from Android.
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
// Find the first available driver.
UsbSerialDriver driver = UsbSerialProber.acquire(manager);
if (driver != null) {
driver.open();
try {
driver.setBaudRate(115200);
byte buffer[] = new byte[16];
int numBytesRead = driver.read(buffer, 1000);
Log.d(TAG, "Read " + numBytesRead + " bytes.");
} catch (IOException e) {
// Deal with error.
} finally {
driver.close();
}
}
위의 소스를 메인 엑티비티에서 적절히 넣고 활용해 주시면 됩니다. 간혹 driver 값을 인식이 잘 되지 않는경우가 있는 그럴 때는 아두이노 부분도 확인을 해보시는것이 좋습니다.
프로젝트 결과 화면
음.. 안드로이드 와 아두이노 두개의 연동이 이제 가능해 졌네요. 저 작은 부품(젠더)만 있으면 말이죠. 가격도
비싸지 않은 편이라 부담없이 도전해볼만 하다고 생각합니다만 그.. 안드로이드가 익숙하지 않은 분들은 난이
도가 조금 높게 느껴지실 겁니다
p.s: https://code.google.com/p/usb-serial-for-android/ 주소에서 지원되는 usb 변환 칩과 지원가능한 기기 목록이 적혀있으니 이부분도 확인해보세요.