안녕하세요. 시더입니다. 


오늘은 다소 어렵지만 재밌는것을 해보려 합니다.


바로 안드로이드와 아두이노간의 시리얼 통신인데요.. 아이폰은 예전부터 지원됬으나 안드로이드는 지원이 된지


얼마 안된것으로 알고 있습니다. 


-준비물-

아두이노 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 변환 칩과 지원가능한 기기 목록이 적혀있으니 이부분도 확인해보세요. 

Posted by 시더
,