자바스트립트 로보틱스,ioT를 위한 Cylon 들이대기

역시 평온한 일요일 아침에 또 하나의 호기심을 자극하는 이녀석, 자바스크립트 싸일론.
일단 35개의 플랫폼을 지원하다는 말에 훅…땡깁니다.

일단 아두이노와 에디슨, 갈릴레오등을 지원하니 잠깐 해보고 느껴보는것도 나쁘지는 않을것 같죠.
자바스크립트와 Node 기반입니다. 따라서 node를 설치합니다. 맥에서 작업을 합니다.

콘솔에서 노드를 설치합니다.
brew install node

노드 설치후에 cylon를 설치합니다.
npm install cylon

작업용 폴더하나 만들고 이동합니다.

아래 링크에서 gort를 다운받아 설치합니다.
gort 다운

gort는 ~/bin 에 복사하거나 어쨌든 실행 경로에 포함시켜줍니다.

설치가 되었다면 gort scan serial 를 입력해서 잘 동작하는지 확인합니다.

[IntelCylon]$ gort scan serial
/dev/cu.Bluetooth-Incoming-Port /dev/tty.Bluetooth-Incoming-Port
/dev/cu.Bluetooth-Modem /dev/tty.Bluetooth-Modem
/dev/cu.JunoiPhone6-WirelessiAP /dev/tty.JunoiPhone6-WirelessiAP
/dev/cu.iPhone-WirelessiAP /dev/tty.iPhone-WirelessiAP
/dev/cu.usbmodem411 /dev/tty.usbmodem411
[IntelCylon]$

위에 제 맥에서 동작한 콘솔 화면내용입니다. /dev/tty.usbmodem411 이 아두이노에 연결된 포트입니다.

이제, 아두이노의 avrdude 를 설치합니다.
gort arduino install

설치가 완료되면 firmata 를 아두이노에 올려줍니다. 이 녀석이 올라가야 cylon과 커뮤니케이션을 합니다.
포트는 아까 스캔했을때 나온 연결된 아두이노 포트를 설정해줍니다.

gort arduino upload firmata /dev/tty.usbmodem411

아래와 같이 업로드가 됩니다.
[IntelCylon]$ gort arduino upload firmata /dev/tty.usbmodem411

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: reading input file "/var/folders/4g/mcx7mvl52k99y3r2v34ptzt80000gn/T/379129275"
avrdude: writing flash (11452 bytes):

Writing | ################################################## | 100% 2.10s

avrdude: 11452 bytes of flash written
avrdude: verifying flash memory against /var/folders/4g/mcx7mvl52k99y3r2v34ptzt80000gn/T/379129275:
avrdude: load data flash data from input file /var/folders/4g/mcx7mvl52k99y3r2v34ptzt80000gn/T/379129275:
avrdude: input file /var/folders/4g/mcx7mvl52k99y3r2v34ptzt80000gn/T/379129275 contains 11452 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.64s

avrdude: verifying ...
avrdude: 11452 bytes of flash verified

avrdude done. Thank you.

자! 이제
subl blink.js 로 서브라임 에디터로 소스를 생성하고

"use strict";

var Cylon = require("cylon");

Cylon.robot({
connections: {
arduino: { adaptor: "firmata", port: "/dev/tty.usbmodem411" }
},

devices: {
led: { driver: "led", pin: 3 }
},

work: function(my) {
every((1).second(), my.led.toggle);
}
}).start();

위에 내용을 입력합니다.

그리고 콘솔에서 node blink.js 를 실행하면 아래와 같이 실행되고

[examples]$ node blink.js
I, [2015-05-03T03:16:50.763Z] INFO -- : [Robot 78385] - Initializing connections.
I, [2015-05-03T03:16:50.893Z] INFO -- : [Robot 78385] - Initializing devices.
I, [2015-05-03T03:16:50.897Z] INFO -- : [Robot 78385] - Starting connections.
I, [2015-05-03T03:16:55.960Z] INFO -- : [Robot 78385] - Starting devices.
I, [2015-05-03T03:16:55.961Z] INFO -- : [Robot 78385] - Working.

IMG_0257

위에 그림은 Grove Kit 를 사용하여 3번에 LED를 연결한 그림입니다.
잘 동작합니다.

신경써야 하는 부분은 LED가 연결된 핀번호와 시리얼 포트 이름입니다. 두개는 상황에 따라 달라집니다.
와우.

일단 첫 느낌은 자바스크립트를 활용하는것도 좋고 node를 사용할수 있는것이 가장 환상적이며 로봇과 지원 플랫폼이 많아서 정말 기대가 되네요…

참조:
http://cylonjs.com/
http://cylonjs.com/documentation/getting-started/
http://cylonjs.com/documentation/platforms/arduino/
http://cylonjs.com/documentation/drivers/led/

2 comments

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중