1. 아두이노
아두이노는 국내에서는 플러그 하우스나 기타 하드웨어를 취급하는 쇼핑몰등에서 보드와 관련 모듈, 부품들을 구입할 수 있습니다. 전기적인 지식이 조금 있으신 분들은 아두이노 공식 사이트에 공개된 하드웨어 메뉴얼을 참조하여 직접 만드는 것도 어렵지 않습니다.
|
아두이노와 관련된 번역서도 나와 있고 공식 사이트의 Leaning, Reference 페이지와 인터넷에 공개되어 있는 많은 자료들을 참고하면 쉽게 익숙해질 수 있습니다. 브레드보드를 이용하여 LED, 모터, 스위치, 센서와 저항들을 연결하여 사용하면 기판을 만들 필요도 없고 납땜도 필요없이 손쉽게 원하는 회로를 만들어 볼 수 있습니다.
물론 지금 쓰고 있는 컴퓨터 보다 1,000배는 더 열등한(?) 하드웨어이고 간단한 코드들로 간단한 동작들만 하지만 직접 하드웨어를 구성하고 제어하는 물리적인 재미와 함께 어린시절 전자키트를 가지고 놀던 향수도 느낄 수 있습니다. 직접 회로를 만들 수도 있지만 판매되는 전용 이더넷 쉴드, 모터쉴드, 직비 쉴드등을 이용해 쉽게 기능을 추가할 수 있으며 로봇 교재 사이트등에서 판매하는 부품들도 대부분 사용이 가능합니다. 아두이노는 소프트웨어 개발자를 위한 저렴(?)하고 재미있는 장난감중 하나인 것 같습니다.
아두이노는 스크래치에서도 바로 인식이 가능하기 때문에 스크래치의 센서보드로도 사용할 수있습니다. 관찰 메뉴에서 하단의 센서 관련 블록에서 우클릭 후에 'ScratchBoard 감시판 보이기'를 클릭하고 다시 감시판에서 우클릭 후에 '시리얼/USB 포트 선택'을 클릭하면 아래와이 아두이노 보드가 인식됩니다.
이를 이용하면 스크래치의 리모콘, 게임 컨트롤러를 쉽게 만들 수 있으면 촉각, 광, 온도, 적외선, 소리 센서등을 이용해 실제 환경을 스크래치에 반영시키는 것이 가능합니다. 스크래치뿐만 아니라 여러 개발환경에서 아두이노와 통신할 수 있는 방법들이 많이 공개되어 있습니다.
2. 샘플
이전에 포스팅한 블로그의 새 댓글을 확인하는 스크래치를 아두이노 버젼으로 만들어 보겠습니다. 이번도 마찬가지지만 정확한 파싱없이 대충 새 댓글을 판별하는 것이기 때문에 뭔가 쓸만한게 만들어 보실려면 코드를 많이 수정하셔야 할 것 입니다.
1) 아두이노 코드
아두이노 통합개발환경은 아두이노 공식 사이트의 다운로드 페이지에서 사용하는 OS별로 다운 받으실 수 있습니다. IDE의 에디터에서 아래의 코드를 입력한 후에 상단의 Upload 버튼을 클릭하면 보드로 업로드됩니다.
- #define LED_PIN 13
- #define DELAY_SEC 5
- void setup() {
- Serial.begin(9600);
- pinMode(LED_PIN, OUTPUT);
- }
- void loop() {
- if (Serial.available() > 0) {
- byte b = Serial.read();
- if (b == 'O') {
- digitalWrite(LED_PIN, HIGH);
- delay(1000 * DELAY_SEC);
- digitalWrite(LED_PIN, LOW);
- }
- }
- }
2) 프로세싱 코드
아두이노에서는 별도의 이더넷 모듈 없이는 직접적인 인터넷 연결이 불가능하기 때문에 프로세싱과 연동하여 블로그의 내용을 가져오도록 합니다. 프로세싱 IDE에서 아래의 코드를 입력하고 실행합니다.
- import processing.net.*;
- import processing.serial.*;
- final int DELAY_SEC = 5;
- Serial port;
- void setup() {
- size(400, 140);
- background(10);
- port = new Serial(this, Serial.list()[0], 9600);
- }
- void draw() {
- background(10);
- Client webClient = new Client(this, BLOG_URL, 80);
- webClient.write("GET / HTTP/1.1\n");
- delay(1000 * DELAY_SEC);
- if (webClient.available() > 0) {
- String statusTitle;
- if (comment != null && comment.length > 0) {
- if (prevCommentID.equals(recentCommentID)) {
- statusTitle = "None";
- } else {
- statusTitle = "New";
- port.write("O");
- }
- prevCommentID = recentCommentID;
- } else {
- statusTitle = "Error";
- }
- }
- }
아래와 같이 실행되는 모습을 확인할 수 있습니다. 급조한 소스에 나와있다시피 실행한 후 5초 후에 최초로 한번 LED가 한번 켜지고 그후에는 댓글에 변경이 있을때마다 켜집니다.
'기타' 카테고리의 다른 글
다시 글쓰기 (2) | 2011.07.19 |
---|---|
참고할만한 좋은 아이폰 소스 (19) | 2010.05.04 |
세계지도 앱 - World Atlas (2) | 2010.04.21 |
모토로이 (6) | 2010.02.11 |
역시 그냥 껐다 키는 것이... (8) | 2009.09.24 |