아두이노 부품 배선 주의사항
이제부터 본격적으로 부품들을 아두이노 나노에 배선 연결하고 상호작용하는 기능들을  개발하게 되는데 부품 배선과 관련된 작업들은 다음 순서로 해야 한다. 
1) 반드시 전원을 차단한 상태에서 아두이노와 연결할 부품들과의 배선 연결한다.
2) 연결 상태를 확인하고 USB를 연결하여 전원공급 및 PC 개발환경 연결 
   (특히 전원 +/-를 잘못 연결했는지 여부에 주의하고 전원이 공급되자 마자 보드에서 연기가 나거나 작동이상이 발견되면 재빨리 연결을 끊고 배선상태 확인해야 한다)  
3) 프로그램 업로드 및 테스트 수정작업 .
4) PC와의 USB연결을 끊고, DC어댑터 전원공급 만으로 정상작동여부 확인 
 ( USB를 통한 전원공급과 DC어댑터를 통한 전원공급을 동시에 연결하지 말고, 반드시 둘 중 하나의 방식으로만 전원을 공급해야 한다. )

  ***주의사항***  보드에 전원이 연결되어 있는 상태에서는 보드를 불필요하게 만지작 거리거나 금속성  물체와 접촉되지 않도록 주의해야 한다. 배선이 합선되거나 해서 과전류가 흐르면  아두이노 부품이 과열되어 순식간에 망가져 버린다.

 

나노 프로토타이핑 보드

아두이노 나노에 센서,모터 등 여러가지 부품들을 연결하게 되는데, 대부분의 부품들은 신호외에도 전원공급핀을 연결해야 한다. 아두이노 나노에는 5V, GND 핀의 갯수가 제한되기 떄문에  여러 부품들을 연결하기 위해서는 배선작업이 복잡해지는데 이를 간편하게 할 수 있도록 많는 수의 전원공급핀을 추가하는 등 아두이노 나노를 이용하여 손쉽게 여러가지 실습을 해볼 수 있도록 지원하는 보드

 

 

1) 아두이노 나노 도킹단자 : 아두이노 나노를 납땜 작업없이 착탈식으로 꽂아 넣으면  되므로 아두이노 나노가 고장나서 교체할 때 등에도 편리하다. 그림과 같이 아누이노 나노의 USB단자가 보드 바깥쪽을 향하게 장착해서 사용한다.
2) 전원 입력잭 : DC 5V ~ 12V 어댑터  전원을 연결한다.  프로그래밍 테스트할 때에는   아두이노나노의 USB단자를 PC에 연결하여 전원을 공급하지만, PC에 연결없이 단독으로  가동시키고자 할 때에는 이곳을 통해 전원을 공급한다.
3) 입출력핀 : 아두이노나노의 각종 입출력핀과 연결된다. 각 핀에는 전원공급용핀들도 함께  있으므로 연결하기 간편하다. ( 파란색 S 핀: 신호 연결용 핀,  붉은색 V핀에 +5V, 검정색  G핀에 - 전원이 공급되므로 +/-를 거꾸로 연결하거나 합선되지 않도록 주의해야 한다) 
4) I2C용 단자 : LCD모니터등을 연결할 때 사용하는 I2C용 4개 단자 ( 5V+, -, SCL,SDA )가  사용하기 편하게 별도로 구분되어 있다.
5) DC전원선 : DC어댑터의 전압을 그대로 사용할 수 있는 단자. 이곳을 통해 워터펌프 등 DC어댑터 12V 전압이 필요한  부품을 연결할 수 있다.           

 

LED 전구

LED 전구는 + / - 극성이 있으므로 잘 구분해서 연결해야 하는데 다리가 조금 긴 쪽이  +로서 아두이노 출력핀 단자에 연결하고 반대쪽을 -(GND)에 연결해야 한다.   

 

 

컬러별 LED 전구 사양  
   - LED 컬러별로 허용전압이 2.3~4.0V 이므로 아두이노 출력핀에서 나오는 5V를  그대로 연결해서는 안되고, 반드시 저항을 달아 전압을 낮추어 주어야 한다.

   -특히 백색/청색에 비해 적색/황색이 허용전압이 낮으므로 적색LED를 아두이노5V  출력핀에 직접 연결하면 순간적으로 망가져 버린다.

 

***본 키트에 포함된 전구는 알맞은 저항과 케이블이 미리 연결되어 가공된 것이므로  검정색 케이블에 -, 붉은색 케이블에 5V + 측에 연결하면 된다. 

 

아두이노와 LED전구 연결

 

 

테스트 프로그램

다음 소스코드를 아두이노로 업로드한 후, LED 전구들이 번걸아 가며 깜박이는지  확인한다.

1 line : 13번 핀을 사용하기 위해 이름을 pinRed라고 지정한다. 
5 line : pinRed(13번핀)을 출력용으로 사용하겠다고 선언한다
7~8 line : 처음에는 LOW값을 주어 LED전구를 끈다.
12~14 line : 붉은색 전구를 켜고 0.5초 대기한 후 끈다  
15~17 line : 파란색색 전구를 켜고 0.5초 대기한 후 끈다 
18 line : 1초 대기후 위 작업을 반복한다. 

아두이노 개발환경
 


a. 컴파일 버튼 : 소스코드 편집기에 있는 내용을 컴파일한다.  소스코드에 문법적인, 구조적인 에러가 없는지 확인하여 메시지 영역에 표시된다.

b.업로드 버튼 : 컴파일 + 업로드를 일괄작업 실행한다. 소스를 컴파일해서 아두이노에   올려주는 과정까지 이 버튼 하나로 실핸된다. 소스코드에 문제가 있거나 아두이노와의 USB 연결에 문제가 있거나 업로드 과정에 문제가 있는 경우 메세지 영역에 표시된다.

c.시리얼 모니터 버튼 : 이버튼을 누르면 별도의 시리얼모니터 창이 표시된다.  USB로 PC 와 연결된 상태로 아두이노가 동작하면 아두이노에서 PC로 메시지를 보낼 수 있는데, 이 Serial Monitor를 통해 그 메시지를 확인할 수 있으므로 보통 디버깅 용도로 사용한다.

d.소스코드 편집기 : 아두이노 소스코드를 일력하고 편집하는 영역.

e.메시지 영역 : 아두이노 개발환경을 사용하면서 발생하는 알림 메시지나 컴파일, 업로드 결과 등등 메시지가 표시되는 영역.

 

아두이노 프로그래밍 언어

 

아두이노에서는 C 언어를 사용한다.  기본적으로 C언어 작성문법이 그대로 적용되므로 여기에서는 아두이노용으로 추가된 함수나 아두이노에서 다른 부분에 대한 설명만을 한다. 

따라서 C언어에 대해 기본지식이 없는 사람은 다른 책자나 다음 링크된 자료 등으로 C언어 기본문법에 대한 사전학습이 필요하다.  
http://playground.arduino.cc/uploads/Main/arduino_notebook_v1-1.pdf
 

1. 아두이노에서의 DATA TYPE 
 1) HIGH/LOW : 입출력핀을 통해 전류의 흐름을 제어할 때 가해지는 전압을 지정하기 위한  값으로서 HIGH는 5Volt를 의미하며 LOW는 0Volt를 의미한다.

 

2) int : 정수를 의미하는 것은 일반적인 C언어와 같으나,  아두이노에서는 -32,768 ~ 32767까지 범위의 숫자만 사용할 수 있고 더 큰 정수를 사용하고자 할 경우에는 long 타입을 사용 해야 한다는 것이 유의해야 한다. 예를 들어 int 타입 변수의 현재 값이 32,767인데 여기에 1을 더하면 -32,768이 되어버리므로 프로그램 작동이 엉망이 되어 버릴 수 있다.

 

3) TRUE/FALSE : 조건문 등에서 사용하기 위한 상수로서 TRUE는 1, FALSE는 0 값이 사용되는 것으로 되어 있으나 실제로는 0이면 FALSE, 기타 모든 값은 TRUE로 판정된다.
 

 2. 핀단자를 통해 연결되는 부속장치들을 제어하기 위한 함수. 

1) pinMode(pin,mode) :  pin에 지정하는 번호의 핀을 지정하는 mode(INPUT또는OUTPUT)로 사용하겠다고 선언한다. 예를 들어 pinMode(5,OUTPUT)하면 디지털 5번핀을 출력용으로 사용하겠다는 의미이다.

digitalRead(pin)  : pin에 지정된 디지털핀으로 입력되는 신호값을 읽어 들인다.  결과값은 HIGH (5V) 또는 LOW( 0V) 둘 중 하나의 값인데, 3V를 기준으로 이보다 크면 HIGH값으로, 낮으면 LOW값으로 판정된다.  
 
2) digitalWrite(pin,value) : pin에 지정된 번호의 핀에 value(HIGH 또는 LOW) 값을 출력하라는 함수이다. 즉 digitalWrite(3,HIGH) 를 실행시키면 디지털 3번핀에 5V 전압 전류가 흐르게  된다. 

 

3)analogRead(pin)  : pin에 지정된 아나로그핀으로 입력되는 신호값을 읽어 들인다. 디지털 신호값은 HIGH 또는 LOW 둘중 하나 이지만 아날로그핀에서는 이를 세분하여 0 ~ 1023까지의 숫자로 구분해 준다. 따라서 ON/OFF 등 단순한 구분이 아닌 스피커볼륨의 크기나  각종 센서들의 저항값을 세밀하게 구분할 때 등에 사용할 수 있다.  

 

4) analogWrite(pin,value) :  함수이름은 아날로그이지만 디지털핀에 출력하는 함수이다. 단  아날로그처럼 세분된 값을 출력하기 위해 PWM방식 (Pulse Width Modulation:  전압은  동일하되 출력되는 시간 간격을 조절하여 전체적인 출력량을 조절하는 방식)으로 출력한다. 출력량을 조절하여 출력할 수 있으므로  LED전구의 밝기를 조절하거나 모터의 동작을 제어하기 위한 용도로 활용할 수 있는데, 아두이노나노의 경우 3, 5, 6, 9, 10, 11번핀 총 6개 핀만 이런 용도로 사용할 수 있다.


3. 개발과정에서 디버깅용으로 활용가능한 함수. 

Serial.begin( rate)  : rate로 지정하는 속도로 통신을 시작하겠다는 의미이다. 기본적으로 디지털핀 0번으로 수신, 1번으로 송신하는 방식인데 아누이노가 USB를 통해 PC에 열결되어 있으면 PC와의 통신을 의미하며 앞페이지의 시리얼통신 모니터를 통해 송수신내용을 확인할 수 있다. 단 통신하는 양측은 속도가 동일해야 하므로 이 함수로 지정하는 속도와 동일한  값을 PC의 시리얼모니터의 속도로 지정해 주어야 한다.

 

Serial.print( data ) 시리얼통신으로 data값을 전송하는 명령이다. 전송된 값은 PC의 시리얼모니터 영역에 표시므로 이 함수를 이용하여 프로그램의 작동 상황을 모니터링하는 용도로 사용할 수 있다. 즉 아두이노 프로그램이 동작중 어떤 변수의 현재값을 알고 싶을때 이 함수를 이용하여 보내면 PC의 시리얼모니터에 표시되므로 보고 확인할 수 있다.  print문 대신 println문을 사용하면 화면표시 후 줄바꿈까지 실행되어 보기 편하게 표시된다

 

첫 프로그램 실행해 보기
 


1. 위 그림처럼 [파일 - 예제 - 01.Basics - Blink] 를 선택한다. 그러면 소소코드 편집기에 새로운 프로그램 소스코드가 불려져 온다.

 

 

2. USB케이블로 아두이노 나노를 연결하고 [툴 - 포트] 영역에 새로 표시되는 포트를 선택한다.

 

3. [업로드] 버튼을 클릭하면 컴파일 및 업로드 과정이 진행되고 잠시후에 메세지영역에 완료되었다는 메세지가 표시되고 작동이 시작된다.  

즉, 아두이노나노 보드에 있는 붉은색 LED가 1초간격으로 깜박이기 시작한다.

 

 

"avrdude:stk500_... "Error가 발생될 경우

 

사용하고 있는 아두이노 IDE와 아두이노 나노의 Bootloader 버전이 맞지 않아 발생되는 경우가 많다. 즉 아두이노IDE 는 최신 버전(1.8.X)을 다운 받아 사용하는데 아두이노 나노 모듈은 이전 버전용으로 출시된 것을 사용하는 경우에 프로그램 로드가 되지 않고 위와 같은 에러가 발샌된다. 이때에는 다음과 같이 프로세서 메뉴에서 ATmega329P 대신에 ATmega328P(Old Bootloader)를 선택하고 업로드 작업을 다시 해보도록 한다.

 

 

 

첫 프로그램에 대한 설명
 


아두이노 프로그램은 기본적으로 setup함수(1~4 line), loop 함수(6~12line) 두개의 함수로 구성된다.

- setup 함수 : 아두이노에 전원이 들어오거나 reset 되었을 때 처음 1회만 실행되는 함수.  따라서 아두이노가 가진 pin 들을 초기화하거나 소스코드내에서 사용되는 변수 및 각종 하드웨어를 초기화 하는 코드를 작성한다.
- loop 함수: setup이 실행된 후 무한반복해서 호출되는 함수이다. 즉, 아두이노가 작동되는 동안 계속해서 반복 수행할 일의 내용을 지정하는 동작코드를 작성한다.
- 전역변수나 라이브러리 헤더include문 등 선언사항은 setup함수 윗부분에 작성한다.

 

2 line : 디지털 13번핀을 OUTPUT모드로 선언한다. (13번핀은 보드상의 LED와 연결되어 있다. 즉 별도의 하드웨어 연결없이 즉석에서 예제를 실행해보기 위해 보드상의 LED를 출력용으로 사용하겠다는 의미이다.)

8 line : 13번핀으로 HIGH신호 즉 5V 전압을 출력하라는 명령. 실행되면 보드상의 붉은색 LED가 켜진다.

9 line :  1000밀리세컨드 즉 1초 동안 대기하라는 명령. 윗줄에서 LED가 켜진 상태로 1초간 대기하게 된다.

10~11 line : 13번 핀에 LOW신호(0V)출력, 즉 LED를 끄고 1초간 대기하라는 명령이다.

-loop()함수 안에 있는 8~11 line명령이 반복 실행되므로 LED는 1초간격으로 켜졌다가 꺼지는 동작을 계속 반복하게 된다.     

아두이노(Arduino)?

오픈소스를 기반으로 한 단일 보드 마이크로컨트롤러. 즉, 하나의 컴퓨터인데 저장공간,입출력장치 등을 생략하여 자그마한 하나의 보드형태로 소형화하고 대신 임의의   입출력장치들을 여러개 연결할 수 있도록 범용 입출력 연결 단자들만을 가지고 있다.
아두이노는 다수의 스위치나 센서로부터 값을 받아들이거나, LED나 모터와 같은 외부 전자  장치들을 통제함으로써 환경과 상호작용이 가능한 물건을 만들어낼 수 있으며, 이러한 것들을 개발하기 위한 개발환경도 무료로 오픈되어 있고 사용하기도 매우 간편하게 되어있다.  따라서 전세계에  수많은 사람들이 이를 이용해 각가지 자신만의 기기들을 개발하고 있으며  개발된 사례 및 샘플코드들도 공개된 것이 많아 배우기도 쉽다.
아두이노의 제작방법은 오픈되어 있어 누구나 비슷한 보드를 만들어낼 수 있으므로 시중에는 수십가지 종류의 아두이노 보드들이 있어 자신의 용도에 맞는 것을 선택할 수 있는데   대표적으로 많이 사용하는 것들은 다음과 같다.  

 

 

 

아두이노 나노

 

1) Mini USB 단자  : PC와 연결하여 전원도 공급하고 PC와의 통신을 통해 프로그램을 설치하거나 상태를 확인하는 등 개발과정에서 주로 사용하는 단자이다. 

2) VIN : PC와 연결되지 않은 상태에서도 동작시키기 위한 전원단자로서 5 ~12V의 전압을 가해 주면 아두이노 나노 내부적으로 5V로 조절하여 사용된다.  

3) 디지털 I/O핀 D0 ~ D13번 
    - 디지털 신호 (HIGH는 LOW값)을 입출력하기 위한 핀들로서 각종 센서나 부품들을  연결할 수 있다. Digital이라는 의미로 D라는 문자 뒤에 핀번호가 표시되어 있다. 
     -D0번과 D1번은 기본 통신용으로 사용되므로 TX, RX로 표시되어 있으며,  D13핀은  내부LED와 연결되어 있어 초기 부팅시 등에 수시로 내부LED가  깜박일때 D13번핀에도 동일한 전류가 흐르므로 이를 감안하고 사용해야 한다.
4) 아날로그 Input핀 A0 ~ A7번
   - 단순한 HIGH/LOW신호가 아닌 세분화된 값(0~1023)을 읽기 위한 핀으로서 각종  센서로 부터 측정값을 읽어들일 때 주로 사용한다.   

4) 5V, 3.3V출력핀 : 연결되는 센서나 부품들에 전원을 공급하기 위한 단자. 

5) Memory  : 프로그램제작용으로 사용할 수 있는 영역은 약30KB로서, 큰 용량은아니지만  웬만한 제어용 기기 제작용도로는 사용할 수 있다.   

 

아두이노 개발환경의 설치

 

1) PC에 아두이노 IDE 개발환경 설치 


    -  http://www.arduino.cc 에 접속하여 Download메뉴에서 IDE를 다운받아 설치.
    -  화면 아래 왼쪽의 JUST DOWNLOAD를 눌러 다운로드 받으면 됨.
    -  설치 진행중 driver 설치하겠냐는 질문에 예로 계속 진행
    -  설치가 완료되면 바탕화면에 Arduino 아이콘이 생성됨

 

 

2) 아두이노 나노 연결  

 


   - Arduino를 기동시키고 툴 메뉴에서 보드: Arduino Nano, 프로세서: ATmega328 선택
   - 아두이노나노를 USB케이블로  PC에 연결시키고 툴메뉴 포트에 새로운 포트번호가  생성되는지 확인하여 새로 생성되는 포트번호를 선택한다

 

 

아두이노 포트가 자동연결되지 않을 경우

 

- Made in Italy 아두이노정품은 USB 연결 드라이버가 IDE에 포함되어 있어 처음부터  자동으로 연결되지만,  Made in China 호환보드일 경우 전용 CH340 USB드라이버를 한번 설치해 주어야 만 다음 부터 자동연결 된다.   

- CH340 드라이버 설치 방법 :  http://www.wch.cn/download/CH341SER_ZIP.html 에   접속하여 CH341SER.ZIP 파일을 다운로드하여 설치하면 된다.

- 압축파일  풀기 하면 CH341SER 폴더가 생성되고 그 아래 또 생성된 CH341SER 안의 setup.exe 실행한다.

 

 

 

- 드라이버 설치가 완료되면 Arduino IDE의 툴 메뉴의  포트부분에 연결된 포트가 표시된다.

+ Recent posts