음핫핫핫! 드디어 아두이노로 실버라이트와 연결 거기에 무려 3축 센서(!)까지 연결을 완료했습니다!
정말 오랫만에 느껴보는 새로운 영역을 개척했을 때의 기쁨이네요. 물론 언제나 그 시작은 심~~~히 하찮지만요.

어제 올렸던 징징글... 올리자마자 뭐가 문제였는지 깨달음을 얻었습니다.
역시 징징글은 올리고 봐야해.

문제는 바로...
'낫놓고 기역자도 모른다!'
네, 기껏 레퍼런스 데이터 시트 받아서 끙끙거리면서 봤지만 중요한 표기법을 놓쳤던거죠.
그것은...


두둥! 바로 네거티브 입력 표기를 간과했다는 거 -_-;
그러니까 칩셋 데이터 시트에 보면 핀 이름에 윗줄이 그어져 있는 경우가 있는데,
이건 그 이름을 동작시키기 위해 -입력(디지털 신호일 경우 보통은 Ground)을 필요로 하다는 거죠.

...아놔... 아무리 제대로 공부한건 아니라고 해도 이건 너무나도 기본적인거였는데 -_-;
암튼 데이터 시트 제대로 안보고 Sleep Mode니까 뭔가 신호를 줘야 재워줄 수 있을거라고 착각했는데요,
잘 생각해보니 Sleep일 때 전원을 인가하는건 엄청 비효율적인거잖아요. 이런 깊은 뜻이!

여튼 문제는 너무나도 간단하게도 Sleep Mode에 +전원을 연결했을 뿐이고,
이제 동작 잘 할 뿐이고!

사실 요즘 이걸로 만들고 싶은게 생겼는데 나름 데드 라인이 있는거라 시간관계상 자세한 포스팅은 어렵지만,
동작 구동 영상을 올립니다.
뿌듯한 점은, 바로 아두이노와 실버라이트를 TCP 소켓으로 연결할 수 있는 가능성을 증명한 것이지요.
네, 실버라이트에서 아두이노의 신호를 입력받아 오브젝트를 제어할 수 있고 반대로 실버라이트에서 아두이노로 신호를 보내 장치를 제어할 수도 있죠.

무지 간단한 데모지만 3축 센서 입력을 받아 실버라이트 오브젝트를 제어하는 영상이에요.
웹캠으로 찍어서 화질은 더럽습니다. ㅎㅎ


아자아자아자자자자!
P.S.
근데 이거 카테고리가 아두이노여 실버라이트여?
Posted by gongdo

Submit comment.

  1. No.190 2010.10.21 08:33  comment URL  Edit/Remove  Submit comment.

    성공하셨군요! 축하드립니다! 거기다가 실버라이트에 연동을+_+
    진정한 개척자 이십니다~ㅎㅎ

  2. 양재우 2010.10.21 09:17  comment URL  Edit/Remove  Submit comment.

    멋지십니다. 신세계를 열어가시네요~

  3. Favicon of https://gongdosoft.com BlogIcon gongdo 2010.10.21 10:27 신고  comment URL  Edit/Remove  Submit comment.

    No. 190, 양재우님/ 조만간 더 재밌는 결과물 가지고 포스팅할게요!

  4. Favicon of http://www.smartjames.net BlogIcon YJKim 2010.10.21 18:55  comment URL  Edit/Remove  Submit comment.

    본격 가내수공업 ㅋㅋㅋㅋ

  5. 신나가이 2010.10.24 14:22  comment URL  Edit/Remove  Submit comment.

    글쓰신거에 흥분이 넘쳐나는데요.

음... 디바이스 마트에서 3축 가속 센서를 사다 아르두이노랑 연결해보고 있는데...
분명히 첫날 납땜도 안하고 대충 잡고 연결했을 때는 되길래 아무 걱정 없이 몇 일후에 납땜을 해봤더니 전혀 안되는군요. 아오.
http://www.devicemart.co.kr/mart7/mall.php?cat=049005000&query=view&no=21777
문제의 그 센서.

요놈 좋은게 필요한 주변 회로가 다 구성이 되어 있어서 VDD에 +3.3V 인가만 하면 되고 아두이노도 자체 3.3V 출력이 있어서 그냥 꽂기만 하면 될 줄 알았더니 쉽지는 않군요.
분명 전원은 들어오는데... X,Y,Z에서 > Analog 0,1,2로 연결한 곳으로 아무 신호도 안나오고. 음. 뭐가 문젤까.

음... 이제와서 다른 센서를 시도하기에도 좀 무리가 있고 해서.
남은 건 삽질뿐... ㅠ.ㅜ 
Posted by gongdo

Submit comment.

  1. Favicon of http://Kobalt60.com BlogIcon 변태우 2010.10.19 22:21  comment URL  Edit/Remove  Submit comment.

    혹시 납땜 중 인두열에 쇼크사...아닐까요;;;

  2. Favicon of https://gongdosoft.com BlogIcon gongdo 2010.10.20 08:56 신고  comment URL  Edit/Remove  Submit comment.

    어제 이 글 올리고 난 직후에 깨달음을 얻었습니다...
    엄청나게 바보 같은 실수하나 했더군요.
    이제 실버라이트로 아르두이노 입력 받아서 컴퓨팅이 가능!!
    오늘 저녁에 포스팅하려고요^^
    이런걸 소위 '블로그 징징글 버프'라고 하지요. ㅎㅎㅎ

  3. Favicon of http://kobalt60.com BlogIcon 변태우 2010.10.20 16:05  comment URL  Edit/Remove  Submit comment.

    감사합니다! 잘먹겠습니다 ㅎㅎ

요즘 아두이노 버닝 중이에요.
아두이노 관련 첫 글이라 약간의 잡설(=뻘소리)을 좀 해야겠어요. 방해 안되게 접어둘게요. :)


여튼, PlugHouse에서 Opto-sensor라는 물건을 팔더군요. 용도는 물체의 접근을 감지하는 것.
아두이노를 접하고 만들어 보고 싶은게 충돌 감지를 이용한 '무언가'인데다가 가격도 꽤 싼편이라 올타꾸나 하고 질렀는데...
받고 나니 좌절이더군요. 데이터시트가 있지만 이건 뭐 낫 놓고 기역자도 모른다는 딱 그 꼴.

그래도 수 차례 삽질을 한 끝에 (저는) 만족할만한 결과를 뽑아주는 회로와 스케치 코드를 만들었어요.
이 회로에서 저항들이 무엇을 의미하냐고요?

몰라요;

그냥 이 회로는 수십번에 걸친 와이어링 끝에 원하는 동작이 나왔을 뿐...
저항값 수식 계산 한 번 안했지요; 핫핫핫.
그래서 말인데 혹시 이거 제대로 볼 줄 아는, 댓글 남겨 주실 분... 안생기겠죠? 네 뭐.

여기서 주의해야 할 점은 OSG-105LF라는 부품의 위치인데요,
회로도에서는 1번 핀을 기준으로 2, 4, 3 순서이지만 실제 부품상의 배치는 1, 2, 3, 4 라는 점이에요.
무슨 얘기냐면 실제 부품은 아래와 같이 생겼다는 거죠.
부품을 자세히 보면 약간 둥그스러운 부분이 딱 한 귀퉁이가 있는데 거기가 1번이에요.

암튼 위의 회로도와 부품 핀 번호를 참고해서 브레드보드에 회로를 대충대충 구성하고,
- Vcc는 아두이노의 아날로그 5v 출력으로
- Ground는 아두이노의 아날로그 Gnd로
- Signal은 아두이노의 아날로그 0번 입력으로 연결하면 돼요.

여기에 출력 확인을 위해 LED를 9번 핀에 연결했어요. (요부분은 아두이노 책에 나온 PWM 기초 회로 5-4와 동일)

다음 스케치 코드는,

const int analogInPin = 0;  // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to

const int fromLow = 0;
const int fromHigh = 700;

int sensorValue = 0;        // value read from the pot
int outputValue = 0;        // value output to the PWM (analog out)

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600);
}

void loop() {
  // read the analog in value:
  sensorValue = analogRead(analogInPin);           
  // map it to the range of the analog out:
  outputValue = constrain(map(sensorValue, fromLow, fromHigh, 0, 255), 0, 255); 
  // change the analog out value:
  analogWrite(analogOutPin, outputValue);          

  Serial.print("sensor value / output value: " );                      
  Serial.print(sensorValue);
  Serial.print(" / ");
  Serial.println(outputValue);

  // wait 10 milliseconds before the next loop
  // for the analog-to-digital converter to settle
  // after the last reading:
  delay(10);                     

}

이렇게 하면 9번 핀에 연결한 LED가 0번 핀에 입력으로 들어온 Opto-interrupter의 값에 따라 밝아졌다 어두워졌다 할거에요.
동시에 시리얼 포트로는 입력으로 들어온 값이 표시되겠죠?
센서에 따라 값이 조금 다르게 들어오겠지만 제 경우는 map()함수에서 사용할 fromHigh값을 700 정도로 잡았을 때 가장 적당한 범위로 사용이 가능했어요.

여기에 이르기까지 많은 실패와 시행착오가 있었으니...

수 많은 실패작들;;
잘 보면 아시겠지만 되도 않는 회로를 그냥 막 가져다 붙였을 뿐...;;;

최종적으로 제대로 동작하는 회로.
그러나 저 저항값들이 왜 그래야 하는지는 이유가 없으니... 갑자기 부품이 파손되어도 전혀 이상하지 않을 일!

겨우겨우이어 맞춘 회로. 끝내고 나니 별거 아니네요. -_-;

Posted by gongdo

Submit comment.

  1. 2010.08.20 13:34  comment URL  Edit/Remove  Submit comment.

    비밀댓글입니다

  2. plughouse 2010.08.23 01:33  comment URL  Edit/Remove  Submit comment.

    안녕하세요. 플러그하우스입니다.
    멋진 포스팅입니다. 많은 분들이 보고 도움을 받으실 수 있을 것 같아요.
    R3은 없어도 잘 작동할 것 같습니다.
    사이트에 답글 달아드렸습니다.
    혹시 나중에 필요할 경우, 제품페이지에 이 내용을 링크시켜도 될까요?
    고맙습니다. ^^

    • Favicon of https://gongdosoft.com BlogIcon gongdo 2010.08.23 09:06 신고  comment URL  Modify/Remove

      안녕하세요 :)
      제 글은 특별한 언급이 없는 한 CC로 공유하고 있으니 출처만 밝혀주신다면 완전히 자유롭게 사용할 수 있어요^^

      R3는 필요 없는 것이었군요!
      없어도 동작하는 걸 확인은 했었는데 저항을 달았을 때 1k냐 10k냐에 따라 센서의 값이 변화가 있길래 대충 달아놓았을 뿐. 핫핫;

    • Favicon of http://Kobalt60.com BlogIcon 변태우 2010.10.19 22:30  comment URL  Modify/Remove

      앗! 플러그하우스 석근국님 아니신지요 ^^;; 제 아두이노는 지금 먼지만 뽀얗게 ㅠㅠ 입니다. 디스트릭트 활동 항상 감동받고 있습니다~~

  3. Favicon of http://www.suapapa.net BlogIcon suapapa 2010.08.27 20:05  comment URL  Edit/Remove  Submit comment.

    안녕하세요 역자 입니다. 출장 AS 왔습니다. ^^
    시행착오로 딱 필요한 저항값들을 얻으셨네요. 오오 이것이 팅커링!

    손으로 그리신 회로도를 보기 쉽게 조금 정리해 봤습니다. 다음 링크
    http://twitpic.com/2ilgfq

    우선, 이 센서의 원리는 LED로 적외선을 쏘고 물체에 맞아서 돌아오는 빛을 센싱(TR같이 생긴 부분)하는 것이에요.

    저항 R2는 LED 전류 제한 용 입니다. -LED는 전류에 제한이 없으면 망가질 수 있어요- "LED 저항" 으로 검색해보시면 적당한 저항 값을 구하는 방법을 찾으실 수 있습니다. (VCC-Vf)/If = (5-1.3)/0.05 = 74 이므로 74옴 이상을 달아주시면 되고, 달아주신 270옴으로는 (5-1.3)/270 = 0.0137... 14mA 정도의 전류가 LED에 흐르게 됩니다. 해서, 알맞게 잘 선택하셨어요. (저항을 낮추면 -전류를 키워 LED를 더 밝게 하면- 센싱 거리가 조금 길어지지 않을까 싶네요)

    다음은 R3. 반사되어 돌아오는 빛(적외선)이 있으면 3핀에 연결된 5V와 4핀이 연결되는 것인데, 아두이노 입력핀의 경우 LED와 다르게 특별히 전류 제한이 필요 없지만(터지지 않지만) 전류를 많이 공급한다고 더 좋아질 것도 없기 때문에 1k옴을 전류 제한 용으로 종종 답니다. 이 저항 값이 바뀌면 AnalogInput으로 읽은 값의 범위가 달라질 것 같네요.

    마지막으로 R1. 보통 디지털은 0과 1로 이루어져 있어서 HW도 5V와 0V만으로 이루어졌다고 생각하지만, 사실 연결되지 않은 상태 라는게 있습니다. 센서에 반사되어 들어오는 빛이 없는 경우 3, 4번핀의 연결은 끊어진 것과 같아서 아두이노에서 읽어보면 쓰레기 값이 마구 들어오는걸 보실 수 있어요. 끊어진 상태일때도 0V인 것 처럼 만들기 위해서 pull-down 저항을 달아준게 R1이에요. pull-up/down은 전류가 거의 없어도 되기 때문에 10k같이 높은 값으로 달아줍니다.

    굼긍하신 부분이 조금 풀리셨다면 좋겠네요. :)

    • Favicon of https://gongdosoft.com BlogIcon gongdo 2010.08.28 00:45 신고  comment URL  Modify/Remove

      생겼네요! 우왕국!
      아 바로 이런 식의 설명이 전자회로를 처음 접하는 사람에게 필요한게 아닌가 싶어요.
      식을 외워서 회로를 만드는게 아니라 만들 회로를 생각하고 어떤 소자가 왜 사용되는지 그리고 어떻게 계산하는지...
      익숙해지면 나름 복잡한 수식이나 원리도 더 잘 볼 수 있겠죠.

      설명 들으며 '그랬구나!'하는 부분이, 아닌게 아니라 처음 몇 번은 동작을 하긴 하는데 센서로 들어오는 값이 엄청나게 불안정하더라고요. 그래서 개발자 특유의 삽질 정신으로 입력을 5회 정도 샘플링해서 튀는 값을 제거하는 코드를 짜다가 이건 아니지 싶어서 회로를 몇 번이나 뜯어 고친거였어요.

      갑자기 바빠져서 또 급 시들해지는데 다시 장작을 던져주셨네요.^^
      자세한 설명 감사합니다 :D

  4. 지송 2010.10.31 10:50  comment URL  Edit/Remove  Submit comment.

    음 회로를 위에 설명을 다 해주셨네요..

    포토커플러 같은 회로인데 소자가 굉장히 작군요..

    이런게 취미이실줄이야 ^^;

  5. Favicon of http://www.timberlandbaratas.com BlogIcon outlet timberland 2012.12.25 16:25  comment URL  Edit/Remove  Submit comment.

    La Cour de Cassation a validé mardi la remise du Rwandais hutu Callixte Mbarushimana à la Cour pénale internationale (CPI) pour son r, http://www.timberlandbaratas.com timberland?le présumé dans des crimes de guerre et crimes contre l'humanité dans l'est du Congo en 2009, http://www.timberlandbaratas.com Timberland Online, a-t-on appris auprès de l'un de ses avocats, http://www.timberlandbaratas.com timberland españa.Related articles:


    http://bspfp.pe.kr/299?category=2 Un sous-officier fran

    http://drivingfeel.net/280 En attendant le nouvel épisode inédit des aventures de Lara Croft