아르두이노에 필이 꽃힌지 2~3주 되었나....

국내 아르두이노 총판인 플러그 하우스가 회사 근처에 있어 충동 구매를 해버렸다.

처음에는 값싼 AVR보드를 사서 arduino부트로더를 올려볼까 생각했는데 (보드는 싼데 isp케이블과 통신 케이블까지 구입하면)거의 비슷한 돈이 들어가고 호환성은 떨어지기 때문에 정품을 구입했다.

충동구매라곤 하지만 예전부터 해보고 싶다고 생각하던것이 아르두이노로 구현 가능하다는걸 알았기 때문에,
구매에 큰 망설임은 없었다.

Duemilanove는 Diecimila의 다음 버전으로 2009라는 뜻이란다.
개선된점
USB전원과 외부전원의 자동인식 및 전환
Auto-Reset 해제가능
과전류 입력으로부터 보호

arduino와 테스트용 몇가지 부품들을 같이 구입했다.
메인 MCU가 ATmega168에서 ATmega328로 변경되었다.

뒷면 모습
정면 모습
같이 구입한 브레드보드, 저항과 LED, 1줄 문자 LCD, 외부 전원용 잭과 9V 아답터



마직막으로 vega와 연결해보았다.

2009/04/03 - [Arduino] - 마이크로 컨트롤러 용어 및 개념 정리
2009/04/06 - [Arduino] - Arduino와 Wiring

설명도 안읽어 보고 대충 USB 케이블부터 연결했다.
드라이버 설치화면이 떠서 보니 다운 받은 개발 환경의 \arduino-0015\drivers\FTDI USB Drivers 폴더가 있어서 드라이버설치
문제는 이제 부터였다.

개발환경(arduino.exe)을 실행하고 대충 blink 예제(스케치)를 불러왔는데...
어떤게 컴파일 버튼인지 모르겠네...에라 모르겠다 아무거나 눌러보자 .. 플레이 버튼을 누르니 컴파일은 된다...

하드웨어로 프로그램을 다운 받아야하는데 어떤거지....
버튼을 보니 Upload to I/O board 라는 버튼이 있다 [ ->| ] 이렇게 생긴....
다운로드가 아니고 업로드구나.....^^a
엥 ...눌렀으나 오류가 난다. 설명 보자....ㅡㅡ;;;

장치관리자에서 USB Serial port 가 COM 몇번 포트로 잡혀 있는지 확인하고
tool / serial port / com? 에서 똑같이 설정한다.
tool / Board 메뉴에서 자신의 보드를 선택한다.
그리고 다시 업로드....

avrdude: stk500_get sync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

이런 시뻘건 오류가 뜬다....무서워라.....^^;

한참 씨름하다 다시보니 보드를 잘못 설정했다.
내 보드가 Duemilanove인데 처음 arduino를 실행하니 Arduino Diecimila or Duemilanove w/ATmega168 이 선택되어 있었는데 Duemilanove만 보고 어라 자동인식(자동은 개뿔ㅡㅡ+)하네 하고 뒤에 168을 확인 안한거다. 너무 많은걸 기대했나보다.
내 보드는 Arduino Duemilanove w/ATmega328 이다.
설정을 다시 하니 업로드가 잘 된다.


개발 환경은 너무 심플하다. 비주얼 스튜디오 쓰다 이거 쓰면 완전 노트패드 수준이다...
하다못해 에러 문구 복사는 가능해야 검색이라도 해볼텐데 그것도 안된다. ㅜㅜ

blink 예제

int ledPin = 13;                // LED connected to digital pin 13

void setup()                    // run once, when the sketch starts
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}

void loop()                     // run over and over again
{
  digitalWrite(ledPin, HIGH);   // sets the LED on
  delay(1000);                  // waits for a second
  digitalWrite(ledPin, LOW);    // sets the LED off
  delay(1000);                  // waits for a second
}




보드 구성
led 의 긴 다리(+)를 13번핀에 짧은 다리를 GND에 꽂는다.
원래는 저항을 같이 연결해야 led가 타지 않는데 13번 핀은 내부적으로 저항이 들어가 있는것 같다.
또 한가지 보드 내부에 있는 led하나가 똑같이 동작하는 걸 보니 13번 핀에 연결되 있는것 같다.
즉 (arduino Duemilanove 보드의 경우) 아무것도 연결하지 않아도 보드만으로 위 소스의 결과를 확인가능하다.

 

arduino 설정 순서
1. http://arduino.cc/en/Main/Software 에서 개발 환경 다운로드 후 아무 폴더나 압축을 푼다.
2. arduino 보드를 연결, 장치인식 후 \arduino-0015\drivers\FTDI USB Drivers 경로에서 드라이버 설치
3. arduino.exe 실행
4. 장치관리자에서 USB Serial port 가 COM 몇번 포트로 잡혀 있는지 확인
5. arduino(개발환경)메뉴에서 tool / serial port / com? 에서 똑같이 설정한다.
6. tool / Board 메뉴에서 자신의 보드를 선택한다(328인지 168인지 정확히 확인하자 ^^;)
7. file / sketchbook / examples / digital / blink 를 연다.
8. Upload to I/O board 버튼을 누른다. [ ->| ]
9. 결과확인

 

arduino는 단순한 IO 보드로 만들어진 또는 임베디드컴퓨팅) 플렛폼이다.
메인칩은 AVR인 ATmega168을 주로 사용한다.

IO는 디지털 입출력핀이 14개, 아날로그 입력이 6개, PWM 6개, 시리얼 통신포트, usb 단자, 외부 전원단자를 갖추고 있다.

아르두이노의 장점은 전자회로, 또는 프로그래밍에 익숙치않은 사람도 
쉽게 접근 가능하게 그 문턱을 낮췄다는데 의의가 있다. 
기존 AVR 프로그래밍의 경우 코딩하고 컴파일하고, isp 같은 장치로 보드에 프로그램 업로드하고 오류나면 다시 디버깅하고를 반복해야 했으나 ,
아르두이노는 usb에 꽂기만하면 연결되고 개발환경에서 업로드 버튼만 누르면 보드에 프로그램이 업로드 되어 실행된다.
전원도 USB 자체에서 충당한다.
개발 언어도 자체 언어를 사용하여 직관적인 몇개의 명령만으로 원하는 결과를 얻을수 있다.
 


LED에 불을 켜려면 LED를13번 핀에 다리하나 연결하고,GND핀에 다리하나 연결하고 끝

프로그램은
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
두줄이면 됩니다. 

불을 끄려면 
digitalWrite(13, LOW);





두개를 번갈아 쓰면 불이 깜빡이겠죠?



각종 센서와 아날로그 입력단자를 사용하면 센서도 쉽게 사용할수 있다.
예로 온도 센서를 연결한다면 디지털 온도계가 되고, 나침판 센서나 적외서 거리 센서등도 이용할수 있다.

arduino에는 shield라고 불리는 확장 보드들이 존제한다. 이 보드들은 arduino 보드의 핀에 꽂는 형태로 만들어서 얹기만 하면 기능이 확장되는것으로 무선통신 모듈, 블루투스 모듈, 이더넷 모듈, lcd제어 모듈, 서보모터 제어 모듈등 여러가지가 있다.

소스 코드도 오픈, H/W도 오픈이게 때문에 회로도도 공개되어 있다.
이쯤 되면 머리속에 상상력이 마구마구 생기지 않는가?

평소에 머리속으로 이런게 되면 좋겠다. 싶은것을 arduino는 실생활에 가능하게 해둔다는데 매력이 있다.

당신에게 필요한건 상상력 뿐!!!

arduino를 검색하다보니 wiring이라는 h/w도 알게되었는데, 내가 보기엔 똑같이 생겼는데 차이점을 알수가 없었다.
그래서 차이점을 알기위해 또 검색....

arduino와 갈등하게 만든 샘플전자에서 팔고 있는 wiring 보드이다.
Wiring이 먼저 만들어지고 나중에 Arduin가 만들어짐.
언어(s/w, 개발도구)는 거의 똑같다.
wiring이 시리얼포트가 하나 더 있다고 한다.
현재 활동하고 있는 사용자는 arduino가 더 많음.
arduino가 좀더 저렴하고 종류가 많다.

아무래도 저렴해서 더 많이 보급된게 아닌가 싶다.



+ Recent posts