기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
안녕하세요. 오드로이드T를 잘 사용하고 있습니다.
--- (밑에 추가한 부분이 있습니다) ---
안드로이드보드의 USB Device 포트를 통해 외부 장치(A라고 부르겠습니다)와 작은 데이터를 주고 받고자 합니다.
데이터는 초당 수백 바이트 많아도 수 킬로 바이트 수준입니다.
이 데이터들을 안드로이드 어플에서 표시하거나 입력받는 형태입니다.
A에는 시리얼 포트가 나와 있는 상태이고요.
A-시리얼-연결보드-(USB Host)-USB케이블-(USB Device)-안드로이드
의 순서로 연결이 되야 하겠지요.
연결보드 부분에 USB Host 와 시리얼 포트를 장착한 CPU 보드가 들어가면 될듯 합니다만...
제가 USB 장치는 써본적이 없어서요.
이때 USB Host 를 사용하기 위한 CPU 의 최소 사양은 어느 정도 될까요?
추천해 주실수 있는 USB Host 칩이나 원칩이 있을까요?
USB Host 쪽 CPU 에서 사용해야할 프로토콜은 어떤것이 있을까요?
안드로이드의 API 에 이런 종류가 준비된 것이 있을까요?
수정이 필요하다면 어떤 작업이 필요할까요?
고수님들의 자세한 답변을 부탁드립니다.
감사합니다.
---- 답변읽고 추가 합니다 ---
여러 답변을 주셔서 감사드립니다...
헌데, 기존의 상용 안드로이드 제품 ( 예를 들어 핸드폰 )에 저희 제품을 연결하고자 하는 것이기 때문에
안드로이드 쪽을 수정하는 것은 일단 제외하고요, 저희 제품쪽이나 케이블쪽에 추가하는 방법을 사용해야 할 것 같습니다.
말씀해주신 USB Host 가 내장된 마이컴을 이용하여 안드로이드와 간단한 데이터를 주고 받는다면, 안드로이드 쪽의 펌웨어가 수정되야 할까요?
USB Host 내장 마이컴으로 가능한 것인지를 여쭙고 싶습니다.
감사합니다.
저도 비슷한 작업들을 해봤습니다.
저희 하드웨어는 FTDI USBtoSerial 칩을 사용해서 간단하게 만들었습니다.
이후에 리눅스 커널에서는 FTDI 드라이버만 추가해 주었구요.
보통 ttyUSB0 와 같은 형태로 장치가 생성됩니다.
안드로이드에서는 serial 프로그램을 해야 하는데요, 기본으로 제공되는 API가 없어서
간략하게 JNI로 라이브러리를 하나 만들어서 사용했습니다.
open/close/read/write 정도만 딱 필요한만큼 작업해서 사용했습니다.
저희는 데이터 양이 더 작았네요. 보통 초당 수십 바이트 정도 였습니다.
초당 10Kbyte이하라면 시리얼 UART 115200bps로 구현하는게 편리할것 같습니다.
USB host가 내장된 Micro-controller는 몇몇 제조사에서 만들고는 있으나 USB host stack을 직접 만드는것은 쉽지 않기때문입니다.
시리얼의 경우 안드로이드 표준 API에도 있는것으로 알고있으며, 없다고해도 JNI로 쉽게 접근이 가능합니다.