By Taron Foxworth
가장 근본적인 수준에서 마이크로컨트롤러(Microcontroller)란 아주 작은 컴퓨터입니다.
하지만 '작은 컴퓨터'라는 표현만으로는 충분히 이해하기 어렵습니다. 조금 더 깊이 들어가 보겠습니다. 많은 사람들이 마이크로컨트롤러를 아두이노(Arduino)와 연관 지어 생각합니다. 그러나 중요한 점은 아두이노 자체는 마이크로컨트롤러가 아니라는 것입니다. 아두이노는 소프트웨어와 하드웨어를 아우르는 하나의 완성된 플랫폼입니다.
아두이노는 아두이노 우노(Arduino Uno)와 같은 장치를 만들어냅니다:

아두이노 우노
아두이노 우노 역시 마이크로컨트롤러가 아닙니다. 이는 Atmel ATmega328P 마이크로컨트롤러를 기반으로 한 브레이크아웃 보드(Breakout Board)입니다.
Atmel 마이크로컨트롤러의 실제 모습은 다음과 같습니다:

초보자가 Atmel 마이크로컨트롤러 칩만 손에 들고 있다면 사실상 활용하기가 매우 어렵습니다. 바로 이 지점에서 브레이크아웃 보드가 등장합니다.
브레이크아웃 보드는 마이크로컨트롤러의 핀(Pin)들을 아두이노 우노처럼 더 크고 다루기 쉬운 장치로 '꺼내주는' 역할을 합니다. 덕분에 마이크로컨트롤러를 훨씬 편리하게 사용할 수 있습니다.
아두이노 우노의 경우, 브레이크아웃 보드를 통해 USB 케이블 연결, 전원 공급, 장치 프로그래밍 등이 모두 가능해집니다.

브레이크아웃 보드가 없다면 초보자에게 이런 작업은 감당하기 힘든 도전 과제가 될 것입니다. 아두이노가 존재하는 이유가 바로 여기에 있습니다 — 하드웨어 학습을 최대한 쉽게 만들어 주기 위함입니다.
그럼 라즈베리 파이와 비슷한 건가요?
완전히 같지는 않습니다. 아두이노와 라즈베리 파이(Raspberry Pi) 모두 정의상 컴퓨터이긴 합니다. 하지만 라즈베리 파이는 싱글보드 컴퓨터(Single-Board Computer)로 분류됩니다. 싱글보드 컴퓨터란 하나의 회로 기판 위에 완전한 컴퓨터를 구현한 것을 의미합니다.

라즈베리 파이
사실 여러분의 노트북도 엄밀히 따지면 싱글보드 컴퓨터입니다 — 다만 성능이 훨씬 강력할 뿐이죠. 라즈베리 파이는 노트북에 탑재된 하드웨어의 간소화된 버전이라고 볼 수 있습니다. 노트북이 운영체제(Windows, macOS, Linux)를 구동하듯, 라즈베리 파이 역시 Linux 운영체제를 실행합니다.
이제 다시 마이크로컨트롤러로 돌아가 보겠습니다. 마이크로컨트롤러는 운영체제를 실행할 수 없습니다. 또한 대부분의 싱글보드 컴퓨터에 비해 컴퓨팅 파워와 리소스가 크게 부족합니다.
마이크로컨트롤러는 하나의 프로그램을 반복해서 실행할 뿐, 완전한 운영체제를 구동하지 않습니다. 아두이노 프로그램에서 이를 확인할 수 있는데, 프로그램에는 Setup과 loop 두 가지 함수만 필요합니다. Setup은 딱 한 번 실행되고, loop는 무한히 반복 실행됩니다.

Setup과 Loop
그래서, 마이크로컨트롤러란 정확히 무엇일까?
마이크로컨트롤러는 저용량 메모리와 프로그래밍 가능한 입출력(I/O) 주변장치를 갖춘 소형 컴퓨터입니다.
입력 / 출력
누구나 알다시피 컴퓨터의 모든 동작은 결국 이진수(Binary, 0 또는 1)에서 출발합니다.

입력(Input)이란 마이크로컨트롤러가 외부로부터 이진 데이터를 읽어들이는 것을 의미합니다. 대표적인 입력 장치로 센서(Sensor)가 있습니다.
출력(Output)이란 마이크로컨트롤러가 외부로 이진 데이터를 내보내는 것을 의미합니다. 모터나 LED를 제어하는 것이 대표적인 출력의 예입니다.
왜 마이크로컨트롤러가 필요할까?
사실 마이크로컨트롤러는 오늘날 우리가 아는 '컴퓨터' 개념이 등장하기 이전부터 존재하던 '컴퓨터'였습니다. 마이크로컨트롤러가 지금까지 살아남은 이유는, 일부 컴퓨팅 작업은 놀라울 정도로 단순하여 간단한 로직만으로 충분하기 때문입니다. 예를 들어 스위치를 켜고 끄거나 LED 같은 소형 부품을 제어하는 작업에는 이메일 발송과 같은 일상적인 작업에 필요한 막대한 리소스가 전혀 필요하지 않습니다.
오늘날 마이크로컨트롤러를 사용하는 이유는 낮은 전력 소모와 적은 메모리 용량 덕분에 생산 비용이 매우 저렴하기 때문입니다. 마이크로컨트롤러는 사물인터넷(IoT)이 오늘날 실현되고 성공할 수 있었던 핵심 동력 중 하나입니다.
어떻게 구할 수 있나요?
어떤 마이크로컨트롤러를 선택할지는 해결하고자 하는 문제에 따라 달라집니다. 무언가를 켜고 끄거나 센서 값을 읽는 것 같은 단순한 작업이라면 사실상 어떤 마이크로컨트롤러로도 충분합니다.
반면 게임을 구동하거나 더 복잡한 아이디어를 구현하고 싶다면 더 많은 컴퓨팅 파워가 필요하므로, 라즈베리 파이 같은 싱글보드 컴퓨터로 넘어가야 합니다.
Adafruit와 Sparkfun은 놀라운 키트와 하드웨어를 다양하게 판매하고 있으며, 두 업체의 튜토리얼도 함께 활용해 보시길 추천합니다.
Losant에도 흥미로운 키트가 준비되어 있습니다. 예를 들어 문 센서를 직접 만들어, 문이 너무 오래 열려 있을 때 알림을 받도록 구성할 수도 있습니다.
특별히 해결하고 싶은 문제가 없다면, 그냥 하드웨어를 하나 구입해서 자유롭게 만져보세요.
입문을 위해 구입하면 좋은 물건들은 다음과 같습니다:
1. NodeMCU 보드

NodeMCU
NodeMCU는 ESP8266 마이크로컨트롤러 기반의 보드입니다. 이 보드가 특별한 이유는 가격이 저렴하면서도 WiFi가 내장되어 있기 때문입니다. Amazon에서 약 8.79달러에 구입할 수 있으며, eBay에서는 더 저렴하게 살 수 있습니다.
모든 마이크로컨트롤러에 WiFi가 탑재되어 있는 것은 아닙니다. WiFi를 지원한다는 점은 이 장치로 만들 수 있는 프로젝트의 폭을 크게 넓혀줍니다. 예를 들어 데이터를 수집한 뒤 클라우드 ☁️로 전송하는 시스템을 구축할 수 있습니다.
2. 센서

브레드보드
하드웨어 작업에 센서는 필수입니다. 센서를 통해 주변 환경과 세상을 감지할 수 있으며, 학습 도구로도 훌륭합니다.
3. 브레드보드 & 점퍼 와이어


센서와 마이크로컨트롤러를 연결하려면 부품들을 브레드보드(Breadboard)에 꽂고, 점퍼 와이어(Jumper Wire)로 서로 연결해야 합니다.
참고로 eBay와 AliExpress에서는 대부분의 제품이 더 저렴합니다. 다만 배송에 몇 주 정도 걸린다는 점은 감안해야 합니다.
무엇을 만들어야 할까?
아무리 강조해도 지나치지 않은데, 프로젝트 아이디어를 먼저 정하고 시작하는 것이 훨씬 쉽습니다. 이제 마이크로컨트롤러가 무엇인지, 어떻게 구하는지 이해했으니 주변 세상을 새로운 시선으로 바라보세요. 무엇을 제어할 수 있을까요? 무엇을 자동화할 수 있을까요? 이 질문들에 답하기 시작하면 자연스럽게 프로젝트가 떠오를 것입니다.
프로젝트를 고민할 때는 Hackster가 최고의 친구가 되어줄 것입니다. Hackster에는 수많은 ESP8266 프로젝트와 멋진 아두이노 프로젝트가 가득합니다.
예를 들어 어린 시절의 꿈을 실현할 수도 있고, 로봇을 직접 만들어볼 수도 있습니다.
핵심은 단 하나, 아이디어입니다.
때로는 가상 세계를 프로그래밍하는 것보다 현실 세계를 프로그래밍하는 것이 훨씬 재미있습니다.
다음은 무엇일까?
마이크로컨트롤러는 시작에 불과합니다. 앞으로 탐험할 하드웨어의 세계가 무궁무진하게 펼쳐져 있습니다. 즐거운 해킹 되세요!
추천 추가 자료
아두이노 초보자 완벽 가이드(The Absolute Beginner's Guide to Arduino)
_크리스마스 연휴 동안 새로운 것을 배우고 싶었습니다. 아두이노를 눈여겨봐 온 지 오래였는데…_ forefront.io
Taron Foxworth는 하드웨어 해커이자 Losant의 Developer Evangelist입니다. 사람들이 기술을 배우고, 사랑하며, 영감을 얻을 수 있도록 돕는 것이 목표입니다.
무료로 코딩을 배워보세요. freeCodeCamp의 오픈소스 커리큘럼은 이미 4만 명 이상의 사람들이 개발자로 취업하는 데 도움을 주었습니다. 지금 바로 시작해 보세요.