iProcessing이 라는 아이폰용 Processing이 나왔다.

Processing은 Ben Fry와 Casey Reas가 만든 오픈소스 프로그래밍 언어로 배우기 쉬워 미디어 아트나 예술계 쪽 학생들이 취미나 프로토타이핑, 미디어 아트 작품 제작에 많이 사용되고 있다.


맥, 윈도우, 리눅스등 플랫폼을 가리지 않고 동일하게 사용할 수 있다.


이전 포스트에서도 한번 소개했던 것처럼 Mobile Processing 이라고 java를 지원하는 휴대폰에서 실행되는 Processing도 있고 Wiring 보드에서 실행되는 코드를 만들어주는 Wiring이라는 Processing 도 있다.

모바일 프로세싱 - 휴대폰에서 프로세싱을 사용하기 (Mobile Processing runnng on a cellphone)

모바일 프로세싱을 사용해 보기 (Using Mobile Processing)

그런데 아이폰은 아쉽게도 java를 지원하지 않기 때문에 Mobile Processing을 사용할 수 없었는데 이번에 아이폰에서 동작하는 코드를 만들어주는 Processing인 iProcessing 나온것이다.

")//]]>


다만 다른 Processing과 차이점은 위의 화면과 같이 프로그램상에서 직접 코드를 집어넣어 실행파일을 만들어 주는게 아니고 아이폰용 앱을 만들 수 있는 프레임웍 형태로 제공된다.


iProcessing을 다운받아 압축을 풀으면 위와 같은 파일이 생긴다. Processing이나 Mobile Processing과는 달리 별도의 실행파일은 없다.


examples 폴더로 들어오면 이런식으로 각각의 예제 프로젝트가 들어있다.


Animator 폴더의 내용이다. Xcode 프로젝트 파일이 들어있는게 보인다. 저 파일을 더블클릭하면 Xcode가 실행되고 프로젝트가 열린다.


main 폴더의 내용이다. 다른 부분은 프레임웍의 일부분으로 손 댈 필요가 없고 main.pde를 수정해서 자신이 원하는 동작을 하게 해 줄 수 있다.


이 파일을 수정해 원하는 프로그램을 만들어 준 다음 Xcode에서 빌드하면 아이폰 시뮬레이터에서 직접 실행시켜 동작을 확인할 수 있다.

기본적인 processing의 기능 이외에 추가로 멀티터치, 가속도센서, 방향(가로/세로), 위치, 사운드 플레이/녹음 등등 아이폰의 다양한 기능도 사용할 수 있다. 또한 따로 Objective-C를 배우지 않아도 간단하게 아이폰 앱을 만들어 줄 수 있다.

Posted by nautes

댓글을 달아 주세요

  1. 2010.02.22 11:13

    멋지네요,

    processing 안지 얼마 안되서 관심있게 보는데 iphone용 까지 되다니요 .

    공부 바로 들어가야겠습니다.

    좋은 자료 감사합니다. ^^

  2. 2010.02.23 16:43

    아~ 이것은 꿈이로구나..좋은 소식 너무나 감사합니다. 프로세싱 고고씽 하러갑니다.~

  3. 2010.03.07 23:20

    아 고맙습니다 ^^

  4. 2010.08.30 22:25

    어떻게 하면 아이폰에 프로세싱 파일을 넣을수 있을까요 ~ 안드로이드는 설명이 되어 있는데
    아이폰은 잘 모르겠네요 ~ 혹시 아시면 답변 부탁드리겠습니다!

  5. 2010.10.15 17:31

    앱에서 iprocessing 이라고 검색해도 나오지 않는데 아이폰에 어떻게 프로세싱을 담을 수 있나요?
    프로세상을 받아서 동기회를 시켜서 받는건가요? 알려주세요~

이전 포스트에서 소개했던 모바일 프로세싱을 실제 사용해 보도록 하겠다.

노키아 6210S를 구입한 사람들도 많아졌고 최근 노키아 5800 Music edition이 판매되기 시작하여 Symbian S60을 사용하는 사람들이 많이 늘어났기 때문에 모바일 프로세싱을 실제 폰에서 사용해 보기가 매우 편해졌다.

모바일 프로세싱을 설치해 주려면 Java, Java Wireless Toolkit for CLDC (WTK, 현재 최신버젼은 2.5.2_01이다), mobile processing까지 총 3개의 파일이 필요하다.
JavaWTK는 sun의 웹 사이트에서 다운받을 수 있고 mobile processing은 모바일 프로세싱 홈페이지에서 다운받으면 된다.

파일을 다 다운받았으면 먼저 java를 설치해준다. 이미 설치되어 있는 경우 이 단계는 건너뛰면 된다. 그 다음 WTK를 설치해 준다. 그리고 WTK가 설치된 위치를 기록해 놓는다. (디폴트는 c:\wtk2.5.2_01 이다.)
마지막으로 다운받은 mobile processing 파일의 압축을 풀어준다. 모바일 프로세싱은 별도의 설치 과정이 필요없이 그냥 압축을 풀어주면 된다.


압축을 풀면 위와 같은 파일이 보인다. 여기서 'mobile'을 더블클릭해서 실행해 주면 된다. (별도의 설치과정이 없기때문에 시작메뉴에도 자동으로 등록되지 않는다.)


모바일 프로세싱을 실행시킨 화면이다. 프로세싱 화면과 거의 동일하다. 다만 모바일 프로세싱을 사용하려면 먼저 환경설정을 해 줘야 한다.


File->Preferences 를 선택한다.


Preferences 창이 열리면 Mobile 탭을 선택한다.


이 화면에서 아까 설치한 WTK의 위치를 지정해 줘야 한다. 그리고 자신이 사용할 폰의 CLDC와 MIDP 버젼을 지정해준다. 최근 1~2년 사이에 나온 폰들이면 거의 다 CLDC 1.1과 MIDP 2.0을 지원한다. 자세한 내용은 각 폰의 technical specification을 참조하면 된다.

여기까지 하면 모든 설정이 끝나고 모바일 프로세싱을 사용할 수 있다.


테스트를 위해 File->Example에서 예제를 하나 선택해 보겠다. 여기서는 keypad를 선택했다.


화면 위쪽의 아이콘들 중에 가장 왼쪽의 삼각형 버튼을 누르면 프로그램을 컴파일하고 폰 에뮬레이터에서 실행을 해 준다.


실행을 시키면 이런 폰 에뮬레이터 창이 뜨고 프로그램이 로드된 걸 볼 수 있다. 로드된 프로그램을 실행하려면 오른쪽 소프트키(화면 오른쪽 아래 Launch 표시 바로 아래쪽의 '.' 버튼)를 눌러주면 된다.


'keypad' 프로그램이 실행된 화면이다. 프로그램을 종료하려면 왼쪽 소프트키를 눌러주면 된다.


'keypad' 프로그램은 숫자키패드를 누르면 그에 해당하는 수직막대기를 화면에 그려주는 프로그램이다. 몇개의 숫자키를 눌렀을 때 화면이다.

이 런 식으로 작성한 프로그램을 실제 폰이 없는 경우에도 컴퓨터 상에서 테스트가 가능하다. 디버깅이 다 끝났으면 만들어 진 프로그램을 직접 폰에서 실행시킬수도 있다.


File->Export MIDlet 을 선택하면 이 소스코드를 폰에서 실행할 수 있는 JAVA MIDlet으로 만들어준다.


위에서 Export MIDlet을 선택하면 keypad.jar 파일을 만들고 탐색기에서 그 파일이 들어있는 폴더를 자동으로 열어준다.


이제 만들어 진 파일을 폰으로 넣어주기만 하면 된다. MicroSD카드에 복사해서 옮겨도 되지만 여기서는 블루투스를 이용해 옮겨보겠다. (단 폰은 미리 컴퓨터와 페어링 되어 있어야 한다.) 'keypad.jar'파일을 선택한 다음 마우스 오른쪽 클릭해서 Send to->Bluetooth device를 선택한다.


Bluetooth File Transfer 창이 열리고 블루투스 디바이스들을 보여준다. 원하는 폰을 선택해주면 된다.



이렇게 전송이 끝났으면 폰에서 받은 프로그램을 설치할거냐고 물어본다. 설치해 준 다음 프로그램을 실행시키면 위의 시뮬레이터에서 본 것과 동일하게 움직이는걸 볼 수 있을 것이다.

모바일 프로세싱은 이전에 프로세싱이나 아뒤노를 사용해 본 사람이라면 거의 동일한 구조와 문법을 사용하기 때문에 배우기 쉽고 폰 프로그래밍을 할 때 단말기별로 신경써야 하는 것들을 알아서 처리해주기 때문에 매우 편리하다.

또한 단순히 키패드 입력, 화면 제어뿐 아니고 폰의 블루투스 통신도 프로그래밍이 가능하기 때문에 임베디드쪽으로도 다양하게 응용이 가능하다. 아뒤노에 블루투스 모듈을 붙이고 모바일 프로세싱으로 폰과 통신을 하게 해 주면 폰을 아뒤노의 입출력 디바이스 또는 리모컨으로 이용할 수도 있기 때문에 다양한 응용이 가능하다.
Posted by nautes

댓글을 달아 주세요

  1. 2010.03.07 22:52

    아 정말 잘보고 갑니다^^

  2. 2010.03.07 23:12

    mobile processing 을 한번 실행하고
    끄고 다시 실행했을때
    settings issues 라는 경고창이 뜨는데
    어떻게 해야할까요 ?>??

최근들어 피지컬 컴퓨팅이라는 분야에 대한 관심이 높아지면서 arduino 뿐 아니고 processing도 많이들 사용하고 있다. Processing은 주로 컴퓨터에서 독립적으로 사용하거나 외부 하드웨어와 연동하는 경우는 processing+arduino의 조합으로 사용하는 경우가 많다.



그에 비해 휴대폰에서 사용할 수 있는 mobile processing은 국내 휴대폰에서 사용할수가 없어서인지 아직까지 사용하는 사람들을 별로 본 적이 없는거 같다. 해외용으로 출시된 LG, 삼성 휴대폰에는 잘 돌아가지만 국내 출시 휴대폰들은 통신사와 제조사의 여러가지 제한때문에 mobile processing을 사용할 수 있는 모델이 거의 없었다. 하지만 최근 출시된 노키아 6210의 경우 심비안 S60 플랫폼을 사용하기 때문에 mobile processing을 사용할 수 있게 되었다. Mobile processing은 현재 Mac OS X와 윈도우용이 있다.

아래가 삼성, LG모델중에 mobile processing을 사용할 수 있는 모델들인데 대부분 수출모델로 알고 있다. 혹시 자신의 휴대폰에서 실행해보고 되는 경우 알려주면 국내 휴대폰 모델들 리스트에 업데이트 해서 목록을 만들어 봤으면 한다.

LG와 삼성의 지원되는 모델들


기본적인 문법은 processing과 거의 동일하고 mobile processing에서 스케치 파일을 만들어 컴퓨터상의 에뮬레이터에서 실행해 볼 수 있고 컴파일해서 만들어 진 MIDlet을 microSD 카드에 복사해서 휴대폰에서 어플리케이션으로 실행할 수 있다. MIDlet은 J2ME플랫폼의 CLDC 1.0, MIDP 1.0에서 실행된다.

기본적으로 휴대폰 전화기능, 이미지, 사운드, 비디오, 네트웍, XML, Messaging, 블루투스등을 제어하기 위한 라이브러리가 제공된다. 또한 3rd party가 추가한 3D 그래픽, QR code, 웹, UI, Location 서비스 등등 다양한 라이브러리가 존재한다.

Arduino 에 블루투스 모듈을 붙여 휴대폰과 블투로 통신하게 할 수도 있고 아니면 휴대폰의 시리얼 포트와 arduino의 시리얼 포트로 통신을 하게 해 줄 수도 있다. 이 경우 arduino에 별도의 LCD나 키패드를 붙이지 않아도 훌륭한 입출력 인터페이스를 만들어 줄 수 있다. 또한 휴대폰의 다양한 장치들을  arduino의 센서(디지털 나침판, GPS, 조도센서, 가속도센서 등등)로 사용하거나 휴대폰을 arduino의 네트웍 인터페이스(무선랜, 블루투스, 휴대폰 망)로 사용할수도 있게 된다. 또한 전화를 걸고 받기, 문자메세지 보내기 등등도 제어할 수 있기 때문에 센서 입력에 따라 문자를 보내거나 전화를 걸도록 할 수도 있다.


인터넷에서 발견한 mobile processing과 arduino를 시리얼로 연결한 예제 프로젝트이다. 그림에서처럼 arduino와 휴대폰은 시리얼로 연결하고 휴대폰은 휴대폰망의 무선데이터 전송을 통해 컴퓨터와 http로 연결해서 컴퓨터에서 arduino에 연결되어 있는 LED의 색깔을 제어하는 예제이다.


")//]]>

최 근 노키아 6210이 매우 싼 가격(약 6개월 약정인 경우 1000원정도)에 풀렸다고 알고 있다. Arduino를 사용하는 사람들이라면 이번 기회에 mobile processing에도 관심을 가져 보는것도 나쁘지 않을 것이다. Arduino만으로 하기 힘든 다양한 아이디어의 응용 프로젝트가 가능해진다.
Posted by nautes

댓글을 달아 주세요

얼마 전 Macworld 잡지에 'Control the world' 라는 제목의 재미있는 기사가 소개되었다.

사용자 삽입 이미지

이 기사에서는 임베디드 시스템을 맥과 연동시켜 동작시킬 수 있는 방법중에 가장 간단한 방법을 설명해주고 있다. 위의 사진에는 Arduino Diecimila라는 완제품으로 판매되는 보드를 사용하고 있지만 실제로는 시리얼 포트를 가지고 있다면 자신이 직접 만든 어떤 종류의 보드도 관계 없다.

여기서는 보드의 I/O포트에 압력센서(오른쪽 위의 동그란 부분)과 저항을 붙이고 저 압력센서를 의자에 집어 넣어 사람이 의자에 앉으면 앉아있는 시간을 감지해서 일정 시간이 지나면 휴식을 취하라고 말하게 해 주는데 사용한다.

위에서 사용한 보드에는 이미 serial-usb converter가 들어있기 때문에 맥에 드라이버 프로그램을 설치하고 USB케이블로 연결하면 된다. 자작 보드에 시리얼 포트만 있는 경우는 시판되고 있는 USB to RS-232 컨버터를 사용해서 연결하면 된다.

 Arduino보드는 압력센서에 압력이 감지되면 (즉 사람이 의자에 앉으면) 그때부터 시간을 기록하고 있다가 각각 정해진 규칙에 따라 맥에 특정 문자를 보내주는 역할을 한다. 예를 들어 의자에 앉으면 'U'를, 15분 이내에 일어나면 'D'를, 45분이 지나면 'B'를 보내는 것이다.

맥에서는 시리얼 포트에 각각의 글자가 들어오면 그에 해당하는 문장을 말하게 만들어 준다.

Arduino와 맥 사이에 좀 더 복잡한 양방향의 명령/데이터 전송이 필요하다면 맥에서도 직접 프로그램을 만들어야 하겠지만 이번 예제같이 Arduino에서 맥으로 단방향으로 단순한 명령만 전달되는 경우는 별도의 복잡한 프로그래밍 없이 간단하게 사용할 수 있는 프로그램이 나와 있다.
 
사용자 삽입 이미지

ASProxy 를 사용하면 위의 그림과 같이 특정 문자가 들어올 때 어떤 동작을 할 것인가를 애플스크립트로 지정해 줄 수 있다.

애플스크립트로 다양한 맥 OS의 어플리케이션들을 제어할 수 있기 때문에 위의 예를 조금만 변경해도 할 수 있는 일들은 무궁무진하다.
 
예를 들자면 압력센서 대신 PIR(Passive InfraRed) 센서를 붙여주면 인체의 움직임을 감지할 수 있기 때문에 맥 앞에 사람이 오면 전차남의 '어서오세요. 주인님' 같은 부분이 들어있는 동영상 클립을 전체화면에서 플레이 시키는것이 가능해진다.

ASProxy의 장점은 별도 프로그래밍이 필요없이 쉽게 사용할 수 있다는 것이지만 단점은 외부에서 맥으로 신호를 입력해 줄 수는 있지만 반대로 맥에서 외부로 신호를 출력하지 못한다는 것이다. 이 경우는 별도의 스크립팅 또는 프로그래밍 언어로 원하는 동작을 하도록 만들어 줘야 한다.

애플 스크립트에서 시리얼 포트를 직접 제어하려면 SerialPort X를 사용할 수 있고 python에서는 PySerial을 사용하면 된다.

Arduino 보드에 관심이 있는 사람은 http://www.arduino.cc/en/ 를 참조하면 된다.
또한 위의 예제에서 Arduino에 사용할 코드의 소스는 맥월드의 기사에 보면 다운로드 받을 수 있는 링크를 찾을 수 있다. 관심이 있는 사람은 맨 위쪽의 기사 링크를 따라가서 참조하길 바란다.
Posted by nautes

댓글을 달아 주세요

이전버튼 1 이전버튼