2016년 9월 7일

3D 프린터 세밀한 부분 색칠하기

자문 : 정상수 작가님

이 글은 3D 프린터 출력물 후가공 순서의 연장선으로 정리한 글이다. 앞의 글을 안 본 사람들은 보고 이 글을 읽기 바란다. 얼굴이나 기타 세밀한 부분을 색칠해 표현할때 어떻게 하는 것이 좋은지 정리해보았다.

밑 색의 속성과 같은 속성을 사용해 표현하자!

앞 글에서도 언급했지만 다시 한번 설명하면 밑 색을 표현한 재료의 속성과 같은 속성으로 세밀한 부분을 표현해야한다. 예로 밑 색을 라카 계열로 했다면 똑같이 라카 계열로, 만약 아크릴을 사용했다면 아크릴 계열을 사용해야한다. 실제로 아크릴로 밑색을 표현한 곳에 라카 계열인 펜을 사용했다가 원하는 표현이 나타나지 않는 것을 보았다. 3D 프린터의 경우 사용 편의를 위해 아크릴을 추천한다.

탄성이 좋은 세필붓을 사용하자!

아크릴을 사용한다는 전제로 탄성이 좋은 세필붓을 사용한다. 가급적 가장 가는 세필붓 1호를 사용하는 것이 좋다. 그리고 일반 화방에서 흔하게 살 수 있는 세필붓의 경우 탄성이 떨어질 수 있다. 탄성이 좋아야 세밀한 부분을 표현하기에 좋다. 따라서 어느 정도 값 비싼 세필붓을 사용하는 것이 좋다.

안료량이 많은 도료를 사용하자!

안료량이 많은 것을 사용하면 발색이 잘된다. 즉, 안료량이 보통인 것으로 칠하면 4 ~ 5번 이상은 칠해야하는 것을 1 ~ 2번 만 칠해 원하는 색을 표현하는 것이다. 일반 화방에 파는 도료의 경우 안료량이 그렇게 많지 않다. 따라서 안료량이 많은 모형용 도료를 추천한다.

모형용 도료 관련 사이트네이버 하비


2016년 9월 5일

3D 프린터 출력물 후가공 순서

자문 : 정상수 작가님, 김철민 작가님, 하영민님


  1. 3D 프린터 출력 후 금간 곳을 스티로폼 자르는 열선 커터나 초음파 커터를 이용해 필라멘트를 녹여 메꿔준다.
  2. 자동차 퍼티 또는 레드 퍼티를 이용해 모양을 잡아준다. 모양을 크게 잡을 필요가 없다면 이 단계를 건너뛴다.
  3. 만약 퍼티 작업을 할 필요가 없다면 거친 표면을 다듬어준다. 거친 표면을 다듬을때 곧바로 사포질을 해도 되지만 그 위에 서페이서를 한번 두르고 사포질하는 것이 더 편하다. 사포를 이용하는 경우 대게 200 ~ 300방으로 다듬는 것이 좋다.

    서페이서프라이머를 헷갈려하는 경우가 많다. 간단하게 정리하면 서페이서(surfacer)는 영어의 원 뜻대로 표면을 평평하게 하는 것이다. 즉, 표면을 덮어 두껍게 만들어주는 것이다. 반면 프라이머(primer)는 밑 칠 페인트라는 영어 원 뜻과 같이 그 위에 착색(색을 칠하는 것)이 잘 되도록 하는 일종의 접착제다. 따라서 프라이머는 뿌린다고 표면이 두꺼워지지 않는다. 물론 무식하게 많이 뿌리면 표면이 두꺼워지긴 하지만 그 용도를 잘못 사용한 것이다. 시중에 서페이서 프라이머라고 단어가 함께 붙은 제품의 경우 서페이서프라이머의 기능을 동시에 갖고 있는 것이다. 따라서 표면을 덮는 동시에 착색이 잘 되도록 해준다. 참고로 서페이서프라이머 모두 1 ~ 2만원 대 캔 스프레이가 판매되지만 좀 더 전문적으로 하고 싶은 경우 페인트 샵에서 4 ~ 5만원에 대용량을 사서 사용하는 것을 추천한다. 여기에 에어 스프레이 건을 연결해 사용하면 기존 1 ~ 2만원 대 캔 스프레이 15 ~ 20개의 양을 사용하는 것과 같다(4만원 한 통 vs 1 ~ 2만원 캔 스프레이 15 ~ 20개). 물론 보관을 잘 해야한다. 초보자의 경우 처음부터 비싼 에어 스프레이 건(35만원대 이상)을 사용하기 보다 10 ~ 15만원대 제품을 사용하는 것을 추천한다.

    에어 스프레이 건 관련 사이트
    KPTOOL

    서페이서의 경우 또 하나 주의해야할 것이 마감제와의 속성과 동일시해줘야 한다는 것이다. 만약 마감제를 폴리우레탄 계열로 사용한다면 서페이서도 이와 동일하게 폴리우레탄 계열을 사용해야한다. 또는 마감제를 라카 계열로 사용한다면 서페이서도 라카 계열을 사용해야한다.
  4. 표면을 다듬기 위한 사포질을 한다. 사포질의 경우 대략 여러 단계(예 : 4단계)로 나누어 하는 것이 좋다. 처음에는 200방에서 시작해 점차 1,000 ~ 2,000방까지 올라간다. 사포질을 하는 경우 사포의 마찰면이 아닌 반대면에 딱딱한 스티로폼을 대고 작업하면 좋다. 이 경우 출력물의 손상을 줄일 수 있다.
  5. 서페이서 작업과 프라이머 작업까지 완료했다면 착색하기 전에 전체적으로 약하게 사포질을 또 해준다. 매끈한 것보다 작은 흠이 있는 것이 착색이 더욱 잘되게 해준다. 사포질 한 후 에어 건 등을 이용해 표면의 이물질을 제거해준다.
  6. 사포질까지 했다면 신나를 이용해 전체적으로 표면을 한번 닦아준다. 이건 표면에 있는 유분을 제거해주기 위해서다. 만약 유분이 있는 상태에서 도료(칠, 염료, 물감)를 칠하면 그 부분에 원치않는 광택이 생길 수 있기 때문이다.
  7. 도료는 애나멜, 아크릴, 락카 중 원하는 것을 칠하면 된다. 사용상 편의를 위해 아크릴 물감을 추천한다. 도료의 경우 안료(물감)량이 많은 모형용을 사용하는 것이 좋다. 모형용이 일반 도료보다 발색(빛깔이 남)이 잘된다. 쉽게 설명하면 일반 도료로 4~5번 칠해야 원하는 색이 나오는 것을 1~2번만에 원하는 색이 나오는 것이다.

    모형용 도료 관련 사이트
    네이버 하비
  8. 우선 마감제는 작업자의 선호도에 따라 다르다.

2016년 5월 1일

[아두이노 5부작] 제 2편 아두이노의 비상(飛上)

이제는 전 세계 수많은 사람들이 아두이노를 사용한다. 아두이노 홈페이지에 발표된 바로는 정품보드가 2013년까지 대략 70만 대 이상 판매됐다고 한다. 여기에 소위 호환보드라고 불리는 복제품을 고려하면 그 수는 몇 배 이상일 것으로 추정된다. 아두이노가 이렇게 널리 보급된 데에는 제품을 꾸준히 개선하고 새로운 모델을 늘려갔던 아두이노 개발팀의 노력이 있었다. 이번 시간에는 아두이노가 어떻게 발전해왔는지 초기 모델부터 최근 모델까지 살펴보고, 각 모델이 가지고 있는 특징과 중요성을 짚어보고자 한다.

아두이노 표준


현재 아두이노 홈페이지에는 20종의 아두이노 모델이 판매되고 있다. 이 중 정품보드와 호환보드를 모두 포함해 가장 잘 팔리는 모델은 단연 ‘아두이노 UNO’다. 아두이노 UNO는 아두이노의 다양한 모델 중 표준 모델로 통용되며, 아두이노 USB 시리즈의 최신 모델이기도 하다. 그리고 이 아두이노 USB 시리즈가 아두이노의 표준으로 인식돼 왔다. 아두이노 USB 시리즈의 초기 모델부터 아두이노 UNO까지 그 발전 과정을 살펴보자.

- 아두이노 USB

<그림 1> 아두이노 USB

아두이노 USB는 처음으로 아두이노라는 이름이 붙여진 모델이다. 이 제품은 <그림 1>과 같이 조립되지 않은 상태로 판매됐다. 첫 번째 버전에서는 USB 커넥터와 관련된 핀아웃이 잘못 돼 문제가 되기도 했다. 보드 중앙에 ‘www.potemking.org’라는 URL이 적혀있다.

- 아두이노 USB v2.0


<그림 2> 아두이노 USB v2.0

아두이노 USB의 두 번째 버전이다. 이전 버전의 USB 커넥터 문제가 수정됐다. 보드 중앙에 arduino.berlios.de라는 URL과 Arduino USB v2.0이 표기돼 있다.

- 아두이노 EXTREME


<그림 3> 아두이노 EXTREME

아두이노 EXTREME은 이전 모델인 아두이노 USB보다 더 많은 부품이 사용됐다. 조립되지 않고 팔린 이전 모델과 달리 핀 암 헤더(female pin header)가 연결돼 판매됐다. 또한 아두이노와 PC 간에 데이터가 오고 감을 표시하는 RX, TX LED가 장착됐다.

- 아두이노 EXTREME v2


<그림 4> 아두이노 EXTREME v2

아두이노 EXTREME v2는 특이하게도 기판에 격자 무늬를 새겨 넣었다. 이때부터 현재 홈페이지 주소인 ‘www.arduino.cc’ URL이 적혀 판매됐다.

- 아두이노 NG


<그림 5> 아두이노 NG

NG는 이탈리아어인 ‘Nuova Generazione’의 약자로 ‘새로운 세대’를 의미한다. 주목할 만한 변화는 기존에 사용하던 USB 시리얼 컨버터인 FT232BM를 FT232RL로 바꿨다는 점이다. FT232RL은 이전에 비해 적은 부품을 사용하기 때문에 공간효율성이 높다. 또 이때부터는 내장형 기본 LED가 탑재됐다. 하지만 이 기본 LED가 SPI 쪽을 간섭해 문제가 발생하는 경우가 종종 있었다. 초기에는 아트메가(ATmega)8이 사용되다가 아트메가168로 바뀌었다.

- 아두이노 NG 리비전 C


<그림 6> 아두이노 NG 리비전 C

아두이노 NG 리비전 C는 이전에 문제가 됐던 기본 LED를 빼버렸다. 대신 GND와 13번 핀 밑에 LED를 연결할 수 있는 솔더 패드를 남겨 두었다. 이 솔더 패드에 이미 1,000ohm의 저항을 연결해 놓았기 때문에 LED만 연결하면 사용이 가능했다.

- 아두이노 DIECIMILA


<그림 7> 아두이노 DIECIMILA

Diecimila는 이탈리아어로 1만을 뜻한다. 당시 아두이노 보드가 만 대 이상 팔린 것을 기념해 이와 같은 이름이 지어졌다. 아두이노 DIECIMILA에서의 가장 큰 변화는 USB선으로 보드와 연결된 PC를 이용해 보드를 리셋할 수 있게 됐다는 점이다. 이전 모델에서는 수동으로 버튼을 눌러줘야 했다. 최소 필요 전력과 열방출을 낮추기 위해 로우 드랍아웃 레귤레이터(low dropout regulator)를 탑재한 것도 아두이노 DIECIMILA의 특징 가운데 하나였다. 또한 USB로 연결된 PC의 순간적인 과전류로 보드가 망가지는 것을 방지하기 위해 폴리 스위치도 사용됐다. <그림 7>의 POWER라고 적힌 부분의 하단을 보면 이때부터 RESET과 3.3V 핀 헤더가 추가됐다는 것도 알 수 있다. 아두이노 NG 리비전 C에서 제거됐던 기본 LED도 다시 사용되기 시작했다.

- 아두이노 DUEMILANOVE


<그림 8> 아두이노 DUEMILANOVE

Duemilanove는 이탈리아어로 ‘2009’라는 뜻이다. 이는 발매 연도인 2009년을 상징한다. 아두이노 DUEMILANOVE에서부터는 사용자가 USB 또는 외부 전원을 연결하면 자동으로 적합한 전원이 선택되도록 바뀌었다. 이전 모델에서는 파워 관련 점퍼의 위치를 일일이 바꿔줘야 했다. 자동 리셋의 무효화 또는 유효화를 쉽게 할 수 있도록 별도의 솔더 패드도 추가됐다. 출시했을 때는 아트메가168을 사용했으나 2009년 3월 1일부터 아트메가328p로 교체됐다.

- 아두이노 UNO


<그림 9> 아두이노 UNO 리비전 3

Uno는 이탈리아어로 ‘1’을 뜻한다. Uno라는 이름이 지어진 이유는 당시 공개가 예정됐던 아두이노 IDE 1.0버전에 맞췄기 때문이다. 개발 팀은 아두이노 IDE 정식버전과 함께 아두이노 UNO를 공식적인 아두이노 표준으로 만들고자 했다. 아두이노 UNO는 현재 리비전 3이 출시된 상태다(이제부터 언급하는 아두이노 UNO는 아두이노 UNO 리비전 3을 의미한다). 

리비전 3을 기준으로 이전 모델과의 차이점을 알아보자. 아두이노 UNO는 이전까지 사용한 FTDI USB 시리얼 컨버터가 아닌, USB 시리얼 컨버터를 프로그램으로 구현한 아트메가16U2를 사용한다. 자체적으로 USB 부트로더를 가지고 있기 때문에 원한다면 사용자가 이를 수정해 사용할 수도 있다. 

디자인도 이전 버전에 비해 많이 달라졌다. 각 핀 헤더의 용도를 사용자가 쉽게 파악할 수 있도록 기존 기판 배경에 있던 격자 무늬가 사라졌다. 또 한 가지 주목할 점은 바로 1.0 핀아웃이 적용됐다는 것이다. 1.0 핀아웃은 일종의 아두이노 핀 헤더 배치에 대한 표준이라 할 수 있다. AREF 핀 좌측에 I2C에서 사용하는 SDA, SCL 핀 헤더가 추가됐고, RESET 핀 좌측에 아두이노 쉴드(이하 쉴드)가 아두이노 보드의 전압을 감지할 수 있도록 하는 IOREF 핀이 장착됐다. 3.3V와 5V 보드에서 공통으로 사용되는 쉴드의 경우 이 IOREF 핀을 이용해 적절한 전압을 판단한다. IOREF 핀 좌측에 있는 핀은 아직 아무것도 연결돼 있지 않다. 어떤 용도로 사용될 지는 정해지지 않았지만, 추후 기능이 추가될 수 있다고 한다. 다른 모델 중에 1.0 핀아웃을 따른다고 표기된 것을 보면 아두이노 UNO에 배치된 것과 동일하다는 걸 알 수 있다. 

아두이노의 확장


아두이노의 주 목표는 일반인이나 예술가들이었다. 그렇다고 전문가들이 아두이노를 사용하지 않은 것은 아니다. 개발의 편의성과 단순성 때문에 고성능 개발 보드보다 아두이노를 선호하는 사람들이 많았다. 하지만 많은 자원이 요구되는 개발에서는 아두이노의 낮은 성능이 문제가 됐다. 업로드할 수 있는 스케치의 크기가 매우 작았고, 핀의 개수 또한 부족하기 일쑤였다. 결국 이와 관련된 요구사항이 많아지면서 좀 더 개발에 특화된 모델이 나오게 됐다.

- 아두이노 MEGA


<그림 10> 아두이노 MEGA

아두이노 MEGA는 아두이노 DUEMILANOVE와 비슷한 시기에 출시됐다. 아트메가1280을 사용하면서 성능이 대폭 강화됐다. 아두이노 USB 시리즈 모델보다 크기가 커졌고 입출력 핀이 54개로 늘어났다. 또한 스케치 업로드 가능 용량도 8배로 확장됐다.

- 아두이노 MEGA 2560


<그림 11> 아두이노 MEGA 2560

아두이노 UNO와 함께 출시된 아두이노 MEGA 2560은 아트메가2560을 사용했다. 하드웨어 면에서 성능이 개선된 것도 있지만, 아두이노 UNO와 마찬가지로 1.0 핀아웃이 적용됐다는 점이 가장 큰 특징이다.

- 아두이노 DUE


<그림 12> 아두이노 DUE

아두이노 DUE는 얼핏 보면 아두이노 MEGA와 생김새가 상당히 비슷한데, 실제로는 아주 큰 차이점을 가지고 있다. 바로 처음으로 ARM 프로세서를 사용했다는 점과 구동 전압이 3.3V라는 점이다. 아두이노 MEGA 2560과 비교해 성능도 전반적으로 많이 향상됐다. 기존 보드에 익숙한 사용자는 실수로 5V 전압을 보드에 직접 연결하지 않도록 주의해야 한다. 보드가 곧바로 망가질 수 있다.

다양한 아두이노


이번에는 특이하고 재미난 아두이노 모델들에 대해 살펴보고자 한다. 아두이노를 사용하는 사람들이 늘어나면서 아두이노를 사용하고자 하는 목적도 매우 다양해졌다. 아두이노로 단순히 아이들의 장난감을 만들어주려는 사람도 있었고, 취미 삼아 재미난 로봇을 만들고자 하는 사람도 있었다. 이와 같이 단순히 기능적인 것보다 아두이노를 통해 얻고자 하는 재미나 경험이 강조되면서 이에 특화된 모델들이 개발되기 시작했다.

- 초보자를 위한 아두이노


<그림 13> 아두이노 ESPLORA

Esplora란 이탈리아어로 탐험을 뜻한다. 이름에도 내포가 돼 있듯이 전자회로에 무지한 사람들이 쉽고 재밌게 아두이노를 가지고 놀 수 있도록 하기 위해 개발된 모델이다. <그림 13>에서도 볼 수 있듯이 조도센서, RGB LED, 마이크, 조이스틱, 피에조 스피커 등 다양한 센서와 액추에이터가 기본으로 탑재돼 있다.

<그림 14> 팅커킷

그뿐만 아니라 아두이노 ESPLORA는 상단의 커넥터를 이용하면 ‘팅커킷(TinkerKit)’이라는 걸 연결해 사용할 수 있다. 아두이노 홈페이지에서 판매하는 팅커킷은 센서와 액추에이터를 레고처럼 손쉽게 꼈다 뺄 수 있도록 만든 제품이다. 전자회로나 프로그래밍에 대해 잘 모르는 사람도 가이드 문서를 보고 재미난 예제들을 따라해 볼 수 있도록 한 것이 팅커킷의 특징이다.

- 웨어러블 아두이노


<그림 15> LILYPAD 아두이노

LILYPAD 아두이노는 웨어러블과 전자섬유(e-textiles)를 위해 만들어진 모델이다. 그 때문에 옷이나 천에 LILYPAD 아두이노를 바느질해 사용할 수 있다. 또한 전기가 통하는 실을 이용하면 센서나 액추에이터 등도 이용할 수 있다. 가장 최근 버전은 저전력이 특징인 아트메가328V를 사용한다.

<그림 16> LILYPAD 아두이노를 옷에 연결한 모습

- 아두이노 로봇


<그림 17> 아두이노 ROBOT

아두이노 ROBOT은 이름 그대로 로봇으로 된 모델이다. 이 제품은 보드가 2개로 구성돼 있는 것이 특징이다. 하나는 상단에서 제어를 담당하는 컨트롤 보드이고, 하나는 하단에서 모터를 구동하는 모터 보드이다. 컨트롤 보드는 아두이노 ESPLORA처럼 다양한 센서와 액추에이터를 가지고 있으며, 이를 통해 로봇을 움직일 때 필요한 정보를 얻는다. 당연히 2개의 보드 모두 일반 아두이노 모델처럼 아두이노 IDE를 통해 개발할 수 있다. 두 보드는 모두 아트메가32u4를 사용한다. 아두이노 ROBOT은 모델의 설계도와 하드웨어 그리고 그 위에 구동되는 소프트웨어를 모두 오픈소스로 공개했기 때문에 자신만의 로봇을 만들고 싶어하는 사람들에게 좋은 예제가 될 수 있다.

- 초소형 아두이노


<그림 18> 아두이노 MINI

아두이노 MINI는 이름 그대로 초소형 모델이다. 작은 크기 덕분에 커넥터를 이용해 브레드보드에 꼽아 사용해도 되고, 부피가 작은 물건에 넣어 쓸 수도 있다. 크기가 작다고 기존의 큰 모델에 비해 사용할 수 있는 자원이 한정적인 것도 아니다. <그림 18>에서도 볼 수 있듯이 아두이노 UNO와 똑같은 입출력 핀 개수를 지원한다. 초기에는 아트메가168로 만들어졌다가 최근에는 아트메가328로 교체됐다. USB를 이용해 곧바로 PC에 연결할 수는 없고 USB 시리얼 어댑터를 이용해야 한다. 주의할 점은 보드가 망가질 수 있으므로 절대 9V 이상의 전원을 인가해서는 안 된다.

<그림 19> 아두이노 NANO

아두이노 NANO 또한 아두이노 MINI와 같은 초소형 모델이다. 하지만 아두이노 MINI에 비해 사용성이 더 뛰어나다. PC와 직접 연결이 가능하며, 커넥터 없이 브레드보드에 곧바로 꼽아 사용할 수 있다. 단, 전원 연결은 별도로 해야 한다. 아두이노 MINI와 동일한 아트메가328을 사용한다.

- 사물인터넷


<그림 20> 아두이노 YUN

YUN은 중국말로 구름을 뜻한다. 이름에서도 느낄 수 있듯이 아두이노 YUN은 인터넷에 특화된 모델이다. 기본적으로 이더넷과 WiFi를 내장하고 있어 곧바로 인터넷에 연결할 수 있다. 아두이노 LEORNARDO에 OpenWrt가 구동되는 프로세서가 합쳐진 형태로 보면 된다.

<그림 21> 아두이노 YUN과 템부(Temboo)

아두이노 YUN 같은 경우 기능적인 것보다 서비스에 주목할 필요가 있다. 제품이 출시된 초기부터 사물인터넷 API 서비스인 ‘템부(Temboo)’와의 연결을 기획했기 때문이다. <그림 21>과 같이 아두이노 쪽에서 센서에 대한 정보 값을 읽고 리눅스로 전달한다. 그러면 리눅스에서 다시 템부 서버로 데이터를 전송하게 된다. 아두이노 YUN을 이용하면 날씨, 온도, 습도 등 아두이노가 인식할 수 있는 상황에 따라 해당 정보를 이메일이나 페이스북을 통해 알리도록 할 수 있다. 또 데이터를 구글 드라이브나 드랍박스에 저장할 수 있고 클리키(Clicky)를 이용해 곧바로 분석을 할 수도 있다. 이 외에도 다양한 서비스 API가 100가지 이상 존재한다. 실제로 사용할 때는 예제 소스 코드를 스케치에 복사한 뒤 계정 정보만 수정해 사용할 수 있다.

경쟁자들


오픈소스 하드웨어가 아두이노만 존재하는 것은 아니다. 와이어링(Wiring), 리틀비츠(littleBits), 라즈베리 파이, 비글본 블랙 그리고 보드라는 접미사가 붙은 다양한 제품이 존재한다. 하지만 이 중에서 아두이노의 경쟁제품으로 주의 깊게 봐야할 제품은 단연 라즈베리 파이다. 

<그림 22> 라즈베리 파이 B+

라즈베리 파이는 영국의 라즈베리 파이 재단이 학생들에게 컴퓨터에 대한 흥미를 갖게 해주기 위해 만든 제품이다. 현재까지 나온 모델은 A, B, B+로 총 3개 밖에 없지만, 아두이노와 함께 오픈소스 하드웨어 프로젝트에서 상당히 많이 사용되고 있다. 인터넷을 검색하면 종종 아두이노와 라즈베리 파이 둘 중 어떤 제품을 사야할지 분석하는 기사나 포스트를 쉽게 볼 수 있다. 그만큼 서로가 경쟁 제품이라 할 수 있지만, 솔직히 두 제품은 상당히 다른 성격을 가지고 있다. 아두이노가 집에서 몇 분 거리를 가기 위해 타는 자전거라고 한다면, 라즈베리 파이는 상당히 먼 거리를 가기 위해 타는 자동차와 같다. 아두이노는 펌웨어 기반이고, 라즈베리 파이는 운영체제가 돌아간다는 것이 큰 차이점이다. 라즈베리 파이는 그냥 리눅스 컴퓨터라고 생각하면 된다. 대신 컴퓨터에 필요한 모든 것이 손바닥만한 보드에 집적돼 있다는 것이 특징이다. 키보드, 마우스 그리고 모니터를 연결하면 곧바로 데스크탑 컴퓨터가 된다. GPU의 성능도 좋아 XBMC라는 것을 깔아 미디어 서버로 활용하는 사람들도 많다. 또한 일반 컴퓨터처럼 인터넷을 하거나 다양한 프로그램을 설치해 사용할 수도 있다. 물론 기존 고성능 데스크탑 컴퓨터 정도는 아니다. 

이런 라즈베리 파이와 비교하면 펌웨어 기반의 아두이노가 초라해 보일 수도 있다. 로봇이나 이미지 처리와 같이 컴퓨팅 자원이 많이 필요한 프로젝트의 경우 라즈베리 파이를 호스트로 사용해 아두이노를 제어하도록 설계하기도 한다. 이때 아두이노는 단순히 센서로부터 값을 읽거나 액추에이터를 동작시키는 데만 집중하고 제어나 데이터에 대한 후 처리는 라즈베리 파이가 한다. 아두이노에서도 라즈베리 파이와 같은 운영체제가 돌아가는 모델이 없는 것은 아니다. 앞서 소개한 아두이노 YUN이 라즈베리 파이와 비슷한 모델이다. 하지만 아두이노 YUN은 라즈베리 파이에 비해 할 수 있는게 많지 않다. 성능이 라즈베리 파이에 비해 낮고 데이터를 웹으로 전송하는 데 특화돼 있기 때문이다.

<그림 23> 아두이노 TRE

이러한 아두이노 YUN의 단점을 보완한 아두이노 TRE라는 모델이 2014년 말에 출시될 예정이다. 아두이노 TRE는 아두이노 LEONARDO와 비글본 블랙이 합쳐진 형태로 보면 된다. 비글본 블랙은 미국의 비글보드 재단이 만든 제품으로 라즈베리 파이와 같은 소형 리눅스 컴퓨터다. 성능도 라즈베리 파이와 거의 동일하다. 이처럼 비글본 블랙이 합쳐진 아두이노 TRE는 기존 아두이노 모델이 할 수 없던 것을 다양하게 할 수 있다. 기존 아두이노로 할 수 있는 것에 라즈베리 파이가 할 수 있는 것이 추가됐다고 생각하면 된다. 아두이노 TRE는 기존의 아두이노 IDE를 사용하지 않고 아두이노 TRE에서 구동되는 웹 서버를 이용한 웹앱용 IDE가 제공될 예정이다. 따라서 별도로 IDE를 설치할 필요없이 PC에 연결한 뒤 웹브라우저를 이용해 곧바로 개발이 가능하다. 아두이노 TRE에 대한 자세한 내용은 필자가 2014년 7월호에 연재한 것을 참고하기 바란다.

새로운 시작


<그림 24> 아두이노 ZERO

2014년 5월 14일 메이커 페어에서 마시모 반지는 새로운 모델을 소개한다. 바로 아두이노 UNO의 후속 모델이라 할 수 있는 아두이노 ZERO이다. 아두이노 ZERO는 성능이나 하드웨어 면에서 아두이노 DUE와 아두이노 LEONARDO를 합친 형태로 보면 된다. 기본적인 구성은 아두이노 LEONARDO를 따르면서 아두이노 DUE와 비슷하게 아트멜(Atmel)의 32비트 ARM Cortex M0+ 코어로 된 ATSAMD21 MCU를 사용한다. 

아두이노 ZERO는 아두이노 DUE와 같이 3.3V로 작동하며, 시리얼 통신에 이용되는 RX, TX 핀을 제외한 모든 핀을 PWM으로 사용할 수 있다. 인식범위도 아두이노 UNO보다 높다. 아두이노 UNO의 아날로그 입력은 10비트 해상도로 아날로그 신호를 0에서 1023 사이로 인식한다면, 아두이노 ZERO는 12비트 해상도로 0에서 4095 사이로 더 정밀하게 인식할 수 있다. 또 하나 아두이노 UNO와의 큰 차이점은 바로 아트멜 임베디드 디버거(Atmel's Embedded Debugger, 이하 EDBG)이다. <그림 24>의 좌측에 DEBUG라는 헤더가 붙은 USB 포트가 바로 EDBG가 사용하는 포트이다. 이 포트를 이용해 소프트웨어적으로 아두이노 ZERO를 디버깅할 수 있다. 기존 모델의 경우 디버깅을 하기 위해서 JTAG라는 장치가 필요했다. 대게는 JTAG가 없어 시리얼 통신을 이용해 디버깅을 하는 경우가 많았다. 마시모 반지에 의하면 이제 EDBG를 이용해 스케치를 편리하게 디버깅할 수 있을 것이라고 한다. 덧붙여 아두이노 라이브러리들 또한 소스 코드로  돼 있기 때문에 특정 라이브러리들이 어떤 과정을 통해 동작하는지 쉽게 관찰할 수 있을 것이라고 말했다. 아직 데이터시트나 가격에 대한 부분은 공개되지 않았다. 하지만 0을 뜻하는 의미심장한 이름을 지었듯이 아두이노 UNO를 대체할 모델이라는 가정하에 아트멜과 협상해 저렴한 가격으로 출시될 것으로 예상된다.

이번 시간에는 아두이노의 발전 과정에 대해 살펴봤다. 꾸준한 기능 추가와 성능 개선이 현재의 아두이노를 만든 중요한 밑거름이 됐다고 할 수 있다. 하지만 그것만으로 아두이노가 최고가 된 것은 아니다. 아두이노를 이용한 다양한 콘텐츠와 아두이노를 사용하는 수많은 커뮤니티가 있었기에 가능한 일이었다. 다음 시간에는 이와 같은 아두이노의 생태계에 대해 살펴 볼 것이다.


이 글은 마이크로 소프트웨어 2014년 8월호에 실린 글입니다.

2016년 4월 27일

[아두이노 5부작] 제 1편 오픈소스 하드웨어의 왕, 아두이노 탄생기

<그림 1> 아두인 왕의 술집(Bar di Re Arduino)

이탈리아 북부에는 푸른 강이 가로질러 흐르는 한적한 마을 ‘이브레아(Ivrea)’가 위치해 있다. 이 마을은 과거에 이 지역을 지배했던 아두인(Arduin)이라는 비운의 왕이 유명하기도 하다. 1002년에 이탈리아의 왕이 된 아두인은 불과 2년이 채 되기도 전에 독일 헨리 2세에 의해 왕좌에서 쫓겨나게 된다. 이브레아에는 이 아두인 왕을 기리는 ‘아두인 왕의 술집(Bar di Re Arduino)’이라는 술집이 있는데, 이 곳은 아두이노의 공동 개발자인 마시모 반지(Massimo Banzi)의 단골집으로도 유명하다. 그런데 비운의 왕으로 알려진 아두인이 현재는 오픈소스 하드웨어의 왕으로 다시 이름을 알리기 시작했으며, 실제로 아두이노가 탄생한 곳도 이 술집이 위치한 이브레아라서 연관이 깊다.

이브레아의 마시모 반지

<그림 2> 마시모 반지

이브레아에는 예술과 IT를 융합해 가르치던 IDII(Interaction Design Institute Ivrea)라는 전문 대학원이 있었다. 2001년 창립한 IDII는 예술가와 엔지니어들이 모여 학문 간의 경계를 뛰어넘는 다양한 프로젝트를 주로 진행했다. 그리고 소프트웨어 아키텍트였던 마시모 반지가 2002년에 IDII의 부교수로 부임하게 된다. 턱수염이 덥수룩해 마치 옆집 아저씨와 같은 인상을 주는 그는 이곳에서 인터랙티브 디자인을 많은 사람들에게 가르치고 알리고자 했다. 피지컬 컴퓨팅(Physical Computing)이라 불리기도 하는 인터랙티브 디자인은 사용자 기반의 학문으로 기술과 사람 간의 조화를 통해 미디어의 의미있는 의사소통을 이끌어내는 것을 목적으로 한다. 현재는 주위에서 쉽게 인터랙티브 디자인을 볼 수 있지만 2002년 당시에는 막 주목을 받기 시작한 신생 학문이었다. 따라서 이와 관련된 교육환경이 충분치 못 했다. 또한 IDII의 재정이 넉넉하지 않았기 때문에 제한된 시간과 기자재로 수업을 진행해야 했다.

베이직 스탬프

<그림 3> 베이직 스탬프 2

마시모 반지와 같이 인터랙티브 디자인을 가르치는 사람들은 페럴랙스(Parallax)라는 회사에서 개발한 베이직 스탬프(BASIC Stamp)를 주로 이용했다. 베이직 스탬프는 당시 하드웨어 엔지니어들에게서 10년 이상 사용되던 제품이었다. 지금의 아두이노와도 상당히 흡사한데, 프로그래밍 언어인 BASIC을 변형한 PBASIC으로 코드를 작성하고 마이크로 컨트롤러, 메모리 그리고 입출력 핀 등을 가지고 있었다.

<리스트 1> 베이직 스탬프의 스위치로 LED를 껐다 켜는 예제
infiniteLoop: '라벨

'만약 버튼이 눌리면 Flash 라벨로 이동
IF IN1 = 1 THEN Flash

GOTO infiniteLoop 'infiniteLoop 라벨로 이동

Flash: '하위 라벨

HIGH 0 'LED 켜기
PAUSE 1000 '1초 멈춤
LOW 0 'LED 끄기
PAUSE 1000 '1초 멈춤

RETURN '프로그램 종료

마시모 반지는 베이직 스탬프에 대한 불만이 있었다. 진행하고 있던 프로젝트를 구현하기에 성능이 너무 떨어졌고, 가격도 만만치 않았기 때문이다. 당시 가격으로 100달러 정도였는데 젊은 학생들이 구매하기는 결코 저렴한 가격이 아니었다. 또한 마시모 반지는 주로 매킨토시를 사용했던 터라 베이직 스탬프를 사용하기 위해 윈도우를 사용해야 하는 것도 하나의 불편한 점이었다. 그렇게 그때부터 그는 베이직 스탬프를 대체할 것을 찾기 시작했다. 일반인이나 예술가들도 쉽게 사용할 수 있으면서 가격 또한 부담되지 않는 것을 원했다.

프로세싱


고민을 하고 있던 마시모 반지에게 큰 영향을 준 것이 있었다. 바로 프로세싱이라는 프로그래밍 언어이다. 프로세싱은 MIT 미디어랩의 케이시 리아스(Casey Reas)와 벤자민 프라이(Benjamin Fry)가 개발한 프로그래밍 언어다. 당시 케이시 리아스가 IDII에서 학생들을 가르치고 있었기 때문에 마시모 반지는 프로세싱에 대해 자세히 알 수 있었다.

<리스트 2> 프로세싱의 마우스로 선을 그리는 예제
void setup() {
       size(400, 400); // 창 크기를 400 x 400으로 설정
       stroke(255); // 선 색깔을 흰색으로 설정
       background(192, 64, 0); // 배경색 변경
}
 
void draw() {
       line(150, 25, mouseX, mouseY); // 마우스 좌표와 연결되는 선 그리기
}

<그림 4> <리스트 2>의 실행 화면


<그림 5> 프로세싱을 통해 만든 작품

프로세싱은 프로그래밍을 잘 모르는 디자이너들을 위해 만들어진 언어이다. 마치 종이에 스케치하듯이 프로그래밍을 통해 원하는 것을 쉽고 편리하게 그릴 수 있도록 고안돼 있다. 프로세싱의 코드가 빌드되고 난 뒤의 실제 결과물은 자바 애플릿이다. 하지만 프로세싱 IDE가 잘 만들어져 있어 기존의 복잡한 자바 코드 없이 <리스트 2>와 같은 간단한 코드만으로 그래픽을 구현할 수 있다. 또한 오픈소스 소프트웨어이기 때문에 누구나 자유롭게 사용이 가능하다.

<그림 6> 프로세싱 IDE와 아두이노 IDE

마시모 반지는 프로세싱의 매력에 매료됐다. 프로세싱으로 그래픽을 쉽게 구현하는 것처럼 하드웨어를 쉽게 제어할 수 있도록 만드는 방법을 고민하기 시작했다. 그리고 그렇게 하기 위해 프로세싱과 같은 쉽고 편리한 IDE가 필요하다는 것을 인식했다. 결국 아두이노의 모태라고 할 수 있는 와이어링이 프로세싱 IDE를 동일하게 사용하게 되고 지금의 아두이노 IDE도 프로세싱 IDE를 그대로 차용하고 있다.

와이어링


<그림 7> 와이어링 V1.0

2003년 콜럼비아에서 온 에르난도 바라간(Hernando Barragán)이라는 IDII 학생이 석사 논문 프로젝트로 와이어링(Wiring)을 개발한다. 마시모 반지와 케이시 리아스가 이 학생의 논문 지도 교수였다. 와이어링은 프로세싱에서 파생된 프로젝트로 아두이노의 모태라고 할 수 있다. 현재 아두이노에서 사용되고 있는 IDE와 기본 라이브러리가 이 프로젝트에서 거의 완성됐다. 2004년 에르난도 바라간은 우등생으로 졸업한 뒤 모국인 콜럼비아로 돌아가 와이어링 개발을 이어나간다.
<그림 8> 아두이노의 첫 번째 프로토타입 보드

그 와중에 마시모 반지는 동료인 데이비드 꾸아르띠에예스(David Cuartielles)와 함께 와이어링에서 파생된 프로젝트를 진행한다. 마시모 반지는 당시 와이어링이 완성도가 상당히 높았음에도 불구하고 보다 더 단순하고 쉽게 사용할 수 있으며 저렴해야 한다고 생각했다. 와이어링 초기 모델의 제조비용이 약 60달러 였는데 마시모 반지가 생각한 목표 금액은 30달러였다. 그렇게 진행된 프로젝트는 2005년에 첫 번째 프로토타입 보드를 완성하게 된다. 보드의 회로 구성이 와이어링에 비해 더 단순했고, 제조 비용을 30달러 가까이 맞출 수 있었다. 그런데 프로토타입 보드가 완성됐을 때 곧바로 아두이노라는 이름이 붙지는 않았다. 그 이름은 좀 더 시간이 지난 후에 지어지게 된다.

한편 콜럼비아로 돌아간 에르난도 바라간은 와이어링을 계속 개발한 끝에 상용화를 하게 된다. 안타까운 점은 마시모 반지의 프로젝트에 대한 구체적인 통보를 받지 못 했다는 것이다. 실제로 아두이노 1.0이 공개됐을 때 홈페이지에서 와이어링에 대한 언급이 전혀 나와있지 않았다. 그렇게 와이어링과 아두이노는 각자의 길을 가게 되고 와이어링은 결국 아두이노의 그늘에 가려지게 된다. 재미있는 점은 지금도 두 제품이 서로 호환이 잘 되기 때문에 IDE를 바꾸어 개발이 가능하다는 것이다.

오픈소스 하드웨어


<그림 9> 홈페이지에 공개돼 있는 아두이노 UNO의 회로도

마시모 반지와 그의 동료들은 오픈소스에 대한 믿음이 강했다. 프로젝트의 목적이 보드의 쉽고 빠른 생산과 누구나 자유롭게 사용할 수 있게 하는 것이었기 때문에 많은 사람들에게 공개하는 것이 더 좋을 거라고 생각했다. 또한 2005년 말 IDII가 급격한 재정난에 허덕이며 폐교 위기에 처하게 된 것도 아두이노를 오픈소스로 만드는 계기가 됐다. 자칫 프로젝트가 사라지거나 엉뚱한 사람들로 인해 망가질 것을 우려했던 까닭이다. 결국 마시모 반지와 그의 동료들은 프로젝트를 오픈소스로 공개하기로 결심한다.

하지만 오픈소스 소프트웨어와 달리 오픈소스 하드웨어는 당시 거의 최초로 시도된 것이었기 때문에 하드웨어에 어떤 라이선스를 적용해야 될지 몰랐다. 조사를 한 끝에 하드웨어에도 CC(Creative Commons) 라이선스를 적용할 수 있다는 것을 알게 된다. 하드웨어를 음악이나 글과 같이 다른 사람과 공유할 수 있는 하나의 콘텐츠로 생각하게 된 것이다.

하드웨어를 오픈소스로 공유했기 때문에 누구나 홈페이지에서 회로도와 사용된 부품 목록을 확인할 수 있다. 개인이 부품을 연결해 PCB를 직접 만들 수 있고, 기업 같은 경우 라이선스에 위배되지 않는다면 얼마든지 호환 보드라는 명칭으로 보드를 제작해 판매할 수 있다.

최초의 아두이노 보드


마시모 반지와 그의 동료들은 보드에 대해 몇 가지 목표를 세웠다.

- 첫 번째, 보드의 가격은 30달러 정도여야 한다.

그들이 보드의 목표 가격을 30달러로 한 이유는 당시 피자 가게에서 외식할 때 드는 비용이 그 정도였기 때문이다. 그 가격이면 젊은이들이 부담 없이 구매할 수 있을 거라 생각했다. 이를 맞추기 위해 아트메가(ATmega)328과 같은 쉽고 저렴하게 구할 수 있는 부품을 사용하게 된다.

- 두 번째, 특이해야 한다.

소위 긱(Geek)이라 불리는 그 분야 전문가들도 사고 싶은 마음이 들도록 특별한 매력을 가져야 한다고 생각했다. 따라서 녹색 일변도였던 기존 보드들과는 달리 파란색으로 보드를 칠했다. 또한 기존 보드 제조사들이 비용을 낮추기 위해 입출력 핀의 갯수를 제한한 반면 가능한 많은 입출력 핀을 사용할 수 있도록 설계했다. 마지막에는 보드 뒷면에 조그마한 이탈리아 지도를 새겨 넣었다.

- 세 번째, 직접 보드를 쉽게 만들 수 있도록 해야 한다.

아무리 보드를 오픈소스로 공개한다고 해도 회로도가 너무 복잡하면 따라 만들기가 어려울 것이라 생각했다. 따라서 회로도를 최대한 쉽고 간단하게 설계했다. 그러다 보니 일반 하드웨어 엔지니어가 보기에 다소 괴상한 설계도가 만들어졌다. 하지만 그들은 이런 접근 방법이 아두이노의 장점이 될 것이라고 확신했다.

- 네 번째, 조작이 간편해야 한다.

사용자가 보드를 구매하면 곧바로 PC에 연결해 사용이 가능하도록 만들길 원했다. 베이직 스탬프의 경우 PC에 연결하기 위해 기본 구성 외에 추가 비용을 들여 별도의 부품을 구매해야만 했다. 이에 대한 불편함을 느껴 아두이노는 USB 케이블만으로 곧바로 PC에 연결해 사용할 수 있도록 설계했다. 물론 IDE도 운영체제에 상관없이 사용할 수 있도록 개발했다.

<리스트 3> 아두이노의 Blink 예제
int led = 13; // LED 제어를 위한 변수

void setup() {               
  pinMode(led, OUTPUT); // LED 핀을 출력 모드로 설정
}

void loop() {
  digitalWrite(led, HIGH); // LED 핀의 전압을 5V로 설정
  delay(1000);    // 1초 멈춤
  digitalWrite(led, LOW); // LED 핀의 전압을 0V로 설정
  delay(1000);    // 1초 멈춤
}

이와 같은 목표를 달성할 수 있었기에 전자회로에 대한 배경 지식이 없던 사람도 그들의 보드를 통해 생각한 것을 쉽게 만들어 낼 수 있었다. <리스트 3>은 아두이노의 Hello World라고 할 수 있는 Blink 예제이다. 코드를 C++로 작성하지만 어려운 C++ 코드 없이도 쉽고 간단하게 프로그래밍을 할 수 있다. C++이기 때문에 main 함수가 없어 의아해 할 수 있는데, 코드를 작성하고 컴파일을 실행하면 그 순간 IDE가 자동으로 main 함수와 기타 필요한 헤더를 자동으로 추가한다.

프로젝트의 성과를 확인하기 위해 IDII 학생들에게 회로도만 찍혀있는 빈 회로 보드를 나눠준 뒤 직접 보드를 만들고 무언가를 만들도록 시켰다. 그렇게 했더니 어렵지 않게 보드를 똑같이 만들고, 만든 보드를 이용해 재밌고 기발한 것을 구현하는 걸 볼 수 있었다. 그 중 첫 번째로 만든 것이 천장에 매달린 알람 시계였다. 이 시계는 알람이 울릴 때 멈춤 버튼을 누르면 더욱 시끄럽게 울리다가 사용자가 침대에서 일어나면 그제서야 꺼지도록 만들어진 제품이다.

학생들을 대상으로 한 실험이 완료된 뒤 마시모 반지의 친구가 처음으로 보드를 구매했다. 그리고 얼마 지나지 않아 소문을 듣고 보드를 사고 싶어하는 사람들이 몰려오기 시작했다. 프로젝트가 본격적으로 가속화되기 시작하면서 그들은 그제서야 중요한 걸 놓쳤다는 것을 깨달았다. 바로 보드의 이름을 짓지 않은 것이다. 단골 술집인 아두인 왕의 술집에서 이름을 고민하던 이들은 아두인 왕의 이름을 따서 아두이노라고 짓기로 결정했다. 그렇게 비운의 왕으로 기억되던 아두인은 다시 오픈소스 하드웨어 왕 아두이노로 불리게 된다.

세상에 알려지다


아두이노는 특별한 마케팅이나 광고가 없었음에도 온라인을 통해 소문이 빠르게 퍼지기 시작했다. 시간이 얼마 지나지 않아 뉴욕대에 있는 톰 아이고(Tom Igoe) 교수도 아두이노에 대한 소문을 듣게 된다. 당시 톰 아이고는 학교에서 피지컬 컴퓨팅을 가르치고 있었고, 프로그래밍 경험이 없는 학생들을 위해 베이직 스탬프를 사용하고 있었다. 톰 아이고는 실험적으로 아두이노를 사용해 학생들을 가르치기 시작했다. 그리고 곧 그 효과를 확인할 수 있었다. 학생들은 베이직 스탬프에 비해 아두이노를 쉽게 가지고 놀았다. 아두이노가 30달러라는 데 감명 받은 톰 아이고는 후에 마시모 반지를 만나 아두이노 팀의 핵심 멤버가 된다.

아두이노가 출시되기 전에는 마이크로컨트롤러를 프로그래밍하고 제어하기 위해 상당한 시간을 학습해야 했다. 필요한 경우에는 소프트웨어 엔지니어조차 어려워하는 어셈블리어도 공부해야 했다. 따라서 전자회로에 대한 배경지식이 없는 사람들에게는 하드웨어란 미지의 세계처럼 보이기 일쑤였다. 하지만 아두이노는 그와 같은 벽을 허물었다. 아두이노를 통해 초보자도 자신이 원하는 프로토타입을 쉽게 만들어낼 수 있게 됐고, 기존 하드웨어들이 특허와 기술 보호로 폐쇄적이었던 것에 반해 오픈소스로 공유한다는 것도 신선한 자극을 주었다.

<그림 10> 실비아 토드의 워터칼러봇

하지만 모든 사람들이 아두이노를 반긴 것은 아니었다. 아두이노로 인해 저수준의 제품이 시장에 쏟아져 나오는 것 아니냐는 우려의 목소리가 있었다. 또한 하드웨어 엔지니어의 가치가 떨어지지 않을까 걱정하는 사람도 있었다. 시간이 지나자 그와 같은 생각이 바뀌기 시작했다. 아두이노를 기반으로 한 메이커(Maker) 열풍이 불기 시작했고, 엔지니어와 디자이너 그리고 일반인이 어울려 만든 기발하고 재밌는 프로젝트가 넘쳐나기 시작했다. <그림 10>은 실비아 토드(Sylvia Todd)라는 10대 아이가 만든 워터칼러봇(WaterColorBot)이라는 프로젝트다. 이 프로젝트는 아이패드로 그림을 그리면 똑같이 그림을 그려주는 기계다. 실제로 소셜펀딩 사이트인 킥스타터(KickStarter)에서 펀딩을 진행해 거의 1억 가까이 투자를 받기도 했다.

아두이노의 현재


데이비드 꾸아르띠에예스의 발표에 따르면 아두이노 정품보드가 2013년까지 대략 70만대 이상 판매됐다고 한다. 여기에 소위 호환 보드라고 불리는 복제품을 고려하면 훨씬 더 많은 수의 아두이노가 확산됐을 것으로 추정된다. 중국의 알리익스프레스(Aliexpress)의 경우 아두이노 UNO 호환 보드가 4.5달러, 아두이노 PRO MINI가 2.2달러에 판매된다. 가격이 싸다고 결코 성능이 떨어지거나 하지도 않는다. 아두이노 홈페이지에 공개된 회로도와 부품대로 똑같이 만들고 외양만 다르게 해 놓았기 때문에 성능이나 기능이 정품 보드와 동일하다. 따라서 이들 복제품의 판매량을 제대로 계산하면 정품보드 판매량의 몇 배가 될 지도 모른다.

이제 아두이노는 메이커들에게 없어서는 안 될 존재가 됐다. 메이커들의 성경책이라 불리는 메이크(Make)라는 잡지를 만든 데일 도허티(Dale Dougherty)는 다음과 같이 말하기도 했다.

"아두이노는 메이커 프로젝트들의 두뇌이다!"

실제로 수많은 메이커 프로젝트에서 아두이노가 사용되고 있다. 전 세계 메이커들의 축제인 메이커 페어(Maker Faire)에서는 아두이노로 구현한 다양한 프로젝트를 엿볼 수 있다. 소셜펀딩 사이트인 킥스타터나 인디고고(indiegogo)에서는 아두이노로 프로토타입을 만들어 투자를 유치하는 사람들도 종종 볼 수 있다.

<그림 11> 아두이노 MEGA ADK

구글도 2011년에 안드로이드 ADK(Android Accessory Development Kit)라는 아두이노 기반의 보드를 출시한 바 있다. 안드로이드 ADK는 안드로이드에서 아두이노를 이용해 하드웨어를 제어할 수 있도록 고안된 플랫폼이다. 역으로 아두이노에서 안드로이드의 API를 사용할 수도 있다.

구글뿐만 아니라 다른 기업들도 아두이노와 새로운 것을 시도하고자 진행 중이다. 인텔 같은 경우 아두이노와 파트너십을 맺고 자사의 칩인 쿼크 X1000을 기반으로 한 인텔 갈릴레오라는 제품을 출시했다. 텍사스 인스트루먼트, 비글보드 재단과 아두이노가 함께 개발해 만드는 아두이노 TRE도 2014년 연말에 출시될 것으로 예상된다.

한국에서도 아두이노에 대한 관심이 높아지고 있다. 2014년 7월 8일 창립된 ICT-DIY 포럼도 전 국민을 대상으로 소프트웨어와 아두이노, 3D 프린터 등을 교육하는 것을 목표하고 있다. 특히 7월 9일에 열린 ICT-DIY 컨퍼런스에서는 만들래, 아두이노 스토리 등과 같은 국내 커뮤니티들이 아두이노로 만든 재밌는 프로젝트들을 전시하기도 했다. 또한 이날 3000명 이상의 사람들이 몰려 국내의 아두이노와 3D 프린터에 대한 관심이 높다는 것도 확인할 수 있었다.

아두이노가 이와 같이 많은 사람들의 주목을 받고 있지만 그래도 보완할 점이 있기 때문에 계속 다양한 모델이 만들어지고 있다. 다음 시간에는 사용자들의 요구사항과 트렌드에 맞춰 진화하는 아두이노에 대해  분석하고자 한다. 특히 아두이노 각각의 모델이 가진 의미와 중요성에 대해 자세히 알아볼 예정이다.


이 글은 마이크로 소프트웨어 2014년 8월호에 실린 글입니다.

2016년 4월 5일

프로그래밍이 아닌 컴퓨터적인 사고를 길러주자!


makezine.com

프로그래밍이 아닌 컴퓨터적인 사고를 길러주자!

출처 : Stop Teaching Programming, Start Teaching Computational Thought
저자 : Tom Igoe

최근 교육 관계자와 교사들이 모든 학생들에게 컴퓨터 교육을 해야한다고 주장하고 있다. 이와 관련해 뉴욕 시장인 빌 더 블라지오(Bill de Blasio)가 다음과 같이 말했다. "우리가 지금 살고 있는 세계를 둘러보십쇼. 수십만개의 좋은 직업들이 코딩과 그와 관련된 주요 기술들을 통해 세계로 연결될겁니다." 모든 사람이 프로그래밍을 배워야 한다는 점에는 동의한다. 하지만 빌 더 블라지오 시장이 그와 같은 주장을 하게된 점에 대해서는 동의하지 않는다. 프로그래밍을 배우는 이유가 꼭 좋은 직업 때문만이 아니기 때문이다. 우리는 컴퓨터적인 사고를 통해 세계를 이해하고 설명할 수 있는 새로운 방법을 배울 수 있다. 즉, 프로그래밍을 배움으로써 우리가 원하는 것을 잘 표현할 수 있게 된다.

우리는 우리 자신을 여러 가지 형태를 통해 표현한다. 그리고 그 형태들은 각각 핵심적인 요소를 가지고 있다. 음악가는 음 높이, 리듬, 음색을 이용한다. 시각 예술가나 디자이너들은 색, 모양, 크기를 이용한다. 연기자는 움직임, 몸짓, 적절한 타이밍을 이용한다. 이와 같이 컴퓨터적인 사고도 표현의 한 형태라 할 수 있다. 그리고 컴퓨터적인 사고는 다음과 같은 핵심적인 요소를 이용한다. 컴퓨터를 세상과 연결해주는 입력과 출력. 컴퓨터 메모리 주소 중에 이름이 지어진 부분으로 온도, 은행 계좌 잔액 또는 버튼이 눌렸는지 떼졌는지 정보를 저장할 수 있는 변수. 중요한 값이 뚜렷하게 바뀌었을때 무엇을 해야할지 정해 놓은 조건문(예 : 내 통장 계좌 잔액이 만원 이하로 떨어지면 이메일로 알려줘!!). 조건문과 같은 다양한 동작들을 쉽게 반복해 사용할 수 있도록 한 함수. 이런 핵심적인 요소들이 모두 프로그래밍에 녹아들어있다.

만약 여러분이 무언가를 만들고 싶다면 아마도 컴퓨터를 이용해 디자인을 할지 모른다. 또는 만들고자 하는 것 안에 컴퓨터를 넣을지도 모른다. 혹시나 여러분 자신을 프로그래밍에 대한 초보자라 생각하는 사람도 있을 것이다. 하지만 컴퓨터와 같은 도구를 사용한다는 것 자체로 분명히 여러분은 프로그래밍을 배우고 있다고 할 수 있다. 간혹 프로그래밍을 수학과 같다고 생각하는 사람들도 있는데, 그건 틀린 생각이다. 제대로 정의하면 프로그래밍이란 특정 상황을 정확히 묘사하고, 어떤 조건이 주어졌을때 어떻게 해야할지 정하는 것이다.


우리 일상에서 다음과 같은 순간들을 살펴보자.
» 온도가 18도 이하로 떨어지면 히터를 켜라!
» 만약 드럼이 솔로 연주를 시작하면 기타 연주자들은 연주를 멈추고 조명을 드럼 쪽에 맞춰라!
» 왼쪽으로 뛰고 곧바로 오른쪽으로 걸어라. 동시에 양손은 엉덩이에 올려놓고, 무릎에 힘을 줘라!

이런 다양한 순간들이 컴퓨터적인 사고를 포함하고 있다. 그리고 이 모든 것이 프로그램이라 할 수 있다.

컴퓨터적인 사고를 하는 사람이 꼭 프로그래머는 아니다. 일러스트레이터로 사랑스럽고 복잡한 패턴을 만든다거나, 마인크래프트를 이용해 정말 장난아닌 장치들을 만든다거나, MIDI 신디사이저로 미친 수준의 초고속 재즈연주를 하는 사람들이 컴퓨터적인 사고를 한다고 할 수 있다. 이들은 단순히 컴퓨터가 말을 하도록 하는 방법만 아는 것이 아니라 컴퓨터가 말할 수 있는 것이 무엇인지에 대해 머릿속으로 상상할 수 있다. 사람들이 종종 내게 다음과 같이 묻곤 한다. "어떤 프로그래밍 언어를 배워야 하나요?" 여기에 정답은 없다. 왜냐하면 실제 프로그래밍을 시작하게 되면 여러가지를 배우기 때문이다. 여러분을 즐겁게 하면서 동시에 컴퓨터를 사용하는 일을 선택해라. 그리고 그 일에 어떤 프로그래밍 언어가 사용되는지 살펴봐라. 또한 다양하고 새로운 프로그램들을 통해 새로운 언어를 배울지도 모른다. 그리고 여러분이 얼마나 열심히 하느냐에 따라 좋은 프로그래머, 컴퓨터적 사고를 더 잘하는 사람이 될 수 있다.

말하기와 쓰기는 단순히 언어학자만의 것이 아니다. 마찬가지로 프로그래밍도 컴퓨터 과학자만을 위한 것이 아니다. 따라서 프로그래밍을 배우자! 여러분이 열심히 배운다면 다른 다양한 표현의 한 형태와 같이 세상에 대한 시야를 더 넓혀줄것이다.

2016년 1월 14일

2016년 1월 14일자 테크엠 인터뷰 관련 수정할 내용!

일단 2016년 1월 14일자로 나간 테크엠 인터뷰 기사에 수정할 내용이 있어 몇자 적습니다. 인터뷰 기사가 다소 잘못 나간 것은 기자님의 잘못이 아니라 제가 말주변이 없어 전달을 잘 못한 제 잘못입니다. 따라서 글을 읽으신 분들과 관계자 분들께 사과드립니다.

올해가 2016년인데 제 나이는 30세가 아니라 32세입니다. 그리고 제 아들은 6세이고요.

“처음부터 프로그래밍에 빠진 건 아니에요. 초등학생 때 컴퓨터를 좋아하긴 했는데, 분해하고 조립하는 재미가 컸죠. 대학입시 때 경영ㆍ회계를 택한 것도 SW에 특별한 매력을 느끼지 못했기 때문입니다.”

기사에 이렇게 적혔는데, 어렸을적 컴퓨터에 관심이 많았던 것은 사실입니다. 게임에 푹 빠져살았거든요. 다른 친구들이 스타크래프트나 리니지 같은 온라인 게임을 즐겨했다면 저는 주로 이야기와 화려한 볼거리가 있는 RPG에 빠졌습니다. 그리고 컴퓨터를 분해하는 것도 종종 했죠. 그런데 대학입시때 경영 회계를 선택한 것은 마땅히 가고 싶은 곳이 없어 선택한 것이었습니다. 게다가 삼수까지 한 상태라 제게 선택의 여지가 없었죠.

그리고 프로그래밍에 솔깃해진 건 대학생때라기 보다 군대 제대하고 난 뒤였습니다. 군대 제대가 다가왔을때 저는 얼른 복학해 공부할 생각으로 꿈에 부풀어 있었습니다. 삼수에다 군대도 늦게 간지라 어서 빨리 공부해서 대학을 졸업하고 취직하고 싶었거든요. 그런데 제대하고 집에 돌아오니 학비가 없다는 말을 들었습니다. 그래서 그때 막노동, 백화점 푸드코트 요리사, 은행 경비등 다양한 아르바이트를 했습니다. 그런데 힘들게 일해도 100만원 벌기 힘들더군요. 그리고 그 당시 정말 초라하고 볼품 없었을때였는데, 지금의 아내를 만났습니다. 돈을 벌기가 힘들어 다른 일거리를 찾던 제게 구인 사이트에서 A 보험회사의 구인 광고가 눈에 띄더군요.

5년마다 하는 내부감사때문에 한 달간 고급 엑셀 개발자를 구한다는 것이었고, 월급이 무려 150만원을 준단 것이었습니다! 저는 순간 혹해 거짓말로 이력서를 작성했습니다. 엑셀을 엄청 잘 한다고... 실제로는 엑셀을 잘 못했습니다. 자격증이 있긴 있었는데, 초등학생들도 쉽게 따는 ITQ라는 자격증을 가지고 있었죠. 그냥 한번 넣어보자하고 이력서를 넣었는데 신기하게도 뽑혔습니다. 나중에 알게 됐는데, 절 뽑아주신 남자 차장님이 제 이력서의 군대 이야기를 보고 자신의 군시절 그리고 젊었을때랑 너무 닮아 뽑아주셨다고 하더군요. 실제로 제가 뽑힐 자리가 본사가 아닌 다른 곳에 지점이었는데, 그 남자 차장님이 제 이력서를 보시고 인사 담당자한테 말해 절 본사 재무부로 데려오신거였습니다. 그리고 직원들에게 제 소개를 했습니다. 본사 재무부는 대략 32명이었는데, 그 남자 차장님을 제외하고 전부 여자였습니다. 그리고 전부 엑셀 고수들이었습니다. 업무 특성상 하루 종일 엑셀을 해야하는지라 거의 모든 단축키와 기능을 외우고 마치 스타크래프트 하듯이 엑셀을 하더군요;; 그런 모습에 겁먹은 저를 차장님은 다른 직원들에게 소개하며 매주 전체 미팅룸을 비워둘테니 그때마다 직원들에게 엑셀을 가르치라고 지시했습니다. 순간 "X됐다!"라는 생각이 들더군요.

그 날 이후 부터 미친 듯이 엑셀을 공부했습니다. 책을 사지않고 일단 인터넷을 뒤졌습니다. 그런데 엑셀을 공부하다 VBA라는 것을 알게됐습니다. 바로 Visual Basic for Applications의 약자로 마이크로소프트에서 자신들 MS Office 프로그램을 코드로 제어할 수 있도록 해둔 개발 언어입니다. 이 VBA라는 것을 알고 반복문과 제어문을 처음 실행했을때 머리에 벼락이 치는 느낌이 들었습니다;; 그 당시 주식 책에 빠져있었는데 제 머릿속에 자동으로 주식을 사고 파는 프로그램을 만들 수 있지 않을까라는 생각이 스쳐지나간 것입니다. 그때부터 미친듯이 프로그래밍에 빠졌습니다. 결국 매주마다 하기로 한 엑셀 교육은 실제 한번도 하지 못했지만 1개월이 다 되갈 무렵 저는 재무부서에서 엑셀의 신, 엑셀 청년이라는 별명이 붙었습니다. 출근해서 엑셀의 버튼을 누르면 3~5분 만에 제 하루 일과가 끝났습니다. 남는 시간에는 다른 직원 옆에가서 하는 일을 구경하고 그 직원의 일을 자동화해주곤 했습니다. 그러자 1개월이 거의 다 되던 날에 차장님이 오셔서 한 달만 더 있어달라고 부탁을 했고, 그 한달이 지난 뒤에는 부장님이 오셔서 복학할때까지 있어달라 부탁했습니다.

지금도 그렇지만 정말 프로그래밍이 재밌었습니다. 인터넷에 다른 전문가들이 쓴 코드를 보는데 제게는 아름다운 작품으로 보였습니다. 그리고 엑셀로 만든 재밌는 작품을 우연히 알게된 엑셀 커뮤니티에 올렸는데, 그 글을 보고 우리나라에서 엑셀로 거의 세 손가락 안에 드시는 분과 B사 사장님에게서 연락이 왔습니다. 만나보니 같이 일해볼 생각이 없냐고 하셨고, 그 기회로 SI에서도 일을 할 수가 있었습니다. 그리고 엑셀 커뮤니티 분들의 도움으로 2011년 마이크로소프트 엑셀 MVP가 되기도 했습니다. 물론 엑셀도 재밌었지만 저는 다른 프로그램도 배우고 싶었습니다. 그리고 그 얘길 엑셀 커뮤니티에도 했었는데 엑셀 커뮤니티 멤버 중에 학교 쪽에 납품하는 프로그램을 만드시는 한 사장님이 제게 실력도 없으면서 주제넘게 굴지 말라(최대한 순화했습니다;;)는 말을 하셔서 엑셀과 연을 끊어야겠다 생각하고 홀로 다른 프로그래밍 언어를 공부하기로 결심했습니다.

그러면서 안드로이드, 아이폰 앱도 만들어봤습니다. 또한 제가 형님으로 모시는 주식 투자자를 만나 함께 자동 증권 매매 프로그램을 만들기도 했습니다. 이 당시가 막 결혼했을때였는데 앞에서도 말했다시피 삼수로 학교를 들어갔고, 전공인 회계가 정말 재미없었기 때문에 학교에 다니기 싫었습니다. 그냥 자퇴하려고도 했습니다. 하지만 몸이 많이 편찮으셨던 장인 어른이 대학은 꼭 졸업하라고 말씀하셔서 어쩔 수 없이 졸업을 하기로 약속했습니다. 문제는 학교가 경북대여서 대구로 가야하는데, 아내와 일자리는 서울에 있어 학교를 가기 힘든 상황이었습니다. 다행히 모교 배병한 교수님이 도와주셔서 서울대 교류학생을 어렵지 않게 할 수 있었고, 이전에 2년을 경북대에서 보냈다면 나머지 2년은 전부 서울대에서 보냈습니다.

서울대 와서도 컴퓨터 관련 수업을 듣고 싶던 제게 경영대에서 하는 경영정보시스템(MIS : Management Information System) 과목들이 바로 눈에 들어왔습니다. 그리고 다짜고짜 연구실로 찾아가 "저 엑셀 좀 하니 시킬 일 있으면 시켜주세요!"라고 말을 했었고, 그 계기로 연구실의 대학원생들과 심지어 교수님과도 친해질 수 있었습니다. 그러면서 들을 수 있는 경영정보시스템 과목은 다 들었습니다. 정말 듣고 싶은 것은 컴퓨터 전공 과목이었는데, 항상 본교생이 신청한 다음 날 교류생이 신청할 수 있었기 때문에 도저히 들을 수가 없었습니다. 고작 들은 것은 계절학기때 중국인 교수님이 하신 자료구조 수업 뿐이었습니다. 그러다 문득 언론정보학과 쪽에 IT를 다루는 정보문화라는 전공이 있는 것을 발견했고, 신기하게도 남는 자리가 많아 한 학기 모든 과목을 그 전공으로 신청했습니다. 일종의 미디어 아트 전공이라 할 수 있는데, 개설이 언론정보학과에서 한 것이다보니 프로그래밍 수업의 경우 아주 쉽게 등록할 수 있었습니다. 거기서 초빙교수로 오신 지금의 대표님인 최재규 대표님과 최형욱 대표님, 그리고 공동창업자이신 정지훈 교수님을 만났습니다. 수업을 통해 상당히 친해진 다음 당시 회사 차린다는 얘기를 들었었고 그럼 차리면 곧바로 저를 채용해달라고 말씀드렸는데 때가 되면 불러주신다고 해서 알겠다고 했습니다.

문제는 졸업학기였습니다. 아이는 돌이 지났고, 학교는 끝나가고, 학점은 조금 밖에 안 남아 수업을 굳이 안 듣고 곧바로 취업을 할 수 있는 상태였습니다. 하지만 최재규 대표님은 그때도 아직 때가 아니라는 말을 하셨습니다. 그렇다고 마냥 기다릴 수는 없었기에 일자리를 알아보았고, 정보문화 이준환 교수님의 추천으로 N사에서 일을 할 수 있었습니다. 그러다 N사에서 8개월 쯤 일했을 무렵 최재규 대표님으로 부터 준비가 됐다는 연락을 받았습니다. 저는 아내와 장모님에게 이 사실을 말하고 이직하겠다고 말했습니다. 하지만 그 말에 아내와 장모님은 버럭 화를 냈습니다. 솔직히 지금 있는 N사도 대기업이 아니고 중소기업인데 중소기업 나와서 왜 스타트업에 들어가려고 하냐고 했습니다. 게다가 장모님은 차라리 공채시즌이고 제가 공채대상자가 되니 공채를 준비하라고 했습니다. 돈 안 벌어도 좋으니 집에서 열심히 준비해 대기업에 들어가라는 말까지 하셨습니다. 그때 정말 감사한 건 그 얘기를 듣고 최재규 대표님이 일단 회사를 들어오고 공채도 준비하라고 한거였습니다. 그러다 공채가 합격하면 제가 판단해 나가도 된단 것이었습니다. 공채도 준비할 수 있고 월급도 준단 말에 아내와 장모님이 더 이상 아무 말 하지 않았습니다.

그렇게 공채가 시작되고 우리나라의 대기업, 그리고 IT 유명한 기업들에 다 이력서를 제출했습니다. 전공이 회계인지라 집어넣을때 개발직군은 선택 못하고 컨설팅만 선택할 수 있었습니다. 서류 전형 결과가 발표될때 쯤 줄줄이 불합격했다는 통보만 받았습니다. 그러다 S사는 합격했으니 S사에서 하는 내부 시험을 치러오라는 연락을 받았습니다. 그 소식을 듣고 저는 좋기보다 좀 기분이 찝찝했습니다. 솔직히 대기업이 가기 싫었기 때문입니다. SI일을 하면서 대기업 사람들과 함께 지냈는데 그때 봤던 그 사람들의 모습이 그렇게 좋아보이지 않았습니다. 그리고 최재규 대표님과 CTO인 진섭이 형과 일하는게 재밌고 정말 좋았습니다. 최재규 대표님이 돈으로서가 아니라 자립할 능력이 될 정도로 키워주시겠다는 약속을 하셨던 것도 또 다른 이유였습니다. 그래서 공채에 붙어 대기업에 가기 싫은 마음이 상당히 컸습니다. 그럼에도 대표님이 우리 회사 사람이라면 그래도 S사 내부 시험은 합격해야되지 않겠느냐고 말을 하시더군요;;; 정말 마음이 없어 그냥 시험보기 전날 모의고사 문제집을 잠깐 훑어보고 시험을 쳤는데, 이상하게 합격이 되어버렸습니다. 아마 지방대 TO가 있어 뽑혔던것 같습니다;;;

더 큰 문제는 최종면접을 봐서 만약 합격하면 아내와 장모님때문에 빼도 박도 못하고 대기업에 입사를 해야한단 것이었습니다. 고작 최종면접보러가는 건데 집에서는 경사가 났다고 정장도 새로 사주셨습니다;;; "아... 어떻게 하지?" 대표님과 진섭이형이 S사 출신이고 대표님의 경우 면접관에 시험문제도 출제하신 경험이 있었기 때문에 저는 채용 과정에 대해 훤히 꿰뚫을 수 있었습니다. 뿐만 아니라 S사 지인 분들이 회사에 종종 놀러오셨기 때문에 S사와 관련된 이야기를 잘 알고 있었습니다. 그리고 채용 과정에서 결정적인 의사결정을 내리는 사람은 임원이라는 것도 알고 있었습니다. 아무리 다른 과정을 다 잘 통과해도 임원 면접을 망치면 떨어진다고 들었습니다.

기다린 최종면접 당일 들어가자 마자 나올 생각도 했지만 그러면 면접비를 못 받고 와서 들통날거라고 생각했습니다. 일단 대기하고 있는데 순서가 실무진 면접, 인적성, 임원 면접이었습니다. 다행히 임원 면접이 마지막이어서 그때 사고를 쳐야되겠다고 생각했습니다. 실무진 면접때 질문을 받고 이야기를 하는데 개발 이야기도 함께 했습니다. 그러자 면접을 보시던 실무진들이 놀랬습니다. 개발을 해봤냐고 뭍길래 솔직하게 원래 개발로 먹고 살고 있고, 전공 때문에 컨설팅으로 지원할 수 밖에 없었다고 말했습니다. 그러고선 끝나는 시간까지 즐겁게 개발자들만의 대화를 하다 나왔습니다^-^ 그리고 인적성 검사였는데, 일부러 사이코처럼 답안을 선택했습니다. 그리고 대망의 임원 면접... 두둥. 방에 들어가니 세분의 임원이 앉아계셨고 그 분들 앞에 제가 앉을 의자 한개만 딱 놓여있었습니다. 임원들과 이야기를 하면서 저는 그 당시 상황에 비추어 S사의 삼두마차가 깨졌다는 이야기부터 시작해 S사의 위기론에 대해 이야기를 했습니다. 그리고 이야기가 무르익어갈 즈음 한 임원 분이 제게 그러셨습니다. "자네는 여기보다 벤처가 어울리는 것 같군" 그 얘기를 듣고 의자에서 곧장 일어나 90도 인사를 한 뒤 "실은 제가 여기 오고 싶어 온게 아니라 아내와 장모님이 오라고 해서 왔습니다. 저는 지금 벤처회사에서 일하고 있고, 그 회사가 좋습니다. 제발 저를 불합격 시켜주십쇼"라는 말을 했습니다. 순간 잠시 조용해지더니 임원분들이 웃으시면서 "언젠가 밖에서 만날 것 같군, 잘 가게!"라는 말을 하셨고, 그렇게 저는 퇴장한 뒤 집으로 돌아갔습니다. 당연히 제가 그런 말을 했기 때문이 아니라 제 능력이 부족했기에 저는 S사에 불합격했습니다.

그렇게 결국 최재규 대표님과 일을 하게 됐고, 저는 지금껏 함께 일하고 있습니다. 물론 초기 2년 동안 정말 개고생했습니다. 솔직히 돈이 모자라 회사 일을 하며 부업을 하기도 했습니다. 하지만 지금 돌아보면 그런 고생들이 지금의 저를 만들어준 밑거름이 되어주었기에 불평하지 않습니다. 최재규 대표님은 제게 했던 약속처럼 제가 성장할 수 있는 기회를 제공해주셨는데, 예로 마이크로소프트웨어라는 잡지에 글을 쓸 기회를 주시거나, 회사 제품 개발 뿐만 아니라 외부 강의도 하도록 시키셨습니다. 당시 글쓰기 실력과 말하는 능력이 형편 없었음에도 일단 대표님이 주신 기회를 놓치기 싫었습니다. 그래서 무작정 하겠다고 말하고 도전했습니다. 물론 처음에는 실력이 없어 무지 혼나고 실수도 많이 했습니다. 하지만 그럼에도 계속하다보니 어느새 글쓰는게 자연스러워지고 강의하는게 편해졌습니다. 대표님이 항상 입에 붙이고 다니는 말 중에 하나가 "대기업 경력직으로 쉽게 가려면 어떻게 해야하는지 아니? 바로 그 분야에 이름을 알릴 수 있는 책을 쓰는거야"입니다. 그런 계기로 영진 출판사에 저를 추천해주셨고 이번에 아두이노 책을 쓸 수 있었던 겁니다.

저는 테크엠 인터뷰 나갈 정도로 대단한 사람도 아니고 성공한 사람도 아닙니다. 단지 우연찮게 인터뷰를 하게 된 것 뿐입니다. 대신 제가 당당히 할 수 있는 말은 지금 회사에서 일하는 것이 정말 행복하단 겁니다. 다른 사람들을 위해 메이커 관련 인터넷 강의를 찍는 것도 재밌고, 회사 제품 개발하는 것도 재밌습니다. 안 그래도 항상 새로운 것을 도전하고 쫓는 성격인데, 이 회사에 있는 동안 잠시나마 지루하다고 생각한 적이 전혀 없습니다. 그리고 지금도 여전히 대표님과 다른 직원들에게 많이 배우고 있습니다. 혹시나 기사를 보시고 저에 대해 오해 없으시기 바랍니다!

그럼 모두 좋은 하루 보내세요^-^

2015년 11월 1일

ScratchX 준비하기

ScratchX 준비하기


스크래치X(ScratchX)란 기존 스크래치(Scratch)에 아두이노(Arduino)나 레고 마인드스톰(Mindstorms LEGO)을 연결해 사용할 수 있도록 만든 확장 버전이다. 기존 스크래치 UI를 그대로 따르고 있으며 웹브라우저에서도 사용이 가능하다. 이 글은 스크래치X로 아두이노를 사용하기 위해 설정하는 과정을 설명한다.
(단, 글이 쓰여진 현재 시점에서는 파이어폭스(Firefox)에서만 사용이 가능하다. 아마 이 문제는 추후 해결될거라 본다.)

파이어폭스 설치

원래는 이전에 크롬(Chrome)에서 NPAPI가 가능했을때 크롬에서도 사용이 가능했으나, 현재는 파이어폭스에서만 사용이 가능하다. 파이어폭스 다운로드 페이지로 이동해 자신의 운영체제에 맞는 파이어폭스를 설치한다.

Adobe Flash Player 설치 

스크래치X는 스크래치와 같이 플래시를 통해 실행되는 구조로 되어있다. 따라서 Adobe Flash Player를 설치해야한다. 설치한 파이어폭스를 열고 Adobe Flash Player 설치 페이지로 이동해 Adobe Flash Player를 설치한다.

Scratch Device Plugin

Scratch Device Plugin은 스크래치X에서 아두이노나 레고 마인드스톰을 제어할 수 있도록 해주는 플러그인이다. 스크래치X 메인 페이지에서 최신 플러그인을 설치할 수 있으나 최신 버전에 문제가 있으므로 이전 버전을 설치한다. 아래에서 해당되는 운영체제 플러그인을 다운로드해 설치한다. 


설치할때 설치창이 떴다가 그냥 확인 메세지도 없이 닫히는 경우가 있어 설치가 안 됐나 당황스러울 수 있는데, 대게 설치가 정상적으로 완료된 것이기 때문에 신경쓰지 않아도 된다.

파이어폭스 설정

파이어폭스를 설치하고, Adobe Flash Player, Scratch Device Plugin까지 설치했다면 스크래치X 홈페이지로 이동한다.


<그림 1> 파이어폭스 설정

이동하면 브라우저 주소창 좌측에 레고 블락 모양의 아이콘을 볼 수 있다. 그 아이콘을 클릭하면 <그림 1>처럼 표시된다. 이때 설정을 <그림 1>에 표시된 것과 같이 동일하게 해준다. Adobe Flash, Scratch Device를 모두 "허가하고 기억"으로 설정한다.

아두이노 스케치 업로드

다음으로 연결하고자 하는 아두이노 보드에 스케치를 업로드해야 한다. 메뉴에서 파일 - 예제를 보면 Firmata - StandardFirmata가 있다. 이 예제를 업로드한다. 아마 아두이노로 시리얼 통신을 해본 사람이라면 컴퓨터에서 a또는 b라는 글자를 아두이노한테 보냈을때 어떻게 동작하라는 식의 코드를 짜봤을 것이다. StandardFirmata는 바로 컴퓨터가 아두이노를 움직이기 위해 보내야할 글자와 명령을 정리해 놓은 것이다.

참고로 스크래치X를 사용하고자 할때 아두이노 IDE에서 시리얼 모니터로 아두이노와 연결되어 있다면 아두이노와 통신을 할 수 없다. 따라서 그 전에 아두이노 IDE를 끄고 스크래치X를 사용하자. 또한 윈도우 사용자라면 아두이노 IDE가 깔려있어야 아두이노 보드를 인식함으로 아두이노 IDE를 꼭 깔고 사용한다.

스크래치X 아두이노 예제 실행

<그림 2> 아두이노 예제
아두이노 보드에 StandardFirmata를 업로드했다면 다시 USB로 컴퓨터에 연결한 뒤 파이어폭스에서 스크래치X 홈페이지로 이동한다. 이동하면 화면에 <그림 2>와 같은 메뉴를 볼 수 있다. 이 메뉴를 누르면 곧바로 아두이노 예제로 이동한다.

<그림 3> 경고창


이동하면 <그림 3>과 같이 경고창이 표시된다. 베타 버전이기 때문에 계속 진행할 것이냐고 묻는데 신경쓰지말고 "I understand, continue"를 눌러준다.

<그림 4> 스크래치X 언어 설정
곧바로 예제를 실행하기 전에 스크래치X 좌측 상단에 지구본 모양의 아이콘을 볼 수 있다. 아마 처음 실행한 사용자라면 모든 글자가 영어로 표시될 것이다. 이때 지구본 모양의 아이콘을 누르면 원하는 언어로 설정할 수 있다. 아래로 내려가다 보면 "한국어"가 나온다.

<그림 5> 스크래치X의 아두이노 Blink 예제
다시 예제를 살펴보면 <그림 5>와 같이 되어있다. 이 예제는 아두이노 9번 핀에 연결된 LED를 1초마다 껐다 켰다하는 예제이다. 아두이노를 제어함과 동시에 화면에 캐릭터 스프라이트도 바뀌는 것을 볼 수 있다. 이처럼 기존 스크래치의 기능을 모두 사용할 수 있다.

<그림 6> led A를 기본 LED(13)로 설정하기

만약 LED가 없는 사람이라면 <그림 6>과 같이 led A를 13으로 설정한다. 그리고 "when device is connected"블락을 더블 클릭한다. 원래 "when device is connected"블락은 아두이노나 레고 마인드스톰이 연결될 때 실행되는 블락이다. 따라서 연결될때 한번만 실행되기 때문에 더블클릭을 눌러 직접 블락을 실행해준 것이다.

<그림 7> 아두이노 연결 상태창
그럼 아두이노가 연결됐는지는 어떻게 알까? 바로 화면 중앙에 <그림 7>과 같이 생긴 상태창을 통해 알 수 있다. 아두이노가 연결되어 있지않다면 또는 연결된 아두이노에 StandardFirmata를 설치하지 않았다면 우측 동그라미의 색깔이 노랑색이다. 반대로 StandardFirmata가 정상적으로 업로드되어있고 스크래치X와 연결에 성공했다면 초록색으로 변한다. 이 동그라미가 노랑색에서 초록색으로 되는 시점이 바로 "when device is connected"블락이 실행되는 때이다.

<그림 8> 실행 아이콘
동그라미가 초록색으로 표시되어 있다면 <그림 8>과 같이 생긴 실행 아이콘을 눌러 예제를 실행하자. 아마 아두이노 보드의 LED가 깜빡이는 동시에 캐릭터가 움직이는 것을 볼 수 있을 것이다.

빈 프로젝트 시작하기

<그림 9> See all Extensions
만약 예제가 아닌 빈 프로젝트에서 시작하고 싶다면 스크래치X 홈페이지에서 <그림 2>를 클릭하지말고, 그 밑에 <그림 9>와 같이 표시된 버튼을 클릭한다.

<그림 10> 아두이노 빈 프로젝트 시작하기
클릭하면 스크래치X에서 사용가능한 다양한 확장 버전들을 볼 수 있다. 이 중 <그림 10>과 같이 표시된 것을 클릭한다. 클릭하면 아두이노 확장 버전이 적용된 빈 프로젝트가 열린다.

마무리하며

이 글을 쓴 시점에서는 스크래치X는 베타 버전이다. 아직 온라인으로 프로젝트를 저장하지 못하고, 단순히 파이어폭스에서만 구동이 가능하다. 하지만 곧 정식 버전에서는 이 문제를 해결할 것이라고 본다. 아마 그때가 되면 아두이노와 스크래치를 연동하는 프로젝트들은 왠만해서 모두 스크래치X를 쓰지 않을까 생각된다. 아마도 ㅋㅋ