'보드'에 해당되는 글 1건

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

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

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



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

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

아래의 정보들은 http://codaset.com/ytai/ioio/wiki 에 있는 요요 Wiki 정보와 요요 제조사의 튜토리얼 정보를 참고로 하였습니다.   (변경안내:  위 codaset 링크를 비롯한 모든 자료가  https://github.com/ytai/ioio/wiki 로 이전되었으니 신규 사이트 정보를 이용해주시기 바랍니다.)

1부. 둘러보기

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

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

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


요요 사용법

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

VIN과 GND 단자에  전압이 7~12V정도의  *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 로 이전되었으니 신규 사이트 정보를 이용해주시기 바랍니다.)


저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. 스페이스

    예제 소스가 있는 사이트를 알려주셨는데요...
    http://codaset.com/ytai/ioio/source/master/tree/software/applications
    지금은 게시가 안되어있었습니다..
    혹시 지금도 예제 소스를 가지고 계신다면 저에게 보내주실수 없으신지요?
    메일은 : great2000kr@naver.com 이곳으로 보내주시면 감사드리겠습니다.

    2012.03.13 22:49 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 해당 소스 및 공식 IOIO자료는 아래의 링크에서 보실 수 있습니다. https://github.com/ytai/ioio/wiki
      예전에 codaset 에 있던 자료가 위 사이트로 옮겨진것입니다. 알려주셔서 감사합니다.

      2012.03.15 20:50 신고 [ ADDR : EDIT/ DEL ]
  2. 박희정

    안녕하세요. 저도 이번에 ioio board를 테스트 해보려고하는데요
    sparkfun 홈페이지에 있는 튜토리얼 따라 라이브러리(App-IOIO0322) 다운받고 이클립스에서 import 시키고 이것저것 순서대로 똑같이 다 따라 했는데, 막상 ioio보드와 스마트폰을 연결해 테스트(led켜고 끄는...예제)를 해보니 보드의 led가 꿈쩍도 안합니다. 무엇이 문제인지를 모르겠네요. 물론 보드에 전원을 따로 넣어줬죠. 제 생각엔 라이브러리 문제가 아닐까 싶은데... 왜냐하면 튜토리얼에 나와있는 이클립스화면 사진과 제 이클립스에 생성된 파일내용이 좀 다르더라구요.
    혹시 테스트 하기 이전에 하는 파일 임폴트하는 절차좀 알려주실 순 없으신가요?

    2012.04.20 19:46 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • http://artrobot.co.kr/front/php/b/file_download.php?no=1520&filename=fbc1a01b08f75cf0a96d25087ca1511b.apk
      개발환경/컴파일 없이도 버전호환문제만 없다면 위 apk 파일을 설치하신후 테스트 해보실 수 있습니다.

      해당os버전용 라이브러리들을 모두 받으시고, 해당 os용으로 컴파일해보시기 바랍니다.
      저도 오래전에 해봤고 안드로이드 개발은 초보이므로 자세한 설명이 곤란합니다.
      이미 관련 절차를 자세히 소개해둔 영문자료가 많습니다. 혹시 빼먹은게 없는지 다시한번 차분히 진행해보시기 바랍니다.

      2012.04.21 20:50 신고 [ ADDR : EDIT/ DEL ]
  3. 박희정

    방금 올려주신 apk파일 설치해서 테스트했는데, 어플이름이 IOIO Sample app으로 나오는거 맞죠??
    그래서 폰과 보드 연결 후 이 어플 실행을 했는데 스크롤이나 led버튼이 활성화가 안되어 있네요;;
    원래 이런건가요...ㅠㅠ
    아 그리고 sparkfun 홈페이지에서 다운 받은 App-IOIO0322폴더 안에 보면 HelloIOIO.apk 라는 apk파일이 있는데
    이놈을 설치해서 실행해봐도 보드의 led는 여전히 반응이없네요...
    제가 가지고 있는 보드에 문제가 있는건 아닌가 싶은데,
    혹시 보드에 올려져있는 PIC에 펌웨어코딩이 안들어가 있는건 아니겠죠...? 살 때부터 들어가 있는걸로 아는데...
    보드에 문제가 있는지 없는지 확인해볼 방법은 없는걸까요?

    아아, 그리고 혹시 보드 핀맵별 기능에 관한 회로도나 파일 있으시면 제 메일(hidingke8982@nate.com)로좀 보내주실 수 있으신가요?

    2012.04.23 20:13 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 앱 UI 활성화가 안되었다면 제대로 연결이 안된상태입니다. 전원등의 연결상태를 확인해보시기 바랍니다. 핀맵정보는 https://github.com/ytai/ioio/wiki 에 있습니다. 보통 펌웨어가 이미 올려져 있어서 따로 바꿀필요는 없습니다. 구입처에서 확인해보셔야할것 같습니다.
      참고로, 아트로봇샵의 경우 모든 IOIO보드의 작동테스트를 한후 판매하고있습니다.

      2012.04.25 10:28 신고 [ ADDR : EDIT/ DEL ]
    • 박희정

      아 그렇구나, 저도 아트로봇에서 구매를 했거든요. 펌웨어코드까지 다 올라가있는 상태로 알고 있었는데, 음...제대로 연결이 안되있을 수도 있겠네요. 제가 간과하고 있던 부분이었네요. 연결방법이 usb 디버그모드 켜고, usb connector(이클립스로 앱 개발할 때 잘 쓰고 있던 것입니다. 이클립스로 보니 DEVICE연결되어 있는 것 확인했구요. 이 connector의 pc쪽 부분을 빼서 보드에 꽂음.)로 보드와 핸드폰을 연결하고 보드에 전원 따로 넣어주면 되는거 아닌가요? 올려주신 첫번째 동영상이랑 똑같이 했는데... 혹시 전원을 컴퓨터 usb포트에서 뽑아서 나온 connecter를 이용해 보드에 전원을 넣어주고 있거든요...이거때문에 문제 될리는 없어보이는데, 오실로로 찍어보니까 5V 나오고 있더라구요. 그리고 전류 조절하는 부분도 최대로 올려준 상태이구요. 근데도 연결이 왜 안되어 있을까요..ㅠㅠ

      2012.04.26 18:16 신고 [ ADDR : EDIT/ DEL ]
  4. PC에서 USB케이블로 전원을 공급받으면 출력가능한 전류가 부족해 문제가 됩니다;;
    튜토리얼에 소개해드린대로 충분한 전류 공급이 가능한 전용 전원으로 대체하시기 바랍니다.
    장착후 충전중인 상태를 알리는 표시가 떠야 정상입니다.

    2012.04.27 15:36 신고 [ ADDR : EDIT/ DEL : REPLY ]
  5. 박희정

    결국 이틀 전에 IOIO보드를 새로 구매했습니다. 오늘 도착해서 바로 테스트를 해보았습니다. 결론은 됩니다...ㅠㅠ
    문제가 뭐였냐면 보드 고장이었던 것 같습니다. 제가 맨 처음에 보드에 전원을 공급할 때는 컴퓨터 USB가 아닌 파워서플라이를 이용해서 공급했었는데 그 때 고전압이 약간 들어간 적이 있는데 그 때문에 칩이 고장이 난 것으로 생각됩니다. 아 그리고 새로 산 보드에 컴퓨터 USB포트를 사용해서 전원을 공급하여도 잘 돌아가는 것을 확인했습니다. 그 동안 이문제에 대해 답변 일일이 다해주셔서 정말 감사합니다.

    2012.04.27 23:48 신고 [ ADDR : EDIT/ DEL : REPLY ]
  6. 박희정

    아아 그리고 이제 기본샘플예제 테스트는 해보았으니, 제가 진짜 하려고 하는 것을 시작하려고 하는데요.
    어떤 하드웨어와 IOIO보드와 유선으로 통신을 해야하는데, 통신방식은 I2C를 사용하려고합니다. 그래서 회로도를 보면서 어느 핀에다가 연결을 해야되나 살펴보려고 했지만, DA와 CL이 쓰인다는 것만 알았을 뿐 여기다가 어떻게 연결을 하고, 하드웨어에서 데이터를 어떻게 보내줘야하는지, 보내진 데이터는 IOIO보드에서 어떻게 처리되어 어떻게 출력되는지, 이런 것들이 궁금한데 어떻게 해야될까요? 펌웨어 코드를 보면 어떻게 되있는지 대충은 알 수 있을 것 같은데 그럴수도없고...

    2012.04.27 23:56 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • ioio wiki페이지에 소개되어있습니다.
      ioio펌웨어는 전혀 알필요가 없습니다.
      안드로이드개발환경에서 함수사용하듯이 사용하면 끝입니다. 아래 페이지들을 참고하시기 바랍니다.
      핀배열=> https://github.com/ytai/ioio/wiki/Getting-To-Know-The%20Board
      i2c 함수사용법 소개 => https://github.com/ytai/ioio/wiki/TWI

      2012.05.01 21:12 신고 [ ADDR : EDIT/ DEL ]
    • 아, 그리고 아트로봇샵에서 구입하셨다면 차후 질문은 샵 QnA게시판에 남겨주시면 더 좋을것 같습니다 ^^.

      2012.05.01 21:14 신고 [ ADDR : EDIT/ DEL ]
  7. 궁굼이

    IOIO보드에 블루투스 동글 연결하면 안드로이드폰에서 장치검색이 되나요? 가지고 있는 동글은 연결이 안되는데, 되는 동글 좀 알려주세요..

    2012.09.17 15:19 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 제경우 아래제품으로 성공했습니다.
      http://artrobot.co.kr/front/php/product.php?product_no=453

      아마 연결만되면 작동되는건 아닐겁니다. 펌웨어에서 지원이 되어야겠죠..

      2012.09.24 15:39 신고 [ ADDR : EDIT/ DEL ]
  8. Star

    안녕하세요.
    IOIO 보드와 Bluetooth 동글을 연결하고, 안드로이드 폰과 연동 테스트를 하려고 합니다.
    그런데 아직 Bludetooth 동글을 사지 못했습니다.
    어떤 Bludetooth 동글을 사야 될지 모르겠는데, 추천 부탁 드립니다.
    저는 LG P509모델을 사용하고 있습니다.

    웹사이트(https://github.com/ytai/ioio/wiki/Supported-Bluetooth-Dongles)에 Bludetooth 동글에 대한 안내가 나와 있긴 한데, 어떻게 구매해야 될지 모르겠어요.
    국내에서는 구매가 가능한 곳은 없나요?

    2012.09.18 03:23 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 아래의 제품(SparkFun수입)으로 IOIO와 연동해봤습니다.
      http://artrobot.co.kr/front/php/product.php?product_no=453
      참고로, 동일하게 생긴 다른 동글(국내구매)로는 안되더군요;;;

      2012.09.24 15:35 신고 [ ADDR : EDIT/ DEL ]
  9. 요요보드짱

    안녕하세요. 최근 요요보드로 전공수업을 진행하고 있는 학생입니다.
    https://play.google.com/store/apps/details?id=app.akexorcist.d2dcontroller
    이것을 기초로 해보려고 하는데 양쪽 폰에 어플을 깔고 와이파이를 연결해서 스캔을하고 업데이트를 하였는데
    안되더라구요.어떻게 하면 이것을 성공할수 있을까요??
    꼭 성공한다음 요요보드로 여러가지를 해보고싶어요.

    2014.06.03 02:25 신고 [ ADDR : EDIT/ DEL : REPLY ]
  10. HS

    안녕하세요~아두이노로 작업하고 있는 학생입니다.
    전구로 하는 작업을 진행중인데 아두이노로 이용해서 제어하기위해 SSR을 사용합니다
    그런데, SSR로 들어오는 전기를 CDS로 제어하고 싶은데 가능한건가요?
    ?

    2014.12.02 00:19 신고 [ ADDR : EDIT/ DEL : REPLY ]