[피지컬컴퓨팅] 아두이노에 대하여

2018. 7. 11. 16:08Study_ing/About_Programming

#서론_기본으로 돌아가자

생체신호 응용 프로젝트를 아두이노로 구현해보겠다 생각했는데, 막상 PCB보드에 올라가는 부품들을 보니 막연한 기분이 들었습니다. 아마, 내가 아두이노에 대해서 잘 모르고 있기 때문이 아닐까 생각이 들어, 먼저 아두이노에 대해 충분한 사전 조사를 실행하고 본 포스트를 통해 정리해보고자 합니다.


#본론1_아두이노는 무엇일까?

아두이노 공식 홈페이지에 접속하면 아두이노에 대한 설명과 그 활용법, 다양한 프로젝트에 관해 볼 수 있습니다. 우선, 본 홈페이지에서 설명하는 아두이노에 대해 간략히 정리해보았습니다.

(1) 아두이노란?
아두이노는 하드웨어와 소프트웨어를 좀 더 쉽게 연결하여 사용하기 위한 오픈소스[각주:1] 플랫[각주:2]입니. 조금 더 쉽게 설명하자면, 아두이노는 아주 기초적인 컴퓨터라고 말할 수 있어요. 마치 키보드 타자를 입력하듯이 아두이노 보드에 연결한 센서를 통해 신호를 입력하면 모니터에 글자가 나타나는 것처럼 원하는 결과를 보이도록 명령할 수 있습니다. 물론, 그렇게 하기 위해서 아두이노 IDE[각주:3]를 통해 작성한 텍스트 코드를 컴파일하여 아두이노 보드에 올리는 과정을 거쳐야 하지만, 전자/프로그래밍 관련 지식이 부족한 학생들 또한 쉽게 다룰 수 있도록 제작된 플랫폼이기에 난이도가 높지 않아요. 현재, 전세계적으로 많은 사람들이 아두이노 프로젝트를 개발하며 커뮤니티를 형성했고, 이제 단순한 8비트 보드에서 벗어나 IoT 애플리케이션, 웨어러블, 3D 프린팅 등 광범위한 분야에서 활용하고 있죠.

(2) 왜 아두이노를 사용해야 할까?
아두이노를 사용하는 이유는 다음과 같이 정리할 수 있습니다.
맥, 윈도우, 리눅스[각주:4]와 같이 보편적으로 사용하는 OS에서 실행됩니다.
② 기타 마이크로 컨트롤러 플랫폼(라즈베리파이 등)에 비해 구매 비용이 상대적으로 저렴합니다.
③ 초보자가 접근하기 쉬우며 숙련자 또한 유연하게 사용할 수 있습니다.
④ 매우 다량의 예제 프로젝트가 존재합니다.


#본론2_아두이노의 구성

아두이노라는 플랫폼을 구성하는 아두이노 보드(하드웨어)와 아두이노 IDE(소프트웨어)에 대해 조금 더 알아볼까요?

(1) 아두이노 IDE(통합 개발 환경)
아두이노 IDE는 아두이노 프로그래밍 언어를 사용하여 작성한 코드를 디버깅하고, 컴파일하고, 링킹하여 아두이노 보드에 명령을 내리기까지 모든 작업을 수행할 수 있도록 제공되는 아두이노 소프트웨어입니다. (아두이노 사이트를 통해 다운로드 받을 수 있습니다.) 이 IDE를 통해 스케치 파일[각주:5]을 생성할 수 있는데, 이 스케치 파일은 아두이노 보드에게 전달될 명령을 예쁘게 정리하고 포장한 업무 지시 사항이라 볼 수 있어요.

<그림1 아두이노 IDE 구성>

아두이노 IDE는 다음과 같이 구성됩니다.
① 툴바: 아두이노 IDE에서 가장 많이 사용하는 기능의 버튼 모음입니다.
    - 확인/컴파일: 편집 영역에 작성한 코드를 디버깅/컴파일합니다.
    - 업로드: 편집 영역에 작성한 코드를 디버깅/컴파일하여 아두이노 보드에 업로드합니다.
    - 새로 만들기: 새로운 스케치를 생성합니다.
    - 열기: 기존에 작업한 스케치를 불러옵니다.
    - 저장하기: 현재 작업 중인 스케치를 저장합니다.
    - 시리얼 모니터: 아두이노 보드와 컴퓨터가 주고 받는 정보를 확인할 수 있는 모니터를 엽니다.
② 탭 목록: 스케치에 포함된 모든 파일을 탭 형식으로 표시한 목록입니다.
③ 편집 영역: 텍스트 코드를 입력하는 공간입니다.
④ 콘솔 영역: 아두이노 IDE와 관련된 상태가 표시되는 영역으로 에러를 확인할 수 있습니다.

(2) 아두이노 보드

현재 가장 많이 쓰이는 보드는 아두이노 우노 R3 버전입니다. (2018년 8월 기준) 사용도에 따라 축소 혹은 확장된 버젼을 사용하기도 하지만 대부분은 우노 보드를 사용합니다.

아두이노 우노 R3는 다음과 같이 구성됩니다.
ⓐ USB 포트: 컴퓨터를 통해 전압을 공급받거나 컴퓨터와 통신하는 통로 역할을 합니다.
ⓑ 리셋 버튼: 아두이노 보드에 업로드된 소프트웨어를 리셋합니다.
ⓒ 13 LED: 13번 핀과 연결된 LED로, 핀의 상태가 HIGH인 경우 LED 상태가 ON으로 변합니다.
ⓓ 디지털 핀: 디지털 값을 입출력하는 핀으로 GND는 (-) 전압 위치를 의미한다. 물결 표시가 되어 있는 핀(3, 5, 6, 9, 10, 11번)은 아날로그 출력이 가능합니다.

ⓔ 전원 LED: 전원이 연결되면 불이 들어오는 LED입니다.
ⓕ ICSP 핀: 보드에 직접 프로그래밍할 수 있는 통신 포트이다. 펌웨어[각주:6]나 부트로더[각주:7]를 업로드할 수 있습니다.
ⓖ 
메인프로세서: 아두이노 보드의 중앙처리장치(CPU[각주:8])이다. ATMEGA328 혹은 MEGA328P를 사용합니다.
ⓗ 아날로그 핀: 아날로그 값을 입출력하는 핀입니다.
ⓘ VIN: 핀을 이용한 외부 전원을 사용할 경우 사용합니다.
ⓙ GND: (-) 전압에 해당하는 핀입니다.
ⓚ 전원 출력: 보드의 레귤레이터에서 생성된 전원(5V 혹은 3.3V)을 출력합니다.
ⓛ DC 입력: USB 포트를 사용하지 않고 보드를 동작하기 위해 사용합니다. 7~12V DC 어댑터를 통해 전원을 공급받습니다.
ⓜ 정전압 레귤레이터: 레귤레이터는 외부에서 들어오는 전압을 특정 전압으로 조정합니다. 아두이노 우노 보드에서는 LM1117 칩을 통해 출력 전압을 5V로 공급하며, 1A 전류를 처리할 수 있습니다.
ⓝ IC 소자: 하나의 반도체 기판 위에 여러 개의 트랜지스터와 회로 구현에 필요한 저항, 커패시터 등을 집적화시킨 회로입니다. 집적회로라고도 불립니다.


#결론_만만히 볼 수 없다

해당 포스트를 작성하면서, 그동안 아두이노에 대해 '쉽다!'라는 얘기만 들어서 아두이노에 대해 너무 만만히 보았다는 것을 깨달았습니다. 생각보다 많으며 유기적으로 연결되어 있는 부품들, 그로 인해 만들 수 있는 놀라운 양의 프로젝트. 대학교 재학 시절 논리회로, 컴퓨터 구조 류의 수업은 재능이 없다고 확신했는데 왜 만만히 생각했을까 싶네요 ㅜㅜ... 그래도 천천히 찾아보고 공부하니 아예 못할 것은 또 아닌 듯 합니다.

  1. 창작자가 창작물에 대한 특허권, 저작권 등을 포기한 소스를 의미한다. 오픈소스에 대한 사용, 복제, 배포 등의 모든 재창작 및 상업적 사용이 가능하다. [본문으로]
  2. 소프트웨어 프로그램을 구동하는데 필요한 하드웨어와 소프트웨어의 결합을 의미한다. 운영체제, 컴퓨터 아키텍처라고도 하며, 대중에게가장 익숙한 플랫폼은 윈도우 시리즈이다. [본문으로]
  3. 코딩, 디버그, 컴파일, 배포까지 프로그램 개발에 필요한 모든 작업을 하나의 프로그램 안에서 처리할 수 있도록 기능을 제공하는 소프트퉤어를 지칭한다. 통합 개발 환경이라고도 한다. [본문으로]
  4. 맥, 윈도우와 달리 오픈소스인 OS [본문으로]
  5. 확장자는 .ino를 사용한다. [본문으로]
  6. 하드웨어 기능을 할 수 있는 소프트웨어. 하드웨어의 내부 제어 부분중 저장공간에 입력된다. [본문으로]
  7. 시스템을 초기화한 뒤 운영체제를 메모리에 탑재하고 동작시키는 프로그램 [본문으로]
  8. 입력 장치로부터 오는 정보를 처리/가공/연산하여 저장공간에 보내거나 명령을 보내는 장치 [본문으로]

'Study_ing > About_Programming' 카테고리의 다른 글

[피지컬컴퓨팅] 서보모터  (0) 2018.07.06
[JAVA] STATIC/ARRAY  (1) 2017.07.22
[Linux] set nu/nonu  (0) 2016.12.21
[OS] 프로세스 메모리 구조  (0) 2016.05.03