로보밥 얼뚱. 연구소에서 또 한가지 재밌고도 쓸만한 물건을 입수했습니다.
바로 RFID 스타터 킷 입니다.

 

 

 

 

 

 

 

[사진1. RFID 테스트 - 다양한 태그들]

RFID는 이미 버스, 전철, 신용카드, 아파트 출입구, 직원카드, 화물추적, 도서관 책, 상품 인식 및 보안용 태그 등으로 엄청난 양이 사용되고 있습니다.  수십년전 부터 많이 사용되오던 바코드와 유사하게 특정 값을 기억하고 손쉽게 리더기로 그 값을 읽어들여 신분확인이나 제품의 종류를 확인하는데 사용되고 있는데요  바코드가 아직은 더 저렴하고 일반적이지만 기억용량, 읽고 쓸 수 있는 능력, 자체 전원으로 원거리 인식 기능 제공등의 특수한 기능에 더 특화되어 응용될 수 있다는 장점으로 인해서 점점 더 영역을 넓혀 가고 있습니다.  참고로 최근의 최신 스마트폰에 내장된 NFC(Near Field Communication)도 전자기 유도현상이나 전자파를 통한 근거리 통신기술을 응용한 것으로 RFID와 유사한 기술의 하나로 볼 수 있습니다.

RFID는  주파수, 통신방식, 자체전원 여부 등에 따라 여러가지가 있습니다.
본 글에서는 가장 손쉽게 응용할 수 있는 읽기전용 카드 태그와 리더기 및 PC인터페이스 보드가 함께 제공되는 RFID 스타터킷에 대해 소개해 드리고자 합니다.

RFID 스타터킷의 구성품은 아래와 같습니다.
 .RFID 리더 모듈
 .PC USB통신용 FTDI 인터페이스 보드
 .카드형 RFID Tag(125KHZ형 ) 2개  [

제품링크

]

 

 

 

[사진2. RFID 모듈 뒷 모습 - 안테나 내장 ]

 

 

[사진 3. RFID모듈과 PC 인터페이스용 FTDI 보드 ]

관련 제품 링크
==

 

125KHZ형 RFID 태그와 리더기는 직원출입카드, 아파트 현관출입 카드 등으로 이미 많이 사용되고 있으므로 많은 경우 이미 보유하고 있는 카드를 그대로 이용하실 수 있습니다. 또한 RFID 리더 모듈은 안테나를 내장한 제품으로 아두이노 같은 손바닥 컴퓨터에 직접 연결하여 이동형 RFID리더 응용프로그램 개발이 가능하며, PC용 응용 프로그램을 제작할 때는 USB연결용 보드에 RFID 리더 모듈을 장착하면 PC측 USB포트에 연결하여 시리얼통신으로 RFID TAG의 코드를 인식하는 어플리케이션 개발도 가능하므로 활용성이 높습니다.


RFID 스타터킷 플래시 연동하기

플래시로 시리얼통신 장비와 연동을?

대부분의 시스템 프로그래밍 개발환경들은 시리얼 통신 제어가 가능하므로 RFID리더기로 부터 수신되는 데이타를 곧바로 처리할 수 있습니다. 하지만 아티스트 여러분들이 많이 사용하는 플래시는 아직 직접적인 시리얼통신을 할 수 없습니다.
때문에 시리얼통신을 플래시에서 지원되는 네트웍통신으로 중계해주는 프로그램을 사용해야 하는데요
가령 SerialProxy라는 프로그램이 있습니다.
본 글을 통해 실제 어떻게 프로그램들을 구성하는지와 네트웍 통신을 통해 수신되는 RFID 데이타를 어떻게 처리하여 응용할 수 있는지를 플래시용 예제 소스와 함께 소개해 드리고자 합니다.

일단, 예제 수행 동영상을 참고하시기 바랍니다.

[동영상1. 플래시 RFID 인식 시스템 구성 소개]

[동영상2. 플래시에서 RFID 인식하는 예제 수행]
태그 인식장면을 보기 쉽게 RFID리더를 모니터상단에 설치하였습니다.



RFID 스타터킷 + 플래시 인식 어플리케이션  준비 과정

1. RFID 설치
 RFID리더모듈을 PC연결용 보드에 장착후 USB케이블로 PC측에 연결해줍니다.
 이후, 운영체제가 장치를 인식하고 드라이버 자동설치를 시도하게 됩니다.
 운영체제에 따라 드라이버가 자동설치 될 수 도 있지만,
 자동인식이 안될 경우엔 FTDI 드라이버를 설치해 주시기 바랍니다.
 
 설치 완료후, 장치관리자>포트 리스트에서 해당 장치의 COM번호를 기억해 둡니다.
 
 간혹 케이블 연결 후 에도 장시간 아무런 반응이 없다고 문의주시는 분들이 있습니다.
 이경우, 케이블을 교체 후 연결해보시기 바랍니다.
 
2. SerialProxy 설치
시리얼프록시란 시리얼통신을 통한 데이타 입출력을 네트웍통신으로 중계해주는 프로그램입니다.

시리얼 통신만 가능한 장치도 이 프로그램을 이용하면 네트웍 통신이 가능해집니다.
반대로 네트웍통신만 지원하는 SW도 이 프로그램을 통해 시리엉 장치와 통신이 가능해집니다.
사람으로 치면 인터프리터(통역자) 정도 되는 녀석입니다.

다운로드하여 설치 후,
serproxy.cfg 파일을 수정하여 자신의 설정에 맞게 속도(9600), COM포트번호(가령 COM3)와 네트웍통신용 포트번호(가령 5331) 를 설정합니다.   또한가지 잊지말고  newlines_to_nils 가 false인지 확인해주시기 바랍니다.(false로 지정해야 불필요한 정보 전송이 안됩니다. true로 지정되면 플래시측 소스 수정요함)

 

설정파일 실제예

# Do not Transform newlines coming from the serial port into nils
newlines_to_nils=false

# Comm ports used
comm_ports=8

# Default settings
comm_baud=9600 
comm_databits=8
comm_stopbits=1
comm_parity=none
# Idle time out in seconds
timeout=300

# Settings for COM
net_port8=5331

 

 
 
3. 플래시 소스 수정하기
 플래시측 소스에서 SerialProxy와 통신을 위한 포트번호(가령 5331)를 확인하고 필요시 수정합니다.

4. SerialProxy 실행하기

5. 플래시 실행하기



RFID 내부 살펴보기

본 예제에서 사용된 태그의 경우 리더기로 값을 읽으면 태그 ID와 관련된 정보들이 Ascii코드로 시리얼 통신으로 전달됩니다.
아래와 같은 리더기 데이타 시트 정보를 참고하시면 해당 바이트의 의미를 파악할 수 있습니다.

 

 

 

[그림1. RFID리더기 데이타 출력 포멧 - 데이타 시트 참고 ]

 

리더기의 기본 출력 모드는 ASCII 코드 방식입니다.
가령 리더기에 태그를 인식시킬 때 마다 아래와 같이 16바이트 정보가 읽혀집니다.

02 34 35 30 30 42 38 45 45 43 42 44 38 0D 0A 03    //모두 16진수로 표기된 값입니다.

(위 정보는 시리얼 터미널 프로그램에서 시리얼 수신값을 16진수로 표시하면 볼 수 있으며,
아두이노 시리얼 모니터창으로 볼 경우 ASCII코드값으로 해석되어 다르게 출력되며 일부 문자가 깨져보이게 됩니다.)

16바이트의 정보는 각각 아래와 같이 해석할 수 있습니다.

0x02 // 1바이트 태그 정보의 시작을 알려주는 표시값 입니다.
0x34 // 10바이트 ASCII코드값의 시작
~     // 이 값들이 RFID의 고유 ID값 입니다.)
0x42 // 10바이트 ASCII코드값의 끝
0x44, 0x38  // 10바이트 id값의 2바이트 체크섬 (오류검사용, 보통 무시하거나 RFID ID값의 일부로 봐도 됩니다.)
0x0D // CR 캐리지리턴 (줄넘김 명령에 해당하는 ASCII 코드값)
0x0A // LF 라인피드(줄넘김 명령에 해당하는 ASCII 코드값)
0x03 // 태그 정보의 끝을 알려주는 표시값

위 정보를 시작 및 종료코드와 CR,LF 를 제외하고 ASCII코드로 표시하면 아래와 같습니다.

4500B8EECBD8

체크섬(D8)값을 제외하면 실질적인 태그의 고유 ID는 아래와 같이 표시 할 수 있습니다.

4500B8EECB
// ID값은 ASCII코드 중 숫자와 알파벳으로 표현 가능한 값으로 구성됩니다.

 

 

 

[그림2. 태그의 고유값 태그ID]

RFID 시스템에서는 위 ID값을 특정 사람이나 물건의 고유 ID값으로 설정해두고 리더기에서 위의 ID를 발견시 해당 사람이나 물건이 감지되었다고 인식하게 되는 것 입니다.

위의 플래시 예제에서도 미리 등록된 ID와 일치하는 경우 해당 이미지를 화면에 출력하였습니다. 만일 출입문에 응용된다면 출구를 열어주면되고, 도서관에서 도서대출시스템에 이용한다면 해당 ID의 책을 대출 처리하면 되는겁니다. 즉, 실제 응용방법은 바코드와 동일합니다.

본 스타터킷에서 사용되는 리더기와 태그는 태그의 ID값을 읽기만 가능하고 태그 ID는 미리 고정된 값으로 등록되어 있으므로 태그를 재프로그래밍할 필요가 없고 단순히 미리 지정된 태그값을 읽어서 일치하는 경우에 해당 업무를 수행하면 되므로 비교적 손쉽게 응용이 가능한 제품입니다.

스타터킷으로 손쉽게 다양한 RFID응용프로그램 개발을 경험해 보신 후, 좀더 본격적이고 복잡한 어플리케이션을 개발하실 경우 쓰기 지원 RFID시스템도 고려해 보시기 바랍니다.  추후 소개해 드릴 다른 종류의 RFID 모듈과 TAG의 경우 1KByte의 데이타를 태그에서 읽는 것은 물론이고 쓰기까지 가능한 제품도 있습니다.

 

 

 [사진4. 카드형 RFID Tag ]


 

 

[사진5. 유리캡슐형 RFID태크 - 동물의 체내 삽입용과 유사한 제품 ]
사람 몸에 넣으면 안되요;;


예제에서 사용된 플래시 소스를 첨부합니다. 

 

RFID-Tester.fla
다운로드

 

모드킷이 오픈공개 베타 테스트를 시작했습니다.

모드킷은 그래픽 언어로 프로그래밍하는 개발환경을 웹브라우져에 탑재하는 신선한 아이디어를 바탕으로 범용 아두이노 보드 및 자체 개발된 MODKIT 모터쉴드 등의 하드웨어를 손쉽게 제어하는 통합환경을 제공하고 있습니다.

일전에도 소개해 드린적이 있지만, 비공개였으므로 사용을 못해오다가 오늘 직접 테스트를 할 수 있게되어 간단한 테스트 작동을 해봤습니다.  정말로 작동이 되네요 ^^.

아직은 Beta Preview 상태입니다. 앞으로 이것저것 개선이 많이될 듯 합니다.

체험해 보시려면 우선,

http://www.modk.it/

에 접속하세요

Modkit is an in-browser graphical programming environment for microcontrollers. Modkit allows you to program Arduino and Arduino compatible hardware using simple graphical blocks and/or traditional text code. Modkit's graphical blocks are heavily inspired by the Scratch programming environment developed by the Lifelong Kindergarten Group at the MIT Media Lab.
Getting Started

Our first public previews are live! We know many of you have been following the project and can't wait to try it out. If you're a PC or Mac user, you can go ahead and download the desktop component that you'll need to connect to your device from the online Modkit editor and get started. A Linux version is coming soon so check out our blog to follow our progress. Read More or view the old site.


OPEN ID를 사용하여  google id를 그대로 사용가능합니다.

처음 실행하시는 분이라면 지금은 모드킷 UI를 실행해도 아두이노와 연동이 안됩니다.

모드킷의 UI는 최신의 주요 웹브라우져만으로도 가능하지만
하드웨어 연동을위한 데스크탑 컴포너트의 설치가 필요하기 때문입니다.

관련 컴포넌트는

http://www.modk.it/download

  에 가서 다운로드받아서 설치합니다.

헉, 설치파일의 용량이 43.8MB나 되네요;;


현재  MAC과 Windows를 지원하네요  리눅스도 준비중이랍니다.

(2011.5월 3일 현재)  UNO, Duemilanove, Diecimila, 모터쉴드, LilyPad 를 지원합니다. 다른보드도 지원계획중이라네요
지원 브라우져는    Chrome, Safari 3.1+ ,Firefox 3.5+  입니다.  IE는 안되나봅니다;;


레고 블럭을 쌓는 형태로 프로그래밍을 하여 모터쉴드를 제어해보는 동영상을 참고하시기 바랍니다.





로보밥 아두이노 튜토리얼(Robobob Arduino Tutorial) 첫번째 이야기



RT1. 아두이노 설치하고 LED Blink 깜빡이 프로그래밍 하기


다루는 내용
. 아두이노 프로그래밍 환경(스케치) 설치하기
. 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 환경의 경우를 기본으로 소개합니다.


2단계. 아두이노 개발환경 설치하기

그림을 그리듯 프로그래밍도 Sketch 하세요!

아두이노 공식 홈페이지인

Arduino.cc

에 가보시면, 아두이노(Arduino) 소개문이 있습니다.
이를 한 줄로 요약하면, 아두이노란 오픈소스 전자기기 프로토타입 플래폼이라는 얘기인데요, 간단히 말하자면, 전자기기 개발에 사용하는 소프트웨어와 하드웨어가 공개되어 있다는 겁니다.

바로 지금 설치하려는 Sketch(스케치) 프로그램이 아두이노 개발에 사용되는 공개형 개발환경입니다.
무료일 뿐만 아니라 소스코드도 공개되어 있습니다. 아래의 링크에서 최신버전을 다운로드하시기 바랍니다.

http://arduino.cc/en/Main/Software

 

사용하시는 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단계 참고)해줘야합니다. 보드 종류가 틀리면,  컴파일 결과를 전송하거나 전송 후 작동시 문제가 될 수 있습니다.
앞으로 소스코드를 수정한 뒤 검증이 필요할때마다 이 버튼을 눌러주면 소스코드 검증이 이뤄지고 문제시 오류메시지를 확인할 수 있습니다.

컴파일 과정

컴파일이 완료되면 Done compiling 메시지가 뜨고 하단 메시지창에 프로그램 용량이 표시됩니다.

UNO가 약 30KB 프로그램 용량을 지원하므로 1/30 정도 크기입니다.

 

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 제어 테스트를 해볼 수 있습니다.

unoBlinking.swf
다운로드

UNO LED Blink 예제 실행 장면

11단계. 문제처리
 내용추가 예정


12단계. 참고사항

. LED사용할땐 꼭 저항과 함께 사용하세요
 직접 원하는 핀에 LED를 장착하여 작동하려면 저항과 함께 연결해 주시기 바랍니다.  [

]


오늘은 EL Wire를 소개해 드리겠습니다.

EL Wire라는 이름이 좀 생소합니다.  전시장이나 영화속에서 종종 등장하긴 합니다만 아직 대중화 된 소재는 아닌것 같습니다. 작동되는 모양새만 봐서는 그 역사가 100년이 넘은 네온등을 연상시키지만 구동원리나 사용법은 다릅니다. 네온사인 같이 유리관에 가스를 주입하고 고전압을 가하는 방식이 아니고 형광물질이 도포된 플라스틱 케이블을 사용하므로 좀더 활용성이 높아졌습니다.  이로인해 특수 장비 없이도 비교적 손쉽게 절단 및 길이연장을 하여 원하는 디자인 작업을 할 수 있게 되었습니다. 하지만 발광을 위해선 네온등과 마찬가지로 고주파 고전압 전력이 필요합니다.  가령 약 90V 2KHz 주파수의 전원을 가해주면 발광이 됩니다.  주파수와 전압이 커지면 더 밝아지고 반대로 작아지면 어두워집니다.

EL Wire를 구동하기 위해 필요한 전원은 전용 인버터를 사용하면 편리합니다. 가정에서 사용하는 12V아답터 직류전원이나 1.5V건전지를 승압 및 주파수 증폭하여 적절한 전원으로 변환해주는 장치가 EL Wire용 인버터입니다.

본 테스트에서 사용된 인버터는 12V 직류 아답터를 연결하여 사용하는 제품으로, 내장된 3단 스위치를 이용하여 작동모드(꺼짐/점등/항상켜짐)를 선택하여 사용할 수 있는 제품입니다.   직접 구성한 회로로 EL Wire의 작동을 콘트롤하려면 교류전원을 제어해주는 TRIAC 소자를 이용하여 제어할 수 있으며,  이를 위한 전용 콘트롤보드나 아두이노 쉴드를 이용하면 좀더 편리하게 작업이 가능합니다. 

EL Wire의 색상은 흰색과 더불어 오색찬란 무지개 색상들이 나와있는데요, 저는 푸르딩딩 새벽 동틀 무렵을 연상시키는 Blue를 선택하여 테스트를 해봤습니다.  서비스로 Red Wire도 한장 촬영했습니다.

내용추가(2011.4.8)
12V 인버터를 사용할 경우 차량내에서 12V 소켓 아답터를 통해 12V전원을 공급받을 수 있으므로 편리합니다. 동영상2 에서 관련 테스트 장면을 보실 수 있습니다.

내용추가(2011.5.20)
좀더 다양한 발광선 제어를 위한 아두이노 호환 보드(EL Sequencer)의 아두이노 프로그래밍 및 사용법 튜토리얼이 추가되었습니다. 참고하시기 바랍니다.  


[사진1] EL Wire 구동모습 - 모양을 자유로운 형태로 조절하여 사용가능합니다.




[사진2] EL Wire 크기비교 - 직경2.3mm  길이 3미터 제품의 모습




[사진3] EL Wire - 너무 퍼런것만 보면 재미없죠 Red 색상도 켜봤습니다.



[사진4] EL Wire용 인버터:: 12V 직류 전원을 EL Wire용 전압으로 변환해주는 기기,  모드선택 스위치가 보입니다.




[동영상1] EL Wire 구동 - 점등 및 항상켜기 스위치 선택작동하기


[동영상2] 차량내 EL Wire 구동 - 차량용 12V소켓 아답터 사용

관련정보:

EL Wire 도움글:  http://www.ladyada.net/learn/el-wire/
EL와이어 작업방법: http://www.sparkfun.com/tutorials/130
EL wire 기타 예제:  http://www.digitalmisery.com/projects/halloween/el-ladder/

 


주의. 해킹으로 인한 이익?과 손실?에 대한 책임은 모두 여러분에게 있습니다. ^^;;

FTDI USB시리얼 변환기를 아두이노의 전압 레벨을 맞추기 위해 5V 3.3V형 제품을 따로 구입하는 것이 부담스러우시다면, 약간의 해킹으로 전압형을 바꿔서 사용하실 수 있습니다. 점퍼나 2단 스위치를 이용하면 수시로 변경이 가능하겠죠. , 실수로 스위치 선택을 잘못할 수 있으므로 주의를 요합니다. 고장나도 저는 책임 못져요!

요점:  아트로봇에서 취급하는 FTDI 5V형과 FTDI 3.3V 제품은 뒷면에 있는 전원선택 회로를 원하는대로 연결하면 5V형과 3.3V형을 변경하여 사용 가능해 집니다.  아래의 사진을 보시죠!


[사진2] FTDI변환기의 뒷면 (:FTDI 5V, 중간:FTDI 5V LilyPad디자인형 , :FTDI 3.3V)

 

[사진2]를 보시면 왼쪽의 두개는 5V쪽으로 미세한 라인이 보이고 우측에 한 개는 3.3V로 연결된것이 보입니다.

, 이제 5V형과 3.3V형을 더 자세히 들여다 보겠습니다.


[사진3] 전원 선택(5V or 3.3V) PCB패턴

 

이젠 정확히 보이시죠? 왼쪽이 5V형 오른쪽이 3.3V형 입니다. 가령 5V제품을 3.3V형으로 변경하고자 하시면, 5V로 연결된 라인을 칼로 (~)끊어 주시고 그대신 3.3V쪽으로 연결(납땜등)해주시면 됩니다.  이미 5V 3.3V전원은 각각 USB포트와 FTDI 3.3V출력 핀으로부터 공급이 되는 상태에서 회로 연결을 어떻게 하는가에 따라 5V형과 3.3V형 제품이 구분되는 것 입니다.

 

주의사항: FTDI변환기 출력핀 부분에 핀이름이 3V3 이라고 적혀 있는 부분이 있는데, 실제 이곳에 출력되는 전압은 5V형 제품의 경우 5V이며 3.3V가 아닙니다.

개요:

FTDI보드는 PC USB포트를 통해 아두이노와 PC간의 시리얼 통신을 가능하게 해주며, PC에서 제작된 프로그램을 아두이노로 전송하는 용도로도 사용됩니다. (아두이노UNO, Mega2560제품은 본 기능이 내장되어 있습니다.)

 


 

[사진1] FTDI변환기들 (좌: 5V형, 중간: 5V형 릴리패드 디자인 , 우: 3.3V형)

 

선택시 참고사항: USB시리얼 변환기는 몇가지 유형의 제품이 있지만 사용전압만 맞쳐주면 서로 호환이 됩니다. 아래의 제품별 호환 FTDI변환기를 참고하시기 바랍니다.

 

 
아두이노 제품명
 
호환되는 FTDI USB시리얼 변환기
Arduino Pro 5V, Pro mini 5V FTDI 변환기 5V 
Arduino Pro 3.3V, Pro mini 3.3V, FIO(3.3V) FTDI 변환기 3.3V
LilyPad Basic, LilyPad Simple
*릴리패드는 내장 레귤레이터가 없으므로
입력되는 외부전압을 기준으로 작동됩니다.
FTDI 5V or 3.3V
*회로 구성에 따라 3.3V형과 5V형 모두 사용 가능합니다.

 

여러가지 전압레벨의 아두이노를 사용중이실 경우 하나의 FTDI변환기를 5V형 및 3.3V형으로 사용할 수 있는 기능이 있습니다. (FTDI보드 해킹 자료를 참고하세요

아두이노 FIO는 독특한 기능을 여럿 갖고 있습니다.

1. LiPo 배터리 충전기능 내장
2. 충전위한 USB포트 제공 ( PC에 꽂아두면 충전이 됨)
3. XBee소켓내장 ( XBee를 꽂으면 무선통신이 가능해집니다.)

즉, LiPo배터리를 꽂아두면,  휴대형/ 충전형 아두이노 디바이스가 되고
사용후 PC에 꽂아두면 충전이 되므로 전원에 대해 신경쓸 일이 줄었습니다.

게다가 무선통신을 위해 많이 이용되는 XBee모듈 장착용 소켓이 내장되어 있어서
이곳에 XBee를 꽂아주면, 시리얼 통신으로 PC를 비롯한 외부 장치들과 연동이 됩니다.  Wow~

이래저래 매우 유용한 제품임이 분명합니다. 기능으로 볼 때 아직까지 보급이 많이 안 된 제품인것이 이상할 정도네요;;

아래의 사진을 보시면 여러 기능을 이해하실 수 있을겁니다.


[사진1]기본형태 -  XBee 장착용 소켓이 보입니다.
반대편엔 Atmega328P AU 칩과 리셋버튼이 있습니다.



[사진2]옆면에  USB포트와 JST 배터리 커넥터가 보입니다.
USB포트는 USB시리얼 변환기와 무관하며, 단순히 USB케이블로부터 전원을 받아오는데 사용됩니다.
이 전원으로 JST소켓에 장착된 LiPo배터리를 충전하는 기능이 내장되어 있습니다.


[사진3] JST커넥터로 Lipo배터리 연결한 장면


[사진4] USB케이블을 연결하여 충전이 되고 있습니다.  CHG 표시 LED에 불이 들어온것이 보입니다.


[사진5] XBee를 장착한 장면입니다.



[사진6] XBee와 Lipo배터리 장착한 상태


[사진7] 외부케이블 연결을 위해 핀헤더소켓을 장착한 상태입니다.


[사진8] FTDI USB시리얼 변환기를 이용해 프로그래밍 하기위한 접속예입니다.


참고로, 아트로봇에서 판매중인 FTDI USB시리얼 변환기는 아두이노 Pro, Pro mini, FIO, LilyPad 모두와 호환되는 핀배열을 갖고있어서 핀헤더만 장착하면 그대로 연결할 수 있습니다.  (단, 5V형과 3.3V형 제품은 구분해줘야 합니다.)



(2012.4월 추가사항)
헤더 납땜없이 FTDI 보드로 Fio에 프로그래밍을 할경우 아래의 이미지를 참고하시기 바랍니다.   임시 결합시 18mm 핀헤더를 사용하시고 아래의 이미지 같이 금속핀을 양쪽에 균등하게 배분한 뒤 FTDI보드와 Fio에 연결후  Fio 와의 결합을 정확히 하기 위해 약간 힘을 줘서 기울여준 상태로 프로그램을 Uploading 하시면됩니다.   접촉상태가 좋지않으면 프로그램 업로드시 오류가 뜹니다.

 

 

 

 

 

아두이노를 처음시작하시는 분들을 위한 참고사항입니다.

입문자분들이 아두이노로 가장 먼저하는것이 LED ON/OFF 제어인데요

이때 주의할 점이 있습니다.

일부 서적이나 안내글에서 LED를 저항도 없이 5V전원이나  아두이노 출력핀에 연결하는 경우가 있습니다.
이는 잠깐이라도 하지 않는것이 좋습니다. (실행은 자유지만, LED는 물론이고 값비싼 아두이노까지 단명할 수 있습니다;; )

물론 AVR 자체 및 전류제한회로등에 의한 보호기능이 약간은 있겠지만, 완전하지 않으며 아두이노 수명단축을 재촉하는 일이 될 수 있으므로  LED연결시엔  꼭 전류제한용 저항을 장착하시기 바랍니다. 
어 떤값의 저항을 사용할지 모르신다면, 보통 2V정도에서 작동하는 LED를 5V전원에서 작동하는 경우 200~330옴 정도를 많이 사용합니다. 이때 전류제한용 저항의 값이 작아지면 더 밝아지고, 커지면 어두워집니다. 너무 큰저항값을 사용하면 LED가 꺼지죠
(정확한 저항값 계산은 관련자료를 찾아보시며 많이 나올겁니다)

아래의 이미지를  참고하시기바랍니다.

[그림1]의 경우 LED는 금방 돌아가십니다.

[그림2]의 경우 특히 많이 인용되는 장면인데요, 이것도 안좋은 예입니다. 
 아두이노 Blink예제 소개 페이지에도 저항이 포함되어있는것을 보실 수 있습니다: http://arduino.cc/en/Tutorial/Blink

 참 고로, 표준아두이노의 경우 디지탈핀13번에는 내부LED용 전류제한저항이 기본으로 내장되어있지만, 외부에 별도로 연결된 LED와는 무관합니다. (싱크방식으로 연결할수는 있긴합니다만 그건 나중에 회로공부를 조금 하신후에 응용하세요^^)
그러므로 13번핀이라도 직결하지 마시기 바랍니다.

아두이노 핀을통해 LED를 직접 구동할 경우엔 항상
[그림3.] 같이 전류제한용 저항을 함께 연결해주시기 바랍니다.



[그림1] LED 5V전원 직결




[그림2] 디지탈 5V출력에 LED 직결




[그림3] 디지털 5V출력에 전류제한용 저항과 LED 직결 (권장)



한가지 더 말씀드리면,  FND나 LED여러개를 구동할때도 역시 LED 하나마다 개별적으로 저항이 들어가는게 원칙입니다.
(다만 동시에 한개만 작동하는경우 회로구성에 따라 저항개수를 줄이수는 있습니다.)
그리고, 여러개의 LED를 구동할때는 전체 전류허용량을 고려해야합니다.

그림4.를 참고하시기 바랍니다.  핀하나에서 흘릴수있는 최대전류량이 40mA입니다. 
즉, LED 구동시 이값을 넘기면 안된다는 얘기입니다. 그래서 각각 저항을 추가해 줘야합니다.
그리고 또한가지 잊지말아야 할것은  전체허용전류량입니다.  
즉, 핀하나당 전류가  40mA이하로 흘러야함과 동시에, 전체적으로 200mA가 넘지않아야 합니다.

부디, 값비싼 아두이노 오래오래 고장없이 사용하시길 바람하는맘으로 이글을 적습니다. 
참고가 되셨기를~


[그림4] Atmega328 전류허용범위



거리센서 테스트 2번째 이야기입니다.
종전방식은 그냥 거리에 따른 출력 전압변화를 전압계로 관측하는 정도 였습니다.
이번엔 조금 더 발전하여 아듀이노 보드에서 거리센서에서 출력해주는 전압을 받은 뒤, 시리얼 통신으로 PC에 전달하고,
PC측에서는 시리얼통신으로 전송받은 수치를 그래프로 표현해주는 serial Chart 라는 프로그램으로 시각화 하는 예제가 되겠습니다.

[거리센서+아듀이노+시리얼통신+시리얼챠트 = 실시간 거리센서 파형관찰 ]

[ 동영상. 거리센서 결과를 SerialChart로 관측하기 ]

아마도 아듀이노로 할 수 있는 가장 그럴듯한 초보적 예제중 하나일듯 합니다.

1. 아듀이노 : 거리센서 Pin 연결도

 거리센서  아듀이노 보드
 +  5V
 -  GND
 V out  Analog IN 0

2. 아듀이노 Sketch 소스코드

/**  * 기본포함된 예제인 AnalogInSerial를  PC측 SerialChart 프로그램에서 인식할수 있도록 한 줄 추가한 코드입니다.  */   void setup() {   Serial.begin(9600);  }    void loop() {   // read the analog input into a variable:    int analogValue = analogRead(0) /4;    // print the result:    Serial.print(analogValue);       Serial.println("");   //serialChart 프로그램에서 data 패킷 단위를 구분(0x0d 0x0a가 전달됨)해주기 위해 필요합니다.     // wait 10 milliseconds for the analog-to-digital converter    // to settle after the last reading:    delay(10);  } 

3. SerialChart 프로그램용 configuration 설정파일.
: 시리얼차트 프로그램은 입력받은 data를 configuration파일에 정의에따라 해석하여 그래프로 나타내줍니다.
아래의 예는 가장 간단하게 구성해본 예입니다. 더 다양한 설정이 가능하니 직접 해보시기 바랍니다.
 파일( 가령  imu_arduino.scc )에 아래의 내용을 적은 뒤 불러들이면 됩니다.
주의: COM3 같은 port 번호는 컴퓨터 설정마다 다른건 알고계시겠죠.. 자신의 설정에 맞게 수정해줍니다.

[_setup_]  port=COM3 baudrate=9600 width=700 height=500 background_color = white grid_h_origin = 100 grid_h_step = 1 grid_h_color = #EEE grid_h_origin_color = #CCC grid_v_origin = 0 grid_v_step = 0.5 grid_v_color = #EEE grid_v_origin_color = transparent  [_default_] min=0 max=255  [DistanceSensor] color=red 

 

 

[관련 블로그글]

거리센서 출력전압 관측

우편함 뮤직로봇 응용예제


[참고사이트]
시리얼챠트 프로그램 다운로드:
 

http://www.starlino.com/data/imu_kalman_arduino/SerialChart_01.zip

 

시리얼챠트 코드구글

 

Google Code Archive - Long-term storage for Google Code Project Hosting.

 

code.google.com

아듀이노 공식사이트:

http://arduino.cc

+ Recent posts