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

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

본 센서의 장점은 부차적인 회로없이 거리값에 비례하는 전압을 출력해준다는점 입니다.
이 출력전압을 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. 각종 전자/과학 실험에 대한 소개글이 있는 재밌는 사이트: 

링크

 

 
MinimalComps 꽤 쓸만한데, 한글을 입력하면 아예 안보인다. 
하지만  아래와 같이 Style.as 파일을 수정하면, 한글을 사용할 수 있다.
임베디드 한글폰트도 사용할 수 있지만,  용량이 6MByte정도 불어버린다.  ;;;   포기하고 그냥 시스템 폰트를 사용해보자.


package com.bit101.components
{
    public class Style
    {
        public static var BACKGROUND:uint = 0xCCCCCC;
        public static var BUTTON_FACE:uint = 0xFFFFFF;
        public static var INPUT_TEXT:uint = 0x333333;
        public static var LABEL_TEXT:uint = 0x666666;
        public static var DROPSHADOW:uint = 0x000000;
        public static var PANEL:uint = 0xF3F3F3;
        public static var PROGRESS_BAR:uint = 0xFFFFFF;
       
        //public static var embedFonts:Boolean = true;  // 초기값 본래는 RF Rnda Seven라는 임베디드 폰트를 사용한다.
        public static var embedFonts:Boolean = false;  // 이걸 false로 해줘야함.
        public static var fontName:String = "굴림";  // 사용하려는 시스템 폰트명
        public static var fontSize:Number = 10;
    }
}
bit101의 MinimalComps  미니멀리즘?(단순깔끔) 디자인 컴포넌트 를 사용하는데  폰트가 안보이는 현상이 발견되어 자료를 찾아봤는데요, SDK버젼에 따라 Component.as 파일을 수정해서 사용해야 한다는 결론입니다.
컴파일 버전(SWC) 사용시 swc 0.9.5 버젼에선 정상작동하는것을 확인했고요,
소스 버전의 경우엔  제가 사용하는 Flex 4 SDK 에 맞게 주석을 제거한 후 정상적으로 폰트가 보입니다.
요점은 새로운 폰트 버전이 기본값으로 사용되게 되어있는 SDK4부터는  기존 버전의 폰트들을 사용시엔 별도 옵션을 지정해야하는것 이겠네요 ->    embedAsCFF="false"

    public class Component extends Sprite
    {
        // NOTE: Flex 4 introduces DefineFont4, which is used by default and does not work in native text fields.
        // Use the embedAsCFF="false" param to switch back to DefineFont4. In earlier Flex 4 SDKs this was cff="false".
        // So if you are using the Flex 3.x sdk compiler, switch the embed statment below to expose the correct version.
       
        // Flex 4.x sdk:
    [Embed(source="/assets/pf_ronda_seven.ttf", embedAsCFF="false", fontName="PF Ronda Seven", mimeType="application/x-font")]
        // Flex 3.x sdk:
//        [Embed(source="/assets/pf_ronda_seven.ttf", fontName="PF Ronda Seven", mimeType="application/x-font")]



참고URL: http://www.bit-101.com/blog/?p=2555
다른 글에서 전자칠판과 적외선펜을 소개해드렸는데요, 생각해보니 Wiimote로 할 수 있는게 전자칠판뿐이 아닙니다.  더 쉽게 응용가능한 용도가 한가지 더 있는데요,,,  Wiimote를 무선 포인터(마우스)로 사용하는 겁니다.  

종종 프리젠테이션 할때 페이지를 넘기거나 화면상의 특정지점을 지적하는데 사용되는 전용 기기들이 판매되고 있습니다. 가격이 십만원정도 했던것 같은데요  Wiimote로 이걸 대신할 수 있습니다.   영화를 보거나 할때도 리모컨으로 이용이 가능합니다.

그런데, 이때 Wii 센서바 라는게 필요합니다. 
그런데 이름은 Sensor Bar인데 센서같은건 들어있지 않고 적외선 LED 몇개 달려있는겁니다. 
움직이는 Wiimote가 기준위치를 참고할 수 있도록, 가만히 앉아서 적외선 빛만 발생시켜주고 자기 역활은 끝입니다.
일종의 등대같은 녀석입니다.

쇼핑몰에서 1만원 이내에 판매되고 있더군요, 구입해서 사용하시거나  IRED를 가지고 계시다면 직접 자작하시면 더 저렴하고요 포터블하게 들고다니며 사용할 수 도 있어서 좋습니다.
( 제게서 IRED 구입하신 분들은 적외선펜 만들고 남은 IRED로 센서바 하나 만들어 두시면 좋을듯합니다. )

어떻게 만드는지 이번에도 초간단 버전을 보여드리오니 참고하시기 바랍니다.  회로는 적외선 펜과 동일합니다.   건전지 한개에 저항없이 직결하면 됩니다.  관련내용은 적외선펜 만들기 글을 참고하시기 바랍니다.

저는 스위치가 장착된 2Cell짜리 건전지 케이스를 개조해서 On/Off 되게 만들었는데 두고두고 편리하게 사용하고 있습니다.
건전지 자리 하나 비우고 그곳에 IRED를 납땜해 버리는 방법입니다. 
한가지 더 가운데쯤엔 IRED 얼굴내밀 구멍도 뚤어줘야 하는군요... 

헉,,, 납땜과 드릴작업까지 ,,,  그리 간단하지 않네요;;  그래도 마음을 비우고 한번 해보시죠 ^^


자작 센서바 내부구조

[ 사진1. 자작 센서바 내부구조 ]


작동중인 센서바


[사진2. 작동중인 센서바 ]



※ 소프트웨어는 전자칠판을 지원하는 SW에서 선택만 하면 사용할 수 있습니다.



1000원짜리 비밀펜을 개조한 적외선펜

[사진1. 1000원짜리 비밀펜을 개조한 적외선펜]


한 1년전부터 적외선펜으로 손쉽게 개조할 필기구를 찾아왔는데요, 전동 지우개, 마커펜, 현광펜, 지우개펜 등등 2만원 어치 정도는 구입했던것 같네요...  이중 가장 고급스러웠던 재료는 전동 지우개 였습니다만,, 생략하고,,,  지금 말씀드리려는 녀석은 매우 저렴하고 (단돈 1000원),  준비된 IRED 장착 공간, 푸시버튼까지 완벽하게 준비된 ... 게다가 동네 문방구에서도 구할 수 있는 "비밀펜"으로 적외선펜 만들기에 대해 알려드리겠습니다.

사실 예전에 대형마트에가서 비밀펜이란걸 봤었는데요,  근데 이게 버튼방식이 아니고, 슬라이딩 버튼으로 켜고 끄는 방식이라 적외선펜과 맞지 않아 일단 패스했었습니다.


[사진2. 슬라이딩 버튼형 비밀펜 - 적외선펜용으로 사용은 거의 불가 ]


그런데, 몇일전 IRED구매자분이 옥션에서 판매중인 비밀펜을 구매하여 제게서 구매한 IRED로 적용가능하냐는 질문을 하셔서, 다시금 확인을 해보게 되었는데요.

종전에 봤던 펜과 동일하게 자외선 LED를 사용하는 펜이지만,  이 녀석은 Push버튼 형식이어서 적외선펜으로 개조하는데 적당한 것 같더군요.  그래서 기회가 있으면 구입해서 테스트 개조를 해봐야겠다고 생각하고 있었는데요,,,

혹시나 해서, 동네 문방구에 가봤습니다.  진짜 작은 문방구입니다. 찾는물건이 아무것도 없을것 같은 ㅡㅡ;

필 자: 아저씨~  혹시 비밀펜 이라고 있나요????      ( 뭐 당연히 없겠지...)
문방구 주인장: 이거 말인가요? !!!    ( 헉;;    있더군요...  )

게다가 푸시버튼 타입이었습니다.   제목은 "몰래쓰는 비밀펜" ,  제가 봤던 "나만의 비밀펜"과는 달랐습니다.
당장 구입하여 개조에 들어갔습니다.


개조법은 매우 간단합니다.

1단계. IRED장착

 머리부분의 캡을 회전하여 열면 LED+전지 모듈이 빠지게 되어있습니다.  이제,,,
1. 기존에 장착되어있던 자외선LED를 제거한다.
2. 기존에 장착되어있던 자외선LED와 동일한 모양으로 IRED 다리를 휘어준다.  [이때 다리의 방향(극성) 주의 ]
3. 기존에 장착되어있던 자외선LED자리에 동일한 모양으로 장착한다.

 즉, 5mm 표준형 LED 형태여서,  그대로 자외선LED를 적외선LED로 바꿔주시면 됩니다.

2단계. 수은전지 3개를 1개만 사용

기존에 장착되어있는 자외선LED는 4.5V(수은전지3개)를 사용하는 무서운 놈입니다.
수은전지 3개가 장착된 상태로 IRED를 작동시키면,,, ,,,,  IRED 그냥 죽습니다.
저에게서 IRED를 구입하신 분들은 별도의 저항없이 수은전지 2개를 사뿐이 빼서 보관해주시고,
 1개만 연결해서 사용하시면됩니다.  (덕분에 여분의 수은전지가 2개나 생겼습니다.)
만약 허용전압이 1.6V이하인 IRED를 사용하신다면 저항을 한개 장착해 주셔야 IRED에 무리가 없습니다.

이제 문제가 하나 남았습니다. 수은전지 2개가 없어진 공백을 어떻게 채우냐? 입니다.
저는 일단 스프링을 늘려봤는데요,,  좀 불안합니다. 
튼튼하게 사용하시려는 분들은 납땜이나 기타 고정 방식을 연구하셔야 할 듯합니다. 
(주의사항.  수은전지는 절대 절대 Never Ever Ever Never 납땜하시면 안됩니다. 폭발 위험이 있습니다. )

3단계. 작동확인 및 주의사항

적외선는 사람 눈에는 보이지 않는 빛이므로 작동확인을 맨눈으로는 할수없습니다. 하지만 웹캠이나 기타 전자식 카메라는 거의 모두 적외선 발광여부를 확인하실때 사용하실 수 있으니, 작동확인할때 사용하시면됩니다.
수은전지 고정이 잘 안되면, 작은 충격에도 접촉불량으로 작동이 안되므로 꼼꼼히 연결해주시 바랍니다.
또한 수은전지 뒷면이 (-)극과 (+)극이 거의 맞닿아 있어서 제대로 고정하지 않으면 단락으로 수은전지 파열이 있을수 있으므로 다시한번 주의를 당부드립니다.  본 제작기를 참고하여 제작중 발생하는 어떠한 문제도 저는 책임져 드릴 수 없습니다.;;
부디 안전 개조 하세요!~

4단계. 품명 :: 품질 체험 결과

일단 제대로된 펜의 형태를 갖췄고,  건전지함과 IRED장착 공간, 그리고 푸시버튼까지 적외선펜으로의 개조를 위한 거의 완벽한 준비가 된 비밀펜 인것 같습니다. 하지만 ,, 개인적인 느낌으론 키누르는 감이 좀 무겁습니다.
제가 사용한다면 수위치는 좀더 가벼운 방식으로 대체하면 좋을듯 합니다.  다른방식의 적외선펜을 제작하시는 분들이라면 아래의 사진에 보이는 버튼말고 좀더 키감이 소프트한 스위치를 이용하실 것을 권장드립니다.



[사진3. 개조 완료된 본체 모듈]



[사진4. 개조 완료된 본체 모듈 - 발광 모드]





[동영상. 적외선펜-비밀펜개조 ]



비밀펜 구매하시려는 분들은 아래의 제품 도움말 사진 참조하세요.


[사진5. 개조에 사용된 비밀펜 제품 도움말]


추가 관련글.
 IRED(적외선LED) 구입하시려는 분들은 여기를 참고하세요 :  적외선펜 제작용 IRED 판매
 이것보다 더 간단하게 뚝딱 만드는 방법도 있습니다 :  초간단 적외선펜 만들기



SymBall은 2004년 겨울 플래시를 처음 접한 후 만든 첫 작품? 입니다.
이번에 로보밥 블로그 오픈을 계기로 다시 Online에 올려봤습니다. 한번 심심풀이 심볼 해보시죠!!

본 어플의 목적:
  동그란 Ball들을 3D 공간상에 자유롭게 배치하여 3D 상징(Symbol)을 만드는 것입니다.

왜 Symball인가?
  Ball로 만들어진 상징물(Symbol)이므로  새로운 합성어로 Symball 이란 단어를 만들어 봤습니다.


3D Symball  강아지 만들어본 예

[3D Symball  강아지 만들어본 예]


사용법:

사용법은 매우 간단하여 10분이면 독파가능한 수준입니다. 
키보드 키를 눌러서 바로바로 작동하게 하는 방법을 사용하여, 불필요한 기능별 메뉴 선택작업이 없으며,
가령 A 키는  Add 를 연상시키며, D 키는 Delete키를 연상시킬 수 있도록 키를 배정하여 기억하기 쉽게 구성하였습니다.
하지만, 화면상의 키를 마우스로 눌러도 아무 작동도 안하고, 키보드로 눌러줘야 한다는점을 잊지 말아주세요!
화면상의 아이콘 키들은  본 어플 작동을 위한 모든 기능키들을 화면에 보여줘서 곧바로 모든 키를 익힐 수 있도록 하기 위함입니다.  궁굼한 기능키에 마우스를 올려보면 기능키 mini도움말이 바로 뜹니다.
화면상의 아이콘 키들의 기능만 알면, 본 어플 작동법을 마스터 하는것입니다.

일단, 아래의 글을 읽고 작동해보신다면 더 쉽게 이해가 되실 듯 합니다.


기능키 소개

------- Ball 다루기  ----------------

사이트 접속 후, 처음 뜨는 도움말 창을 보신 후, Close 버튼을 눌러서 도움말창을 닫습니다.

이제부터는 키보드 키와 마우스를 이용하여 3D 조형을 해봅니다.

1단계. Ball추가하기   -  Add key

 A(dd) 키를 눌러보세요.   ->  Ball이 하나 생성됩니다.
 주의.  키보드상의 A키를 눌러야 A 기능이 작동됩니다. A키를 마우스로 클릭하면 A키 도움말만 뜹니다.

2단계. Ball 이동하기

 생성된 Ball을 마우스로 Drag하면 이동합니다.

 이때 마우스 왼쪽 버튼대신 키보드 Space버튼을 이용할 수 도 있습니다.

 ☆ 오른손 검지손가락 휴식모드:
  본 기능은 디자인, 프로그래밍, 웹서핑, 게이밍 작업시 너무 많은 클릭으로 고생하고 있는 검지손가락을
  잠시나마 쉬게 해줄 수 있도록 특별히 개발한 기능입니다. 제가 이때쯤 손가락이 너무 아팠습니다. ㅡㅡ; )

3단계. 특정 지점에 Ball 생성하기

 Ball을 Drag중에 A 버튼을 누르면 마우스 현 위치에 Ball이 생성됩니다.
 이 기능으로 원하는 위치에 Ball들을 배치할 수 있습니다.

4단계. Ball 지우기   - Delete key

 지우려는 Ball 위에 마우스를 가져다 된 후,  D(elete) 키를 눌러줍니다.

5단계. Ball 선택하기  - Select key

 Ball을 하나 선택하려면, 원하는 Ball에 마우스를 가져간후 S(elect) Key를 눌러줍니다.
 여러번 반복하여 S 선택가능합니다.

6단계. Ball 영역 선택하기  

 여러개의 Ball을 한번에 선택하려면,  마우스로 해당영역을 Drag 해줍니다.

7단계. 다중 선택된 Ball들의 이동

 다중 선택된 Ball중의 하나를 선택후 드레그하면 전체 이동됩니다.

8단계. 다중 선택된 Ball들의 삭제

 D(elete) Key를 눌러주면 선택된 Ball들이 일괄적으로 삭제됩니다.

9단계. Ball의 복사 Copy

C(opy) key;  특정 Ball(들)이 선택된 상태에서 C키를 눌러주면 선택된 Ball들이 현재 위치에 복제됩니다.
                   선택된 Ball들을 Drag or 3D 회전 하면서 Copy를 수행하면, 손쉽게 특정 모양들을 복제해 낼 수 있습니다.
                   가령 직선을 회전하면서 copy를 반복하면 원이 됩니다.  2축회전을 하면서 복사를 하면 구가 됩니다.


---------  3D 이동 기능  X,Y,Z 평명이동 --------------

X-Y평면 드레그 모드

 X key를 눌러주면  선택된 Ball(들)을 Drag시 x,y 평면상 이동이 됩니다.  (기본상태)
 일반적인, 마우스 좌/우, 상/하 이동이 됩니다.

Z-X평명 드레그 모드

 Z key를 눌러주면 선택된 Ball(들)을 Drag시 z,x 평면상 이동이 됩니다.
 즉, 위아래 이동시 모니터 뒷쪽, 앞쪽으로 이동 (멀고,가까워지는 이동)
 일반모드로 되돌아 가려면 X key를 눌러줘야합니다.


----------  3D View 보기 및 선택 Ball 회전하기   ------------------
3D View 모드
선택된 Ball이 없는경우, 전체 Ball이 해당되고,
선택된 Ball이 있다면 선택된 Ball만 회전되게 됩니다.

V(iew) 키를 눌러주면 Z축과 Y축 회전용 핸들이 보입니다.
용도1. 작품 감상: 이 두 핸들을 조절하여 Z/Y축 회전 속도를 부여하면,  3D공간상의 회전하는 조형물을 볼 수 있습니다.
용도2. 조형 작업: 특정 Ball들만 선택하여 회전하여 3D 배치 작업에 이용합니다.
          힌트.  회전중에도 S, F, C, D키 사용이 가능합니다. 이를 통해 복잡한 3D 조형물도 손쉽게 만들 수 있습니다.

--- 저장하기 ---
PgUp key를 누르면 뜨는 폼에 제목을 적어줍니다. 
중요, 저장하려는 Ball 들은 선택된 상태여야합니다.  미선택된 Ball들은 저장되지 않습니다.

--- 불러오기 ---
PgDown key
검색어를 입력하여 찾기 기능을 지원하며, 목록에서 선택후 불러오기 하면, 저장되었던 Symball을 볼 수 있습니다.
참고로, 상단의 Sample download는 원 data가 손실되어 작동하지 않는상태입니다.

--- Ball 크기와 색상 변경 ----

F(unction) key를 누르면  마우스 스크롤 모드가 토글 되며 변경됩니다.
 모드1. Ball Size 조절 모드
 모드2. Ball 색상 조절 모드

모드에 따라 선택된 Ball(들)에 마우스 올린 후 스크롤을 해보면  크기 or 색상이 변화됩니다.


--- 기능키 숨기기 모드 ---

H(idden)키를 눌러주면, 안내키들을 숨기기/보이기 를 반복. 이미 기능키들을 충분히 익힌 후에 사용하면 좋은 기능

--- 도움말 ----

mini 도움말: 화면에 있는 기능안내키 A, S, D, F 등에 마우스를 올려놓으면 각 키들의 도움말이 화면 하단에 뜹니다.

자세한 도움말:  Q(uestion) Key를 눌러주면 도움말 창이 뜹니다.
                     본 도움말 모드에서 화면상에 떠 도는 키를 클릭해주면,  각 기능키별 상세한 도움말이 보입니다.


-- 안내. 2014년 8월 현재 --
  무료로 서버 호스팅을 지원하던 paran.com 서비스가 종료되어  제가 올렸던 서비스도 종료되게 되었습니다.  차후 재등록 되면 링크를 올리도록 하겠습니다!!




SEA는 파일 암호화와 실시간 보안통신(스트리밍)을 지원하는 매우 단순한 보안 알고리즘입니다. 2002년 경 고안 되었지만, 마땅한 기회가 없어 개인적인 프로젝트에서만 간간히 사용했던 방법입니다. 너무 간단해서 보안 알고리즘이라기보다는 보안기법 정도로 봐도 무색합니다만, 성능은 끝내줍니다.  본문에서 우선 간단한 특징을 소개드리고, 2007년도에 TinyOS + nesC 기반 센서네트워크 모트(USN Sensor Network Mote)간의 보안통신을 위해 사용했던 예제를 소개 드릴까 합니다.

(sixgen@gmail.com) 


SEA(Simple Encryption Algorithm)의 특징

• 키 길이 및 보안 강도의 유연한 조정성
 :가변 키길이 및 가변 메시지 폭을 지원하여 키길이를 가변적으로 조절할 수 있으므로 암호화 강도 및 계산비용을 필요에따라 조정할 수 있다.

• 암호화 및 복호화 연산이 동일

• 하나의 메인키로부터 파생된 서브키를 이용하여 유사 OTP를 생성하여 암호화에 이용
  (암호방식은 OTP와 동일하다.)

• 알고리즘 선택형( 특정 알고리즘에 의존하지 않음)
 :유사 OTP생성을 위해 SHA1-160 같은  Secure Hash Algorithm이나 Cipher Algorithm을 선별적으로 사용할 수 있다.

• 다양한 확장성
  :기본 원리가 매우 단순하고 파일 암호화 및 스트림 통신 등의 모든 방식으로의 응용 및 확장 개발이 용이하다.


핵심 포인트:

  • 가장 완벽한, 유일한 보안 알고리즘은 OTP(One Time Password; 일회용 패스워드) 이다.  
  • 랜덤 정보로 구성된 충분한 길이의 OTP를  키로 사용하여 암호화(DATA와  XOR 연산) 한다면 해독이 불가능하다. (수학적으로 계산 자체가 불가능)
  • 하지만, OTP는 암호화될 DATA와 동일한 크기의 키가 필요하므로 실용성이 없다.
  • SEA는  시중의 여러가지 Secure Hash Algorith 이나 Encryption Algorith들의 조합으로 pseudo OTP(유사 일회용패스워드) 생성기를 만들어 Pesudo OTP를 생성해낸다.
  • 유사 OTP는 공격 가능성이 있다.  하지만 실용적이다.
  • 유사 OTP도 충분한 키길이의 무작위 seed값을 사용하면 보안 강도가 크다.
  • SEA는 유사 OTP생성기를 정의하고 조율하여 용도에 따라 보안성과 실용성 사이의 절충점을 설정하여 이용하게된다.

실제 구현 예제는 첨부파일을 참고하세요.
응용예제는 별도의 글로 작성할 예정입니다.

첨부파일: SecureRemoBot.ppt ( 센서노드의 무선 보안통신 응용 예) 

4_SecureRemoBot_m.ppt
다운로드

2002 년에 열심히 정리해 놓은 문서들을  찾아 보다가 발견했습니다. 가끔 TV 프로그램 같은곳에서 몇년 몇월이 무슨 요일이냐? 라고 물으면 곧바로 대답을 하는 사람을 보고 엄청난 기억력이나 초능력을 가진것으로 취부하는것을 본적이 있는데요...  그게 그렇게 엄청난 것은 아닙니다.  암산만 조금 할 수 있다면 여러분도 가능합니다.

  가령 오늘이 2010년 7월23일 금요일입니다. 그러면 2011년 7월 23일은 무슨 요일일까요?

답은 오늘의 요일 + 1요일 입니다.  즉, 토요일 입니다.
왜일까요?  아래의 글을 읽어보시면 아시게 될겁니다.
로보밥 


0000년 00월 00일은 무슨 요일인가? 에 대한 해답

 @200205261900

궂이 컴퓨터가 없더라도, 모든 해의 요일을 맞출 수 있다. 그다지 어렵지 않은 산수만 할 줄안다면, 암산으로 말이다.

원리: 요일은 7 State만을 갖는 변수이다. 즉, 어느 순간 7개중 한 상태일 뿐이다. 단 7개. 때문에 쉬울 수밖에 없다.

찍어도 1/7 확률아닌가??? ^^;;

 

규칙1. 현재보다 x 일 이 더 지난 후의 요일은 x mod 7 의 값만큼 다음(현재요일기준)요일이다.

 

예1. 오늘은 일요일이다. 23일 후는 무슨 요일인가? 풀이: 23 Mod 7은 = 2 이다. 근데 오늘은 일요일이므로 2만큼 다음요일은 화요일이된다. (이후 +2요일이라고 약칭한다)

 

어떤날의요일 = 오늘의요일 + x Mod 7  (x는 차이 일수)

 

참고사항: MOD의 의미

x Mod 7이란 x를 7로 나눈 후 나머지 값을 말합니다.  나머지(Modulus) 연산자라고 불리며, 프로그래밍 언어에서는 보통 % 라고 표시됩니다.  윈도우 전자 계산기를 공학모드로 설정하면 Mod 버튼이 보입니다.   365 mod 7 이 몇인지 한번 계산해보시기바랍니다. 답은 1입니다.

 

규칙2. 1년 후 오늘의 요일은 오늘의 요일 +1요일이 된다. ( 단, 윤년인 경우,  +2 요일 )

우선 상식을 우선 배워보자.

상식1. 1년은 몇 일인가?

정답은 365.xxx일이다. 일년의 기준은 지구가 정확히 태양을 한바퀴 걸리는데 얼마나 걸리나를 정의하는데, 정확히는 365일이 넘는다. 그래서 문제는 해가 지날수록 시간이 조금씩 틀려진다는 것. 때문에 4년에 한번씩 (2월달에)하루를 추가하여 오류를 수정한다. 즉, 366일을 만드는 것이다(이게 윤년이다.) 평년엔 2월이 28일까지 있는데 윤년에는 29일까지 있다. 재밌는 것은 윤년의 2월29일이 생일인 사람은 4년에 한번 생일이 돌아온다 ^^; 주변에 2월29일생이 있다면 생일 잘 챙겨주시길~. (자세한 윤년의 정의는 아래의 참고자료를 보세용)

결론: 1년은 몇 일인가?

평년은 365일 (윤년이 아닌 모든해)

윤년은 366일 ( ,,, 1984,1988,1992,1996,2000,2004,2008 ,,, )

때문에 규칙2가 성립된다. 규칙1에 의해서 규칙2를 증명해보자.

평년인 365일의 Mod 7은 1이다. 그러므로 동일한 월/일의 다음해는 +1요일

윤년의 366일의 Mod 7운 2이다. 그러므로 동일한 월/일의 다음해는 +2요일이된다.

 

상식2. 몇월이 몇일까지 있는지 어떻게 정해지나?

결론을 말하자면, 1,3,5,7,8,10,12월은 무조건 31일까지있다.

그리고 2월은 평년에는 28일, 윤년엔 29일까지있다.

나머지 4,6,9,11월은 30일이다.

결국 2월을 제외하고는 매 해마다 동일하다.

 

규칙3. 다음월의 요일은 몇월인가에 따라 +요일치가 달라진다.  왜워두면 바로 적용가능.

오늘은 5월26일이다. 그러면 다음달의 26일 무슨요일인가?

규칙1에 의해서 계산을 해도도지만 더 단순한 규칙을 찾아보자.

월의 일은 31일 30일 29일 28일 네가지가 있다. 때문에 미리 계산해둔 값을 기억해서 쓰면 빠르다.

31 Mod 7 = 3 (그러므로 +3요일)

30 Mod 7 = 2 (+2요일)

29 Mod 7 = 1 (그러므로 윤년의 3월의 요일은 2월의 요일 +1 )

28 Mod 7 = 0 (그러므로 윤년의 2월의 요일은 3월의 요일과 동일)

결론: 1,3,5,7,8,10,12월은 다음달 같은일에 +3요일이 된다.

4,6,9,11월은 다음달 같은일에 +2요일이 된다.

2월은 윤년일 땐 다음달에 같은 요일이 되고, 평년에는 +1요일이 된다.

그러면 다음달이 아닌 한달 전은 어떨까?

이때는 저번 달을 기준으로 잡고 + 가 -로 변하게된다.

5월 26일(일)이라면 저번 달의 26일은 4월이 -2요일이 되므로 금요일이 된다.

 

 


참고사항: 윤년의 정의

[閏年, leap year]

카테고리: 과학 > 순수과학 > 지구과학 > 천문학 > 역법 및 측시법

개요 : 태양력법에서 2월을 29일로 둔 해.

본문 출처 : 두산세계대백과 EnCyber

원래 2월은 평년이 28일까지 있는 것이지만, 만일 윤년이 없이 언제나 평년이라면 1년의 길이가 365일로 되어 실제보다 0.2422일 짧아지므로 점차 역일(曆日)과 계절이 달라진다. 그러므로 율리우스력에서는 4년마다 2월을 29일로 함으로써 4년간의 연평균 일수를 365.25일로 정하였다. 이 값은 실제보다 1년에 0.0078일이 길다.

그후의 그레고리력에서는 다음과 같은 치윤법(置閏法)을 정하고 시행하였다. 즉, ① 서력 기원 연수가 4로 나누어 떨어지는 해는 우선 윤년으로 하고, ② 그 중에서 100으로 나누어 떨어지는 해는 평년으로 하며, ③ 다만 400으로 나누어 떨어지는 해는 다시 윤년으로 정하였다. 이로써 1년의 평균길이를 365.2425일로 정하여 역에 썼으므로 실제의 1년보다 0.0003일이 길다.

이 그레고리오력에서는 400년간에 97년이 윤년이 된다. 한국에서는 1896년(건양 1)부터 태양력이 쓰였는데 이 역법은 그레고리오력이다. 그레고리오력이 현행의 태양력이다. 율리우스력은 한국에는 들어오지 않았다. 고레고리오력의 치윤법에 의하여 1900년은 평년이었고 2000년은 윤년이 된다.

 


자,  이제 훈련만 잘하면 주위 분들에게 엄청난 계산력? 암산력의 소유자로 칭송 받게 될 지도 모릅니다.

한번 머리 훈련좀 해보시겠습니까? !!!

 

 


따뜻한 봄 날,  3D관련 전시회에 갔다가 신기한 녀석을 봐 버렸습니다.
빔프로젝터에 카메라가 달려있는 녀석이었는데,  이게 3D 스캐너라는 겁니다.
보자마자 원리가 보이더군요... 하지만 이게 정말 된단 말이야???


[사진1. 코엑스 3D영상기기 전시회에서 본 빔프로젝터 이용한 3D 스캐너 ]

예전부터 3D스캐너를 만들고 싶다는 생각은 했지만,  고가의 레이져 장비가 있어야 된다는 생각에 포기했었는데요,
뒤통수 맞은 기분이었습니다.  아니, 생각의 덫이 하나 떨어져 나가서 홀가분해졌다고 해야할까요!!

어쨌든, 중요한건,,,,  오홋! 그럼 나도 만들 수 있겠다.

그래서 일단 만들어봤습니다.
준비물은 매우 간단한 편입니다.

하드웨어: 일반 USB웹캠 1대(2대면 더 좋음),  빔프로젝터 1대,  고정용 스탠드.
개발환경: 제 경우 플래시 액션스크립트 3.0으로 직접 구현하는 것을 목표로 하였습니다.
              ( 보통은 C/C++, MATLAB,  기타 Tool을 이용하더군요,  관련링크 참조)



[사진2. 자작 3D 스캐너 - 웹캠 1대와 빔프로젝터 1대로 구성]

참고사항. 함께 설치된 Wiimote 2개는 IR Tracking용으로 일반적인 3D 스캐닝 용도로는 없어도 됩니다.



[동영상1. 스캐닝 후 공간분할이 잘 되었는지 확인하는 영상입니다. ]





[동영상2. 스캔 결과 Data(3D Points Cloud)를 별도의 MeshLab 뷰어로 확인해 봤습니다. ]

수만개의 단색 점을 3D 공간에 표시하기만 해도 대략적 형상이 나오는것을 확인 할 수 있습니다.



[동영상3. 몇가지 스캔 결과물을 모아놓은 영상입니다. ]

1. 종전의 영상은단색 점인것과 달리 본 영상의 점은 색상있는 점입니다.
2. 수만개의 점중에 일부 점만 무작위 추출하여 매핑을 한 영상입니다.
3. 위 결과를 라운드 처리하여 본 결과입니다.
4. 벽면의 붙인 그림을 스캔할 결과물입니다. 평면의 물체가 굴곡면으로 스캔된 것을 볼 수 있습니다.
    렌즈굴곡 보정을 안해줘서 그런것 같습니다.


사실 아직 완성된건 아니고, 렌즈굴곡보정, 노이즈처리, Point Cloud로 Polygon 형성, 3D Viewer 등등의 작업이 남아있습니다. 차후에 좀더 개량을 해야하겠습니다.  가능하면 관련 이론 소개를 별도의 문서로 올려보도록 하겠습니다. 새로운 참고자료도 본 글을 통해 업데이트 하도록 하겠습니다.


추가사항(2010.Nov.15)

스캔원리에대해 요약 소개:

링크 자료중 byo3d pdf 문서를 보시면  chapter5  structured lighting 이라는 개념이 있습니다.
사실 이게 빔프로젝터로 3D스캐너를 만드는데 있어서 핵심내용입니다.
카메라와  빔프로젝트가 거리 L만큼 떨어져있고,  빔에서 선이 하나 발사되어 벽에 반사되어 카메라로 캡쳐되는 상황을 가정해보시면 카메라와 프로젝터의 상대각을 구할 수 있고, 간단한 삼각함수만으로 그 점의 3차원 x,y,z 좌표값(카메라+빔프로젝터를 기준으로한 상대적인)을 구하실 수 있을겁니다.  

사실 이것만으로도 3d스캐닝이 가능합니다. 빔프로젝터에서 점을 이동하면서 카메라에서 그 위치를 캡쳐하게되면, (매우 느리겠지만) 원하는 point cloud를 구할 수 있습니다. 근데 문제는 너무 느려서 비효율적입니다. 점하나당 한번의 캡쳐를 해야한다는 결론이나오므로 실용성이 없습니다.

그래서 Structed Lighiting 이라는 방식이 도입되었습니다.
이 방법을 사용하면 n번의 갭쳐만으로 2^n * row  개의 기준화소점군(라인)을 구해낼 수 있게됩니다.
즉, 8장을 캡쳐하는것 만으로도 256개의 기준선을 추출할 수 있고, 각 기준선마다 m개의 화소를 추출할 수 있게되어,  한차례( 해상도에 따라 다름: 가령 8장 안팍)의 연사촬영만으로 수만개의 화소점을 구해낼 수 있게됩니다.

원리는 빛을 동일한곳에 다른 패턴으로 방사하고 촬영한 후 이 값들을 단순히 누적하기만 하면, 거의 화소단위로 영역이 구분이 된다는 것입니다. byo3d pdf문서를 잘 살펴보시면 원리를 알게될 겁니다. 

링크6. 정보가 추가 되었습니다. 

정보를 제공해주신 분에의하면 해당 자료를 다운받아 따라해보니 스캔 결과물도 괜찮게 나온다고 하셨습니다. 1대의 웹캠과 1대의 빔프로젝터, 90도 직각으로 설계된 캘리브레이션 도구를 이용하여 3d 스캐너를 구현한 방식입니다.


추가사항(2010.DEC.10)


사진. 단계노출 및 그로부터 계산된 line으로 그룹화된 점 정보들.

최하단의 결과 이미지에서 동일한 색상 및 명함으로 이뤄진 화소점들(Line)을 구해낸것을 볼 수 있습니다. 이 결과값으로 화소점들의 3D 좌표값을 구할수 있습니다.


사진. Point Net 씨우기

계산할 점의 개수가 너무 많으므로 일부만을 선택하여 사용하기 위해서 특정 점들만 선택하는 과정입니다. 왼쪽이 Convert 이전의 상태이며, 이때 일부 점들은 수동으로 위치시킬 수 있으며(얼굴부분) 나머지는 자동으로 가장 근처에 있는 점이 선택되어 최종적인 3D 좌표값으로 변환되게 됩니다.


사진. 3D스캐닝 세트 전경



관련자료
1. 제가 아는한 자작 3D스캐너와 관련하여 가장 자세한 기술소개문이 있는 사이트입니다.
   소스와 유틸리티, 원리소개등의 모든자료가 있다네요.    http://mesh.brown.edu/byo3d/index.html
  
2. 위 사이트에서 배포하는 기술소개문 pdf 파일입니다.  http://mesh.brown.edu/byo3d/notes/byo3D.pdf
3. 3D Photography on your desk  http://www.vision.caltech.edu/bouguetj/ICCV98/
    한수 더 떠서 막대기와 조명기구만으로 만드는 3D스캐너입니다. 
4.  Model-Based Face Capture from Orthogonal Images 사진 두장으로 3D얼굴 재현하기 입니다.
     http://mesh.caltech.edu/ee148/projects/EngLanmanMayes/
5. 독일 공항에 설치된 화려한 색광을 사용하는 얼굴스캐너  http://mtcave.blogspot.com/2009/09/face-scanner-test.html

6. 켄터키 대학에서 구현한 3d 스캐너: http://www.engr.uky.edu/~lgh/soft/soft.htm 


+ Recent posts