아두이노 & 마이크로비트
오늘은 아두이노와 마이크로비트에 대해 이야기를 해보고자 합니다.
제가 요즘 피지컬 컴퓨팅 관련되어 여러 사람들과 이야기 하다 보면, “어떤 개발보드를 이용하는 것이 가장 좋을까요?”라는 질문을 많이 받습니다.
사실 이에 대한 정답은 없습니다. 무언가가 압도적으로 좋다면 시장에서 다른 것들은 모두 도태되었겠죠? 각각의 장단점이 존재하기 때문에 서로 비교해보고 자신에게 적합한 개발보드를 선택할 필요가 있습니다.
아두이노와 마이크로비트에 대해 논의하기에 앞서서 용어를 명확하게 할 필요가 있을거 같습니다. 먼저 개발보드(Development Board)와 통합개발환경(IDE, Integrated Development Environment)에 대해 알아두실 필요가 있습니다.
개발보드
위키피디아에서는 개발보드를 다음과 같이 정의하고 있습니다.
A microprocessor development board is a printed circuit board containing a microprocessor and the minimal support logic needed for a computer engineer to become acquainted with the microprocessor on the board and to learn to program it. It also served users of the microprocessor as a method to prototype applications in products.
Wikipedia(n.d.). Retrived from https://en.wikipedia.org/wiki/Microprocessor_development_board
개발보드의 목적은 특정 마이크로 프로세서에 대한 프로그래밍을 학습하기 위해 이용되며, 또한 해당 마이크로프로세서를 이용하는 장치의 프로토타입을 만드는 데 이용됩니다.
Arduino UNO는 Atmel의 ATMega328P 프로세서를 탑재하고 있습니다. 위 그림에서 길쭉하게 꼽혀있는 칩이 이에 해당됩니다. 만약 자신이 특정 장치를 개발하는데 프로세서로 ATMega328P를 이용한다고 합시다. 해당 장치가 어떠한 형태를 갖추게 될지에 대해 명확하게 설계가 끝나지 않은 상태에서, PCB를 설계하고 이에 모든 부품들을 꼽는다면, 설계가 변경될 때 마다 이러한 작업을 반복해야 할 것입니다. 이 때 개발보드가 이용됩니다. 개발보드에 자신이 구현하고자 하는 부품들을 꼽고 원하는 의도대로 작동되는지 테스트 합니다. 그러고 나서, 명확하게 잘 돌아가는 것을 확인한다면 자신의 디바이스에 최적화 시켜서 PCB를 짜고, 외부 케이스를 디자인하면 됩니다.
통합개발환경(IDE)
위키피디아에서는 통합개발환경을 다음과 같이 정의하고 있습니다.
코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어
쉽게 말하면, 프로그래밍을 도와주는 소프트웨어라고 판단하시면 됩니다. 프로그래밍을 해보신 분들이라면 Visual Studio라는 소프트웨어를 들어본 적이 있을텐데요. 이것이 바로 IDE에 해당됩니다.
아두이노를 써보신 분들은 아래와 같은 화면에 익숙할 것입니다.
이 소프트웨어를 Arduino IDE라고 하는데요. 이 또한 통합개발환경의 일종입니다. 일반적으로 아두이노 계열 개발보드의 프로그래밍에 주로 이용됩니다. 하지만 microbit 등 다른 개발보드에도 이용될 수 있습니다.
아두이노는 개발보드인가요 IDE인가요?
여기서 아마 혼란이 오실겁니다. Arduino IDE가 microbit을 지원한다?
아두이노는 개발보드와 통합개발환경에 모두 사용되는 용어입니다. Arduino UNO, Arduino Mega, Arduino Leonardo, Arduino Due 등 여러 개발보드가 아두이노의 이름을 달고 출시되고 있습니다. 또한 이들 개발에 사용되는 통합개발환경으로써 Arduino IDE가 많이 사용됩니다.
아두이노 계열의 개발보드는 Arduino IDE와 찰떡궁합이기 때문에 대체로 같이 이용되곤 합니다. 하지만 이들은 ‘좋은 조합’일 뿐이지 ‘필수적인 조합’이 아닙니다.
Visual Studio Code, Eclipse, Atmel Studio 등도 아두이노 계열 개발보드의 프로그래밍을 하는데 이용될 수 있습니다.
Arduino IDE 또한 다른 개발보드에 이용될 수 있습니다. Arduino IDE는 Atmel 계열의 프로세서를 탑재한 Arduino UNO, Arduino Mega 등 뿐만 아니라 ESP8266을 탑재한 Wemos D1 R2, ESP32를 탑재한 Wemos D1 R32, nRF5을 탑재한 microbit 등 다양한 개발보드를 지원합니다.
마이크로비트는 어떤 개발환경을 지원하나요?
마이크로비트는 아두이노와 달리 교육용에 특화된 개발보드입니다. 마이크로소프트는 마이크로비트에 특화된 개발도구인 Javascript 기반의 Microsoft MakeCode를 개발하였습니다. 교육용으로 개발되었기에 범용성이 떨어지는 측면이 있어 ‘통합’개발환경이라고 부르기 적절하지 않은 측면이 있어 ‘개발도구’라는 표현을 사용하였습니다. MakeCode는 마이크로비트 뿐만 아니라 LEGO® MINDSTORMS® Education EV3, Circuit Playground Express, Cue, Arcade, Minecraft, Chibi Chip 등의 개발에 사용될 수 있습니다.
마이크로비트가 MakeCode에서만 개발이 가능한 것이 아닙니다. C/C++ 기반의 Arduino IDE에서도 보드 매니저를 통해 nRF5를 추가함으로써 이용이 가능합니다. 또한 Python 프로그래밍이 가능한 IDE에서도 microbit 패키지를 설치함으로써 이용이 가능합니다.
아두이노를 쓸까요? 마이크로비트를 쓸까요?
무엇을 만들고자 하는지에 따라 선택지가 달라집니다. 텍스트 코딩이 가능하다면 저는 아두이노를 무조건 권합니다. 마이크로비트는 연결 포트의 수가 적어 확장성이 매우 떨어지고, 보드의 가격이 아두이노 우노의 5배 가량 됩니다. 다만 이는 정답이 아닙니다. 마이크로비트의 경우 가속도 센서, 자기장 센서, 여러개의 LED, 블루투스 모듈이 보드에 기본적으로 장착되어 있습니다. 이들 센서에 대한 활용이 매우 잦은 상황이라면 마이크로비트가 좋은 선택지가 될 수도 있습니다.
초보자가 적당한 개발보드를 한번에 선택하는 것은 어렵습니다. 아두이노, 마이크로비트 모두 널리 쓰이는 보드가 맞기 때문에 무엇으로 입문할지 고민하는데 많은 시간을 소비하기 보단, 일단 뭐라도 잡아서 입문하시기를 권합니다. 하다 보면, 무언가 아쉬운 부분이 생길것이고, 그 아쉬운 부분을 해결하고자 보드를 하나하나씩 바꿔가며 선택을 하게 될 것입니다.
저의 경험을 비춰보자면, 아두이노 우노로 시작해서, 아두이노 메가, Wemos D1 R2, 라즈베리파이, Wemos D1 R32를 쓰다가 다시 아두이노 우노로 돌아왔습니다. 사람들이 많이 쓰는데에는 이유가 다 있는가 봅니다.
마치며
오늘 드리고 싶은 말씀은 아두이노는 아두이노 IDE에서 코딩을 하고, 마이크로비트는 MakeCode에서 코딩을 한다고 생각하시면 안 된다는 것입니다. 개발 보드와 개발 환경은 별개로 생각을 하셔야 한다는 점을 다시 한번 강조하면서 이 글을 마칩니다 🙂