아두이노. 아두이노란 뭘까?
아두이노를 인터넷에 검색해 보면 다양한 말들이 있을 것이다.
마이크로컨트롤러 보드라는 말도 있을 것이고, 뭔가를 만들기 위해 사용되는 테스트 보드라는 말들도 있을 것이다.
그런 다양한 말 중에서도 필자는 아두이노가 탄생한 시점부터 지금까지 이야기되는 오픈 소스 하드웨어 플랫폼(Open Source Hardware Platform)이라는 말에 더 주목하고 싶다.
이 말이 무엇을 의미할까.
쉽게 설명하기 위해 이름을 살펴보면 그 의미가 보인다.
바로 ‘Open’한다는 의미다.
기술을 처음 만든이가 자신의 창작물을 세상에 공개한다.
그리고 그 창작물을 만드는 방법 역시 같이 공개하는 것이다.
이 공개된 창작물은 많은 사람들이 보게 되고 그에 맞는 토론이 진행될 것이다.
토론을 통해 개선된 점은 창작물에 반영되어 더욱 진보되고 업그레이드된 작품으로 다시 공개된다.
이것이 오픈 소스 하드웨어라고 불리는 세상이다.
옛날에는 자신이 무엇을 만들던 그것은 자신만의 기술이었다.
이것을 다른 말로 ‘나만의 노하우’라고 불렸다.
이 ‘나만의 노하우’는 오직 자신만이 알고 있으며 이 기술은 가족이나 친한 사람들에게만 공개되었다.
이를 통해 탄생하게 된 것이 오늘날의 수많은 역사와 전통을 가진 ‘맛집’들일 것이다.
하지만 요즘 시대는 더이상 이렇게만 살아가기는 힘들다.
혼자만이 가지고 있는 기술은 좋은 기술로 오래 남기 힘든 시대가 된 것이다.
세상은 빠르게 발전하고 있고 수많은 정보들이 인터넷을 떠돌고 공유되고 있는 이 시점에 ‘나만의 노하우’는 금방 도태될 뿐이다.
그래서 이제는 이러한 ‘나만의 노하우’를 공개하는 ‘선구자’가 되어야 한다.
가지고 있는 기술이 도태될 수밖에 없다면 최초로 만들어 배포한 선구자가 되고 이것을 통해 덧붙여지고 진보되는 것을 받아들이는 것이 현재 세상에서 살아남는 길이 될 것이다.
앞서 이야기한 오픈 소스 하드웨어라는 세상도 이러한 관점에서 출발했다.
첫번째 시작은 소프트웨어 세계였다.
빠르게 발전해가는 세상 속에서 특히 소프트웨어는 눈에 보이지 않을 만큼 그 변화의 속도가 빨랐다.
새로운 운영체제와 하드웨어 환경이 지속적으로 나타났고, 그에 맞는 프로그래밍 언어들이 우후죽순 탄생했다.
그로인해 하나의 프로그램을 완성했다고 해서 그 상태로 오래 유지할 수 없었다.
혼자 만든 코드로는 모든 환경 변화와 오류를 감당하기 힘들었고, 버그는 끊임없이 발생하는 상황에 새로운 요구 사항은 계속해서 추가되었다.
그렇다보니 소프트웨어 세계에서는 더이상 코드를 숨기는 것이 아닌 공개하고 함께 다듬는 방식이 더 효율적인 선택이 되었다.
누군가가 만든 코드를 공개하면 다른 사람이 그것을 보고 문제를 발견하고, 더 나은 방법을 제안하며, 필요에 따라 수정된 코드가 다시 공유된다.
이 과정을 통해 프로그램은 개인의 결과물이 아니라 여러 사람의 경험과 시간이 쌓은 결과물이 되는 것이다.
이렇게 코드를 공개하고, 수정과 재배포를 허용하며, 그 과정을 통해 기술을 발전시키는 방식을 오늘날에는 오픈 소스(Open Source)라고 부르게 되었다.
이렇게 소프트웨어가 공유되는 시대가 왔지만 하드웨어는 아니었다.
소프트웨어는 간단히 요약하자면 파일 하나만 공유하면 되었지만, 하드웨어는 조금 달랐다.
하드웨어는 회로도와 부품, 제작 방법까지 함께 공개되어야 했고, 이러한 내용은 상당히 민감한 부분이었다.
게다가 직접 테스트하는 환경 또한 어려웠다.
아무리 공개된 자료라고 해도 직접 만들어 보지 않으면 제대로 동작하는지조차 알기 어려운 영역이었다.
그래서 오픈소스라는 개념이 나온 뒤에도 오랫동안 하드웨어는 오픈이라는 개념과는 거리가 멀었다.
하지만 이 또한 기술 환경이 변하기 시작하면서 달라졌다.
이전이었다면 전문가들만이 가지고 있던 제작 도구들을 쉽게 접할 수 있게 되었고, 개인도 충분히 실험할 수 있는 환경이 만들어지면서 하드웨어 역시 더 이상 일부 전문가만의 영역이 아니게 되었다.
접근성이 쉬워지다보니 많은 사람들은 전문가들이 만들던 창작품들을 자신들도 만들어 보기를 원했고 또한 자신이 만든 창작품을 자랑하거나 개선점을 공유하기 시작했다.
이를 통해 등장한 것이 오픈소스와 마찬가지로 오픈 하드웨어(Open Hardware)라는 개념이다.
회로를 공개하고, 제작 방법을 공개하고, 동작을 확인할 수 있는 예제와 자료를 공유하는 방식을 통해 이제 하드웨어를 ‘단순히 만드는 기술이 아니라 함께 발전시키는 대상’으로 바꾸어 놓은 것이다.
그리고 이 오픈 소스와 오픈 하드웨어 개념을 합쳐서 이제는 오픈 소스 하드웨어라고 부르고 있다.
앞으로 여기서 다루게 되는 아두이노(Arduino)는 이 오픈 소스 하드웨어라는 흐름의 한가운데에 위치하고 있는 플랫폼이라고 할 수 있다.
아두이노는 하드웨어를 어렵게 만들지 않았고, 소프트웨어를 특별한 사람들만의 언어로 두지 않았다.
누구나 이해할 수 있는 구조로 정리했고, 누구나 따라 해볼 수 있는 자료를 함께 제공했다.
그래서 아두이노는 다른 제품들과 달리 단순한 마이크로컨트롤러라기보다 오픈 소스 하드웨어 플랫폼 즉, 열려 있음을 전제로 성장하는 플랫폼이 되었다.
아두이노에는 보드와 함께 개발 환경이 있고, 수많은 예제와 라이브러리가 있으며, 실패와 성공이 함께 쌓여 온 기록들이 있는 것이다.
그럼 다시 본론으로 돌아와 정확하게 아두이노가 뭔지를 알아보자.
아두이노를 네이버 백과사전에 검색해보면 이렇게 나온다.
‘아두이노는 주위 환경과 상호작용이 가능한 물건을 만들어내기 위한 도구로 간단한 마이크로컨트롤러 보드를 기반으로 한 오픈소스 하드웨어 플랫폼과 소프트웨어 개발 환경을 말한다.’
말이 좀 어렵지만 요약하자면 마이크로컨트롤러 보드와 이 보드를 조작할 수 있는 소프트웨어 환경으로 이루어져 있다는 말이다.

위의 그림이 아두이노의 모습이다.
왼쪽의 그림이 마이크로컨트롤러 보드인 ‘아두이노 보드’이고 오른쪽의 그림은 아두이노 보드를 조작할 수 있는 소프트웨어 환경인 ‘아두이노 IDE(Arduino IDE)’라고 한다.
이전에는 ‘아두이노 스케치(Arduino Sketch)’라고 불렀는데 요즘엔 IDE라는 개발 통합환경이라는 명칭을 사용하게 되었다.
그리고 그림에 나타난 아두이노 보드는 아두이노에서 가장 기본이되는 보드로 ‘아두이노 우노(Arduino Uno)’라고 불리는 보드다.
이 밖에도 아두이노 보드는 그 쓰임새에 따라 다양한 종류와 모양이 있으며, 현재도 새로운 보드들이 아두이노 본사 뿐만 아니라 다양한 곳에서 지속적으로 출시되고 있다.
그럼 이러한 아두이노로 무엇을 할 수 있을까.
아두이노로는 아주 다양한 것을 할 수 있다.
간단히는 LED를 켜고 끄는 것부터 어렵게는 인공위성을 만드는 것까지 다양한 분야와 환경에서 사용되고 있는 것이다.
그 중에서 조금 신기하다라고 할 만한 것은 아래의 두 가지를 뽑을 수 있다.

드론과 3D 프린터는 대표적으로 아두이노 보드로 만드는 제품 중 하나라고 할 수 있다.
실제로 3D 프린터 중 조립식 3D 프린터는 거의 모두가 아두이노 보드(Arduino Mega)를 기반으로 만들어진다고 해도 과언이 아닐 정도다.
(물론 현재는 뱀부랩에서 시작된 고속 3D 프린터가 많이 탄생하고 있지만 그 이전 시대의 3D 프린터는 아두이노를 이용한 결과물이라고 해도 될 정도였다.)
지금도 구글에서 3D 프린터 아두이노를 영어로 검색하면 만드는 방법부터 동작 코드까지 모두 공유되고 있고, 그 재료도 같이 판매되는 것을 볼 수 있다.
초창기 3D 프린터 시장에는 이렇게 공개된 오픈 소스와 오픈 하드웨어 정보들을 이용하여 자기 회사에 맞게 개량해서 다양한 버전의 3D 프린터가 판매되었다.
드론도 마찬가지다.
지금 큰 브랜드들은 자체 보드를 사용하지만 저렴한 브랜드나 조립형 드론의 경우 아두이노 보드를 사용하는 곳이 많이 있다.
이처럼 아두이노 보드는 우리가 모르게 생활 곳곳에서 이미 사용되고 있다.
영화만 보더라도 폭탄이나 폭탄을 제어하는 장치는 아두이노 보드로 만들어진 것을 볼 수 있고 드라마와 같은 곳에서도 많이 사용되고 있다.

거기에 이전에는 구글에서도 아두이노와 협업을 진행하여 다양한 제품을 제작한 사례도 있다.
그렇다면 이런 의문이 들 수 있다.
‘이렇게 다양한 곳에 사용된다면 너무 어려운 것 아닌가?’
결과를 말하자면 그렇지 않다라고 할 수 있다.
앞서 말했지만 아두이노는 오픈 소스 하드웨어 플랫폼이다.
만드는 방법은 물론 그것을 동작시킬 수 있는 방법들이 셀 수 없이 많이 공개되어 있으며, 추가로 영어만 할 수 있다면 별천지라고 할 수 있을 정도로 다양한 자료가 넘쳐난다.
또한 그 자료들은 설명조차 친절하게 되어있다.

위의 그림은 미국의 ‘울티메이커’라는 회사와 ‘프로토스페이스 Fablab’이라는 곳에서 진행했던 한 초등학교의 3D 프린터를 만드는 모습이다.
많은 사람들이 아두이노가 ‘어렵다’고 하여 시행한 이벤트인데 학생들은 고작 몇시간 만에 3D 프린터를 제작해 내는 모습을 보였다.
이러한 사례도 있는데 어렵다고 할 수 있을까.
물론 이 3D 프린터가 동작하기 위한 코드를 모두 이해한 것은 아닐 것이다.
그렇다고 하더라도 직접 동작을 할 수 있게 수정을 할 수 있었다면, 이전과 같이 아예 접근조차 힘든 분야는 아니라고 할 수도 있겠다.
아두이노는 기존에 우리가 많이 들어 보았던 C언어, Java, Python과 같은 소프트웨어들보단 배우고 사용하기 쉽다고 말 할 수 있다.
뭐 애초에 아두이노의 탄생이 저러한 프로그램들을 어려워 한 예술가들을 위해 탄생한 것이니 만큼 그 만큼 난이도가 낮다라는 것은 확실하다.
물론 더 복잡한 제품들을 구현하기 위해서는 코딩이 어려워 지기도 하지만 이런 점은 당연히 어떤 분야든 심화로 들어가면 복잡해지는 것과 동일하다라고 보면 되겠다.
그래서 현재 우리나라에서는 이 아두이노를 소프트웨어 교육에 사용하고 있다.

우리나라 교육과정을 보면 초등학교에는 블록코딩, 중학교에는 아두이노, 고등학교에는 파이썬을 배우고 있다.
만약 아두이노가 접근성이 어려웠다면 이러한 교육과정이 성립하지 않았을 것이다.
그렇다고 아두이노 보드를 장난감 또는 교육 실습용으로 생각하진 말자.
우리나라에선 교육용으로 많이 사용되고 있는 편이지만 해외로 눈을 돌려보면 이 보드는 교육용 보다는 프로토타입 제작과 같은 아이디어를 구현하는 도구로 더 많이 사용되고 있다.
국내 역시 수많은 기업에서 제품 개발 단계에서 아두이노 보드를 사용하고 있어 대학교, 직업학교, 창업센터와 같은 곳에서 성인들을 대상으로 직무 교육에 사용되기도 한다.
자, 이렇게 이번 포스트에선 아두이노가 무엇인지에 대해 이야기를 해보았다.
다음 포스트부터는 본격적으로 아두이노를 사용하는 방법에 대해 이야기를 해보자.
