아트로봇에서 판매중인 GT-511C1 제품을  아두이노 (UNO , Mega2560 or ADK) 보드에 연결하여 테스트 작동시키는 방법과 소스코드를 소개드립니다.

 

 

준비물   클릭하시면 제품 판매처 링크가 뜹니다.

 

아두이노 UNO 또는  Mega 2560 (or ADK) 보드 

지문인식기(GT-511C1)  

지문인식기 소켓 케이블 (4가닥 묶음, 아트로봇 구매시 함께 제공)

점퍼와이어 4가닥

브레드보드 (크기무관, 케이블을 직접 납땜 등의 방법으로 연결 하실경우 불필요)

 

 

 

연결방법 

 

a. Mega 2560 보드나  ADK 보드를 사용하는 경우 

 

 D19 (시리얼1 RX) ->  지문인식기의 Tx핀 (1번선),  소켓위에 세모표시가 보이는곳이 1번핀임

 D18 (시리얼1 TX) ->  지문인식기의 Rx핀 (2번선)

 GND       ->  지문인식기의 GND핀 (3번선)

 5V        ->  지문인식기의 전원핀   (4번선)

 

Mega 시리즈는 시리얼포트가 여러개여서  PC와 연결시 Serial 을,  지문인식기와의 연결은 Serial1 을 사용합니다.

 

b. UNO보드의 경우

 D2 (swRX) ->  지문인식기의 Tx핀 (1번선),  소켓위에 세모표시가 보이는곳이 1번핀임

 D3 (swTX) ->  지문인식기의 Rx핀 (2번선)

 GND       ->  지문인식기의 GND핀 (3번선)

 5V        ->  지문인식기의 전원핀   (4번선)

 

UNO 보드의 경우 시리얼포트가 하나 뿐(D0,D1)이며,  PC와의 시리얼통신(모니터링용)용으로 사용시 다른 시리얼통신기기 연결이 불가하므로,  SoftwareSerial 을 사용하여  임의의 미사용되는 핀(여기서는 D2, D3을 사용하기로함)을 시리얼통신용도로 설정하여 사용하게됩니다.

 

 

 

예제소스코드

 

a. Mega 2560 or ADK 보드는  아래의 사이트에서 다운로드하여 사용하시면됩니다.

메가 시리즈용 소스코드: https://github.com/mlaws/GT-511C1_Mega

 

b. UNO 보드의 경우,  위 소스코드를 UNO 보드용으로 수정한  아래에 첨부된 파일을 사용하시면됩니다.

 

fingerPrintGT511C1.ino
다운로드

 

 

 

 

모니터창 열고  명령 전송하여 작동 테스트

 

위 예제소스를 아두이노 SW 에서 컴파일 및 업로딩 합니다.  

시리얼 모니터 창을 엽니다. (다른 시리얼 터미널 프로그램을 사용하셔도 됩니다.)

모니터창 하단에 있는 전송 모드설정을 "No line ending"으로 선택합니다. 

 

명령의 종류와 기능은  아래의 페이지에 안내되어 있습니다.

https://github.com/mlaws/GT-511C1_Mega

 

가령  Open 명령은  모니터창 상단 입력칸에 O0 (알파벳 '오'와 숫자 '영')를 치고 엔터 또는 send 를 눌러주시면 전송됩니다.

명령이 전송될때 마다  특정 값이 되돌아오게 됩니다.

 

가장 눈에 띄는 피드백을 할 수 있는 명령은  지문인식기의 인식창에 내장된 Blue LED를 켜고 끄는 명령입니다.

 

L1  을 입력하면   파란색 LED 가 켜지게 됩니다.  멋져 보이네요 ^^.

L0  을 입력하면   LED가 꺼집니다.

 

아래에 첨부된 사진들을 보시면  인식창에 불이 켜질때와 꺼질때의 모습을 확인 가능하십니다.

 

"No line ending" 설정을 안하면  명령 인식이 잘 안될 수 있으므로 꼭 정확히 설정해주시기 바랍니다.

 

LED 제어까지 되셨다면 성공입니다.  

 

데이타 시트와 예제소스를 참고하셔서  지원되는 명령들을 활용하여 자신의 용도에 맞게 소스코드를 변경하여 활용하시면됩니다.

 

 

 

 

Mega ADK 보드로 연결한 경우 (Mega 2560 보드도 동일)

 

 

UNO 보드에 연결한 상태 

 

 

UNO 보드에 연결한 상태 ( L1 명령으로 인식기 내부 Blue LED 가 켜진 상태)

 

 

 

 

 

 

 

 

 

아트로봇에서 판매중인 지문인식기( GT-511C3) 제품을 PC와 연결 및 테스트 하는 방법의 요약 안내문입니다.

 

준비물

 

제품명을  제품 판매처 링크가 뜹니다.

지문인식기(GT-511C3)

지문인식기 소켓 케이블 (4가닥 묶음, 아트로봇 구매시 함께 제공)

 

FTDI USB to Serial 변환기 5V형 

mini USB 케이블

점퍼와이어 4가닥

브레드보드 (크기무관, 케이블을 직접 납땜 등의 방법으로 연결 하실경우 불필요)

 

 

 

연결방법 (Windows PC에서 제어시)

 

FTDI USB to Serial 5V형 제품으로 PC와 연결가능.

제품소개 페이지에 PC용 예제 프로그램이 링크되어 있으므로 다운로드하여 사용가능.

참고로, 아두이노에 직접 연결하여 제어하는것도 가능합니다만, 직접 프로토콜 학습하여 제어하셔야하므로 어렵습니다.

 

소켓 위에 세모표시 부분이 1번임

1번 TXO  (이핀을 FTDI 보드의 RXI에 연결)  

2번 RXI  (이핀을 FTDI 보드의 TXO에 연결)

3번 GND  (이핀을 FTDI 보드의 GND에 연결)

4번 VCC (이핀을 FTID 보드의 5V핀에 연결)

        (주의, 실제 5V형 FTDI USB Serial 변환기에는 5V 아닌 3V3으로 표기되어있음)

 

 

 

PC -> FTDI USB to Serial 변환기  ->  지문인식기  연결하면,

LED 불이 켜짐을 확인 하실수 있습니다.

 

 

FTDI 보드는 최초 설치시  COMx 번호가 부여되며 해당 COM번호를 기억합니다.

 

SDK_DEMO 프로그램을 실행합니다.

 

최상단에서  시리얼포트번호를  FTDI보드가 설치된 COM번호로 선택해줍니다. 

초기에 USB로 선택되어있음.

 

통신속도(Baudrate)을  115200으로 선택합니다.

 

 

Open 버튼을 눌러줍니다.

최하단 Result:란에  펌웨어 버전등의 정보가 뜨면 정상 연결된 상태입니다.

 

이제 지문을 등록하거나 확인하거나  지문이미지를 수신하는등의 테스트가 가능해집니다.

자세한 사용법은 직접 데이타시트나 동영상을 참고해주시기 바랍니다.

 

 

기타사항.

 

현재 제공되는 케이블의 1번전선이 검정색입니다. 

보통 관례상 검정색은 GND에 사용되지만,

본 케이블에서는 1번 핀은 GND가 아닌 시리얼통신 Tx핀이므로 색상은 무시하시면 됩니다.

 

 

지문인식기는 손가락으로 눌렀는지 여부를 파악할수 있습니다.

손가락을 누른상태와 안누른 상태에서 각각 "Is Press Finger"버튼을 눌러주면 감지 결과를 출력해줍니다.

 

지문인식기는 보통 불이 들어오지 않으며,

지문을 인식/확인하거나 지문 이미지를 전송할때마다 파랑불이 들어오게됩니다. (아래의 사진은 Live Image 전송중인 상태여서 파랑불과  FTDI보드의 Rx불이 계속 켜져 보이는 상태입니다.)

 

 

 

 

 

 

자매 품인 GT-511C1 제품을  아두이노 (UNO, MEGA 2560, ADK ) 보드에 곧바로 연결하는 방법을 소개한 아래의 튜토리얼 자료도 참고하시기 바랍니다. 

 

 

양단자를 손으로 꼭 잡으면 켜지는 스위치입니다.
놀라운 점은 한사람 뿐 아니라,  수십명이 손을 잡아서 장거리 회로를 구성해도 작동됩니다.
가장 기초적인 트랜지스터 활용예이면서 제법 재밌는 응용을 할수있는 회로입니다. 아래 회로1 상의 콜렉터(C) 점과 R1사이에 LED를 넣어주면 아두이노 없이도 LED를 On/Off 시켜볼수 있습니다. (단, R1은 330옴으로 변경요함)
아두이노에서 활용하려면 아래와 같이 연결하시면 됩니다.
 

 

 
회로1.이 기본회로입니다.
A와 B점을 양손으로 잡으면 트랜지스터 Base에 전류가 가해져서 C점의 전압이 강하(Low)하게됩니다.  A와 B간에 결합이 없어서 트랜지스터의 Base와 Emitter간의 전류가 흐르지 않게되면 C점의 전압은 거의 5V(High)로 유지됩니다.
아날로그입력핀으로 감지하면 이값(전압)의 변화를 확인 가능하며,  디지탈입력으로 감지하면 HIGH / LOW를 구분할 수 있게 됩니다. 회로1에서 R1은 꼭 필요하지만 R2는 A와 B가 쇼트될 가능성이 있어서 보호차원에서 넣은 저항입니다. 쇼트 시킬 일이 없다면 생략해도 됩니다.
 
트랜지스터는 유사품(범용 NPN형)으로 대체가능합니다.
위 경우엔 2sc1815를 사용한 예입니다.

회로1의 경우 예제소스는  아두이노 스케치에서 기본제공하는
File > Examples > Analog > AnalogInOutSerial 예제를 업로딩 후,
 시리얼모니터 창을 열어놓고  A,B점을 양손으로 꽉 잡아보시면 됩니다. 
접촉 상태에따라 A0핀으로 입력받는 전압 값의 변화 출력됩니다.


우측의 회로2. 는 저항을 모두 생략한 상태이며 R1을 생략하고 대신 아두이노 내부 풀업저항을 활성화 시킨 상태입니다. 즉, R1 역활을 하는 내부 저항을 활용하는 방법입니다.대부분의 마이크로콘트롤러칩들은 외부저항없이도 프로그램 세팅만으로 내부 풀업저항을 설정할 수 있는 기능이 있습니다.풀업저항 활성화를 위해선  핀모드를 입력모드로 전환 후, 해당핀을 HIGH로 세팅해주면 됩니다.  내부 풀업을 활성화 시키는 코드가 포함된 예제소스는 아래와 같습니다.
(참고. 쇼트 보호저항 R2은 넣어주시는것이 좋습니다.)
 
// 아두이노 디지탈입력핀 D2로 입력할 경우로 가정,  풀업저항 On

int ledPin = 13;      // 아두이노 내장 LED 사용

void setup() {
  pinMode(ledPin, OUTPUT);  
  pinMode(2, INPUT);   //가령, D2로 입력받을경우
  digitalWrite( 2, HIGH);   // D2핀의 풀업저항을 활성화시킴. (입력모드로 전환후 HIGH출력하면됨)

}

// A와 B점을 손으로 잡으면  아두이노 내장 LED가 켜지고 ,  놓으면 꺼집니다.
void loop() {     
  if( digitalRead(2)){
    digitalWrite(ledPin, LOW);   
  }else{
    digitalWrite(ledPin, HIGH);    
  }
  delay(100);
}
 

참고로,  5V 전원을 사용하므로 손으로 잡아도 감전 될 걱정은 안하셔도 됩니다.


활용예.
잘만 활용하면 터치센서 대체용으로 활용 가능합니다. 터치센서는 한극으로 작동 되지만, 러브스위치는 두접점을 동시에 눌러야 작동되는점이 차이점입니다.  TR한개만 있으면 되므로 매우 저렴한 방법입니다.
특히 사람의 몸을 통하여 회로가 구성된다는 점이 알쏭 달쏭 요상한 재미를 더해주므로 여러명이서 재밌는 이벤트를 구성할때 활용하면 좋은 소재가 될 수 있습니다.

알림. 위 회로와 소스로 테스트 결과 잘 작동됨을 확인하였습니다.  시간이 늦은 관계로 실제 이미지와 작동영상은 추후에 올리겠습니다.
 
 
 
 

 

아두이노와 전자회로를 배울때 가장 먼저 해보는것이 LED ON/OFF 제어인데요, LED 대신 IRED(적외선 LED)를 장착하고  마치 모르스 부호같이 규칙에 맞쳐 ON/OFF를 해주면 복잡한 데이타도 송수신이 가능합니다.  여러분이 매일 사용하고 계신 TV같은 가전기기가 바로 이렇게 눈에 보이지 않는 빛을 통해 제어되고 있습니다.  이 기술을 잘 활용하면 여러분의 아두이노로 리모콘을 대체하거나 반대로 리모콘 명령에 따라 동작하는 아두이노 기기의 제작이 가능합니다.

본 글을 통해 아래의 적외선 송수신 기본회로를 소개해 드리고 실제로 리모콘으로 조정되는 로봇을 아두이노로 제어하는 방법도 안내해 드리겠습니다

1. 초간단 적외선 송신 회로
2. 고출력 적외선 송신 회로 ( 5미터 이상의 장거리? 전송가능)
3. 리모컨 신호 수신 회로



1. 초간단 적외선 송신 회로

그림1.의 회로를 보시면 바로 아시겠죠?  네,  일반적인 LED를 켤때 사용하는 회로와 동일하게 연결하면 됩니다.  차이점이라면 보통 IRED는 대부분의 LED보다 좀더 저 전압에서 구동된다는 점입니다.  따라서 일반 LED보다는 조금더 큰 저항을 사용하면 됩니다.  저항값이 작으면 좀더 IRED를 밝게 켤 수 있지만 대신 IRED와 아두이노에 무리가 갈 수 있으므로 적당한 저항값을 선정해주시면 됩니다. 하지만 정답은 없습니다.   예제에서는 560옴 저항을 사용하였습니다. 

예제에 사용된 IRED 규격:   정격 1.36V ,  최대 1.7V,  피크주파수 940nm, 화각+-20도

5V 전압을 가할 경우,  I= V/R 공식을 참고하시면  약, 9mA 전류가 흐를 수 있음을 계산으로 예상할 수 있습니다.
아두이노의 경우 핀 한개에서 출력할 수 있는 전류허용량은 20mA에 불과합니다.  초간단 회로로 광신호 도달 거리가 짧을 경우 그림2. 와 같은 고출력 전송회로를 사용하면 됩니다.  위 예제에선 아두이노 디지탈3번 핀을 통해 ON/OFF 제어를 하게됩니다. 참고로, 디지탈 3번핀은 PWM 출력을 지원해주는 핀중 하나입니다.



2. 고출력 적외선 송신 회로

본 회로는 보통의 가전기기 제어용 리모콘에서 사용되는 회로입니다. 수십에서 수백 mA의 고출력 송신이 가능하므로 비교적 원거리(5미터 이상)로 광신호를 전송할 수 있습니다. 이를 위해 트랜지스터를 사용하는데요 아두이노에서 저 전류 제어로 ON/OFF를 제어하고 실제로 IRED에 전류공급은 트랜지스터가 담당하여 비교적 큰 전류를 사용할 수 있게 됩니다.
그림2.를 참고하여 회로를 구성하시면 됩니다.  여기서 R1은 330옴  R2는 1옴을 사용하였습니다.  실제로 테스트 해본 결과 방이나 거실 전역에서 방향에 상관없이 신호전달이 되는것을 확인했습니다. 기본 제공되는 리모콘보다 더 고출력인것 같네요;; 
(사실 본 회로에 5V는 조금 과할 수 있습니다.  아두이노와 함께 사용하실 경우 5V 대신 3.3V 전압을 사용하면 좋습니다.)

예제 회로의 경우 일시적으로 매우 큰 전류가 흐르게되지만 매우 짧은 시간동안만 구동되므로 전체적인 전류소모율은 적은 편입니다.  참고로, 상용 리모콘의 경우 미작동중엔 sleep모드로 대기하다가 버튼이 눌리는 순간 깨어나서 IR송신 후 다시 잠에 들게 되므로 건전지 2개로 수개월씩 작동이 가능합니다.  회로도로 잘 이해가 가지 않으신 분들은 아래의 실제 연결된 사진을 참고하시기 바랍니다.

사진1. 고출력 IR 송신회로 실제 구성예

3. 적외선 수신 회로

적외선 송신측 IRED의 피크 주파수와 일치하는 파장의 포토트랜지스터나 포토다이오드를 이용하여 수신부 구현이 가능합니다. 하지만 우리주변엔 다양한 파장의 빛들이 가득차 있으므로 노이즈에 해당하는 빛신호를 차단하고 원하는 광신호만 추출해주는 필터회로가 있어야 실용이 가능해 집니다.  리모콘 수광 모듈은 이를 위한 소자와 필터회로가 일체화된 제품으로 매우 손쉽게 특정 파장 및 주파수의 빛 신호에 반응하는 수신기로 활용할 수 있습니다.

예제에 사용된 적외선 수광모듈 사양:   감응되는 빛의 파장: 940nm ,  빛 신호의 주파수: 38KHz

참고로, 적외선 송신시 사용된 IRED가  850nm 파장의 빛을 출력한다면,   수광모듈도 850nm 용으로 맞쳐줘야 수신률이 높아집니다.  마찬가지로 빛 신호의 캐리어 주파수(가령 38KHz)도 송/수신 모듈이 일치되어야 합니다.
예제에선  940nm 피크 파장의 IRED와  940nm형 수광모듈을 사용하였으며,  캐리어 주파수는 38KHz로 맞췄습니다.


IR 수광 모듈의 연결법도 매우 간단하며 (그림3을 참고) 전원만 공급해주고 VOUT단자로 출력되는 신호를 참고하기만 하면 됩니다. 다만,   전원 입력부에 노이즈가 있어 문제가 되는경우라면 전원 입력부에 저항과 콘덴서를 이용하여 노이즈를 감쇄시켜줘야 합니다.  (보통은 생략이 가능합니다. 필요한 경우 관련자료에서 IR수광모듈 데이타 시트를 참고하시기 바랍니다.)
위 회로에서는 VOUT 출력을 아두이노 디지탈11번 핀에 연결하여 신호를 감지하는 경우를 가정하였습니다.


아두이노로 적외선 신호 송신 및 수신하기 - 프로그래밍 편

위에서 소개해드린 방법으로 하드웨어 준비는 간단히 끝났습니다.
이제는 아두이노로 리모콘 제어 신호를 발신하기 위해선 전송규약에 맞쳐 ON/OFF제어가 필요한데 많은 분들에게 쉽지 않은 과제입니다. 따라서 전용 라이브러리를 활용하시면 좋은데요  공개된 아두이노 라이브러리들을 둘러보시고 적절한것을 선택하시면됩니다. 본 글에선 IR Remote 라는 라이브러리를 참고로 하였습니다. 
IR Remote 라이브러리의 경우  IR 송신을 위해서 D3핀을,  수신을 위해서 D11핀을 기본으로 사용하고 있습니다.


IR Remote 라이브러리로 적외선 리모콘 신호 발신하여 로봇 원격 제어하기

이제는 실제로 리모콘으로 제어되는 로봇을 아두이노로 제어해 보도록 하겠습니다.

제어대상: 원격제어 6족보행 로봇
전송프로토콜: 유사 NEC 코드
전송부 회로:  그림1. 또는 그림2 의 회로 모두 사용 가능

사전준비:
 .IR리모콘으로 조정되는 로봇 준비: 관련글 링크, 
 .IR Remote 라이브러리 설치:  라이브러리 제작자 홈페이지 링크,   라이브러리 다운로드 링크


소스코드 예제:

#include <IRremote.h>

IRsend irsend;

int incomingByte = 0;

void setup()
{
  Serial.begin(9600);
}

void loop() {
 
    if (Serial.available() > 0) {
        // read the incoming byte:
        incomingByte = Serial.read();
        // say what you got:
        Serial.print("I received: ");
        Serial.println(incomingByte, DEC);
        Serial.flush();
    }
        switch( incomingByte){
         case 56: //forward
           irsend.sendNEC( 0xc5000000, 8); //전진
           break;
         case 50: //backward
            irsend.sendNEC( 0x45000000, 8); //후진
            break;
         case 52: // turn reft
            irsend.sendNEC( 0x25000000, 8); //좌회전
            break;
         case 54: // turn right
            irsend.sendNEC( 0x85000000, 8); //우회전
            break;
         case 53: //stop 정지 , 아무신호도 안 보내면 정지합니다.
          break;
        }
      delay(500);    // 0.5초를 주기로 반복
}

아두이노에 위 소스를 프로그래밍 하신 뒤 시리얼 모니터 창을 여시고,  send 입력란에 아래의 해당 숫자키를 입력한 뒤 엔터를 입력하여 전송해줍니다.

 전진 8
후진 2
 좌회전 4
 우회전 6
 정지 5 or 기타키 or 그냥 엔터

가령, 전진을 하려면 숫자 8을 누르고 엔터를 쳐주면됩니다. 중지하려면 5번을 누르고 엔터를 치면됩니다.

소스 해석:
시리얼 포트를 통해 값이 전송되면 첫번째 바이트 값을 읽고 이값에 따라 방향제어 변수값을 수정합니다. 또한 이값은 별도의 입력이 없는경우 그대로 유지되므로 매번 순환루프 마다 보관해둔 방향제어 변수값에 따라 리모콘 신호를 발신하게 됩니다.

방향 제어 명령을 유선 시리얼 통신으로 받는 대신, 무선으로 전송 하거나 조이스틱이나 버튼 또는 센서를 이용하여 변화시켜주면 전파를 이용한 로봇제어나 자율이동형 로봇의 제작도 가능합니다.


동영상1. 실행 예제 보기

키보드 숫자를 입력후 엔터를 치면 시리얼통신으로 아두이노에 전송되고 이 값에 따라 적절한 리모콘 신호를 보내어 로봇을 제어하게됩니다.  본래 적외선은 사람 눈으로는 보이지 않지만 대부분의 카메라로는 볼 수 있습니다. 동영상 후반부를 보시면 광신호가 약 0.5초에 한번씩 송출될때 로봇이 움직이고, 신호가 없으면 로봇이 멈추는것을 확인하 실 수 있습니다.

끝으로,
 온갖 가전기기들이 리모콘으로 제어되고 있습니다.  이는 아두이노로 제어할 수 있는 기기들이 많다는 뜻이기도 한데요 여러분은 어떤 기기를 제어해 보시겠습니까?  가령 저렴하게 구입이 가능한 리모컨 제어되는 MP3플레이어로 말하는 로봇 만들기도 가능합니다.  아래의 관련글에서 좀더 세부적인 리모콘 프로토콜 정보도 참고하시기 바랍니다.

즐거운 DIY 생활 보내시길!!


관련 제품 링크

 .무선제어 6족보행 로봇

 .아두이노 UNO

 .적외선 무선통신킷

 

 


기타정보 링크
 .아두이노로 무선제어 6족보행 로봇 제어하기  63
 .말하는 로봇 만들기( 적외선 리모콘 프로토콜 ) 31
 .IR수광모듈 데이타시트(첨부파일 참조)

IR수광모듈-datasheet.pdf
다운로드


보통 볼 수 있는 피에조보다 비교적 큰, 직경 50mm의 피에조를 이용하여 LED를 켜봤습니다.  정말 켜집니다. ^^.



거리센서 테스트 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

이번엔 거리센서 테스트를 해봤습니다.
본 센서의 사용예는 광범위한데요 여러분이 가장 손쉽게 접하는것은 아마도 최근 많은 화장실에 설치된 손 건조기 일겁니다.
손을 갖다대면 히터가 작동하는 기계말입니다. ( 제조하시는분 왈: 요녀석이 그 용도로는 짱이랍니다.)

또한가지 용도는 로봇에 장착하여 벽이나 주변 물체를 감지하는데 사용하곤 합니다.
제가 이번에 소개시켜드릴 거리센서는 로보티즈사의 바이올로이드 같은 로봇에서 절대거리 센서로 이용되고 있습니다. (동일모델)

본 센서의 장점은 부차적인 회로없이 거리값에 비례하는 전압을 출력해준다는점 입니다.
이 출력전압을 ADC입력핀에 넣어주면 MCU측에서 절대거리값을 구해낼수 있습니다.
온도를 전압으로 변화시켜주는 LM35 와 유사하게 사용할 수 있습니다.

내부를 들여다 보면, 자체적인 오실레이터와 측정 및 전압출력 회로가 내장 되어있음을 볼 수있는데요,
재밌는것은 내부를 분해해보시면, 그안에 카메라 화상 센서 (CCD) 같은 부분이 있는것을 볼 수 있습니다.
아마도 저해상도의 CCD 어레이를 직선방향으로 배열하여 거리를 삼각측량방식으로 구해내는듯 합니다.
(참고로 구형 메모리칩을 뚜껑을 분해해서 저해상도 카메라로 사용할 수도 있습니다. 요즘엔 그런 무시무시한 일은 하지 않아도 저렴한 카메라가 넘쳐나니 그렇다는것 정도만 알아둡시다. )

테스트결과:
공급전압이 5V일경우
정면 80Cm 거리 이내에 물체감지가 안되면 약 0.2V 출력이 나왔고요,
10Cm정도까지 근접할때 3.2V에 조금 못미치는 전압이 출력되었습니다.
단, 10Cm보다 더 근접하면 오히려 값이 떨어집니다.


테스트 방법:
회로도도 필요없는 간단한 구성입니다.
작동 테스트를 위해서 멀티테스터와 5V정도의 정전압만 있으면 됩니다. 사양서를 보니 공급전압은 7V까지 지원하는 듯 합니다.
하지만 얼렁뚱땅 표준전압인 5V가 좋습니다. 
조금 부유한 장비를 보유하신 분들이라면 오실로스코프를 이용하시면 시간에따른 변위를 한눈에 보실 수 있으니 더 좋겠죠. 멀티테스터와 동일한 위치에 Probe를 함께 연결해 주시면 끝입니다.  용도에 따라 전압이나 주변회로와 함께 사용하 실 때는 저항,콘덴서 1~2개로 노이즈 제거해주시면 되고요. 여기서는 생략했습니다.

어설픈 회로도와  동영상 감상하시는 것으로 마무리 하겠습니다.


[거리센서-정면]

[거리센서-측면]


[거리센서- 내부]

[절대거리감지기 테스트용 연결도]


[거리센서 - 변위에 따른 전압 변화 ]


관련링크

거리센서 + 아듀이노 =시리얼 통신=> 그래프 파형 관측 
우편함 뮤직로봇 응용예제


참고자료: DataSheet

SHARP_GP2Y0A21YK.pdf
다운로드
샤프거리센서-원리및상세기술자료.pdf
다운로드

 

한 외국 과학정보 사이트에서 정전기 감지기라는 것을 보고 감동?을 받은 뒤 직접 만들어 보려고 관련 부품을 수소문 하던게 벌써 몇년전 입니다.  하지만 이 부품을 국내 온라인, 오프라인 소매점에서 구할 수 없었습니다. 지금도 상황은 비슷합니다.

그 부품이 바로 JFET 이라는 전계효과트랜지스터(Junction Field Effect Transistor)의 일종인인데요, 트랜지스터의 형제뻘 되는 소자이고 생긴것도 트랜지스터와 다름이 없습니다.  전자공학 서적에서도 다이오드, 트랜지스터 다음으로 소개될 정도로 매우 기초적인 전자부품임에도 부품상에서 구하기 곤란한 제품인것이 이해가 가지 않았지만, 아마도 JFET 자체보다는 MOSFET, CMOS, VFET 같은 보다 특화된 부품으로써 인기가 많은 소자라서 궂이 JFET 범용 부품으로써의 활용도가 적기때문인듯 합니다.

하지만, 전자공학 초심자들에겐 기초소자의 특성을 직접 체험하는것이 매우중요하다는 생각이 들기에 매우 아쉬운 상황입니다.
현실탓을 그만하고, 어쨌든  요즘같은 글로벌 시대에 못 구하는 부품이 어디 있겠습니까?!!  생각을 고쳐먹고 외국 사이트에서 구입했습니다.

JFET을 받자마자 정전기 감지기를 만들어 테스트 해봤는데요,
조그만 머리빗으로 2미터 이상의 거리에서 LED를 켜고 끄는 정도의(8V) 전위 변화를 감지해 낼 수 있었습니다.

회로도 대신 제작도와 동영상을 올려봅니다.   매우 단순한 회로입니다.
상세한 작동원리는 전자공학 서적에서 JFET 부분을 읽어보시거나 온라인 정보를 활용하시면 이해하 실 수 있을듯 합니다.

[그림1. 전기장 감지기 제작도]


[동영상1. 전기장 감지기 테스트]


 
실험방법:

그림1.의 제작도와 같이 회로를 구성 후,
플라스틱 머리빗을 이용하여, 머리카락을 빠르게(중요) 비벼준 후,
감지기의 안테나 방향으로 향하게한다.
머리빗을 감지기의 안테나 방향으로 향하면 LED가 어두워 지거나 꺼지게된다.
거리를 멀리 떨어져 가면서 머리빗의 방향을 바꿔가면서 감지기의 상태를 관찰한다.


작동원리:

제가 알고있는 범위내에서 간단하게 작동 원리를 소개해 드리겠습니다.
서로 마찰했을때 (-)으로 대전되기 쉬운 물질이 있고 (+)으로 대전되기 쉬운 물질 있습니다.
가령 우리의 머리카락과 머리빗을 마찰시키면, 머리카락의 전자가 머리빗으로 이동하게되고 이에따라 머리빗은 (-)전하로 대전되게됩니다.  이순간 전하의 불균형에 대응되는 전기력(장)이 형성되고, 주변공간에 영향을 끼치게 됩니다. 이힘은 이론상 무한히 퍼져나가는데요,,, 본 실험과는 큰 상관이 없지만 만약 이 머리빗을 아주 빠르게 흔든다면(가속운동한다면) 가속하는 전하에 의해 전파가 발생하고 안드로메다에 있는 미녀 외계인에게 러브콜 신호를 전송할 수 도 있을지 모릅니다. (답신이 올까요? ^^;;)

머리빗에 대전된 전압은 생각보다 매우 높은 전압입니다. 정확한 값은 저도 측정해보지 못했지만, 수백V가 넘고 수천~수만Volt에 이르는 것으로 알고 있습니다. 그렇게 높기때문에 매우 건조한 겨울날 어두운곳에서 방전되면서 불꽃이 일어나기도 하고 전자제품을 돌아가시게 하기도 하는겁니다.

JFET관련 기술서적을 보면, G(게이트 단자)와 S(소스단자)사이에 (-)전압이 걸리게되면,  D(드레인단자)와 S사이의 전류의 흐름이 방해받게 됩니다. ( 제가사용한 JFET소자는 N채널이라 위와 같고, P채널의 경우는 전압이 반대일때 흐름이 방해 받습니다.)

JFET소자마다 다르지만, MPF102의 경우, G와 S사이의 전위차가 -8Volt 가 넘으면(이를 cutoff전압이라고 함),  D와S사이에 흐르는 전류가 (거의)완전 차단되게됩니다.  이소자는 주로 스위칭용으로 사용되며, G-S전압을 조절하여 D-S전류를 ON/OFF 하는 용도로 사용됩니다. 여기서는 G-S전압에 따라  LED가 켜지거나 꺼지게 되도록 회로가 구성되어있습니다.

하지만, 본 회로에서는 G단자에 아무것도 연결되지 않았기때문에 G-S전압은 공기중의 전위에 영향을 받게 되는 상태입니다.
사실 위와 같은 상황은 주변 전기장에 영향을 많이 받기때문에 일반적인 전자회로에서는 절대로 사용되지 않는 것이지만 본 회로에서는 거꾸로 전기장을 감지하는데 역이용하는 것입니다.

본래 본회로에서 LED를 완전히 끄기 위해서 필요한 G-S전압은 약 8Volt 입니다. 즉, 실험을 통해서  2미터 떨어진 곳에서 머리빗에 대전된 고전압에 의해  JFET소자의 G와 S 단자 사이에 8Volt 이상의 전압차를 발생시켰다는 얘기입니다.  전기력이 거리의 제곱에 반비례하여 감소되는것을 볼때 엄청난 전압으로 대전된것을 (정확한 값으로 계산해내지는 못하지만) 감으로나마 알수 있게 되었습니다.

참고로, JFET의 G(Gate) 다리에 안테나 전선을 메달아 뒀는데요, 사실 안테나 선이 없이 JFET 다리만 있어도 되지만 감도를 높이기 위해서 안테나(연장전선)를 부착하였습니다.  참고사이트 자료에 의하면, 안테나 선을 충분히 길게 설치하면, 매운 건조한 공간에서 5미터 이상의 거리에서도 감지를 할 수 있다고 합니다.  춥고 건조한 겨울을 기다려 봐야겠습니다 ^^

+추가사항:
보다 그럴듯한 정전기 감지기로 사용하는 방법:  시중에 1만원이 안되는 저렴한 디지탈 멀티테스터가 많습니다. 위 감지기 회로상의 LED 양다리에 디지탈 전압계를 연결하시면, 정전기력의 변화를 아날로그(LED)적으로 보는것과 동시에 디지털(전압계수치)적으로 보실수 있습니다. 이 방법을 이용하면 매우 미세한 정전기장의 변화까지도 수치로 확인하실 수 있습니다.


+추가사항 (2010.Dec.2)
본 감지기가 9V에서만 작동하는것으로 알고 있었는데요, 실험해보니 5V전원에서도 잘 작동하는 것을 확인했습니다.  요즘 9V 건전지 가격이 터무니없이 비싸고(3천원 이상) 게다가 어뎁터까지 구해야 하므로 감지기 제작가격이 상승하게 되었는데요, 이제는 5V정도의 건전지나 어뎁터로도 실험이 가능하다는것을 참고하시기 바랍니다.


참고 사이트

2. 각종 전자/과학 실험에 대한 소개글이 있는 재밌는 사이트: 

링크

 

 


RLC발진회로와 크리스탈 발진회로


R,L,C를 적절히 혼합한 회로로 임의의 주파수를 발생시키는 발진회로를 구성할 수 있습니다. 하지만 정밀한 주파수 발생원으로 사용하는데 어려움이 많고 좀더 손쉬운 방법들이 있습니다.  바로 크리스탈(말 그대로 수정입니다.)을 이용하는 방법이 있는데요.  특정 주파수에 공진하도록 조정된 수정에 콘덴서 2개만 붙이면 발진회로의 심장부를 만들 수 있습니다. 간단히 고정밀도 주파수를 발생시킬수 있어서 전자제품이라면 하나씩은 달고 나오는것 같습니다.

레조네이터와 오실레이터

최근에는 기술발달로 세라믹을 소재로 하고 콘덴서까지 내장하여, 저가격 및 사용편리성을 높인 레조네이터를 많이 사용하곤합니다. 수정보다는 정밀도가 떨어지지만 비교적 저속으로 작동되는 마이크로컨트롤러(MCU)의 주 클록 발생원으로 사용하면 딱 인 제품입니다.
특정 주파수 발진 파형을 가장 손쉽게 얻으려면 원하는 주파수의 오실레이터를 사면 됩니다 . 입력 전압만 걸어주면 원하는 주파수의 방형파가 멋지게 출력됩니다.  하지만 가격이 비쌉니다. 휴대폰에 황금코팅(정말일까요? 정확하진 않습니다만 그렇게 보입니다)까지 되어 붙어있는 녀석입니다.

발진파형 비교 - 오실로스코프 파형측정

새로 구입한 오실로스코프의 성능도 검사할겸 레조네이터와 오실레이터의 발진파형을 측정해 봤습니다.

부품 사양:
레조네이터: 4MHz, 1Mohm저항(저는 500K정도 2개연결함), 인버터 IC로 CMOS4069UBCP 사용했습니다.
                (레조네이터의 다리 3개중 가운데가 GND, 나머지 2개는 방향없이 연결가능합니다.)

오실레이터: 1.000000 MHz, 기타부품 필요없고, 5V 전압원만 있으면 됩니다.
                 (오실레이터는 다리가 4개인데요, 점 표시가된 다리는 미사용됩니다.)

측정기기: DSO-2090 USB형 디지탈 오실로스코프 (BandWidth: 40MHz)   


[그림1. 레조네이터 발진회로]



[그림2. 오실레이터 발진회로]




[동영상. 레조네이터와 오실레이터 발진파형 측정]


부제목: 1석(트랜지스터) LED 점멸기 (Single LED Flasher)

이번엔 LED 점멸기를 소개하려 합니다. 

발진회로를 찾다가 재밌는걸 발견했습니다. 
보통 LED 점멸기라면 트랜지스터 두개를 사용해야 한다고 생각하고 있었는데요
이녀석은 한개로 됩니다.

[그림1]

정확히는 모르지만 Esaki Effect(효과)와 관련된것 같습니다. 1972년에 노벨상을 받은 Leona Esaki라는 사람의 1957년경 발표된 연구결과에서 기원했다는군요.

전자회로 전공서적을 보면 UJT나 쇼클리다이오드를 이용한 발진회로와 유사하네요.
아마도 위 효과를 응용하여 만든 전용소자들인가 봅니다.

자세한 원리는 잘 모르지만 현상만 가지고 보자면 트랜지스터의 Collector와 Emitter 사이에 보통의 전위방향과 반대의 역전압을 걸어주는 회로로 구성되었습니다.

여기서 사용되는 전압원이 12V인데요,  약 10V(트랜지스터마다 다를듯합니다)의 역전압이 걸리는 순간 장벽이 깨지면서 전류가 흘러버리는 현상을 이용한것 같습니다.
Base부분은 무접속입니다. 베이스 전류를 통한 증폭작용은 안합니다.

참고한 사이트(참고자료1) 자료에서는 2N2222 을 사용했는데요,
제경우 가장? 유명한 범용 트랜지스터 C1815로 테스트한 결과 정상 작동합니다.

부품선택:
저항값 1K옴, 100옴은 변동폭이 별로없습니다.
(100옴이 없어서 220옴 2개를 병렬연결했고, 1K옴은 500옴짜리 2개를 직렬연결했습니다.)
정확한 값으로 작동을 테스트 후 변화 시켜보시기 바랍니다. 제경우 값이 바뀔때 발진이 멈추곤 했습니다.
콘덴서는 용량 변화가 가능하며, 발진 주파수가 변화됩니다.  (아래의 동영상은 220uF 전해콘덴서를 사용)

LED를 제외하고 그냥 발진 파형 소스원으로도 테스트 해봤는데요, 수십KHz까지 잘 작동하더군요

[동영상1]

[참고사항]
첨부된 동영상에서 전류량이 수백mA로 표시되는데요, 값이 너무 커서 이상하다고 생각하여 확인해보니 테스터기가 고장이 나버렸더군요 본 회로를 테스트 하실때는 전류계 사용시 주의하시기 바랍니다.
제경우 회로를 재구성하다가 순간 전류량이 초과하여 테스터기가 고장나 버린것같네요
아날로그 전류계 사용을 권장합니다. [

관련글링크: 아날로그 테스터기 활용하기

]


주의사항:
사실 범용 트랜지스터로 이렇게 사용하는게 정상적인 작동은 아니므로 트랜지스터 파손가능성이 있을지도 모릅니다.
직접 테스트 해보실경우 회로 부분을 투명플라스틱으로 덮어두고 작동하시길 권장드리며
LED, 콘덴서, TR  모두다 터지면 위험할 수 있으니 안경이나 고글을 꼭 착용하시기바랍니다.



참고자료:
1. http://www.cappels.org/dproj/simplest_LED_flasher/Simplest_LED_Flasher_Circuit.html
2. 참고서적: 전자회로  도서출판 삼보  이현창 회 5인 공저 
 ( 보통 전공서적들이 수식을 너무 전면에 내세우는 경향이 있어서 학습욕구를 저하시키곤 했는데
 이 책은 현상을 적절히 설명한 후 수식으로 정돈을 해주는게 맘에 들어 몇 일전 구매해 버렸답니다.
도서관에서 발견했는데요, 인기가 많은 책은 아닌가 봅니다. 왜일까요??? )
3. DSO-2090 USB 오실로스코프 

+ Recent posts