1. 마이크로컨트롤러
우리 주변에는 자동으로 미리 정해둔 기능을 수행하는 장치들이 무척이나 많이 있다.
예를 들면 전기밥솥은 전원을 넣어주면 정해진 대로 가열을 해서 밥을 짓고 밥이 지어지면, 자동으로 보온 상태로 넘어간다. 또한 도로에는 신호등이 미리 정해진 순서에 따라 일정한 시간 간격으로 적색 등과, 노란색 등, 녹생 등을 번갈아 켜주고, 별도의 스위치가 있는 경우 보행자가 이를 누르면 잠시 뒤, 순서를 바꾸어 녹색 등을 켜주기도 한다.

이처럼 미리 정해진 순서에 따라, 자동으로 일을 처리해 주는 기능을 가능하게 해주는(=자동제어) 반도체를 마이크로 컨트롤로 칩이라고 하고, 이러한 칩에 입출력을 위한 회로를 구성하여 만든 작은 보드를 마이크로컨트롤러 (microcontroller) 보드라고 한다. 대개의 경우에는 칩보다는 마이크로컨트롤러 보드 형태로 접하게 되는 게 일반적이다.
즉, 이러한 마이크로컨트롤러 보드에 각자가 만든 프로그램을 넣어주면, 실제로 정해준 프로그램대로 기계가 동작하는 것을 구현할 수 있다. 마이크로컨트롤러 보드가 일종의 스위치 역할을 해서, 우리가 프로그램을 짜서 업로드 한대로, 전열 장치나, 전구 등의 장치를 켜거나 또는 끄는 등의 작동을 할 수 있는 것이다. (주: 통상 마이크로 컨트롤러 보드에서 나오는 전력량은 작기에, 대개의 경우 릴레이 스위치를 중간에 추가로 넣어 작동하는 게 보편적임)
일반 PC와의 차이점은 일반 PC는 대개의 경우 크기가 크고, 주로 화면에 결과를 표시하는 범용의 용도로 많이 사용되는데 비하여, 마이크로 컨트롤러 보드는 미리 정해둔 단순한 기능을 반복적으로 수행하는 데 특화되어 있고, 실제 전기신호로 장치 제어에 사용하는 것을 주요 목적으로 한다는 점이라고 할 수가 있다. 물론 가격도 일반 PC에 비해 마이크로 컨트롤러 보드는 매우 저렴해서 기초적인 제품은 몇천 원 정도에도 구매 가능하기도 하다.
2. 아두이노 (Arduino)
자동제어를 배우게 되면서 가장 먼저 접하게 되는 마이크로 컨트롤러 보드는 아마도 아두이노(Arduino) 보드가 아닐까 싶다.
아두이노는 2005년경 이태리에서 처음 개발된 것으로 알려져 있는 마이크로 컨트롤러 보드인데, 신용카드 정도의 크기를 가지며, USB를 통해 프로그램을 업로드해 주면, 전원이 들어올 때마다 이 프로그램을 자동으로 수행할 수 있게 해주는 보드이다. 양쪽 옆부분에 있는 핀을 통해 LED나 릴레이 등을 연결하면 아두이노의 신호에 따라 LEDD가 켜지거나 릴레이 스위치가 작동하게 할 수 있고, 이를 통해 외부 장치 등을 제어할 수 있게 된다. 물론 기계 동작을 위한 스텝 모터 등의 장치도 연결이 가능하다.
또한 양옆의 핀들에 각종 센서를 연결하면, 온도나 습도 값을 읽거나, 또는 외부 스위치가 눌러졌는지 등을 감지할 수도 있다. 센서에는 단순한 스위치 같은 디지털 센서도 사용 가능하지만, 아날로그 신호를 제공하는 센서들도 일부 핀에 사용 가능하다.
이렇게 센서에 입력되는 값과, 보드에 업로드하는 프로그램, 그리고 핀을 통한 출력 신호를 이용하여 자동제어를 하게 되는 것이다.
3. 아두이노 우노 (Arduino Uno)
아두이노는 기본 기능은 동일하나, 크기를 달리하고, 약간의 부가 기능 등을 추가한 여러 가지 변종 버전이 있기는 하지만, 가장 널리 알려진 것은 아두이노 우노 (Arduino Uno)이다. 흔히 아두이노를 공부하면서 가장 먼저 접하게 되는 마이크로 컨트롤러 보드이고, 아두이노 중 가장 표준인 Reference Board로 알려지는 보드이다.
정품 아두이노 우노는 ATMega328P라는 16MHz의 속도와 32KB의 내장 메모리를 가지는 마이크로 컨트롤러 칩(아래 사진에서 길쭉한 반도체)을 이용하는데, 보드 앞면과 뒷면에 Arduino라는 이름과 로고가 적혀있고, 칩의 모양이 길쭉한 게 특징이다. 시중에서 대략 2-3만 원 정도에 구입이 가능하다.
아두이노 보드는 USB를 통해 프로그램을 업로드하게 되며, 와이파이나 블루투스 기능은 제공하지 않는다.
그런데 아두이노는 Open Source를 지향하기 때문에 설계도가 공개된 상태이며, 이를 활용하여 타 업체에서도 제작이 가능하기 때문에, 여러 중국 업체에서 (거의) 동일한 기능을 하는 호환 보드를 훨씬 저렴한 5-6천 원 정도에 판매하고 있기도 하다. 제작사가 여러 업체이기에, 호환 보드도 대동소이하기는 하나 업체별로 조금씩 다르기도 하다.
이러한 호환 보드들은 Arduino라는 이름과 로고를 사용할 수 없기 때문에, 제품에 단순히 “UNO”라고만 표기하는 게 가장 큰 특징이며, 일반적으로 정품에 사용된 ATMega328P라는 프로세서를 다른 반도체로 변경하기도 한다. 또한 제작사에 따라 회로 구성이 조금 다르다.
일반적인 학습이나 자작 용도로는 호환 제품을 구입해도 문제가 없다.
아두이노 우노의 경우, 프로그램 업로드를 위한 단자로 다음과 같은 모양의 USB Type B 를 이용한다.
프로그램 업로드를 위해, 다음과 같은 USB 케이블이 필요하다.
많은 경우에 우노 보드를 구입시, 30cm 정도 길이의 케이블을 함께 제공하거나 끼워서 판매하는 경우가 많다.
4. 전원
아두이노 우노는(다른 대부분의 아두이노 보드도) 기본적인 동작에 필요한 전원은 USB 케이블을 연결하여 공급받는 전력으로도 동작 가능하다.
다만, 아두이노의 출력 핀에 전력 소모가 많은 장치들을 연결할때는 5V 전원 어댑터를 이용하여 본체에 붙어있는 단자에 추가적인 전원공급이 필요한 경우가 있기도 하다.
경우에 따라 기계 동작을 위한 스텝 모터나 DC 모터 등을 연결할 수도 있는데, 이런 경우 모터류들은 대체로 모터 드라이브라는 별도의 외부장치를 통해 별도의 전력을 공급해 주어야 하고, 아두이노에서 나오는 출력은 제어신호용으로만 사용하게 된다.
만일 전열 기구 같은 것을 제어하고자 하는 경우에는, 아두이노에서 나오는 출력에 릴레이 스위치를 연결하여 전열기의 전원 스위치로 사용하는 방식을 사용하게 된다.
5. 프로그램 작성 및 업로드
아두이노에 업로드할 프로그램은 Arduino IDE라는 것을 이용하여 작성하게 된다. 아두이노 IDE는 비영리재단으로 2016년에 설립된 아두이노 재단에서 담당하는데, 다음 링크를 통해 다운로드할 수 있다.
이를 다운로드해서 실행하면 다음과 같은 편집기 화면이 나오는데, 과거에는 이를 스케치(sketch)라고 불렀는데, 현재는 스케치라는 이름과 Arduino IDE라는 이름을 함께 사용한다. 이 IDE에서, 프로그 랜도 작성하고, 환경설정도 하며, 아두이노 보드로 Compile 해서 업로드해 주는 역할을 하게 된다.
이 IDE에서 사용하는 언어는 아두이노 언어인데, 기본적으로는 C언어와 유사한 형태로, 초기화면이 다음과 같다.
이 IDE의 특징 중 하나는 아두이노를 처음 배우는 사람들을 위해, 기본 예제를 내장하고 있다는 점으로, 여러 개의 기본 예제를 통해 아두이노 IDE 프로그래밍을 쉽게 배울 수 있게 된다.
또한 이 Ardunio IDE의 특징 중 하나는 매우 광범위한 종류의 마이크로컨트롤러 보드를 지원한다는 점이다.
Arduino 계열의 보드 외에도 나중에 접하게 될 ESP8266계열이나, 타사인 라즈베리 파이의 PICO 보드까지도 지원한다. 사용하는 보드 종류에 따라 다음과 같은 방법으로 보드를 선택하고, 포트를 지정해 주면 된다.
이후 글에서 다양한 변형 제품 및 이들의 활용법을 소개할 예정이다.

