본문 바로가기

arduino

아두이노(Arduino)란? 다양한 보드들

뭔가 내맘대로 만들고 구현하고 싶은게 있다면, 아두이노 또는 라즈베리파이와 같은 말을 들어봤으리라 생각됩니다. 저도 모르고 있다가 직무가 바뀌다 보니 자연스럽게 이것 저것 접하고 있는 중 입니다.

아두이노(Arduino)는 오픈소스 기반으로 한 단일 보드 마이크로컨트롤러로 완성된 보드와 관련 개발 도구 및 환경을 통칭합니다. 2005년 이탈리아의 IDII(Interaction Design Institutelvera)에서 하드웨어에 익숙지 않은 학생들이 자신들의 디자인 작품을 손쉽게 제어할 수 있게 하려고 고안된 아두이노는 처음에 AVR을 기반으로 만들어졌으며, 아트멜 AVR 계열의 보드가 현재 가장 많이 판매되고 있다. ARM 계열의 Cortex-M0(Arduino M0 Pro)과 Cortex-M3(Arduino Due)를 이용한 제품도 존재한다.

아두이노는 다수의 input device인 스위치나 센서로부터 값을 받아들여, LED나 모터와 같은 외부 전자 장치들을 컨트롤함으로써 입력에 대해 반응가능한 물건을 만들어 낼 수 있습니다. 심플한 임베디드 시스템을 쉽게 개발할 수 있습니다.

아두이노 통합 개발 환경(IDE)을 제공하며, 소프트웨어 개발과 실행코드 업로드도 제공한다.  아두이노의 가장 큰 장점은 마이크로컨트롤러를 쉽게 동작시킬 수 있다는 것입니다.  컴파일된 펌웨어를 USB를 통해 쉽게 업로드 할 수 있으며, 아두이노는 다른 모듈에 비해 비교적 저렴합니다. 인터넷 쇼핑몰 검색을 해보시면 비슷하게 생겼는데 어떤건 좀 비싸고 어떤건 아주 싼가격으로 판매하고 있습니다.좀 비싼건 정품일 가능성이 높고, "아두이노 호환"이라는 설명이 있다면 짭이라는 소리입니다. 짭은 뽑기운이 좀 있으니 단품으로 한개만 구입한다면 불량이 걸릴 가능성도 있어 반품하고 교환받느라 시간 낭비가 발생할 수 있습니다. (경험해보니...)

IDE는 윈도우를 비롯해 mac os X, 리눅스 같은 여러 OS를 모두 지원합니다. 아두이노 보드의 회로도 또한 공개되어 있으므로, 누구나 직접 보드를 만들고 수정할 수 있습니다. 홈피는 www.arduino.cc 입니다. 

아두이노 입문용

아두이노 보드중에 주로 사용하는 입문용 보드들은 위의 여러종류 중에 uno 보드 또는 nano 보드를 사용합니다. 호환 보드도 많이 있고 취급하는 곳이 많으니 잘 찾으면 부담없이 구할 수 있습니다.

아두이노 심화용

입문용 보드 스펙을 넘어서는 프로젝트를 하려면 위와 같이 필요에 따라 cpu 속도나 메모리 용량, IO가 더 많은 보드를 사용하면 됩니다. 쉴드라고 쓰여 있는 보드들은 base가 되는 보드에 바로 끼워서 기능을 확장 시킬수 있는 보드들 입니다. 입문용 보드를 base로 하는 쉴드도 여러가지가 있으니 필요에 따라 잘 선택하면 됩니다. 심화용 보드중에는 주로 MEGA를 많이 사용합니다.

IoT용 보드

아두이노 보드중에는 IoT를 구현하는데 필요한 기능만 모아놓은 보드들도 있습니다. 개인의 필요에 따라 구현하고 싶은 IoT 기기가 있다면 손쉽게 접근할 수 있습니다.

아두이노 보드 스펙

상황에 맞는 아두이노 보드를 선택했다면 IDE를 설치하고 usb를 연결하여 펌웨어를 올려볼 준비를 해봅니다. 호환보드를 사용할 경우 통신 포트를 못잡는 경우가 있습니다. 이럴 경우에는 구글링을 해보시면 이미 수많은 분들이 시행착오를 거치면서 포스팅한 글들이 많기 때문에 당황하지 마시고 따라 하시면 해결 됩니다.

IDE를 실행하면 아래와 같은 코드가 보이게 됩니다. 스케치는 c언어라고 보시면 됩니다. 근데 main함수가 안보이죠? 스케치는 setup함수와 loop함수가 기본 구조로 이루어져 있습니다. setup함수는 아두이노 보드에 전원을 넣었을때나 보드에 있는 리셋 버튼을 눌렀을때 한번만 호출 되는 함수 입니다. loop함수는  setup함수 이후에 계속 반복해서 실행되는 함수입니다. setup 함수에서는 주로 라이브러리 로드, 변수 초기화, 보드의 핀 모드 설정과 같은 작업을 해주고 loop함수에서는 실제로 구현하고자 하는 기능을 코딩하면 됩니다. 스케치의 구조, 함수, 변수에 대해 좀더 자세한 내용을 알고 싶다면 www.arduino.cc/reference 를 참고하시면 됩니다.


void setup() {

  // put your setup code here, to run once:



}



void loop() {

  // put your main code here, to run repeatedly:



}