보통 UNO 하면 마이크로콘트롤러 칩 타입에따라 SMD타입과 DIP타입 두 가지가 있었지만, 이제 형제가 더 많아졌네요, 아직 R3버전의 SMD타입은 공개되지 않은것 같으므로 현재 아래와 같은 3종류의 UNO가 있습니다. UNO R2 DIP형 UNO R2 SMD형 UNO R3 DIP형
[]R2와 R3의 차이점 요약 일단, R2나 R3나 주 마이크로콘트롤러는 ATMega328 칩을 사용하므로 프로그래밍 가능용량이나 제어핀의 개수와 사용방법이 모두 동일합니다. 다만, USB 인터페이스칩이 변경되었고 헤더핀의 개수가 3개 추가되었습니다. 그렇다고 기본성능이 업그레이드 된것도 아니어서 기존 R2와 동일하게 사용하시면 됩니다.
[]변경된것 1.USB 인터페이스칩이 atmega8u2에서 atmega16u2로 변경됨: 단, (주콘트롤러칩은 R2와 동일하므로) 이것이 아두이노 프로그래밍 가능용량의 증가를 의미하지는 않습니다. 단, USB제어칩을 개조하여 사용할 경우 유용할수있음.
2. 노출 헤더 구멍이 3+1개 추가됨: AREF핀옆에 I2C 헤더소켓 2구가 추가되었음. 단, 여분의 i2c핀이 새로 추가된것이 아니고 기존의 i2c핀(Analog 4번 5번)에 중복 연결된것입니다. (차후 Mega시리즈 같은 다른 아두이노 보드와의 쉴드 호환성을 위한 고려로 여겨짐) 더불어 IOREF 노출 헤더소켓 1구가 Reset핀 옆에 추가되었습니다. (이는 쉴드에서 보드의 작동전원을 파악하는 용도로 사용될 것으로 여겨짐) 물론 이핀도 power pin의 노출 헤더출구 1개가 추가된 것일뿐 없던 제어핀이 새로추가된것은 아닙니다. 나머지 1 구는 미사용 예비용이라네요;;
[]변경되지 않은것 1. 모든 UNO(R2 R3)는 프로세서 속도 및 기억 용량이 동일합니다. 2. 제어가능한 핀의 개수도 동일합니다. 3. 보드 크기와 모양도 그대로 유지 4. 쉴드호환성 동일( R1 R2용 쉴드를 R3에서도 그대로 호환사용가능) 5. 드라이버도 동일 6. 업로딩속도도 동일 (스케치에서 보드 종류를 UNO로 선택하면됩니다.)
Description: This is the new Arduino Uno R3. In addition to all the features of the previous board, the Uno now uses an ATmega16U2 instead of the 8U2 found on the Uno (or the FTDI found on previous generations). This allows for faster transfer rates and more memory. No drivers needed for Linux or Mac (inf file for Windows is needed and included in the Arduino IDE), and the ability to have the Uno show up as a keyboard, mouse, joystick, etc.
The Uno R3 also adds SDA and SCL pins next to the AREF. In addition, there are two new pins placed near the RESET pin. One is the IOREF that allow the shields to adapt to the voltage provided from the board. The other is a not connected and is reserved for future purposes. The Uno R3 works with all existing shields but can adapt to new shields which use these additional pins.
Arduino is an open-source physical computing platform based on a simple i/o board and a development environment that implements the Processing/Wiring language. Arduino can be used to develop stand-alone interactive objects or can be connected to software on your computer (e.g. Flash, Processing, MaxMSP). The open-source IDE can be downloaded for free (currently for Mac OS X, Windows, and Linux).
다루는 내용 . 아두이노 프로그래밍 환경(스케치) 설치하기 . PC에 아두이노 보드 인식시키기 . 프로그래밍한 뒤 아두이노에 전송하여 작동시키기
개요: 본글은 아두이노를 처음 사용하는분들을 위한 안내문입니다. 모든 아두이노 보드의 설치작업은 유사하며, 사용되는 USB시리얼 통신용 칩에 따라 드라이버 파일이나 inf설정 파일만 다릅니다. 본 글을 통해 아두이노 프로그래밍 환경인 스케치(Sketch)를 설치하고, 아두이노 보드를 PC에 인식시킨 후 아두이노에 기본 장착된 LED를 제어하는 프로그램을 전송하여 실행시키는 과정까지 다루고 있습니다. 아마도, 마이크로콘트롤러와 프로그래밍에 대해 아무것도 모르시던 분들도 1시간내에 아두이노에 장착된 LED를 제어해보고 그 가능성을 경험해보실 수 있을실 겁니다.
순서 .아두이노 스케치를 다운로드 받아서 설치하기 .아두이노를 PC에 인식시키기 .스케치(아두이노 개발환경)의 실행 .예제 소스 불러오기(Blink; LED깜빡이) .예제 컴파일 및 아두이노에 전송 .작동 상태 확인
자, 그럼 차근 차근 하나 둘 순서대로 진행해 보겠습니다
1단계. 준비물 확인
준비물
CASE 1 :: 아두이노 보드 자체에 USB시리얼 변환기능이 포함된 제품의 경우 .아두이노 UNO
, Mega2560
.USB 케이블 (A to B 타입단자) CASE 2 :: 아두이노 FIO, Pro, Pro mini, LilyPad 등(내장 USB시리얼변환기가 없는 경우) .아두이노 보드 [
아두이노 리스트
] .FTDI USB시리얼 변환기 [
제품선택 가이드
] .A to mini-B 타입 USB케이블 [
]
아두이노는 Linux , Mac OS, Windows 모두를 지원하며 본 글은 Windows 환경의 경우를 기본으로 소개합니다.
사용하시는 OS용 파일을 선택하여 다운로드 합니다. 본 예제에서는 Windows 를 선택합니다.
다운로드 받은 파일은 zip압축파일이며 이를 원하는 위치에 압축 해제합니다. (*가령 윈도우의 경우 파일명은 arduino-0022.zip(87MB) 이며 버전이 업그레이드되면 제목의 숫자가 증가됩니다.)
압축을 해제하면 arduino-0022 같은 폴더가 보이며 그안에 arduino.exe 실행 파일이 보입니다. 아두이노 개발환경(스케치)은 설치과정 없이 곧바로 실행할 수 있게 배포되므로 이것으로 설치과정이 완료되었습니다. ^^. arduino.exe 를 실행하면 아두이노 개발환경이 열립니다. 일단 종료해 둡니다.
3단계. PC에 아두이노 연결하기
UNO와 대다수의 아두이노 보드들은 PC와 연결시 별도의 전원이 없이 작동이 가능합니다. 즉, USB케이블을 통해 시리얼통신 신호를 주고 받는것과 더불어 전원도 공급받게 됩니다.
호환되는 USB케이블로 PC와 아두이노를 연결합니다. FIO나 Pro mini같은 아두이노의 경우 FTDI USB시리얼 변환보드를 경유해 PC와 연결합니다. 전원 ON상태 표시등(초록색 LED)에 불이 들어옵니다.
4단계. 드라이버 설치하기
아두이노(가령 UNO)와 PC를 케이블로 연결하면, 잠시 후 새장치를 발견하여 드라이버를 설치한다는 메시지가 나오게됩니다. 그리고 몇 초 동안 짱구를 돌리며 열심히 노력하던 우리의 윈도우OS는 결국 자동인식에 실패했다는 메시지를 남기곤 숨어버립니다. (단, 윈도우 환경과 보드 종류에 따라 드라이버를 자동인식하여 설치하는 경우도 있습니다.)
결국 여러분이 직접 드라이버를 골라서 설치해 주셔야하는데요, 많은 분들이 이미 이 작업에 익숙해져 있으실 겁니다. 가령 아래의 순서대로 하시면 됩니다. (다른방법을 사용하셔도 되며, 드라이버 위치만 참고하시면 됩니다.)
.윈도우 시작 > 제어판 > 장치 관리자("장치 및 프린터" 그룹) 를 엽니다. .장치리스트에서 "포트"를 선택하면, "Arduino UNO (COMxx)"라는 장치명이 보입니다. .해당장치를 우측버튼으로 클릭한 뒤 "드라이버 업데이트"를 선택합니다.
.직접 드라이버 검색위치지정을 선택합니다. UNO와 Mega2560 의 경우: > 2단계에서 다운로드 후 압축해제한 arduino-00xx 폴더내에 있는 drivers 폴더를 선택 Pro, Pro mini, FIO, LilyPad등의 FTDI시리얼 보드 사용제품의 경우: > drivers폴더안에 있는 FTDI USB Drivers 폴더를 선택
.위도우가 UNO 장치 인식을 완료하게됩니다.
장치 설치가 완료된 이후엔 장치관리자 "포트" 장치 리스트에서 인식된 아두이노 보드의 COM번호를 알아두는게 중요합니다.
4단계 순서대로 다시 보기 (드라이버 설치 과정 캡쳐이미지, WINDOWS 7 기준) 드라이버 설치과정을 아래의 캡쳐된 이미지 순서대로 다시한번 살펴봅니다.
아두이노와 PC를 연결합니다. 가령, UNO + USB Cable + PC USB 포트 가령, Pro mini + FTDI USB 시리얼 변환기 + USB mini Cable + PC USB 포트
윈도우가 장치를 발견하고 드라이버 자동설치를 시도합니다.
드라이버 자동설치에 실패합니다.
(아두이노 종류와 OS에 따라 자동설치 되는 경우도 있습니다.)
참고로, UNO와 Mega2560의 경우 MAC OS와 Linux에서 자동 인식된다고 합니다.
정상적으로 장치설치가 완료되면 포트(COM & LPT) 리스트에 등록되게 되지만,
정상인식이 되지 않아 장치관리자 "기타장치"에 Arduino UNO란 이름으로 등록되어있습니다.
다음의 절차를 통해 장치를 정상 인식시킵니다.
장치인식을위해 해당 장치(가령 Arduino UNO)를 우측버튼으로 클릭 후, 드라이버 소프트웨어 업데이트를 선택합니다.
자동검색을 하지말고, 수동으로 컴퓨터에있는 드라이버 찾아보기를 선택합니다.
찾아보기 버튼을 누르고, 해당 장치드라이버가 있는 폴더를 찾아 지정해줍니다.
UNO와 Mega2560의 경우, 2단계에서 설치한 아두이노 프로그램 폴더(arduino-00xx)내에 있는 drivers 폴더를 선택해줍니다.
FIO, LilyPad, Pro, Pro mini등은 drivers폴더안에 있는 FTDI USB Drivers 폴더를 선택해줍니다.
*참고사항: UNO와 Mega2560은 dirvers폴더에 들어있는 inf(설정)파일 한개만 있으면 됩니다.
기타 구형 아두이노들은 FTDI칩을 사용하므로 FTDI칩 인식용 장치드라이버 파일들이 필요합니다.
보안경고가 나오면 설치 허용을 선택합니다.
장치 인식이 완료되었습니다.
장치관리자 > 포트 정보를 보면 Arduino UNO(COMxx)와 같이 새로운 COM포트로 등록된 것을 확인할 수 있습니다.
컴퓨터 환경에 따라 COM번호는 다른 번호로 할당될 수 있습니다.
위 과정은, Windows OS 버젼별로 약간의 차이가 있지만 거의 비슷합니다.
자, 이제 아두이노 프로그램 설치와 장치인식이 모두 완료 되었습니다. 이제 본격적으로 프로그래밍을 해보고 아두이노에 전송하여 작동시켜 보도록 합시다!
5단계. 아두이노 개발환경(스케치)을 실행합니다.
2단계에서 설치된 arduino.exe 를 실행합니다. 앞으로 자주 실행을 해야 하므로 단축아이콘을 만들어두면 편리합니다.
심플 담백한 스케치화면
6단계. 아두이노 보드종류 선택하기
'단순 무식한 컴파일러에게 아두이노의 종류를 알려주세요!'
아두이노 보드들이 많은 부분에서 호환성을 갖고 있지만, 구동속도( 8MHz, 16MHz), 전압레벨( 3.3V , 5V), 포트의 수, 프로그래밍 용량등의 차이가 있으므로 개발을 할때 이를 고려해 줘야 합니다. 스케치 개발환경에서 여러분이 사용하는 아두이노의 종류가 무엇인지 자동인식하지 못하므로 직접 보드 종류를 지정해 주는 과정을 꼭 하셔야합니다.
스케치 메뉴에서 Tools > Board를 선택한 뒤 목록에서 자신의 보드명을 찾아서 선택해 줍니다.( 가령, Arduino UNO)
7단계. 시리얼 포트 선택하기
'스케치에게 아두이노와 통신할 COM번호를 알려줍니다'
PC와 아두이노간의 프로그램 전송 및 데이타통신을 위해서는, 4단계에서 아두이노 통신용으로 등록된 COM번호(위 경우 COM9번)를 지정해줘야합니다.
스케치 메뉴에서 Tools > Serial Port를 선택한 뒤 연결된 아두이노 포트번호를 지정합니다.
연결된 시리얼 장치가 여러개일때 아두이노의 COM번호 식별이 안될경우, 아두이노를 케이블에서 제거할때 목록에서 사라지는 COM번호가 아두이노 할당 COM번호입니다. (4단계에서와 같이 장치관리자에서 포트 리스트를 확인해도 됩니다.)
8단계. Blink 예제 소스코드 불러오기
스케치 메뉴에서 File > Examples > 1.Basics > Blink를 선택하여 불러옵니다. 새로운 창이 뜨면서 아래와 같은 간단한 예제소스코드가 불러들여지게 됩니다.
아래의 소스는 아두이노 13번핀을 1초마다 ON, OFF를 반복하게 합니다.
/* Blink Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain. */
void setup() { // initialize the digital pin as an output. // Pin 13 has an LED connected on most Arduino boards: pinMode(13, OUTPUT); }
void loop() { digitalWrite(13, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(13, LOW); // set the LED off delay(1000); // wait for a second }
9단계. 컴파일 및 아두이노에 전송하기
verify & compile 하기 (생략 가능) 소스코드를 검증하고 컴파일하기 위해 재생버튼같이 생긴 verify & compile 버튼을 눌러줍니다.
Verify/Compile
참고로, 컴파일이란 사람이 이해가능한 소스코드를 기계어로 번역하는 과정입니다. 컴파일을 하기전에는 아두이노의 종류에따라 일부 설정을 달리하여 컴파일하므로 자신이 사용중인 아두이노 보드의 종류를 잘 설정(6단계 참고)해줘야합니다. 보드 종류가 틀리면, 컴파일 결과를 전송하거나 전송 후 작동시 문제가 될 수 있습니다. 앞으로 소스코드를 수정한 뒤 검증이 필요할때마다 이 버튼을 눌러주면 소스코드 검증이 이뤄지고 문제시 오류메시지를 확인할 수 있습니다.
upload 하기 이제 컴파일된 정보를 아두이노로 전송하기위해 upoad 버튼을 눌러줍니다. ctrl-U 단축키를 눌러도 됩니다.
Upload to I/O Board
참고로, verify & compile 버튼을 누르지 않고 곧바로 upload버튼을 눌러도 됩니다. (이경우, 자동으로 컴파일 과정이 수행된 후 업로드가 이뤄지게 됩니다. 그리고, 소스코드 수정 후 곧바로 upload 버튼을 눌러주는 것 보다는 verify버튼을 눌러서 코드검증을 한 뒤에 문제가 없는경우 upload하는 것을 추천드립니다. )
10단계. LED Blink - 발광다이오드의 깜빡임 확인하기
upload버튼을 누르면 아두이노 시리얼통신 관련 Tx RX LED들이 빠르게 점등되는것 을 볼 수 있습니다. 아두이노와 PC가 서로 정보를 주고(Tx, Transmit) 받기(Rx, Receive) 하면서 컴파일된 정보를 전달하는 과정입니다. 이과정은 UNO의 경우 5초도 안걸립니다.
소스코드에서 정의한대로 아두이노 보드를 보면 LED 하나가 1초 주기로 점등하는 것을 확인 할 수 있습니다. UNO를 비롯한 최근의 모든 공식 아두이노 보드들은 디지탈 13번 핀에 LED와 저항이 달려있으므로 별도로 LED를 장착하지 않아도 간단한 LED 제어 테스트를 해볼 수 있습니다.
UNO LED Blink 예제 실행 장면
11단계. 문제처리 내용추가 예정
12단계. 참고사항
. LED사용할땐 꼭 저항과 함께 사용하세요 직접 원하는 핀에 LED를 장착하여 작동하려면 저항과 함께 연결해 주시기 바랍니다. [
아두이노UNO를 사용하여 새로운 타입의 아두이노 SoftPot(위치감지)센서와 서보모터 연동 사용예입니다.
아두이노 스타터킷 및 아두이노 인벤터킷에 포함된 새로운타입의 센서입니다.
SoftPot센서는 세개의 단자가 있으며 기본 작동법은 가변저항과 같습니다. 전압핀과 GND을 연결하면 나머지 단자를 통해 접촉위치에 해당되는 전압을 측정할 수 있습니다. 아래의 회로도 참조
[그림1. SoftPot센서 단자안내 - 대응 회로도(사용법은 가변저항과 같습니다.)
아두이노 스케치 소스는 아래와 같습니다. 스케치에서 기본제공하는 서보제어 예제코드를 거의 그대로 사용했습니다. 참 쉽죠잉~!
알림: 스케치제공 서보모터 작동 기본예제 코드는 작동범위를 0~180으로 설정했지만, 실제로 서보모터의 종류에따라 이값의 범위를 지원하지 못하는경우가 있습니다. 이경우 서보모터에 무리가 가게 되므로 제경우 10~170으로 값의 범위를 줄여줬습니다. 항상 사용하려는 기기의 한계범위를 고려해서 프로그래밍을 해줘야 기기를 오래오래 고장없이 사용할 수 있습니다.
#include <Servo.h>
Servo myservo; // 서보모터제어를 위한 객체를 생성합니다
int potpin = 0; // 센서입력을 받은 아날로그핀을 A0로 설정합니다. int val; // 센서입력(아날로그)값을 임시저장할 변수입니다
void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object }
void loop() { val = analogRead(potpin); // A0에 연결된 SoftPot센서의 값을 읽어옵니다. val = map(val, 0, 1023, 10, 170); // 아날로그입력값 0~1023을 서보모터에 맞게 10~170으로 변환합니다. myservo.write(val); // 서보모터신호를 센서 입력값에 따라 변경합니다 delay(15); // 약간의 지연시간을 줍니다. }