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


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


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


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


-준비물-

아두이노 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 시더
,

안녕하세요 시더입니다. 오랜만에 포스팅을 하게 되네요.


날이 갈수록 바빠서 고민입니다. 남는건 없는데 시간만 쪼달리니 말이죠.


오늘은 아두이노 카페에서 눈팅을 하던중 재미있는 게시글을 보고 되었고 호기심에 실험을 해보았습니다.


그것은 바로 [스마트폰 전원으로 아두이노 동작] 입니다. 



솔찍히 처음 동영상 볼떄는 반신반의 했습니다. 스마트폰 전원으로 아두이노를 동작시킨다니... 의심이 많은 성격이


라.. 이론상 아두이노도 5V 동작이고 스마트폰도 5V 동작이니 될것 같긴 하지만.. 직접 해보지 않으면 못살죠. 


그리고 빠른 부품검색... 은 했으나 인터넷에선 usb B(F) to micro B(A) 케이블은결국 못찾았습니다. 찾으면 명탐정 


캐이블의 종류는 수도 없이 많은데.. 검색은 너무 힘들더라구요. 결국 젠더로 결정.. 이것은 비교적 쉽게 찾았습니다.


다른분들도 도움이 되고자 모델명 남깁니다 장사 아닙니다    [Coms USB 젠더 - Micro B(M)/A(F)]


그리고 결과 화면.. 소스를 올려서 동작시키지는 않았지만.. 아두이노에 전원 Led가 들어와 있는것을 볼 수 있습니다.


나름 신기하더라구요. 다음 포스트는 스마트폰과의 시리얼 통신을 작성해보도록 하겠습니다.






Posted by 시더
,

먼저 빠른 배송을 해주신 블랙홀님에게 감사의 인사를 드리며 시작해겠습니다.


오늘 테스트 해본 작업은 USB HOST 쉴드의 ADK 예제(안드로이드 연동)입니다.


예제중에 있는 아두이노 13번핀(LED)의 on/off 예제인데요. 군데군데 신경써줘야 할 부분이 많네요.


1. https://github.com/felis/USB_Host_Shield_2.0 로 가셔서 felis-USB_Host_Shield_2.0.zip 파일을 받습니다.
아두이노 usb host 쉴드에 대한 예제와 라이브러리가 포함되어 있습니다. 단 압축풀고나서 폴더를 옴길때 USB_Host_Shield_2 로 변경해서 옴겨주셔야해요. 안그러면 아두이노 킬때 첨부할 수 없다고 나옵니다.

2. 그림과 같이 예제- usb host 쉴드 - adk - ArduinoBlinkLED 예제를 불러옵니다. 내용을 보시면 13번 핀을 쓰는데요 보드에
부착된 LED 을 의미합니다.




3. 다음 단계는 예제에 포함된 주소에있는 안드로이드 어플을 다운받으신후 이클립스에 임포트 시켜주셔야합니다.
이때 주의사항이 몇가지 있습니다. 가장먼저 안드로이드 레벨 10(2.3.3)이 설치되있어야하구요 구글 api도 해당버전걸 같이 설치해야합니다. 안드로이드 10만 설치할때 usb 관련 오류가 발생하는데요 원래 이부분은 이후 버전에 정식으로 등장하는 것인데 2.3.3에도 지원이 되긴합니다. 그래서 구글 api로 프로젝트 설정을 변경해 주시면됩니다. 또한 자바 컴파일 1.6으로 설정해주세요.






자 설정은 끝났구요. 아두이노 개발툴의 시리얼 모니터의 속도를 115200으로 맞춰주시고 동작시키면 화면과 같이 나옵니다! 그럼 예제 구동에 성공하신거구요.  단 led가 아두이노 보드에 있는 led라서 쉴드에 가려서 잘 안보이니 자세히 봐야합니다.

Posted by 시더
,

안녕하세요 여러분 시더입니다. 오늘도 신선한 떡밥을 물어 왔습니다.

Q.스마트폰과 아두이노(임베디드센서를 활용하기 위해)간의 무선통신 방식은 무엇이 있을까요?

A.
1번 블루투스 통신
2번 안드로이드 SDK 가 지원되는 USB 호스트를 활용한 시리얼통신
3번 이더넷 모듈을 활용한 웹페이지 파싱


셋다 만들어 보고 싶었으나 USB호스트는 돈이 없어서 다음 기회로 미루고...

일단 1번과 3번을 짬뽕 시켜봤습니다. 아래의 흐름도를 봐주시구요.




간단한 설명을 드리자면 스마트폰으로 데이터를 보낸것을 아두이노가 받고서 그것을 이더넷 모듈을 활용해서 웹서버에 데이터를 띠우고 그걸 다시 스마트폰에서 파싱받는 방법입니다.

Q. 왜 블루투스만 연결해도 데이터 통신이 가능한데 웹서버까지 사용하시나요?
A. 블루투스만을 할용하면 싸고 쉽습니다. 졸업작품용으로 만들기엔 나쁘진 않아요. 
    but 1:1 통신입니다. 웹서버를 사용함으로써 1:N이 가능하게 된거죠.



이하 동작 테스트 화면입니다. 








p.s: 이더넷 모듈이 금방 뜨거워져요


Posted by 시더
,

사원쪽 페이지를 구성완료
-회복관련 코드 테스트 완료
-회복비용 테스트 완료
-연금술 제작 기능 테스트중

기술훈련소 페이지 구성완료
-기술 습득 테스트 완료
-기술 등급 상승 테스트 완료
-기술 삭제 테스트 완료
-레벨업 시스템 테스트 완료


생강빵에서 스피너랑 버튼에 약간의 디자인 문제가 있는건지 좀 이상한 부분이 계속 눈에 뛰네요..
이거 해결법 아시는분~?







































 

Posted by 시더
,