RedCrow + GreenBean

Feed Rss

우선…

아두이노는 마이크로 프로세서의 한 종류이다.

그럼 마이크로 프로세서는 뭔지 알아보자.

쉽게 설명해서 작은 컴퓨터 이다.

우리가 알고 있는 컴퓨터는 보통 데스크탑과 노트북으로 나뉘고 구분을 하자면…

여러 데이터를 입력하는 키보드와 마우스가 있으며

데이터를 저장하는 메모리나 하드가 있으며

그렇게 입력된 데이터를 특정한 계산으로 처리하는 중앙처리장치(CPU)가 있으며

완성된 데이터를 보여주는 모니터나 스피커 등이 있다.

컴퓨터는 이러한 입력, 출력, 저장, 계산 기능을 갖춘것을 컴퓨터라 한다.

우리가 일반적으로 얘기하는 PC는 Personal Computer의 약자로 개인용 컴퓨터를 뜻한다.

그러면 컴퓨터라는 것의 예는 무엇을 들 수 있을까?

간단히 PC를 들 수 있고…

그외 우리가 사용하는 전자 기기는 다 컴퓨터라 볼 수 있다.

다분 전등도 컴퓨터의 일종이다.

스위치(입력)를 누르면 전기가 흘러 불(출력)이 들어오는 시스템(계산)이다.

전자레인지, 냉장고, 휴대폰, 계산기, 게임기 등등…

마이크로 프로세서는 이러한 입력, 출력, 저장, 계산 기능을 하나의 칩에 담아 둔것을 말한다.

물론 하나의 칩만 있으면 다 해결되는건 아니다.

말이 입력, 출력이 달려 있다고는 하지만 사실상 구현은 외부 기기를 거쳐서 해야 한다.

하지만 이러한 입력, 출력의 형태를 개발자가 원하는 형태로 구현할 수 있다.

스위치를 쓰던, 센서를 쓰던…

LED로 보여주던, 모터를 돌리던, 모니터를 달던…

지금까지의 마이크로 프로세서에 대한것은 정말 전문적인 지식을 가진 사람만이 접근이 가능했다.

전자 쪽에 적어도 기본적인 상식이 필요하고 회로도 볼줄 알아야 하며, 납땜도 잘해야 한다.

그리고 금전적인 부분도 무시할 수 없었다.

내가 그나마 조금 다룰줄 알았던 마이크로 프로세서는…

부끄럽지만 89c2051 이다.

작은 크기에 그리 많지 않은 입출력핀과 그리 많지 않은 용량…

혼자서 독학해서 여러 작품(?)을 만들어 냈다. ^^;

하지만 간단하게 LED에 불하나 켜기 위해서도 일이 너무 많다.

먼저 회로 구성을 해야 하는데 거의 직접 해야 한다.(물론 브레드보드를 사용해도 되지만 보통 그렇지 않다…)

구현한 프로그램을 칩에 넣기 위해 전용 기기를 통해서 매번 칩을 뺐다 꽂았다를 해야 한다.(뭐 요즘것들은 그렇지 않지만… 현재의 아두이노와 같이 데이터 선을 바로 연결해서 쓸 수 있다.)

무엇보다도 자료가 그리 많지 않다는 것이다.

자료가 있다 하더라도 해당 자료를 만든 사람이 구현한 하드웨어를 직접 구현해야 하고 혹시 다른 자료를 구하게 되면 구현한 하드웨어랑 전혀 다르게 되어 있을 때도 있다.

책을 사면 같이 딸려오는 보드가 있기는 하다.

하지만 해당 책 내용을 실습하고 나면…

그 보드를 가지고 인터넷이나 기타 다른 자료의 것을 실습하고자 하면 또 다른 하드웨어를 구현하거나 전혀 맞지 않는 경우도 있다.

물론 잘하는 전문가들은 그런거는 약간의 작업만으로 해결이 되겠지만 처음 시작하는 사람이나 전혀 이런쪽으로 모르는 사람들은 시작할 엄두도 못낸다.

그렇다고 제대로 가르쳐주는 교육기관이 있지도 않고…

사실 이것 때문에 나는 대학을 가야겠다고 마음 먹고 대학을 갔다.

물론 여러가지 사정으로 인해 마이크로 프로세서 수업은 제대로 듣질 못했다.(수업은 잘 들었다. 하지만, 많이 듣지도 못했고 내가 원하는 수준가지 해보지도 못했다.)

헌데… 어느날인가 접한 아두이노…

물론 아직 한국에는 많이 알려지거나 하진 않았지만…

어찌보면 이런 마이크로프로세서계의 표준화처럼 보인다.

정말 간단한 LED 켜기에서 부터 웹서버나 기타 복잡한 시스템까지 구현 가능해졌다.

물론 좀더 복잡한 시스템을 구현하기 위해서는 조금더 지식이 필요하지만…

무엇보다도 처음 시작한걸로 계속해서 끝까지 갈 수 있다라는 것이다.

그리고 딱 하나의 정해진 보드를 통해 다양한 사람이 예제를 만들고 소스를 공개해서 다른이들도 쉽게 따라 할 수 있게 되었다.

예전의 마이크로프로세서와는 너무나 차이가 나는 형태였다.

똑같이 시간을 나타내는 시계라도 만든 사람마다 배선의 방법도 다르고 회로도 자체가 다른데…

아두이노는 적어도 마이크로프로세서 부분만큼은 모두가 통일이다.

그리고 프로그램 언어 자체도 간단히 구현할 수 있게 전용으로 만들어 놨다.

요즘 많은 부분들이 오픈소스화 되고 있다.

아두이노도 이에 동참해 모든것을 공개하고 있다.

원한다면 아두이노도 직접 만들어 써도 된다.

그리고 예전의 마이크로프로세서는 많은 부분들이 시리얼로 프로그래밍해 넣거나 전용 라이팅기를 이용했지만 아두이노는 USB를 사용한다.

요즘에 오히려 시리얼 있는 PC를 찾기 힘든다.

특히나 노트북의 경우는 더더욱…

물론 요즘의 마이크로프로세서는 USB를 많이 체택하긴 하지만 아두이노 보드는 기본적으로 USB를 넣어 놨다.

사용자가 고민할 필요가 없는 것이다.

물론 좀더 전문적인 시스템을 만들고자 하면 전용 회로를 꾸며서 만들어야 하지만 처음부터 제품을 그렇게 만들수 없기 때문에 아두이노르 쉽고 빠르게 프로토타입을 만들고 생각하는 형태로 구현이 된다면 전용 회로와 전용 프로그램으로 꾸며서 시제품을 만들 수 있다.

이러한 아두이노는 예전의 마이크로프로세서 사용자 구간을 벗어나 새로운 사용자들이 생겨나고 있다.

전자계통에 일하는 사람 말고도 취미, 디자이너, 건축 등 다양한 분야와 다양한 사람들이 쉽게 접근할 수 있다.

물론 전자를 모르는 사람이 보았을때 일반 마이크로프로세서나 아두이노나 다 똑같이 어렵고 힘들어 보인다.

하지만 전자계통에 일한 나로선 이렇게 쉽게 편리하고 예제가 풍부한 녀석은 이제껏 없었던것 같다.

간단히 아두이노의 기본적인 사양을 살펴보도록 하겠다. (설명의 기준은 Arduino uno r3 이다.)

아두이노의 중앙처리장치는 Atmega328 이다.

28핀의 Atmega328의 처리능력은 8bit이다.

속도는 20Mhz이고, 입출력은 23개가 있다.

프로그램 메모리의 크기는 32Kb로 플래쉬 메모리이다.

EEPROM은 1K x 8, RAM은 2K x 8 이다.

공급전압은 1.8V ~ 5.5V 사이에 동작하게 된다.

뭐 좀 전문적인 용어들이 많은데 살짝 무시해도 된다.

그럼 아두이노는 위와 같느냐…

꼭 그렇진 않다.

보드를 구성했기 때문에 거기에 사용된 기본적인 기능이 있음으로 ATmega328의 일부 기능은 이미 써버린 상태다.

14개의 디지털 입출력 핀을 가지고 있고 그중 6개는 PWM 출력을 지원하며, 또 6개는 아날로그 입력을 받을 수 있다.

아두이노의 클럭은 16MHz 이다.

이정도 사양이면 기본적이거나 일반적인 전문적인것을 만든다 하더라도 무리가 없다.

필요에 따라선 더 많은 용량이나 더 많은 입출력핀, 혹은 더 작은 크기에 따라 다양한 형태의 아두이노가 있다.

Arduino Mega 2560 은 256K의 플래쉬 메모리에 54개의 디지털 입출력, 16개의 아날로그 입력을 가지고 있다.

역으로 작은 싸이즈를 원한다면 Arduino Mini 가 있다.

손가락 두마디 정도의 크기지만 기본 성능은 Arduino UNO와 같다.

뭐 모든것이 다 완벽하고 다 좋을수는 없다.

이 아두이노도 마찬가지 일것이다.

그럴때는 언제든지 기성제품을 통해 확장을 하거나 직접 만들어서 사용도 가능하다.

그냥 두서 없이 주저리 주저리 썼는데…

좀 제대로 정리가 되야 할텐데… ^^;

이런걸 처음 하다보니 역시 정리 안되고 주저리 주저리다.

계속해서 쓰다보면 뭔가 체계가 잡혀가지 않을까?

뭐든 해야 는다.

글 쓰는 것도 아두이노도… ^^;

이 아두이노에게 조금더 많은 시간을 할애 해야 겠다.