전체상품목록 바로가기

본문 바로가기


현재 위치
  1. home
  2. community
  3. 튜토리얼

튜토리얼

튜토리얼 Tutorial

게시판 상세
subject 안드로이드 요요 - 오픈 엑세서리 개발보드 ( IOIO for Android)
writer 아트로봇 (ip:124.50.164.53)
  • date 2011-07-31 23:18:59
  • like 추천하기
  • view 5803
rating 0점

여러분이 획기적인 아이디어와 훌륭한 기술로 안드로이드용 앱을 개발하고 계시다면 아마도 최근 구글 IOIO행사에서 발표된 Open ADK (공개형 안드로이드용 엑세서리 개발킷)에 대해 들어보셨을 겁니다.

안드로이드용 오픈 엑세서리 개발 보드는 PC에 각종 USB 장치를 연결하여 확장된 기능을 사용할 수 있는것 처럼 안드로이드와 결합하여 사용가능한 하드웨어 장치를 개발하기위해 사용됩니다. 이미 많은 안드로이드 기기가 GPS, 가속센서, 자기 센서등을 내장한채 보급되고 있습니다만, Open ADK와 호환 개발 보드를 사용하면 그밖에 특화된 센서를 연결하거나 좀더 고급의 유저 인터페이스를 결합시킬 수 있게됩니다.  그렇다고 새로운 기기의 개발에만 필요한것이 아닙니다. 표준화된 규칙을 이용하여 기존에 개발되어 있는 제품들과도 손쉽게 연동이 가능해 지므로 큰 노력 없이도 안드로이드와 많은 엑세서리와 연동할 수 있게되어 하드웨어 개발자와 안드로이드 디바이스 및 앱 개발자 모두에게 효과적인 환경이 제공되는것 같습니다.

Open ADK 관련 정보는 공개되어 있으므로 관련 개발보드는 직접 개발하실 수도 있습니다. 하지만 많은 분들에겐 이미 상용화된 제품을 이용하시는것이 효율적일겁니다.  이번에 소개해 드릴 제품도 그중의 하나입니다.



안드로이드 요요  ( IOIO for Android )

해당제품에 있는 실크 이미지를 잘 보시면 안드로이드 로봇이 한손에 요요를 갖고 노는것이 보입니다.  IOIO를 yo-yo 라고 발음한다고 하는데 안드로이드와 함께 연결되어 IO(Input Output) 기능을 수행하는 녀석을 요요로 표현한것은 매우 적절한 비유인것 같습니다.  서두가 길었습니다.  이제 본격적으로 요요 보드를 소개해 드리겠습니다.

아래의 정보들은 요요 Wiki 정보와 요요 제조사의 튜토리얼(링크) 정보를 참고로 하였습니다.

1부. 둘러보기

요요,  너의 정체가 무엇이냐?

제품에 떡 하니 자리를 차지하고있는 녀석은 MICROCHIP사의 PIC24FJ256 MCU입니다.   보드 둘레로 총 48개의 IO핀이 있고 VIN , GND, 5V, 3.3V 전원 연결핀이 있으며 USB 기기를 연결 할 수 있는 커넥터가 있습니다. 

어짜피 요요 보드의 펌웨어를 직접 변경하지 않으시고 사용하셔도 되므로 내장 MCU 칩이 AVR이건 PIC이건 상관없습니다.


요요 사용법

1. 전원
요요는 USB 호스트 역활을 수행하는 보드이며 연결된 안드로이드기기에 전원을 공급하여 충전할 수 있게 개발되어 있습니다.  즉, 자신뿐 아니라 연결된 안드로이드까지 커버할 정도의 충분한 전력이 필수적으로 요구됩니다.

VIN과 GND 단자에  7~12V(9V권장) 전압에  1A이상 전류 공급이 가능한 전원을 사용해야합니다.
정전압 5V 전원의 경우엔  VIN 단자 대신 5V 단자와 GND 사이에 직접 정전압 전원을 연결하셔도됩니다.  3.3V 단자에서는 레귤레이터로 감압된 3.3V 전원을 출력하여 활용할 수 있습니다.  (단, 3.3V단자에 3.3V 전원을 입력하는건 안됩니다)
관련 정보를 꼭 읽어보시고 연결하시기 바랍니다.

보드에 전원을 입력하면 POWER LED에 불이 들어옵니다.

2. Charge 전류량 조정용 트리머
요요에 전원을 연결후 안드로이드 기기와 연결해주면 안드로이드 기기의 충전이 시작되는 것을 확인할 수 있습니다.
하지만, 기기의 배터리 상태와 기기특성에 따라 충전과 요요 기기 인식이 안되는 경우가 있습니다. 이는 요요가 적절한 전력을 공급하지 못하는 경우인데요, 이때는 USB단자 옆에 있는 트리머를 시계방향으로 회전하여 전류공급량을 늘려주면됩니다. 기기마다 특성이 다른점에 대처하기 위해 본 트리머 설정기능을 제공하는것 같습니다.


3. 안드로이드 기기 설정

안드로이드 앱을 개발해오신 분들이라면 다 알고계신 내용입니다.

설정 > 응용프로그램 > 개발 > USB 디버깅  설정을 켜주셔야 합니다.


4. 프로그래밍

요요 보드 자체는 별도의 프로그래밍 작업이 필요없습니다.
안드로이드 기기에서 요요 보드에 있는 48개의 IO핀을  범용 디지털 입력,출력,아날로그입력(ADC),TWI, SPI,UART,PWM 등의 용도로 설정하고 값을 IO할 수 있는 라이브러리가 제공되기 때문입니다.   즉, 요요를 연결하면 안드로이드 기기에서 제어가능한 48개의 IO핀이 생겼다고 보시고 안드로이드 디바이스를 프로그래밍을 하시면 됩니다.

5. 케이블 연결 방법

케이블은 기존에 안드로이드 개발에 사용하셨던 기기용 USB 케이블을 그대로 사용하시면 됩니다.
PC와 안드로이드 디바이스를 USB 케이블로 연결 후 요요 연동용을 위한 프로그래밍을 하신 후,
PC쪽 단자를 뽑아서 요요에 연결하시면 됩니다.


6. 요요 보드 사용법

본래 요요보드는 Android 1.5 부터 지원되는 MicroBridge (ADB의 구현)를 활용하도록 개발되었으며 이는 구형 안드로이드OS(1.5이상) 에서도 활용이 가능한 장점이 있습니다.  하지만 최근에 새롭게 발표된 Open ADK (Android 2.3.4 이상 지원)의 지원도 가능하도록 새로움 펌웨어가 제공되고 있습니다. IOIO의 ADK 펌웨어는 현재 beta버젼이며 필요하신 경우 요요보드의 펌웨어를 변경후 사용가능한 방법입니다.

본 글에서는 펌웨어 변경없이 요요의 기본 연동방식을 이용합니다. 제가 갖고있는 안드로이드 기기가 1.5~2.2 정도만 지원되므로 당장 Open ADK 방식의 테스트는 어려울것 같습니다;;

7. ADB?  MicroBridge? 
개발시 디버그 용도로 사용되는 통신방법 및 툴 정도로 생각하면 될 것 같습니다. 이를 활용하여 안드로이드에 연결된 장치와 통신을 할 수 있습니다.  여러분도 보유하신 MCU보드에 USB호스트 기능만 추가하고 본 프로토콜 구현만 해주시면 안드로이드 연동 보드 개발이 가능합니다.  사실 Open ADK도 이것에서 파생되었다고 볼 수 있습니다.


8. 요요 IO 핀맵

요요 보드 뒷면에는 동그라미와 네모, 알바벳 P 등으로 각 핀의 기능을 간략히 표현하고 있습니다.  가령 네모 박스된 핀들은 모두 아날로그 입력핀으로 사용할 수 있으며,  동그라미 표시된 핀은 5V 입력이 허용되는 핀입니다.  요요의 기본 입출력 전압 레벨은 3.3V이지만 일부 핀의 경우 5V 입력이 허용되는 것 입니다. 자세한 핀별 용도는 별도의 상세페이지로 소개되고 있습니다. (IOIO핀맵 핀별 기능소개)


2부. 실습

이제는 직접 요요보드에 프로그래밍 후  기초적인 IO를 수행해 보도록 하겠습니다.
아래에 소개된 예제들은 안드로이드 프로그래밍이 처음인 분들을 위한 튜토리얼에 포함된 기본 예제와 아래의 IOIO 기본 공개 예제들을 그대로 사용하거나 몇 줄만 수정한 것입니다. 직접 해당 소스를 보시고 응용해보시기 바랍니다.
http://codaset.com/ytai/ioio/source/master/tree/software/applications

안드로이드 프로그래밍 자체가 처음이신 분들은 요요를 사용하시기 전에 우선 안드로이드 프로그래밍 기본예제를 꼭 실습 후 진행하시길 권장드립니다.  안드로이드  개발환경 설치 및 디바이스 인식 등이 마무리 되어야 요요 보드 응용 개발이 가능합니다.  거꾸로 마이크로 콘트롤러 보드와 같은 전자회로에 대한 경험이 없으신 분들은 Open ADK 보드의 기준 플래폼인 아두이노로 기초 학습을 진행하실것을 추천드립니다. (아두이노 학습용 킷 추천)


예제1-1. 상태 LED 제어하기

안드로이드 프로그래밍이 처음인 분들을 위한 튜토리얼에 포함된 기본 예제입니다.
보드에 내장된 stat(상태) LED를 On/Off 하는 예제이므로 별도의 전자회로를 연결할 필요가 없이 요요 보드에 전원만 공급해주면 테스트 해볼 수 있는 간단한 예제입니다. 



 

동영상1. 요요 기본사용방법과 예제1-1 수행 장면입니다.




예제1-2. 디지탈 출력으로 SSR제어하여 220V 전등 On/Off하기

예제1-1.의 소스에서 상태 LED를 제어하는 소스를 그대로 한줄 더 복사하여 특정 디지탈 출력핀을 On/Off하고, 이 출력 값을 SSR(Solid State Relay)에 연결하여 가전용 전등을 On/Off 하는 예제입니다.


 


동영상2. 안드로이드로 220V 전등 On/Off 제어




예제2-1. 아날로그 입력 및 PWM 출력

IOIOSimpleApp 예제가 사용되었습니다.

가변저항으로 0~3.3V 범위의 임의 전압을 만들고 요요 보드의 ADC(아날로그 입력) 기능으로 입력받은 전압값을 수치화 하여 보여주는 예입니다.  더불어  디지탈 출력핀을 통해 PWM 파형을 출력하는 예제입니다.  기본 예제에서는 스크롤바의 위치에 대응하여 0.5ms ~ 2.5ms duty의 파형을 출력하도록 되어있으며 정확한 출력이 나오는지 확인을 위해 오실로스코프로 관측해봤습니다.

 


동영상3. PWM 출력과 아날로그 입력


예제2-2. PWM 출력으로 서보모터 제어

예제2-1. 에서 사용한 소스를 그대로 활용하여 RC서보모터를 구동할 수 있습니다.  다만 일부 서보모터의 회전각 범위는 0.5~2.5 ms 범위를 지원하지 않으므로 서보모터의 안전을 위해 이값을 0.8~2.2ms 범위로 수정하여 테스트 하였습니다.
이를 위해 PWM duty 관련 소스를 아래와 같이 수정하였습니다.

      pwmOutput_.setPulseWidth(800 + (int)(seekBar_.getProgress() * 1.4));



예제2-3. PWM 출력으로 전압메터 변화보기

이번 예제도 예제2의 소스를 그대로 사용하였습니다.   0~5V 범위의 전압을 측정할 수 있는 아날로그 전압 메타를 PWM 출력 핀에 연결하여 PWM duty 변화에 따른 출력 전압변화로 눈금의 변화를 확인해 보는 예제입니다.  기본 소스는 duty를 0~100%로 수정하면 약 0~3.3V 출력 변화를 확인 하실 수 있습니다.  전압 메타는 보유하신 멀티테스터 전압계를 이용하셔도 됩니다. PWM 파형의 Duty 비율을 조절하는것으로 서보모터 제어나  LED의 밝기 제어, 색상 제어 등 을 하실 수 있습니다.


 


동영상4. PWM제어로 RC서보모터 제어 및 전압메터 변화 관측


제품 링크

추가사항

IOIO 공식 자료 링크 변경 안내
 글 내용중 codaset 사이트에 보관되었던  모든 자료가  https://github.com/ytai/ioio/wiki 로 이전되었으니 신규 사이트 정보를 이용해주시기 바랍니다.)

file
password 수정 및 삭제하려면 비밀번호를 입력하세요.
댓글 수정

password :

/ byte

password : 확인 취소

댓글 입력

commentsname : password : 관리자 답변 보기

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

회원에게만 댓글 작성 권한이 있습니다.